我正在为 PenWag.com 进行从 MySQL 到 Cassandra 的转换。在 Cassandra 中,我存储的是使用 GUID 键控的用户,但用户使用他们的电子邮件登录,而不是 GUID(显然)。GUID 作为用户的键对我来说比电子邮件更有意义,原因有两个。从实际的角度来看,更改或删除/添加包含所有 SuperColumns 的行似乎太麻烦了。从理论上讲,它仍然是同一个用户,为什么他们的密钥要改变?
不过,这是我的问题:我在单独的 ColumnFamily 中构建索引,映射电子邮件-> GUID 以支持登录。这是一个标准类型的 CF,其中列名是电子邮件,值是 GUID。避免为每个映射加载整个 SC 是标准的,而不是超级的。支持“更改电子邮件”很容易,它只是一个列删除/添加。但似乎另一种方法是将索引存储为行而不是列,其中行键是电子邮件,列保存 GUID。删除/添加这些行不会很麻烦,因为只有列(GUID)要管理。
似乎这两种方法都有效。各自的优缺点是什么?有最佳实践吗?