高性能DB,用于快速读取和快速写入.没有更新或删除

Red*_*ddy 11 database performance nosql aerospike

我正在寻找数据库/机制来存储我可以写入数据的数据,并以高性能读取数据.

此存储用于将记录存储为跨多个系统的重要信息.Since it's critical data which will be logged, read performance should be pretty fast as these data will be used to show history. Since we never do update on them/delete on them/or do any kinda joins, I am looking for right solution.可能我们可能会在很长一段时间内存档数据,但这是可以处理的.

我试着看不同来源了解不同的NoSql数据库,专家意见总是更好:)

Must Have:
1. Fast Read without fail
2. Fast Write without fail
3. Random access Performance
4. Replication kinda feature, one goes down, immediately another should be up and working
5. Concurrent write/read data

Good to Have:
1. Search content like analysing the data for auditing with/without Indexes

Don't required:
1. Transactions are not required at all
2. Update never happens
3. Delete never happens
4. Joins are not required
Run Code Online (Sandbox Code Playgroud)

推荐:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

kpo*_*ter 17

一定要考虑Aerospike ; Aerospike在adtech领域占主导地位,需要高吞吐量读写.Aerospike经常被吹捧为具有"Redis的速度和Cassandra的可扩展性".有关搜索/查询,请参阅Aerospike的二级索引文档.

有关更多信息,请参阅以下讨论/文章:

  1. Aerospike vs Cassandra
  2. Aerospike vs Redis和Mongo
  3. Aerospike基准

最后使用EC2指令上的100万TPS验证自己的性能.

  • 根据SO规则,您[必须](http://meta.stackexchange.com/questions/57497/limits-for-self-promotion-in-answers)披露您与Aerospike的关系.不要误会我的意思,我喜欢它,我确信这是工作的人:) (7认同)

Car*_*ini 6

让我成为Cassandra的赞助商.

免责声明:我不是说Cassandra比其他人好,因为我甚至不太了解mongo/redis/what,我甚至不想进入这种东西.

我建议Cassandra的原因是因为你的需求与 Cassandra提供的完全匹配,你的"不需要列表"是Cassandra不支持的一组功能(实例连接)或被认为是反模式(删除)在某些情况下更新).

从"必须"列表中逐点列出

  1. 快速读取但不会失败:支持.您可以选择每个读取操作的一致性级别,以确定检索最新信息的重要程度以及速度的重要程度

  2. 快速写入但不会失败:与第1点相同

  3. 随机访问性能:当进入Cassandra世界时,你必须考虑许多参数来获得随机访问性能,但我想到的最重要的是数据模型 - 如果你创建一个水平扩展的数据模型(看一看)在这里)你避免热点你得到你需要的东西.如果您以良好的方式为数据库建模,则每个操作都应该有 O(1),因为数据的结构是要查询的

  4. 复制:在这个Cassandra甚至比你想象的更好.如果一个节点发生故障,则无法更改群集,并且所有内容(*)都能保持正常运行.Cassandra没有发现单点故障.我可以用较旧的Cassandra版本告诉你我已经超过3年的正常运行时间

  5. 并发写入/读取数据:Cassandra使用lww策略(last-write-wins)来处理同一个密钥上的并发写入.系统支持多个读写,新协议也支持异步操作.

Cassandra提供了许多其他有趣的功能:线性水平缩放是我更欣赏的,但也有一个事实,你可以知道每一段数据的更新时间(lww的时间戳),计数器功能和等等.

(*) - 如果你不使用一致性等级,那么永远不应该在这样的系统中使用.


小智 5

以下是有关如何使用 Aerospike 使用磁盘(DRAM、SSM 和磁盘存储)跨越内存的更多链接:

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

我认为在将特定数据库与您的特定用例相匹配方面,每个人都是正确的。例如,Aerospike 最适合键值数据。其他选择可能会更好。

打个比方,我会永远记得,几十年前,我的一个姐姐借我的电脑,用 Microsoft Excel 写了她的学期论文。一行一行是电子表格的不同行。它看起来很丑,但是,呃,好吧。她完成了任务。她诅咒并发誓编辑这个东西是多么困难。不开玩笑!

为正确的任务选择正确的 NoSQL 数据库将使您的工作变得轻而易举,或者如果您决定为手头的任务选择错误的基本工具,可能会导致您诅咒蓝色条纹。

当然,每个供应商都会为他们的产品辩护。我认为最好由社区来回答这个问题。这是另一个回答类似问题的 Stack Overflow 线程:

有人用过 Aerospike 吗?它与 MongoDB 相比如何?

顺便说一句:对于您要解决的问题类型,您对我们有更具体的见解吗?