Вопрос

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

В настоящее время я думаю об использовании SQLite, который выполняет свою работу, но я открыт для альтернатив. Синтаксис SQLite действительно не вписывается в код C ++ (например, я вынужден получать доступ к результатам по номерам столбцов, а не по именам столбцов и т. Д.).

Это было полезно?

Решение

Оставайтесь с SQLite, но найдите для этого хорошую библиотеку C ++.

Этот вопрос StackOverflow должен помочь вам. ..

Другие советы

Я бы сказал, что добавленная зависимость от библиотеки-оболочки не стоит затрат, связанных с затратами на эту дополнительную зависимость. Вы не хотите зацикливаться на отладке этих библиотек-оберток, когда документация для них может быть недостаточной. SQLLite должен быть более стабильным, иметь лучшую документацию и, следовательно, более надежную зависимость.

Я бы разбирался с sqllite или оборачивал его самостоятельно каким-либо интеллектуальным способом в зависимости от вашего конечного приложения.

Звучит так, как будто база данных - единственная реальная возможность для вас. Если вы выбрали SQLite, MySql или Postgres, в индексной точке столбца значения не имеют.

Возможно, вам действительно нужна лучшая абстракция базы данных. Возможно, вы захотите попробовать Poco, у него есть отличный вариант: http://pocoproject.org/

Беркли БД ака SleepyCat. Если вы ищете в архивах, есть статья Майка Олсена, в которой рассказывается об основных недостатках SQL в любом проекте. В прошлом году была опубликована еще одна статья, в которой говорится, что SQL находится на выходе, поскольку уровни ORM становятся намного лучше.

Если вы попросите меня остаться с SQLite и " сделайте это самостоятельно " - Обёртка это довольно просто, я сам делал разные обёртки над SQLite. Зачем? Потому что его API гораздо удобнее, чем любая другая база данных, и вам не нужно тратить много усилий. С библиотекой обертки вы только добавите больше неизвестных, и что наиболее важно, большинство оберток не предназначены специально для обслуживания встроенных баз данных. Я всегда повторяю, что со встроенной базой данных правильный путь сильно отличается от оптимального подхода для сервера базы данных ...

Если синтаксис SQL для вас не важен, я рекомендую MetaKit - это немного другой подход, но он достаточно мощный, и я лично знаю о нескольких коммерческих проектах, которые успешно его используют, даже во встроенных системах.

Это руководство очень полезно для начала работы.

Могу ли я предложить вам список API-интерфейсов оболочки , перечисленных в списке на сайте Sqlite? Там много всего для многих языков, включая C ++. Sqlite Plus выглядит особенно хорошо. POCO, о котором «обычно бесполезно» упоминается, тоже выглядит хорошо.

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

Вместо производной sql вы можете подумать об использовании библиотеки IR с инвертированным индексом, такой как Lucene (или одного из множества клонов). Я знаю, что Lucene - это Java, но вы могли бы написать управляемую библиотеку C ++ для взаимодействия с Lecene.Net.

Что касается скорости, я очень доволен производительностью Lucene для чтения. Он не так оптимизирован для записи, но все еще довольно хорош, если вы не пытаетесь создать индекс из миллионов «документов».

Если вы не работаете в Windows, вы можете заглянуть в Tokyo Cabinet. Это выглядит довольно хорошо. Я жду порта Win32, поэтому не могу сказать о нем ничего, кроме производительности, которая выглядит впечатляюще.

http: // anyall.org/blog/2009/04/performance-comparison-keyvalue-stores-for-language-model-counts/

Это не производная от SQL. Это прямой магазин, основанный на b-tree / hash. Это очень приветствуется, на мой взгляд. Единственная конкурирующая библиотека, о которой я знаю, - это Berkeley DB, лицензирование которой менее чем желательно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top