C ++ хранилища Key-Value в памяти - PullRequest
4 голосов
/ 26 июня 2010

Я ищу предложения, касающиеся механизмов или библиотек хранилища значений ключей в памяти, которые имеют интерфейсы C ++ или написаны на C ++.

Я ищу решения, которые можно без проблем масштабировать до примерно 100-миллиметровых пар ключ-значение и которые совместимы / компилируются на linux и win32 / 64

Ответы [ 7 ]

10 голосов
/ 26 июня 2010

Как насчет std::map?
http://cplusplus.com/reference/stl/map/

5 голосов
/ 26 июня 2010

Если вам действительно нужно хранить такое количество пар в памяти, учтите это Sparse Hash Он имеет специальную реализацию, оптимизированную для низкого потребления памяти.

3 голосов
/ 26 июня 2010

std :: map - это нормально, учитывая, что размер ключа и значения невелик, а объем доступной памяти велик (около 100 миллионов пар) Если это не так, и вы хотите запустить программу через пары ключ-значение, рассмотрите возможность использования стандартного API MapReduce. Map Reduce специально предназначен для использования в распределенных системах и обработки больших данных, особенно пар ключ-значение. Также есть хорошие C ++ API для Map Reduce. http://en.wikipedia.org/wiki/MapReduce

2 голосов
/ 26 июня 2010

Попробуйте Tokyo Cabinet, он поддерживает хеш-таблицы и деревья B +:

http://1978th.net/tokyocabinet/

1 голос
/ 26 июня 2010

Хэш-карта (также называемая неупорядоченной картой) - лучшая ставка для такого количества пар. Вы можете найти реализацию в Boost и TR1.

Edit: Некоторые люди ставят под сомнение размер - если у него есть, скажем, 64-битный сервер, там достаточно места для пар 100 миллионов кв.

1 голос
/ 26 июня 2010

Попробуйте FastDB , хотя вы можете получить больше, чем просите. Кабинет Токио также поддерживает базы данных в памяти. (Или подкрепленный файлом, отображаемым mmap. В современных операционных системах нет большой разницы между базой данных «in-ram» и чем-то, что делает mmap, поскольку кэширование ОС делает последнюю также очень эффективной).

0 голосов
/ 27 июня 2010

Oracle Berkeley_db - это то, что вам нужно.

...