Существует ли контейнер индекса muti для хранения жесткого диска, а не для памяти? - PullRequest
0 голосов
/ 19 августа 2010

Мне нужен контейнер индекса muti, основанный на красно-черных деревьях (что-то вроде boost::multi_index::multi_index_container) для хранения на жестком диске. Все данные должны храниться на жестком диске, а не в памяти.

Существует ли контейнер с открытым исходным кодом, удовлетворяющий описанным условиям?

Примечание. Я использую C++.

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Боюсь, я ничего не знаю.

Для хранения на жестком диске я могу порекомендовать только STXXL , в котором предлагаются контейнеры STL и алгоритмы, адаптированные к данным, которые могут поместиться только на диск. В них реализовано много вещей, обеспечивающих более плавное манипулирование, в основном за счет максимально возможного кэширования в памяти и, по возможности, задержки доступа к диску.

Теперь это не даст вам мультииндекса, но по крайней мере у вас будет STL:)

Затем, если вы уверены, что вы можете портировать мультииндексирование, чтобы использовать средства, предоставляемые STXXL: они декоррелировали кэширование доступа / ввода-вывода в самих контейнерах.

Или вы можете просто написать то, что вам нужно, на основе их STL-совместимых контейнеров.

1 голос
/ 10 марта 2011

Как насчет SQLite ? Он может использовать диск в качестве резервного хранилища и поддерживает несколько индексов данных, как это делает Boost Multi Index.

1 голос
/ 19 августа 2010

Если у вас есть решение в оперативной памяти, вы можете использовать отображенный в памяти файл и специальный распределитель для обеспечения постоянного хранения.

...