Даже легче, чем SQLite - PullRequest
9 голосов
/ 26 мая 2010

Я искал реализацию библиотеки C ++ SQL, которую легко подключить, как SQLite, но быстрее и меньше. Мои проекты находятся в разработке игр, и определенно есть точка отсечки между необходимостью пройти тест ACID и желанием достичь максимальной производительности. Я готов отойти от запросов в виде строкового стиля SQL, позволяя ему управлять кодом, но я не нашел ничего такого, что обеспечивало бы гибкость, подобную SQL, и в то же время отдавало бы предпочтение производительности по сравнению с тестом ACID.

Я не хочу переизобретать колесо, и сама идея реализации библиотеки SQL довольно устрашающая, даже если она будет простым подмножеством всех вызовов, которые вы можете сделать.

Мне нужны базовые команды (SELECT, MODIFY, DELETE, INSERT, с JOIN и WHERE), а не операции с данными (такие как сортировка, min, max, count), и мне не нужна атомарная база данных или даже обеспечить согласованность (я могу использовать настоящую службу SQL во время тестирования и отладки).

Ответы [ 6 ]

14 голосов
/ 26 мая 2010

Вы уверены, что получили максимальную скорость, доступную от SQLITE?Из коробки SQLITE чрезвычайно безопасен, но довольно медленен.Если вы знаете, что делаете, и готовы рисковать повреждением БД при сбое диска, вы можете сделать несколько оптимизаций, обеспечивающих впечатляющие улучшения скорости.

В частности:

  • Отключить синхронизацию
  • Группировать записи в транзакции
  • Таблицы индексов
  • Использовать базу данных в памяти

Если вы не исследовали все этитогда вы, вероятно, работаете во много раз медленнее, чем могли бы.

10 голосов
/ 26 мая 2010

Я не уверен, что вам удастся найти что-нибудь с лучшими характеристиками, чем SQL. Особенно, если вам нужны такие операции, как JOINs ... Является ли скорость SQLite проблемой? Для простых запросов это обычно быстрее, чем для любой полной SGDB. У вас нет проблемы с индексом?

Что касается размера, это не событие 1Meg extra в двоичном файле, поэтому я немного удивлен, что это проблема.

Вы можете взглянуть на Berkeley DB, которая, вероятно, является самой быстрой из доступных БД, но в основном это только база данных key-> value.

Если вам действительно нужна более высокая скорость, подумайте о загрузке всей базы данных в память (снова используя SQLite).

1 голос
/ 26 мая 2010

Возможно, вы захотите рассмотреть Встроенный innoDB .Он предлагает базовую функциональность SQL (очевидно, см. MySQL), но не предлагает фактический синтаксис SQL (поскольку это часть MySQL, а не innoDB).На 838 КБ это не слишком тяжело.

1 голос
/ 26 мая 2010

Взгляните на гигабазу и ее двойную fastdb.

0 голосов
/ 06 июня 2012

вы можете попробовать leveldb, это ключ / хранилище значений

http://code.google.com/p/leveldb

0 голосов
/ 26 мая 2010

Если вам просто нужны эти базовые операции, вам на самом деле не нужен SQL. Взгляните на хранилище данных NoSQL, например Tokyo Cabinet .

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