Структура данных дерева B+ в Erlang
есть ли какая-либо известная реализация B+ Tree
структура данных в Erlang ?
3 ответов
Я бы определенно рекомендовал заглянуть в eleveldb
приложение, если вам действительно нужно дерево B+. Дело в том, что вы хотите хранить данные в листьях дерева, в автономном режиме на диске, так как это где B+-деревья обычно являются опцией. Существует также вариант в чистом Эрланге LevelDB под названием hanoidb
что также довольно приятно, написано Крестеном крабом Торупом. Та же область применения.
Если вам нужно хранение в памяти, вы должны смотреть на ETS или Mnesia (последнее для распределение.) В Erlang это, как правило, самые быстрые решения, так как у вас есть преимущество никогда не попадать на диск. Это особенно верно, если вы можете выполнять стандартный поиск ключей / значений в своих данных без необходимости запускать внутри транзакционного контекста в Mnesia (делать грязные чтения). Типичная скорость поиска составляет 5-10 наносекунд.
просто альтернатива, если вы не хотите взломать системы баз данных с открытым исходным кодом:
Крис Окасаки Чисто Функциональные Структуры Данных может дать вам некоторое представление о ее осуществлении самостоятельно. Само дерево B+ не так сложно из моего опыта.
Я бы рекомендовал использовать gb_trees если вы хотите как в памяти, так и на более низком уровне (в некотором смысле), чем ets и mnesia.
насколько мне известно, нет отдельной библиотеки. Однако исходный код CouchDB очень читабельно и хорошо реализовано.