U E D R , A S I H C RSS

Project Gaia/중간발표

규모

목표 : 스펙 기본 사항 만족

키 순차 화일, 확장 해쉬 파일

  1. 화일 생성
  2. 레코드 입력
  3. 레코드 검색
  4. 임의 레코드 검색 ( 레코드 검색시 소요시간 측정)
  5. 임의 레코드 삽입 ( 레코드 삽입 시간 측정 )
  6. 임의 레코드 삭제
  7. 편리한 사용자 인터페이스

자료구조

키 순차 화일

  1. 페이지 구조
    • 페이지 정보를 갖는 페이지 헤더
      • 페이지 ID
      • 저장된 레코드에 대한 레코드 정의 필드(레코드 개수 등)
      • 추가 삽입을 위한 자유공간
    • 실제 데이타 정보(레코드 또는 버켓)를 저장하는 사용자 공간
      • 레코드 정의 필드

확장 해쉬 파일

  1. 버켓 크기 : 8
  2. 디렉토리 구조
    • 초기 디렉토리 헤더값 : 8
    • 인덱스와 리프를 가리키는 포인터로 구성


~cpp 
// 둘중 택일해야 할 상호아
struct Data{
	char column1[];
	char column2[];
	char column3[];
}

struct Record{
	int key; // field1
	Data* data; // field2
}


struct Record{
	int key;
	char* field1;
	char* field2;
	char* field3;
}

API 설계

  • parameter 기술

(확장)해쉬함수 관리

  • pseudo code 작성
    ~cpp 
    
    
    
    typedef struct {
    	int preBits = 3 // header;
    	unsigned int leafs[8]	// pointer;
    }DIRECTORY;
    
    
    typedef struct{
    	unsigned int pseudokey // header;
    	unsigned int numOfBucket;
    	unsigned int bucket[];
    }LEAF;
    
    
    FILE create_h(char* fileName);	// 새로운 해쉬 구조 생성
    void open_h(FILE fileHandle, unsigned int psedoKey);		// 기존 해쉬 구조 열기
    void close_h(FILE f);		// 해쉬 구조 닫기
    void insert_h();	// 해쉬 값 넣기
    void retrieve_h(FILE f, unsigned int pseudoKey);	// 검색하기
    void delete_h();	// 해쉬지우기
    
    
    /* pseudo code */
    
    File f = create_h("Test");
    
    FILE f = open_h("fileName.dot", pseudoKey );
    
    unsigned realKey = 10;
    char* data = "ThisIsATest";
    
    unsigned int pseudoKey = hash_func_h(realKey);
    
    insert( f, pseudoKey, data );
    
    char* pRetrieved_data = retrieve_h(f, pseudoKey );
    
    prinf("%s", pRetrieved_data );
    
    free(data);
    
    close_h(f);
    
정말 감을;; --neocoin




Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0830 sec