Cassandra 如何实施";“以后再看”;和卡桑德拉?
我有一个照片应用程序,用户可以将相册添加到队列中,以便稍后观看 在每个相册页面上,他们将看到“稍后观看”按钮 我的问题是如何在卡桑德拉设计我的桌子 我只需要在WatchLater表中存储相册id、相册作者、相册标题、显示顺序和添加的日期 选项1: 单击并在WatchLater表中写入时复制这些值 优点: 1) 当显示用户的观察列表时,只需从该表中读取 缺点: 1) 用户可以随时删除相册或更改标题。许多用户可以将特定的相册添加到观看列表中。在标题更新期间,我还需要更新WatchLater表条目 2) 需要另一个索引来查找要更新的行 选项2: 仅在WatchLater表中保留ID、添加日期和顺序 显示用户的观察列表时,首先从WatchLater表中获取ID,然后使用这些ID从Albums表中提取Album title、author 优点: 无需担心专辑标题的更新 缺点: 我需要运行2个查询。所以它会稍微慢一点 假设更新标题的频率不是很高Cassandra 如何实施";“以后再看”;和卡桑德拉?,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,我有一个照片应用程序,用户可以将相册添加到队列中,以便稍后观看 在每个相册页面上,他们将看到“稍后观看”按钮 我的问题是如何在卡桑德拉设计我的桌子 我只需要在WatchLater表中存储相册id、相册作者、相册标题、显示顺序和添加的日期 选项1: 单击并在WatchLater表中写入时复制这些值 优点: 1) 当显示用户的观察列表时,只需从该表中读取 缺点: 1) 用户可以随时删除相册或更改标题。许多用户可以将特定的相册添加到观看列表中。在标题更新期间,我还需要更新WatchLater表条目 2
你推荐哪一个选项?看起来你已经正确地识别了这两个选项。真正的问题是平衡两者的痛苦 对于选项1,您是否有一个可以异步迭代各种监视列表并进行更新的系统?您可能还需要另一个将唱片集ID映射到用户/观察列表的表,以便快速找到要更新的观察列表。这听起来让你感到害怕吗?计划的/cron任务可能会起作用,但异步工作者(排队处理列表,可能是kafka/rabbitmq/spark),对于每次更新,都要更新相册-如果您有适当的框架,这并不困难 对于选项2,只需添加一个额外的读取。走出家门可能需要更少的努力,如果你想推出一个产品/功能,就“你以后需要解决的问题”而言,这会更快,也不会产生太大的“债务”
就我个人而言,我可能倾向于2,因为额外的读取可以很容易地缓存以用于后续页面加载,快速轻松读取可能不会有多大痛苦 看来您已经正确地识别了这两个选项。真正的问题是平衡两者的痛苦 对于选项1,您是否有一个可以异步迭代各种监视列表并进行更新的系统?您可能还需要另一个将唱片集ID映射到用户/观察列表的表,以便快速找到要更新的观察列表。这听起来让你感到害怕吗?计划的/cron任务可能会起作用,但异步工作者(排队处理列表,可能是kafka/rabbitmq/spark),对于每次更新,都要更新相册-如果您有适当的框架,这并不困难 对于选项2,只需添加一个额外的读取。走出家门可能需要更少的努力,如果你想推出一个产品/功能,就“你以后需要解决的问题”而言,这会更快,也不会产生太大的“债务” 就我个人而言,我可能倾向于2,因为额外的读取可以很容易地缓存以用于后续页面加载,快速轻松读取可能不会有多大痛苦