首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hbase模式设计

Hbase模式设计
EN

Stack Overflow用户
提问于 2013-04-14 23:29:04
回答 2查看 2.3K关注 0票数 0

我必须设计一个Hbase表来存储用户信息,这些信息是针对社交网络的,比如:年龄、性别、教育程度、爱好、读书、旅行的国家.注:我们可以在未来增加更多的信息,我们现在不知道所有的信息。

姓名: Olha,年龄: 25岁,性别:女性,学历:信息技术学士,学历:计算机硕士,爱好:篮球,爱好:乒乓球,书:随风而去,书:达芬奇码,语言:英语,语言:法语,国家:德国

主要的想法是能够做这样的问询:回报所有女性,年龄: 22岁,说:英语,说:法语,看书随风而去,喜欢乒乓球,喜欢篮子球和德语。

因此,可以将任何条件添加到搜索查询中。

您对HBASE表模式(行键、列族.)有什么建议?这优化了这类搜索查询(考虑到我们将来将添加更多信息),编写此类查询的最佳方法是什么(扫描、获取、MapReduce )。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 15:01:48

这并不是对HBase的一个很好的使用,因为这正是搜索索引(比如Lucene)所要做的事情。

一个用来存储用户及其信息的普通模式看起来很像关系数据库,因为每个用户都有1行,并将所有属性存储为列和值(age=22、language=french等)。这对于您提到的可扩展性很好(您不需要为了存储新属性而更改任何模式)。使用此模式,您可以通过唯一的用户id查找任何一个用户(及其所有属性)。不管你有多少用户,做起来都会非常快。

但是,使用该模式,如果您想以描述的方式进行搜索(“返回所有年龄为22岁的用户”),则每个查询最终都将是对整个表的扫描,因为HBase只允许您通过主键访问事物;它没有任何类型的二级索引。这将是非常低效率的(每次您想要执行任何一个查询时,图片都要扫描一百万行)。

怎么解决这个问题?您可以“反转”数据的顺序,并将值放在行键中,然后指向所有具有该值的用户。例如,行键可以是" age : 22 ",然后行的列中可以是22岁的所有用户。这是有问题的,因为许多原因,其中特别是,它将是极其昂贵和棘手的进行更新。但是,对于这些特定的查询,它的性能会很好。

诀窍?这正是搜索索引(就像Lucene那样)所做的,而且它比通过使用HBase滚动自己的索引做的要好得多。这听起来像是你想在这里使用的工具。

如果您必须使用HBase (正如您所说的,因为这是一个研究项目),那么可能值得考虑将HBase和Lucene一起使用;

票数 0
EN

Stack Overflow用户

发布于 2013-06-09 16:48:45

我同意Ian Varley的观点,即Solr/Lucene及其分面查询和联接允许您以您想要看到的方式将数据转向--不过--我也认为您的问题可能是“计数”问题或“成员”问题.

听起来,你需要的是一个匹配(N)属性的人的列表--你面临的问题是,对于每个属性,您可能拥有数百万的用户is?

当您只想计算交/并大小时,HBase是一个很好的选择。您的键/值对可以放到Hbase中,并且可以将用户的ID“编码”到Bloom过滤器和HyperLogLog中。准确和记忆的交易速度。可能每小时/每夜在某些类型的日志聚合流上运行map/还原样式作业。

其他人则在广告空间和在线空间中这样做,这完全是因为你正在运行的查询类型(“寻找住在佛罗里达的喜欢红牛和流行馅饼的人”)。

参考资料

使用Apache和Amazon http://aws.amazon.com/articles/2855的上下文广告

缩放分布式计数器:http://whynosql.com/scaling-distributed-counters/

谷歌:切分计数器counters

HBase中的分布式计数器性能.第1部分http://palominodb.com/blog/2012/08/24/distributed-counter-performance-hbase-part-1

Facebook的新实时分析系统: HBase每天处理200亿个事件http://highscalability.com/blog/2011/3/22/facebooks-new-realtime-analytics-system-hbase-to-process-20.html

基于Hadoop和HBase - http://www.slideshare.net/larsgeorge/realtime-analytics-with-hadoop-and-hbase的实时分析

用HBase http://tellapart.com/log-event-processing-with-hbase进行日志事件处理

BazaarVoice engineering/austin-scales-clickstream-analytics的点击流分析

基于HBase - http://www.slideshare.net/alexbaranau/realtime-analytics-with-hbase-long-version的实时分析

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16005551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档