U E D R , A S I H C RSS

Project Gaia/계�설계

1. key 순차 파� A안

  • Page ë…¼ì�˜ì—� 관하여
    우선 �번 우리 AP� 절대 조건� 알아보면,
    1. ��가 빨�야 한다.
    2. 페�지가 IO� 기본 단위�다.
    3. 가변길� 레코드로 한다.
  • 위ì�˜ 문제를 해결하기 위해 Page 구조를 변화시킨 ê²°ê³¼ 만들어진 모습

    ~cpp 
           ---------------------------------------------------------
          -  페�지ID   |  첫RecordID  |  FreeSpace  |  ptrToFree  -
          -  (Word)    |  (Word)      |  (Word)     |  (Word)     _
          ---------------------------------------------------------
          -  Record          |  Record  |  Record.....            -
          -  (Record Size)   | (R-Size) | (R-Size)                -
          ---------------------------------------------------------
          -         비신장 가변길� 레코드  &                        -
          -                                    FreeSpace          -
          ---------------------------------------------------------
          -      - ... -  Length  -  Length  - Length   - Last_   -
          -      - ... -  ID      -  ID      - ID       - Slot_   -
          -      - ... -  Pointer -  Pointer - Pointer  - Pointer -
          ---------------------------------------------------------
    

1.1. 세부설명

  1. 페�지 ID등 �반�� �기 단위를 Word로 하여 충분한 �기를 제공하고 ��를 보장받고� 하며,,
  2. ID를 보다 빠르게 접근하기 위해서..
    1. Slot�체� ID를 �함시켰고,
      DeleteMe ID �함시 �미 �금
    2. 페�지�� 첫 ~cpp RecordID를 접근할 수 있�� 하였으며,
  3. 불필요할 것으로 �단�는 ~cpp NumberOfRecord 값� 오버헤드차��서 삭제처리하였고,,
  4. LSP(Last Slot Pointer)는 슬롯� 있는 ID를 B-Search하기 위해서 가장 안쪽 슬롯� 위치를 가리키�� 함.
    �한 슬롯� 추가할 경우� 추가할 위치를 ��터로� 바로 접근 할 수 있�것임.
  5. 기타 세부�� 수정� 보는�� �단� 요구하고 있�.

1.2. 작�방�

  1. 어떤 레코드를 삽입/삭제/검색� 하고� ��터를 찾고� 할 경우�..
    제� 먼저 그 레코드� ID와 페�지 ID를 비�하여.. 페�지를 찾게 �고,
    �� 슬롯� 있는 ID와 비�한 후,,
  2. 삭제/검색시� 해당 ��터로 ��하여 세부수행
  3. 삽입� 경우.. ~cpp FreeSpace>Slot_Size+Record_Size와 비�후� 수행

1.3. 추가필요사항

  1. 페�지ID, 페�지 위치, 첫~cpp RecordID를 찾거나 가는� IO 수행� 너무 많� 필요하다.
    왜�면,, 비�를 하기위해서 페�지를 �어� 한번� �어야 하기 때문�..
    �� 마스터페�지(페�지들� 정보를 저장하고 있는 페�지)를 따로 선언해야만 한다.
    그렇게 �다면, 첫~cpp RecordID까지� 마스터페�지가 관리하�� 할 것임.
  2. 변수가 ��수� 좋다. (관리가 ��수� 빠르다?!)

2. B안



공통
  1. í™”ì�¼ìƒ�성 - 레코드 10000ê°œ, unsorted í™”ì�¼ ìƒ�성 (ìƒ�성 여부 확ì�¸ì�„ 위해 화면 ìœë ¥ 가능하ë�„ë¡� 구현)

2.1. 키 순차화�


키 순차화� 구현� 위한 프로세스

2.1.1. 1. 레코드 입력 - creat_s()

키 순차화�� 키 순서로 정렬� 화�� �한다.(�재122p부터) 여기서 키는 primary key(첫번째 필드)가 �다.
unsorted 레코드를 sort하면서 page 단위 메모리� �재를 하�, �때 정렬 대� 레코드를 메모리� 모� 올려서 정렬하지 않고, memory size 10� �연선�(�재155p)� �용함. 여기서 memory size 10��는 것� 10개� 레코드를 올릴 수 있는 공간� � 하고, 가변 길� 레코드� 경우 실제 사�즈는 변할 수 있다. �연선� �후, m-� 다단계 합병(�재166p).
정렬� 레코드를 page(4KB) 단위로 입력, page�는 header와 slot� 차지하는 공간� 제외한 �기만� 레코드를 저장할 수 있다. 레코드를 page� 입력할 때 비신장 가변길� 저장 방법� 사용, 입력� 레코드가 page� 남� 공간보다 � 경우 다� page� 입력�다.

2.1.2. 2. 레코드 검색 - retrieve_s()

레코드� 효율�� 검색or삽입or삭제를 위해서는 page� 구조, page 접근� 위한 구조가 잘 구성�어야 한다.
page 접근� 위해 master page를 둔다. master page는 page들 중 가장 앞� 위치한다.

master page는
  • â‘  page ID,
    • â‘¡ page ë‚´ 레코드 중 가장 í�° keyê°’,
    • â‘¢ 현재 저장ë�œ ì „ì²´ 레코드 수
    • â‘£ 페ì�´ì§€ 수 등ì�„ 저장한다.

    master page� |②|①| 로 �루어져 있는 table� 둔다.
    key값� 20� 레코드를 검색하고 싶다면, master page� table� 보고 해당 page ID를 찾� 다�, page 내부�서 검색하게 �다.
    "page 내부�서 검색하는 것� 대해 논�해볼 필요가 있�."

    2.1.3. 3. 레코드 삽입 - insert_s()

    레코드는 무조건 화�� �� 삽입한다.
    master page� page 수를 �고 가장 마지막 page로 간 다�, page header� freespace size를 삽입 예정 레코드� �기와 비�하여, 만약 해당 page� 충분한 공간� 있다면 그대로 추가 입력, 충분한 공간� 없다면 다� page를 �성하고 넣어주는 비신장 가변길� 방법� �용한다.

    '비신장'� �해 page� 어중간하게 남는 공간�는 null flag를 둔다. �후, 조�모�.

    2.1.4. 4. 레코드 삭제 - delete_s()

    레코드 삭제는 검색→삭제� � 과정으로 �루어진다.

    삭제와 �시� 해당 레코드가 있는 �리� null flag를 ��� 한다. 다른 레코드들� page 간 ��할 필요가 없다.

    2.1.5. 5. 레코드 �체 - replace_s()

    레코드 �체는 검색→�체� � 과정으로 �루어진다. 추가�� 아�디어.

    레코드를 검색한 후 해당 key 값과 �치하는 key� 레코드를 지우고 삽입하게 �다. 가변길� 레코드.
    �때 유� 사항으로는 새로 들어가는 레코드� 길�가 기존 레코드 보다 길 경우 공간� 부족하다는 것.

    "�체 시 공간 부족 문제� 대한 논�가 필요함"

    2.1.6. 6. 조�모� - restruct_s()

    삽입, 삭제가 빈번하게 �루어질 경우, null flag� �해 저장공간� 불필요하게 낭비� 것으로 예��.

    조�모� 기능 추가.

    "기능 구현� 대한 아�디어 � ��해�야 함"


    3. 구현

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:24:04
    Processing time 0.0070 sec