场景
一个关于猫的大型、高性能、可扩展、分布式站点。
细节
- 每只猫都有自己的页面,其中包含一些详细信息,例如平均睡眠时间、最喜欢的食物和最大的敌人。
- 页面可以通过设置后的 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 的新手,任何提示都会有所帮助。