Cassandra数据模型



我正在制作一个POC来展示Cassandra是如何工作的。我以Digg为例。我想创建一个数据模型,让我:

1)添加链接2)添加到用户收藏列表的链接。3)给链接附加预定标签

我想出了两个Column family:

    链接
    • url是关键
      • id(生成的uuid)
      • 用户(谁添加的)
      • favCount(收藏链接的用户总数)
      • upCount(点赞用户总数)
      • downCount(不喜欢的用户数量)
  1. UserFavs

    • user是关键字
      • id(与用户收藏的id相同)

这对于上面的需求1和2来说很好,但是当我谈到需求3时,它就变得棘手了。我可以添加标签,如"java","语言","架构"作为列名与空值在链接列族。但是查询将花费很长时间,假设我要找到所有标记为"java"的链接。

谁能说说这是怎么实现的?

如果我对问题不清楚,请告诉我。

谢谢,Kumar

您可以创建一个二级索引,即在标签上键入一个列族。每行包含该特定标记的所有链接。注意,这可能会导致非常宽的行(即有许多列),其中每一行都将存储在单个cassandra节点上。如果它们变得非常大,你可能需要一个方案来拆分它们。

见http://www.datastax.com/docs/0.7/data_model/cfs_as_indexes

或http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

或google cassandra secondary index

最新更新