最高性能的数据库存储机制
-
20-08-2019 - |
题
我需要想法来实现(真正)高性能内存数据库/存储机制。在存储 20,000+ 个对象的范围内,每个对象每 5 秒左右更新一次。 我想要一个 FOSS 解决方案.
我最好的选择是什么?你有什么经历?
我主要使用 Java 工作,但我需要数据存储具有良好的性能,因此数据存储解决方案不需要以 Java 为中心。
我还需要能够查询这些对象,并且需要能够在程序启动时恢复所有对象。
其他提示
,您在更新对象20K每5秒或更新20K之一每隔5秒?
什么样的对象?为什么是一个传统的RDBMS不足以?
具体取决于您需要如何查询它,但是您研究过 memcached 吗?
http://www.danga.com/memcached/
其他选项可能包括 MySQL 内存表, , 这 APC缓存 如果您使用 PHP。
有关项目/要求的更多详细信息将会有所帮助。
这是在内存中存储?
1)一个简单的C '的malloc' 阵列,其中所有的结构将被编入索引。
2)的BerkeleyDB: http://www.oracle.com /technology/products/berkeley-db/index.html 。因为你建立你自己的索引(辅助数据库),并没有进行评估SQL表达式它是快速。
看一些这里列出的产品: http://en.wikipedia.org/维基/在memory_database
你需要什么级别的耐用性? 20000更新每5秒钟可能会是困难的最IO硬件在交易数量方面,如果你将数据写入回盘的每一个。
如果你能承受失去了一些更新,你很可能就没有问题相当便宜的硬件刷新到磁盘每100ms,如果你的数据库和操作系统支持这样做。
如果它真是一个内存数据库,你不想经常刷新到磁盘,这听起来很简单。我听说H2是相当不错的,但SQLite的可正常工作。甲适当调谐MySQL实例也能做到这一点(但也可以是更复杂时)
编年史地图 是一个 纯Java 关键价值的商店
- 它具有真正的高性能、维持 1万写/第二,从一个单一的线.这是一个神话,一个快速的数据库不能写。
- 无缝店和负载的任何序列化Java对象,提供了一个简单的
Map
接口 - LGPLv3
因为你没有很多"表"一个完全成熟的SQL数据库可能是一个矫枉过正的解决方案、索引&查询可以实施一些不同的关键价值的商店它们是手工更新的香草Java代码。编年史地图 提供了机制 做出这样的更新的同时彼此隔离,如果您需要它。