我已经研究了有关SQLite和UnQLite的功能,但仍有一些事情尚未完全解决。 UnQLite似乎是在过去几年中发布的,这归因于缺乏基准测试。在这里,“性能”(读/写速度,查询,显着变慢之前的平均数据库大小等)比较可能有些不合时宜。
从我所看到的所有内容来看,相对而言,两者几乎没有什么区别,即SQLite是一个关系数据库,而UnQLite是一个键值对和文档(通过Jx9)数据库。它们都是便携式的,跨平台的,并且是32/64位友好的,并且可以具有单写和多读连接。在UnQLite基准测试中几乎找不到,而SQLite在不同(脚本)语言中有很多实现不同的实现。 SQLite在in-memory databases,indexed data和read/write modes with varying data size上具有一些不同的性能。总体而言,SQLite显得快速可靠。
我可以在UnQLite上找到的只有unreliable和confusing。我似乎找不到任何有用的东西。 UnQLite似乎达到什么读/写速度?使用UnQLite时(不)建议使用哪种语言?有哪些已知的缺点和错误?
如果这完全可以解释我的好奇心,那么我正在开发一种网络实用程序,它将通过网络接口(interface)之间的热交换来读取和处理数据包。由于连接的速度虽然不太可能达到1 Gbps,所以将有很多原始数据写到数据库中。它仍处于开发的早期阶段,我必须找到一种平衡性能的方法。有很多因素,例如丢失的数据包,每个写入大小有多大,它可以处理和移动数据的速度有多快,需要多少组织机构,需要多少张表,如果我可以实现多处理,每个依赖度如何等数据库的速度取决于HDD的速度等等。我的数据将需要表,但是是否仍需要存储它们作为关系表仍然悬而未决。看到两者如何结合自身的利弊(除了通常的KVP与关系辩论之外)可能将我推向一个方向,或者,如果我够疯狂的话,将两者结合起来
最佳答案
我使用我写的python bindings在UnQLite上做了一些鬼混。 Python绑定(bind)使用cython
并且非常快。
从我的实验中发现,与其他DBM相比,UnQLite的键/值API非常快速。但是,当您开始使用Jx9和文档存储时,事情会放慢一点。
基本上取决于您的需求...
如果您想使用SQL和即席查询,建议您使用SQLite。它非常快且非常灵活。
如果只需要键和值,则可以使用leveldb或rocksdb之类的东西。
如果您想使用轻量级的JSON文档存储或带有“额外”位的键/值,那么UnQLite可能是一个不错的选择。