键值数据库(伯克利数据库的替代品?
Key-Value DB (an alternative to Berkeley DB?)
我正在寻找磁盘上的哈希图(伯克利数据库完全适合,但用于许可问题)。要求是:
- 带有商业友好许可证的FOSS(可用于商业应用,无需付费)
- 一个 C/C++ 接口
- 嵌入
- 体面的速度? 比SQLite更快是理想的
- 跨平台也会很好
欢迎任何建议。谢谢!
最近有几个
选项,它们都提供 byte[] -> byte[] 映射、原子批处理更新,并且是 BSD 许可的:
来自谷歌的Leveldb。
Facebook的RocksDB基于Leveldb的一个分支,并声称在SSD支持的存储上提供更高的性能。
尽管您的应用程序域和数据规范不清楚;RocksDB是嵌入式持久键值存储的最新解决方案,似乎适合您。Facebook的基准测试表明,对于服务器工作负载,特别是对于大于RAM容量的数据,它比LevelDB具有更好的性能。此外,它是在BSD许可证下开源的。您可以从此处找到RocksDB C++示例和更多详细信息。
*dbm 库怎么样?
DBM NDBM GDB m SDBM TDBM 和朋友
有很多选择。
如果我们严格的话,建议的主流选项都不是哈希映射。这种结构很少用于持久存储,因为一个好的哈希函数会路由到不同的存储桶,即使对于类似的键也是如此。类似的键通常意味着经常一起访问的相关数据,因此您希望避免将它们放在磁盘的远程部分。随机读取延迟可能过高。
最著名的匹配实现将是 Microsoft 更快的。
相关文章:
- 查询SQLite数据库中的日期
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在ArangoDb AQL查询中指定数据库
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- C++中原子的替代品<variant>
- 无法在C++中建立与MySQL数据库的连接
- 将类实现到数据库程序中
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 调试编译的服务器在数据库打开时崩溃
- C++变量mysql_query到数据库
- LMDB:在有限的内存系统中打开大型数据库
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- 以只读模式打开数据库时SQLITE_CANTOPEN错误
- 如何使用SQLite将数据库中的值导出为C / C++中的字符串或字符?
- 如何在Qt中从数据库中检索二进制数据?
- 如何从网站获取数据并将其传输到数据库?
- 在装有 CLion 的 Mac 上使用 C++ 连接到 MySQL 数据库时出现问题
- 键值数据库(伯克利数据库的替代品?