C# sqlite,伯克利db基准测试

C# sqlite,伯克利db基准测试,c#,sqlite,benchmarking,berkeley-db,C#,Sqlite,Benchmarking,Berkeley Db,我想用c语言创建桌面应用程序,因为我想使用嵌入式数据库,比如 (sqlite,berkeley db),那么如何开始对这些数据库进行基准测试呢 在考虑基准测试之前,您需要比较数据库的功能 SQLite和BDB所支持的功能完全不同,如果数据比较复杂,我建议使用SQLite更方便地查询关系数据(如果您的数据是这样排列的)我同意Osama的观点,您应该先比较一下功能 然而,我不同意“复杂”的数据会自动将您推向sqlite。虽然我还没有看到任何基准(也不想写任何基准),但我有一种直觉反应(不管它值多少)

我想用c语言创建桌面应用程序,因为我想使用嵌入式数据库,比如
(sqlite,berkeley db),那么如何开始对这些数据库进行基准测试呢

在考虑基准测试之前,您需要比较数据库的功能


SQLite和BDB所支持的功能完全不同,如果数据比较复杂,我建议使用SQLite更方便地查询关系数据(如果您的数据是这样排列的)

我同意Osama的观点,您应该先比较一下功能

然而,我不同意“复杂”的数据会自动将您推向sqlite。虽然我还没有看到任何基准(也不想写任何基准),但我有一种直觉反应(不管它值多少),即伯克利DB几乎每次都会表现出色

也就是说。我不认为这是我用来做自己决定的。它又回到了那些特性上。如果我想要的只是一个简单的数据存储,那么我可能会选择sqlite,因为它会更简单。同样,如果我希望能够在任何字段上任意查询数据,或者有一天可能将其存储在“企业”SQL数据库中,我可能会选择sqlite,因为将来的迁移会更容易。但是,如果我打算超越一个简单的数据存储,并且关注事务安全性、高并发性、高可用性、有许多读写器等,并且我有一组定义相当好的“查询”,那么我可能需要BDB

请注意,我的数据的“复杂性”并没有真正进入这些等式。原因很简单。BDB可以以其本机序列化格式保存我的对象。任何风格的Sql都带有著名的阻抗失配,在我看来,这会使我的应用程序复杂化


如果您正在认真考虑BDB,我需要提醒您,您应该事先决定要使用的存储类型,因为BDB提供的不同类型的存储不一定兼容。

最近,Oracle在BDB的btree存储之上添加了sqlite3接口,因此,您应该能够针对sqlite3编写代码,然后插入BDB。问题是许可证问题。BDB强迫你要么付费要么开源;sqlite让你想做什么就做什么。

这里有一个链接,其中包含一些信息:这项研究已有7年历史,是一个非常糟糕的基准测试。这只是一个如何不做基准测试的好例子。如果你想了解性能,我使用了Berkeley embedded DB。它是一种基于键值的存储器,提供其频谱中最好的读取访问。但为了确保它不会公开任何需要编译的查询语言。BDB之上的SQLite将简化您对BDB的使用,但这肯定会带来额外的成本。此外,如果BDB具有最大的创建和读取操作和最小更新操作,则考虑BDB,因为在伯克利DB中更新是昂贵的。