База данных основной памяти с интерфейсом C ++ - PullRequest
1 голос
/ 26 марта 2010

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

  • Создание таблиц произвольных измерений (количество атрибутов), способных хранить целочисленные типы.
  • Поддержка вставки, удаления, выделения, проецирования и (не приоритет) объединений.

Ответы [ 3 ]

1 голос
/ 26 марта 2010

Время анализа SQLite не так уж много (вы можете амортизировать его по многим запросам), если только вы не подставляете значения в запрос SQL вручную. Замена вручную - тяжелая работа, неловкая, медленная и, вероятно, небезопасная. Вместо этого вы должны использовать связанные параметры, чтобы вы могли делать вещи более напрямую (см. http://www.sqlite.org/c3ref/bind_blob.html для соответствующего API).

Обратите внимание, что если вы переключитесь на другую базу данных, у вас возникнет та же проблема; Вы можете получить высокую скорость из любой системы SQL, используя связанные параметры. (И подумайте, не слишком ли сильно потеют над производительностью; узкие места, где он попадает в хранилище, являются узким местом…)

0 голосов
/ 26 марта 2010

BerkeleyDB (в настоящее время принадлежит Oracle) может хранить данные полностью в памяти (хотя изначально она была разработана для хранения на диске).TimesTen (теперь также принадлежит Oracle) с самого начала была разработана для хранения в памяти.Оба они поддерживают как SQL, так и API для прямого доступа из C, C ++ и т. Д.

0 голосов
/ 26 марта 2010

Попробуйте Boost.MultiIndex .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...