UnQLite 的表现如何?它与 SQLite 相比如何(在性能方面)?

How well does UnQLite perform? How does it compare to SQLite (in performance)?

我已经尽我所能研究了 SQLite 和 UnQLite,但仍有一些问题尚未完全得到解答。 UnQLite 似乎是在过去几年内发布的,这归因于缺乏基准。 "Performance"(read/write 速度、查询、平均数据库大小在显着减速之前等)这里的比较可能有些平庸。

据我所知,两者相比较而言差别很小,即SQLite是一个关系型数据库,而UnQLite是一个键值对和文档(通过Jx9)数据库。它们都是可移植的、跨平台的和 32/64 位友好的,并且可以具有单写和多读连接。在 UnQLite 基准测试中几乎找不到,而 SQLite 有相当多的跨各种(脚本)语言的不同实现。 SQLite 在 in-memory databases, indexed data, and read/write modes with varying data size 中有一些不同的性能。总体而言,SQLite 显得快速可靠。

我在 UnQLite 上能找到的都是 unreliable and confusing。我似乎找不到 任何东西 有帮助。 UnQLite 的峰值速度是多少 read/write?使用 UnQLite 时推荐(不)使用哪些语言?有哪些已知的缺点和错误?


如果它有助于解释我的阴谋,我正在开发一个网络实用程序,它将通过网络接口之间的热交换来读取和处理数据包。尽管不太可能,由于连接可以达到高达 1 Gbps 的速度,因此会有大量原始数据被写入数据库。它仍处于开发的早期阶段,我必须找到一种方法来平衡性能。有很多因素,例如丢失的数据包,每个写入大小有多大,处理和移动数据的速度有多快,需要多少组织,需要多少表,如果我可以实现多处理,每个数据的依赖程度如何数据库在 HDD 速度上,等等。我的数据将需要表格,但我是否必须将它们存储为关系仍然悬而未决。看看两者如何叠加各自的优缺点(除了通常的 KVP 与关系辩论之外)可能会促使我选择其中之一,或者,如果我足够疯狂,则两者结合

我已经使用 python bindings 我写的 UnQLite 做了一些鬼混。 Python 绑定使用 cython 并且非常快。

我从实验中发现,与其他 DBM 相比,UnQLite 的 key/value API 非常快。不过,当您开始使用 Jx9 和文档存储时,速度会慢一些。

基本上看你需要什么...

如果您想要 SQL 和临时查询,我建议您使用 SQLite。它非常快速且非常灵活。

如果您只需要键和值,我会使用 leveldb 或 rocksdb 之类的东西。

如果您想要一个轻量级的 JSON 文档存储,或者 key/value 有点 "extra",那么 UnQLite 可能是一个不错的选择。