【发布时间】:2014-09-23 18:45:21
【问题描述】:
如果我遵循Ian Varley's HBase design practice 并将一堆嵌套实体存储在同一个 HBase 实体中(以受益于 HBase 的单行 ACID 属性),是否可以有效地搜索这些嵌套实体,甚至 MapReduce 来决定使用是否选择封装(父)实体的某些标准?
例如,我有一个客户实体,其中嵌套了订单实体
CustomerInfo 和 Orders 是列族。 对于订单列族(这里很有趣),1, 2 ... 6 是列名(在 HBase 中是动态的,可以动态添加),旁边的文本是订单实体详细信息(我将这些细节序列化为文本,但序列化无关紧要,因为 HBase 不关心)
如果我有很多(更多详情见下文,见 3.)类似此客户实体的实体
是否可以基于 MapReduce(仅限地图?)方法或任何其他扫描客户实体、读取这些客户实体内的客户订单值并仅返回包含以下内容的客户实体的有效方法来选择客户实体具有特定标准(例如成本 > 40)的订单?
同样,是否可以将符合指定条件(Cost > 40)的订单实体与客户实体一起返回以显示客户及其最昂贵的订单?
如果每个客户的订单数量非常大(最多 100,000 个)并且客户数量也很大(最多 100,000 个),是否可以相当快地进行此选择操作(不到一秒?)?假设我可以为此构建一个非常大的 HBase 集群(根据需要)。
1234563快速地)?将客户实体反规范化为包含客户信息的订单实体会是更好的方法吗?
【问题讨论】: