当我想在本地存储来自应用程序的数据而没有外部依赖性时,我有哪些选项?

时间:2013-07-03 21:17:36

标签: c++ performance data-storage

我正在设计一个需要数据存储的应用程序(例如用户帐户,日志等)。我不希望性能成为问题,因此数据的检索/更新/删除将与主应用程序线程(创建者 - 消费者模型)位于一个单独的线程中。

我无法使用NoSQL数据库或任何其他数据库系统,因为他们需要运行外部应用程序才能使数据可用(例如使用网络管道连接到主机)。

然而,我需要我的数据,而不需要运行另一个应用程序,所以我想将一个系统集成到我自己的应用程序中。

我一直在寻找可以集成的数据库,但我找不到任何数据库。

  • 是否可以进行简单的插入,更新,删除操作 项目只?
  • 或者我需要坚持使用平面文件,因为有 没有可以整合的独立数据存储库? (例如制作 一个类,并为我的数据存储定义文件编写函数)
  • 我的其他选择是什么?

Side注意:我知道它会有点愚蠢,但实际上我的选择之一是:是否有一个SQL(最好是PostgreSQL)数据库,我可以与我的项目一起编译,然后在本地发出查询?

3 个答案:

答案 0 :(得分:1)

  

数据库[...]需要外部应用程序

错误。有大量的进程内数据库系统(例如SQLite,可以完全符合ACID标准)。

  

是否有一个SQL(最好是PostgreSQL)数据库,我可以与我的项目一起编译,然后在本地发出查询?

我在你添加这句话之前就开始回答了,但是再次想到了SQLite。如果此特定数据库不适合您,您可能希望搜索“嵌入式数据库”或“进程内数据库”,有大量类似的产品 - - 无论是SQL还是NoSQL。

一个好的NoSQL,键值数据库将是Berkeley DB但是我担心自甲骨文购买它以后许可证已经收紧了所以我不确定它现在是否仍然相关(除非你的应用程序完全开放 - 来源或您可以购买商业许可证。)

答案 1 :(得分:0)

SQLite

听起来不错

答案 2 :(得分:0)

SQLite怎么样?它不需要任何特殊和复杂的依赖项。它的设置和使用相当容易。