2013-01-12 6 views
4

모든 키가 고정 크기이고 모든 값이 고정 된 시나리오 용으로 설계된 디스크 기반 B + 트리 구현을 제공하는 라이브러리가 있습니까? 크기도 (키와 같은 고정 크기 일 필요는없는)?고정 크기 키 및 값을 사용하는 디스크 기반 B + 트리 구현

참고 : 예, 개념 증명 RDBMS를 구현하고 싶습니다. 그리고 a very good reason이 있는데 왜 SQL DBMS를 사용하지 않는 것입니까? 참고 사항.

라이브러리의 언어를 특별히 신경 쓰지는 않지만 라이브러리의 기능과 관련된 몇 가지 요구 사항이 있습니다. 명확성을 위해 이러한 요구 사항은 C로 작성된 예제로 설명됩니다.

라이브러리는 필자 자신의 비교 기능을 사용할 수 있도록 충분히 유연해야합니다. 예를 들어

struct comparer 
{ 
    void * extra; 
    int (*function)(
     void *, // closure over extra 
     char *, // 1st value to be compared 
     char * // 2nd value to be compared 
    ); 
}; 

조작해야 인덱스 파일은 모든 키에 대해 고정 된 길이의 모든 값에 대해 고정 된 길이, 키 비교 함수에 의해 정의 된 방법의 메커니즘. 예를 들어 :

struct index_spec 
{ 
    size_t keylen, vallen; // fixed lengths for keys and values 
    struct comparer comp; // comparison function for keys 
}; 

그것은 도서관이 된 쿼리 및 업데이트 할 수있는 인덱스 및 쿼리 가능 하나이 예상 될 때 업데이트 할 수있는 인덱스를 사용하는 메커니즘 사이의 차이를 설립하는 경우 (필수는 아니지만) 정말 좋은 터치를 수 있지만 것 다른 방법은 아닙니다. 예를 들면 다음과 같습니다.

답변

2

가장 잘 알고있는 구현은 Berkeley DB입니다. Sleepycat에서 개발하고 나중에 Oracle에서 인수 한 B-tree 구현이 포함 된 고성능 임베디드 데이터베이스 시스템입니다.

C로 작성되었으며 이후 사용 시나리오를 지원합니다. 오픈 소스이며, 코드는 자신 만의 구현을 구현하고자 할 때 영감을 얻기에 좋은 곳입니다.

재미있게 보내세요!