Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 虚荣URL和Base64编码UUID的Cassandra查找表_Database Design_Cassandra_Lookup_Vanity Url - Fatal编程技术网

Database design 虚荣URL和Base64编码UUID的Cassandra查找表

Database design 虚荣URL和Base64编码UUID的Cassandra查找表,database-design,cassandra,lookup,vanity-url,Database Design,Cassandra,Lookup,Vanity Url,场景 关于CAT的大型、高性能、可扩展、分布式站点 详细信息 每只猫都有自己的页面,包含一些细节,如平均睡眠时间、最喜欢的食物和最坏的敌人 页面可以通过设置时的虚荣url(即cats.com/terminator cat)或其UUID的Base64Url表示(即cats.com/w4rTb789mmN0c…)访问 还有一个API,它只接受Base64表单 出于url友好的目的,UUID对公众隐藏 该网站使用卡桑德拉2作为主要数据库 额外的细节要考虑,也会有其他形式的疑问:找到猫,喜欢X的食物,

场景

关于CAT的大型、高性能、可扩展、分布式站点

详细信息

  • 每只猫都有自己的页面,包含一些细节,如平均睡眠时间、最喜欢的食物和最坏的敌人
  • 页面可以通过设置时的虚荣url(即cats.com/terminator cat)或其UUID的Base64Url表示(即cats.com/w4rTb789mmN0c…)访问
  • 还有一个API,它只接受Base64表单
  • 出于url友好的目的,UUID对公众隐藏
  • 该网站使用卡桑德拉2作为主要数据库
  • 额外的细节要考虑,也会有其他形式的疑问:找到猫,喜欢X的食物,Y的敌人,…然而,这并不是被问到的问题
问题

了解要存储的数据以及如何查询数据,正确的建模方法是什么

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

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

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


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

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

还不算晚,刚刚开始。这确实会简化很多,但对于这个项目,我真的希望虚荣url是可选的。“猫”将是用户生成的内容,我不想强制在创建时设置它,也不是所有用户都有创建它们的权限。您可以解码base64字符串,因此不需要查找表。记住这一点,保持您的cat表不变,只需使用VALITY->uuid查找表即可。对于Base64编码的字符串,只需使用base64decode调用字符串,结果应该是引用cat.Ouch的uuid。。就这样!非常感谢。我在考虑散列,错过了base64可以解码。我觉得有点不对劲。你可以把它作为答复转发给我,我会接受的。除此之外,可能没有更多的事情可以做,也许一些特定的Cassandra tunning为查找表,将研究它。