2013-07-03 1 views
0

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

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

Тем не менее, мне нужны мои данные, чтобы получить доступ к другому приложению, поэтому я хочу интегрировать систему в свое приложение.

Я осмотрел базы данных, которые могут быть интегрированы, но я не могу их найти.

  • Есть ли доступные для простой вставки, обновления, удаления операции только проект?
  • Или мне нужно придерживаться плоских файлов, потому что есть нет библиотеки для хранения данных, которую я могу интегрировать? (например, введите класс и определите функции записи файлов для моего хранилища данных)
  • Каковы мои другие варианты?

Боковое примечание: Я знаю, что это было бы глупо, но на самом деле один из моих вариантов: есть ли база данных SQL (PostgreSQL), которую я могу скомпилировать вместе с моим проектом, а затем выдавать запросы локально?

+0

Вы ищете встроенную базу данных http://en.wikipedia.org/wiki/Embedded_database? –

+0

Я думаю, что это то, что я ищу, я не очень хорошо знаю английский, но встроенная база данных звучит совершенно правильно. Было бы здорово, если бы была встроенная база данных ORM для C++, она будет искать ее сейчас. – Gizmo

ответ

1

базы данных [...] нужно внешнее приложение

Неправильно. Существует множество систем обработки данных в процессе (например, SQLite, которые с небольшой осторожностью могут быть полностью совместимы с ACID).

Есть ли база данных SQL (PostgreSQL), которую я могу скомпилировать вместе с моим проектом, а затем вызывать запросы локально?

Ну, я начал отвечать, прежде чем вы добавили это замечание, но снова приходит на ум SQLite. Если эта конкретная БД не подходит вам, вы можете найти «встроенную базу данных » или «» в базе данных процесса », существует множество аналогичных продуктов - либо SQL, либо даже NoSQL.

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

+0

Ах, да, я нашел что-то под названием «ODB», которое является ORM и имеет поддержку SQLite, спасибо :) Могу принять ответ за 4 минуты. – Gizmo

+0

Большое преимущество SQLite, IMHO, заключается в том, что он является полностью общественным достоянием, поэтому проблем с лицензированием нет. И он достаточно приличный для небольшого хранения данных (опять же, даже если вам нужен ACID и многоклиентский параллелизм, за счет очень небольшой дополнительной работы). – syam

0

насчет SQLite? Он не требует особых и сложных зависимостей. Его довольно легко настроить и использовать.

Смежные вопросы