7

我已经研究了有关 SQLite 和 UnQLite 的信息,但仍有一些问题尚未得到解答。UnQLite 似乎是在过去几年内发布的,这将归因于缺乏基准。“性能”(读/写速度、查询、显着减速之前的平均数据库大小等)比较在这里可能有点苹果对橘子。

从我所看到的一切来看,两者相比起来几乎没有什么区别,即 SQLite 是一个关系数据库,而 UnQLite 是一个键值对和文档(通过 Jx9)数据库。它们都是可移植的、跨平台的和 32/64 位友好的,并且可以具有单写和多读连接。在 UnQLite 基准测试中可以找到的东西很少,而 SQLite 有很多跨各种(脚本)语言的不同实现。SQLite在内存数据库索引数据具有不同数据大小的读/写模式方面具有不同的性能。总体而言,SQLite 看起来既快速又可靠。

我可以在 UnQLite 上找到的所有内容都是不可靠令人困惑的。我似乎找不到任何有用的东西。UnQLite 的读取/写入速度似乎达到了峰值?使用 UnQLite 时推荐(不)哪些语言?有哪些已知的缺点和错误?


如果它有助于解释我的阴谋,我正在开发一个网络实用程序,它将通过网络接口之间的热交换读取和处理数据包。由于连接可以(尽管不太可能)达到高达 1 Gbps 的速度,因此将有大量原始数据写入数据库。它仍处于开发的早期阶段,我必须找到一种平衡性能的方法。有很多因素,例如丢失的数据包,每次写入的大小,处理和移动数据的速度,需要多少组织,需要多少表,如果我可以实现多处理,每个操作的依赖程度如何数据库在 HDD 速度等方面。我的数据将需要表格,但我是否必须将它们存储为关系仍然悬而未决。

4

1 回答 1

15

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

我从实验中发现,UnQLite 的键/值 API 非常快,可以与其他 DBM 相媲美。不过,当您开始使用 Jx9 和文档存储时,事情会慢一些。

主要看你需要什么...

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

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

如果您想要一个轻量级的 JSON 文档存储,或者带有一点“额外”的键/值,那么 UnQLite 可能是一个不错的选择。

于 2015-05-21T05:00:11.687 回答