12

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

此存储用于跨多个系统存储 Logging 等重要信息。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

4

3 回答 3

20

披露:Kevin Porter 自 2013 年 5 月起担任 Aerospike, Inc. 的高级软件工程师。(参考

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

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

  1. Aerospike VS 卡桑德拉
  2. Aerospike vs Redis 和 Mongo
  3. Aerospike 基准

最后使用EC2 指令上的一百万 TPS 验证自己的性能。

于 2014-11-13T16:21:48.443 回答
6

让我成为Cassandra的赞助商。

免责声明:我并不是说 Cassandra 比其他人更好,因为我什至不深入了解 mongo/redis/whatever,我什至不想进入这种东西。

我建议 Cassandra 的原因是因为您的需求与Cassandra 提供的完全匹配,并且您的“不需要的列表”是 Cassandra 不支持的一组功能(例如连接)或被视为反模式(删除并在某些情况下更新)。

从您的“必备”列表中,逐点

  1. 快速阅读没有失败:支持。您可以选择每个读取操作的一致性级别,从而决定检索最新信息的重要性以及速度的重要性

  2. 快速写入没有失败:与第 1 点相同

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

  4. 复制:在这个 Cassandra 中甚至比你想象的还要好。如果一个节点出现故障,集群不会发生任何变化,并且一切(*)都可以正常工作。Cassandra 没有发现单点故障。我可以用旧的 Cassandra 版本告诉你,我的正常运行时间已经超过 3 年

  5. 并发写入/读取数据:Cassandra 使用 lww 策略(last-write-wins)来处理对同一键的并发写入。该系统支持多种读写,并且使用较新的协议还支持异步操作。

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

(*) - 如果你不使用 Consistency Level All,恕我直言,永远不要在这样的系统中使用。

于 2014-11-12T18:38:59.703 回答
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 相比如何?

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

于 2014-11-18T17:32:01.623 回答