我正在阅读/研究 HBase 并尝试创建一个架构。我来自 RDBMS 背景,这是第一次尝试 nosql db。我有一个关于架构设计的简单问题:
假设有三张表 => 相册、照片、评论
应该获取一张照片,其中包含所有评论。
应该获取一个相册,其中包含所有照片,但不包含评论。
用户由电子邮件标识。我想出的模式:
用户名
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:...}
...
}
<album-row-key or photo-row-key>:comment:<timestamp>
一样创建注释行键?按照上述模式,每当用户创建评论时,我都需要阅读评论列,用新评论更新它并用 tha 更新行。听起来好吗? 如果您可以共享一些链接,其中包含/具有更适合 RDBMS 的模式示例,那将非常有帮助:)
最佳答案
一种替代方法是将评论、照片和相册放在同一张表中
也把照片和照片评论放在一个列族,相册评论放在另一个列族
然后,您可以根据需要在一次访问中获取数据。例如。:
他们的评论
相册及其所有照片但不包括评论
评论
及其所有评论
关于nosql - HBase:关于架构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359856/