我正在为PenWag.com进行从MySQL到Cassandra的转换。在Cassandra中,我将存储的用户从GUID中删除,但用户使用他们的电子邮件登录,而不是GUID(显然)。出于两个原因,GUID作为用户的关键字对我来说比电子邮件更有意义。从实际角度来看,使用SuperColumns更改或删除/添加行非常麻烦。从理论的角度来看,它仍然是一个用户,为什么他们的关键应该改变?Cassandra/BigTable数据模型 - 构建索引的最佳方法是什么?
尽管如此,我的问题是:我在一个单独的ColumnFamily中创建索引,将email-> GUID映射为支持登录。这是一个标准类型的CF,其中列名是电子邮件,值是GUID。它是标准的,而不是超级的,以避免为每个映射加载整个SC。支持“更改电子邮件”很容易,它只是一个列删除/添加。但是,似乎替代方法是将索引存储为行而不是列,其中行键是电子邮件,而列存储GUID。删除/添加这些行将不会很麻烦,因为只有列(GUID)需要管理。
看来这两种方法都有效。每个的优缺点是什么?有最佳做法吗?
我也将使用他们的电子邮件地址作为键和GUID作为列。所以你有一列和许多行。这样数据可以在整个集群中传播。 – Zanson 2010-08-07 23:19:43