2011-11-13 2 views
0

트리는 힙에 할당됩니다. 따라서 루트 노드에 대한 포인터가 있어야합니다.C++에서 mySQL B- 트리에 액세스

mySQL이 기본 키로 식별되고 B 트리에 저장된 인덱스 된 행을 사용하는 경우 은 C++ 인터페이스를 통해 B- 트리에 액세스 할 수있는 방법입니까?

이것은 학습 과정의 일부입니다. 특정 테이블의 B-Tree에 대한 루트 포인터에 어떻게 든 액세스 할 수 있다면 궁금합니다.

+2

기본 질문은 다음과 같아야한다고 생각합니다. 텍스트 시스템 SQL 명령보다 데이터베이스 시스템에 대한 프로그래밍 인터페이스가 더 낮습니까? 나는 오랫동안 그것을 궁금해왔다. –

+2

"나무가 힙에 할당되었습니다"- 누가 그런 말을 했습니까? – delnan

+0

인덱스가 메모리에 모두 저장되어 있지 않거나 외부 프로그램에서 쉽게 읽을 수있는 형식 일 수도 있습니다. 심지어 루트 노드의 주소를 어떻게 추측했는지, 어떻게 발견했는지 어떻게 알 수 있습니까? – abcde123483

답변

2

색인은 디스크에 저장되며 반드시 메모리에 상주 할 필요는 없습니다. 그들이 메모리에 있다면, 그것은 응용 프로그램이 아니라 mysqld의 메모리가 될 것입니다. 인덱스를 직접 살펴보고 싶다면 기존의 (오픈 소스, 물론) MySQL 스토리지 엔진 코드 중 일부를 사용하는 것이 이상적입니다.

+1

그리고 데이터를 신경 쓰는다면 백업을해야한다는 것을 기억하십시오 :) – Mat

1

당신이 말하지 않은 extending MySQL에서 작업하지 않는 한 혼란스러워 보입니다. 그래서 당신이 MySQL을 확장하지 않는다고 가정하십시오 - 당신이 다른 질문을했을 것입니다.)

mysql은 거의 항상 서버 프로그램으로 사용됩니다. sysadmin은 TCP/IP 소켓을 구성하고 문서화되지 않은 프로토콜을 사용하여 해당 서버와 상호 작용할 수있는 기능을 제공합니다.

순진한 사용자 또는 개발자는 MySQL 서버에 요청을 보내면 응답을 받게됩니다. 따라서 MySQL과 상호 작용할 수있는 유일한 방법은 요청과 응답으로 네트워크에 연결되기 때문에 MySQL 프로세스의 메모리 내부에서 B-tree를 신경 쓰지 않아도된다.

혹시 내가 귀하의 질문에 대해 오해 한 것 같습니다.

+0

질문은 MySQL과 절대 관련이 없습니다. 프로그램 내에서 B- 트리를 구현하려는 것 같습니다. –