我正在寻找数据库/机制来存储我可以写入数据的数据并以高性能读取数据。
此存储用于将记录存储为跨多个系统的重要信息。 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
简称:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
答案 0 :(得分:17)
务必考虑Aerospike; Aerospike在adtech空间中占主导地位,其中high throughput读取和写入是必需的。 Aerospike经常被吹捧为拥有Redis的速度和Cassandra的可扩展性。"有关搜索/查询,请参阅Aerospike的secondary index文档。
有关详细信息,请参阅以下讨论/文章:
答案 1 :(得分:6)
让我成为 Cassandra 赞助商。
免责声明:我不是说Cassandra比其他人更好,因为我甚至不知道mongo / redis等等,我甚至都不想要进入这种东西。
我之所以建议Cassandra,是因为您的需求与Cassandra提供的完全匹配以及您不需要的列表"是一组功能,在Cassandra中不受支持(实例连接)或被视为反模式(删除并在某些情况下更新)。
来自你的"必须拥有"列表,逐点
快速阅读 :支持。您可以选择每个读取操作的一致性级别,以确定检索最新信息的重要性以及速度有多重要
快速写入 :与第1点相同
随机访问性能 :进入Cassandra世界时,您必须考虑许多参数才能获得随机访问性能,但最重要的是进入我的mind是数据模型 - 如果您创建一个水平扩展的数据模型(give a look here)并且您避免使用热点,则可以获得所需的数据模型。如果您以良好的方式为数据库建模,那么每个操作都应该 O(1),因为数据的结构是被查询的
复制 :在此Cassandra甚至比你想象的更好。如果一个节点发生故障,则无法更改群集,并且所有内容(*)都能保持正常运行。 Cassandra没有发现单点故障。我可以告诉你较旧的Cassandra版本我已经超过3年的正常运行时间
并发写入/读取数据 :Cassandra使用lww策略(last-write-wins)来处理同一个键上的并发写入。系统支持多个读写,新协议也支持异步操作。
Cassandra提供了许多其他有趣的功能:线性水平缩放是我更欣赏的,但也有一个事实,你可以知道每一段数据的更新瞬间(lww的时间戳),计数器功能等。
(*) - 如果您不使用一致性等级,那么永远不应该在这样的系统中使用。
答案 2 :(得分:4)
以下是关于如何使用Aerospike跨越内存与磁盘(DRAM,SSM和磁盘存储)的更多链接:
http://www.aerospike.com/hybrid-memory/
http://www.aerospike.com/docs/architecture/storage.html
我认为在将特定数据库与特定用例匹配方面,每个人都是正确的。例如,Aerospike是键值数据的最佳选择。其他选择可能会更好。
通过类比,我将永远记得,几十年前,我的一个姐姐曾借用我的电脑并在Microsoft Excel中写下她的学期论文。一行一行是电子表格的另一行。它看起来很难看,但是,呃,好吧。她完成了任务。她诅咒并发誓编辑这个东西是多么困难。开玩笑吧!
为正确的任务选择正确的NoSQL数据库将使您的工作变得轻而易举,或者如果您决定使用错误的基本工具来完成任务,可能会导致您诅咒蓝色条纹。
当然,每个供应商都会捍卫他们的产品。我认为社区最好回答这个问题。这是另一个回答类似问题的Stack Overflow线程:
Has anyone worked with Aerospike? How does it compare to MongoDB?
顺便问一下:您对我们要解决的问题类型有任何更具体的见解吗?