0

场景

一个关于猫的大型、高性能、可扩展、分布式站点。

细节

  • 每只猫都有自己的页面,其中包含一些详细信息,例如平均睡眠时间、最喜欢的食物和最大的敌人。
  • 页面可以通过设置后的 vanity-url 访问(即cats.com/terminator-cat)或它的 UUID 的 Base64Url 表示(即cats.com/w4rTb789mmN0c ...)
  • 还有一个 API,它只接受 Base64 格式。
  • 出于 url 友好的目的,UUID 对公共隐藏。
  • 该站点使用 Cassandra 2 作为其主数据库。
  • 需要考虑的额外细节,还会有其他形式的查询:找到有 X 最喜欢的食物的猫,Y 个敌人,......但这不是被问到的。

问题

知道要存储的数据以及如何查询数据,那么建模它的正确方法是什么?

我想到了一个 cat 表,其中每个条目键都是 UUID。还有两个单独的查找表,一个用于 Base64 编码字符串,另一个用于自定义名称。

页面控制器会查看 url 参数是否为 Base64 字符串,如果是则首先查询查找表以获取 UUID,然后查询数据表。如果不是,请查询名称查找表,然后查询数据。如果在查找或数据表中未找到,则返回 404。

这种方法有什么问题吗?我应该考虑什么?你会推荐什么其他方法?

我必须说我是 Cassandra 的新手,任何提示都会有所帮助。

4

1 回答 1

0

如果您的开发还不算太晚,我建议您只使用虚 URL 的 sha-256 作为您的 id 并进行一次查找。使用这种方法,您必须使您的界面在设置后不允许更改虚 URL,并且您应该将其设为必填字段。这大大简化了您的应用程序。

于 2014-01-27T19:57:19.093 回答