cassandra - 在 Cassandra 数据模型中同步

标签 cassandra nosql

我正在创建一个社交网络应用程序,并且我已经对数据进行了非规范化,将时间线创建为包含所有字段的帖子列表,以便仅使用一个查询。问题是,如果每个帖子都有计数器(喜欢,分享,评论),每次更新计数器时,我如何同步时间轴中的所有帖子记录?或者我应该在时间线中只有 id,所以我只更新一张帖子表,时间线查询由两个查询而不是一个查询组成?

谢谢你的问候

最佳答案

我一直在考虑类似的任务,这是我的想法:

  • 时间线数据必须同步。只在时间线中存储一个 id 并在帖子中查找是一个坏主意:您不想进行 20 次查找来生成单个时间线页面。此外,它不会扩展:一旦您向服务器架构添加更多节点,不同的帖子可以存储在不同的节点上,这会使查询变慢。
  • 似乎最好使用 counter用于存储计数器的数据类型。这需要创建一个单独的仅计数器表。 See here了解更多信息。据我了解,使用这种类型可以提高(更新)的可扩展性。
  • 如果每个新的点赞/评论/分享都写入时间线变得过于昂贵,则可以使用内存缓存:计数器存储在缓存中,并在时间线生成时进行查找。时间线存储的值更新可能会被延迟,并作为不在缓存中的计数器的后备。我认为从 RAM 中查找单个请求 20 次是可以的。

  • 如果您计算条目 View ,#3 会很有用。由于您没有计算观看次数,因此我认为更新每个点赞/评论/分享的时间线是可以的。

    关于cassandra - 在 Cassandra 数据模型中同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832067/

    相关文章:

    java - 将 CqlOutputFormat 用于 INSERT 语句

    java - 为 Django 设置 Cassandra - "ImportError: No module named pycassa"

    java - 如何在我的工作区中导入 astyanax 客户端示例代码

    cassandra - 为什么 Cassandra 中的 super 列不再受到青睐?

    java - 在 mongodb 中查找没有光标的条目?

    java - 使用spark和java在cassandra中保存对象

    c# - RavenDB - 查询具有多个术语的集合

    Java:从父类(super class)强制执行静态方法(Mongo/Morphia 上下文)

    elasticsearch - 收场崩溃

    .net - 寻找本地 .Net NoSQL DB 系统