2

我正在开发一个需要很多用户在同一个“宇宙”中的 Web 应用程序,其中会发生很多频繁的查询:

  • 频繁查找位于某个框区域(X1、X2、Y1 和 Y2 之间)的客户端
  • 客户频繁更新位置
  • 客户频繁的聊天消息
  • 客户频繁更新状态
  • 新老客户端频繁连接断开

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

  • 它有一个单点故障(一个主服务器)
  • 只有主服务器可以写入,如果一个有 40 个节点,那么 39 个从服务器将不得不让一个主服务器写入每个条目

Cassandra 似乎解决了这些问题。

但是,Cassandra 是否也适合我的频繁查询?

4

2 回答 2

2

Cassandra 优化了写而不是读(读比写更昂贵),但它仍然可以同时维持高读写吞吐量。

使用正确的列族结构,您应该能够在高频下做您想做的事情,这取决于您的集群有多大。

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

于 2011-09-09T11:03:58.513 回答
2

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

您描述的用户案例似乎包括许多连接..

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

或者您是否完成了满足您所有查询(尤其是读取查询要求)的数据库设计和明显方案(尽管 Cassandra 不受模式约束)?(它的诉小鬼)

于 2011-09-10T19:07:15.113 回答