Cassandra适用于需要频繁查询(读/写)的系统吗?

时间:2011-09-09 10:56:37

标签: database nosql scalability cassandra key-value-store

我正在开发一个Web应用程序,需要很多用户处于相同的“Universe”中,在那里会发生很多频繁的查询:

  • 频繁查找特定框区域内的客户端(X1,X2,Y1和Y2之间)
  • 客户经常更新位置
  • 客户经常发送聊天消息
  • 客户经常更新状态
  • 频繁连接和断开新老客户

我相信我的节点可以有足够的内存供所有当前在线用户使用。这就是我最初考虑Redis的原因。但是,我认为Redis不适用于此,因为:

  • 它有一个单点故障(一个主服务器)
  • 只有主服务器可以写入,如果一个有40个节点,则39个从属服务器必须让一个主服务器写入每个条目

Cassandra似乎解决了这些问题。

但是,Cassandra是否也适合我经常查询?

2 个答案:

答案 0 :(得分:2)

Cassandra优化了对读取的写入(读取与写入相比是昂贵的),但它仍然可以同时维持高读取和写入吞吐量。

使用正确的列族结构,您应该能够在高频下执行您想要的操作,具体取决于您的群集的大小。

就我个人而言,我使用Redis来缓存大部分信息,并且只在缓存未命中时从Cassandra中读取。

答案 1 :(得分:2)

Cassandra绝对是处理写入的绝佳解决方案,但如果你可以告诉你的读取负载,那么你肯定可以期待一个精确的答案,但只要你有足够的RAM,通常读取也很好。

您描述的用户案例似乎包含许多联接..

您是否有足够的理由在开发阶段采用NoSQL解决方案?因为Cassandra基本上是一种需要高可扩展性的设置解决方案,但是以非规范化为代价并且在很大程度上牺牲了连接。换句话说,您需要更高的磁盘空间但CPU需求更低。

或者您已经完成了数据库设计和明显的方案(虽然Cassandra不受架构限制),它可以满足您的所有查询,尤其是读取查询要求? (它的v.imp)