gpt4 book ai didi

schema - HBase:行键大小

转载 作者:行者123 更新时间:2023-12-04 18:10:29 25 4
gpt4 key购买 nike

我来自 RDBMS 背景,最近开始阅读 HBase。我知道没有二级索引,我们不应该尝试做这样的事情:

SELECT * FROM tbl_photo WHERE album_id = 1969

我想知道是否所有信息都可以用于创建行键本身。

例如。有一个用户使用他/她的电子邮件向照片共享服务提供商注册。用户可以创建一个相册(可以创建多个相册)并将照片上传到其中。另一个用户对照片发表评论,一些用户对评论投赞成票/反对票。

识别此类投票的 key 可能类似于 email:album:ts:photo:ts:comment:ts:vote:ts .
这个键有意义吗?比推荐的要长吗? ( ts stands timestamp )

最佳答案

从某种意义上说,这是有道理的,但是如果您的所有信息都在您的 key 中,您会在列中存储什么?您是否始终能够从客户端应用程序的角度形成该 key ? HBase 模式设计是一个相当困难的话题,如果你有一些空闲时间,你绝对应该观看去年 HBaseCon 上的这个视频:HBase Schema Design by Ian Varley .

就我而言,设计 HBase 行键时要记住的最重要的事情是“我将如何检索我的数据?”。

如果您(如您的示例)想要从特定相册中检索图片,为什么不将行键设为类似 email:album 的内容?并让不同的列族存储您的图片、评论、...

现在,当您这样做并且想要检索特定图片时,您必须扫描所有相册。所以为了防止这种情况,你可以使用 email:picture作为关键,但这只会反过来产生同样的问题。您也可以使用 email:album:picture但是如果您想从特定相册中获取所有图片,您应该知道图片的标识符,否则您将无法形成您的 key 。

另一方面,如果用户只能拥有 2000 张图片,那么使用 email:pictureemail:album作为键并为 album 指定列过滤器或 picture不会有问题,HBase 将循环最多 2000 行,这不会花费那么长时间。

话虽如此,根据您使用的 HBase 版本,您可以使用 FuzzyRowFilter 实现某种二级索引。 .

关于schema - HBase:行键大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15409579/

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