Поиск находящегося на диске B + древовидная реализация в C++ или [закрытом] C

  1. вставляют строку с известным гуидом.
  2. выбирают autoId-поле с этим гуидом.

Это должно работать с любым видом базы данных.

26
задан Jonas 5 April 2010 в 17:15
поделиться

5 ответов

Faircom's C-Tree Plus коммерчески доступен для более 20 лет. Не работайте на них и т. Д. FairCom

Есть также Berkley DB , который был куплен Oracle, но все еще бесплатен на их сайте.

3
ответ дан 28 November 2019 в 17:21
поделиться

http://people.csail.mit.edu/jaffer/WB .

Вы также можете рассмотреть возможность повторного использования реализаций B-Tree из встраиваемая база данных с открытым исходным кодом. ( BDB , SQLite и т. Д.)

9
ответ дан 28 November 2019 в 17:21
поделиться

Я поддерживаю предложение по Berkeley DB. Я использовал его до того, как его купил Oracle. Это не полная реляционная база данных, а просто хранит пары ключ-значение. Мы перешли на это после написания нашей собственной реализации B-Tree подкачки. Это был хороший опыт обучения, но мы продолжали добавлять функции, пока не осталась только (плохо) реализованная версия BDB.

Если вы хотите сделать это сами, вот краткое описание того, что мы сделали. Мы использовали mmap для отображения страниц в памяти. Структура каждой страницы основана на индексе, поэтому с начальным адресом страницы вы можете получить доступ к любому элементу на странице. Затем мы отображали и не отображали страницы по мере необходимости. Мы индексировали текстовые файлы размером в несколько ГБ, когда 1 ГБ основной памяти считалось большим количеством.

3
ответ дан 28 November 2019 в 17:21
поделиться

Вы можете посмотреть Berkeley DB, поддерживаемый ею Oracle, но это открытый исходный код, и его можно найти здесь .

1
ответ дан 28 November 2019 в 17:21
поделиться

Я почти уверен, что это не то решение, которое вы ищете, но почему бы вам не сохранить дерево в файле сами? Все, что вам нужно, - это подход к сериализации и if / ofstream.

В принципе, вы можете сериализовать его так: перейдите в корневой каталог, напишите '0' в свой файл, разделитель типа '|', количество элементов в корневом каталоге и затем все корневые элементы. Повторите с «1» для уровня 1 и так далее. Пока вы не меняете уровень, сохраняйте индекс уровня, пустые листы могут выглядеть как 2 | 0.

1
ответ дан 28 November 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: