gpt4 book ai didi

nosql - HBase:关于架构设计

转载 作者:行者123 更新时间:2023-12-01 02:27:21 25 4
gpt4 key购买 nike

我正在阅读/研究 HBase 并尝试创建一个架构。我来自 RDBMS 背景,这是第一次尝试 nosql db。我有一个关于架构设计的简单问题:
假设有三张表 => 相册、照片、评论

  • 专辑 <= 由用户创建
  • photo <= 包含上传到相册的所有照片
  • 评论 <= 包含相册或照片的评论
    应该获取一张照片,其中包含所有评论。
    应该获取一个相册,其中包含所有照片,但不包含评论。

  • 用户由电子邮件标识。我想出的模式:
    用户名
    email || info: {password : ..., name : ...}
    专辑
    <email>:album:<timestamp> || info {title:..., cover: photo-row-key}
    照片
    <album-row-key>:<timestamp> || info {caption:..., exif: ...}
    评论
    <album-row-key or photo-row-key> || comments {
    comment:<timestamp>: {user: <email>, text:...}
    comment:<timestamp>: {user: <email>, text:...}
    comment:<timestamp>: {user: <email>, text:...}
    ...
    }
  • 这个设计好看吗?我只想知道应该/必须做的修改以及为什么。
  • photo-row-key 不应该加上相册行键(可能是为了节省空间)?
  • 关于评论的 表,应该像 <album-row-key or photo-row-key>:comment:<timestamp> 一样创建注释行键?按照上述模式,每当用户创建评论时,我都需要阅读评论列,用新评论更新它并用 tha 更新行。听起来好吗?

  • 如果您可以共享一些链接,其中包含/具有更适合 RDBMS 的模式示例,那将非常有帮助:)

    最佳答案

    一种替代方法是将评论、照片和相册放在同一张表中
    也把照片和照片评论放在一个列族,相册评论放在另一个列族

  • 相册行有键 email:album:0:0:timestamp 照片行有键
  • 电子邮件:相册:照片:0:时间戳照片评论行键
  • email:album:photo:comment:timestamp 相册评论行键
  • 电子邮件:专辑:评论:时间戳

  • 然后,您可以根据需要在一次访问中获取数据。例如。:
  • 按前缀扫描一次即可获得包含所有照片和所有照片的相册
    他们的评论
  • 按前缀和最后一个键扫描一次将为您提供
    相册及其所有照片但不包括评论
  • 通过电子邮件扫描:第二列系列的专辑将为您提供专辑及其所有内容
    评论
  • 通过 email:album:photo 前缀扫描一次会给你一张照片
    及其所有评论
  • 通过电子邮件扫描:所有列族的专辑将为您提供所有数据
  • 通过album.max 使用endkey 通过电子邮件扫描:将为您提供用户的所有相册
  • 关于nosql - HBase:关于架构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359856/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com