1

나는 재미있는 데이터베이스 스토리지 엔진을 만들고있다.b-tree에서 가변 길이 문자열, 정수, 바이너리를 어떻게 인덱스합니까?

b-tree (및 stuff)를 사용하지만 모든 b-tree 기본 예제에서 키를 정렬 한 다음 정수가 아닌 인덱싱 용으로 저장해야한다는 것을 알 수 있습니다.

정렬을 이해할 수 있지만 색인 생성을위한 키가 문자열 인 경우 어떻게 문자열을 처리해야합니까?

예 : btree의 모든 전자 메일 주소를 인덱싱하려면 어떻게해야합니까 ??

+0

"b-tree 기본 예"는 무엇을 의미합니까? "기본 예제"를 의미합니까? 그런 뜻이라면 정확히 어떤 예를 언급하고 있습니까? 이 세부 정보를 추가하려면 질문을 수정하십시오. – nbro

+0

수정 됨. 기본적으로 나는 btree 기반의 디스크를 전자 메일이나 이름 같은 문자열로 생성하려고합니다. 문자열 정렬은 어떻게 수행합니까? – 0zero0zero

+0

필요한 것은 * compare * 기능뿐입니다. 그러면 문자열뿐 아니라 * 모든 데이터 유형이 색인 될 수 있습니다. 모든 데이터 유형에는 자체 비교 기능이 필요합니다. (레코드와 같은 복합 유형조차도) – wildplasser

답변

1

정렬 할 데이터 유형은 중요하지 않습니다. B- 트리의 경우 비교기 만 있으면됩니다. db에 넣은 첫 번째 값은 루트입니다. 두 번째 값은 루트와 비교됩니다. 더 작 으면 왼쪽에서 계속하고, 그렇지 않으면 오른쪽으로 계속하십시오. 새 값을 삽입하려면 트리 구조를 변경해야합니다.

문자열 용 비교기는 문자열의 길이를 사용하거나 알파벳순으로 비교하거나 at 기호 뒤에있는 전자 메일에서 점을 계산할 수 있습니다.