我正在开发一个应用程序,它需要存储带有许多写入和读取的数据,因为需要快速搜索数据(需要某种索引),并且还能够序列化和保存数据。

目前我正在考虑使用SQLite来完成工作,但我愿意接受替代方案。 SQLite的语法实际上并不适合C ++代码(例如,我被迫通过列索引号而不是列名等来访问结果)。

有帮助吗?

解决方案

继续使用SQLite,但为此找到一个好的C ++库。

StackOverflow问题可以为您提供帮助。 ..

其他提示

我认为增加对包装器库的依赖并不值得花费额外依赖的成本。当他们的文档可能很少时,您不希望被调试这些包装器库。 SQLLite必须更稳定,并且具有更好的文档,因此具有更可靠的依赖性。

我要么处理sqllite,要么根据你的最终应用程序以一种聪明的方式自己包装。

听起来好像数据库是您唯一真正的选择。但是,如果您选择SQLite或MySql,Postgres在列索引点中并不重要。

也许你真正想要的是更好的数据库抽象。您可能想尝试Poco,它有一个很棒的: http://pocoproject.org/

Berkeley DB又名SleepyCat。如果您搜索档案,Mike Olsen就会发表一篇文章,讨论SQL在任何项目中的主要缺点。去年还有另一篇后续文章表明,SQL正在逐步推出,因为ORM层变得越来越好。

如果你问我留在SQLite并“自己动手” - 包装很简单我自己对SQLite做过各种包装。为什么?因为它的API比其他任何与数据库相关的更友好,所以你不需要花费太多精力。使用包装器库,您将只添加更多未知数,最重要的是大多数包装器并不专门用于提供嵌入式数据库。我一直在重复使用嵌入式数据库,正确的方法与数据库服务器的最佳方法有很大不同......

如果SQL语法对您不重要,我建议 MetaKit - 它略有不同方法,但它非常强大,我个人知道不止一些成功使用它的商业项目,即使在嵌入式系统上也是如此。

此Tutoria l对入门非常有帮助。

我可以建议您列出列出的包装API 在Sqlite网站上?那里有很多语言,包括C ++。 Sqlite Plus看起来特别好。 POCO,“通常无用”提到,看起来也不错。

我同意,说SQLite与C ++或列名索引不兼容是假的。有很多C ++ SQLite包装器鼓励按名称访问列。 SQLite ++ 只是其中之一。

您可能会考虑使用像Lucene这样的反向索引IR库(或其中的众多克隆之一)而不是sql衍生物。我知道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