【发布时间】:2015-06-22 04:47:01
【问题描述】:
我已经研究了有关 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 时推荐(不)哪些语言?有哪些已知的缺点和错误?
如果它有助于解释我的阴谋,我正在开发一个网络实用程序,它将通过网络接口之间的热交换读取和处理数据包。由于连接速度虽然不太可能达到 1 Gbps,但将有大量原始数据写入数据库。它仍处于开发的早期阶段,我必须找到一种平衡性能的方法。有很多因素,例如丢失的数据包,每次写入的大小,处理和移动数据的速度,需要多少组织,需要多少表,如果我可以实现多处理,每个有多依赖数据库在 HDD 速度等方面。我的数据将需要表格,但我是否必须将它们存储为关系仍然悬而未决。看到这两者如何与各自的优缺点相叠加(除了通常的 KVP 与关系辩论)可能会将我推向其中一个,或者,如果我足够疯狂的话,两者兼而有之
【问题讨论】:
-
你也应该看看BerkeleyDB。安装它并进行自己的基准测试真的那么难吗?
-
@MikeSherrill'CatRecall' 我很惊讶看到有人对此做出回应,因为它现在有多“古老”。本周我将研究 BerkeleyDB。感谢您的建议!
-
BDB 是个好建议。 Kyotocabinet 也是一个不错的键/值存储,具有出色的性能。
-
虽然没有直接解决您的问题,但我会质疑是否需要直接写入数据库 - 会考虑将数据转储到一系列文件/目录中(如果带宽是一个问题,可能分布在多个驱动器上),然后根据需要后处理到数据库中。
标签: sqlite database-performance unqlite