gpt4 book ai didi

hadoop - 在 HBase 中存储对象和它们之间的关系

转载 作者:可可西里 更新时间:2023-11-01 14:39:34 25 4
gpt4 key购买 nike

我正在开始一个个人项目,该项目涉及存储对象的大型数据库以及对象之间的关系。我选择了 Hadoop 和 HBase,因为它需要是多节点的,而且大部分数据都是稀疏的。

来自 RDBMS 世界,我花了很多时间阅读 HBase 的面向列的结构,并且鉴于当前的文档,我无法弄清楚如何存储对象和对象之间的关系。

对象本身可以与其他对象有无限数量的关系,以及无限数量的任意属性。关系也可以有属性。我的目标是拥有两个由“已婚”关系链接的“人”对象,并且已婚关系具有属性“日期”,我希望(将来)能够编写一个 MapReduce 来快速找到所有在 x 和 y 之间结婚的人。

最佳答案

有 2 个步骤要遵循(根据我的说法)。

  1. 存储关系
  2. 搜索数据。

存储关系

  • 选项 A:将关系与数据本身一起存储。那就是你的情况,Person 表将拥有自己的婚姻关系。为此,一个人的每一次婚姻都需要一个唯一的ID,仅在该人的空间中是唯一的。例如。 A、B 和 C。A 于 2000 年 1 月 1 日至 2002 年 1 月 1 日与 B 结婚,A 于 2003 年 1 月 1 日至今与 C 结婚。从 A 的角度来看,单元格条目看起来像 - marriage:1:to - B, marriage:1:start - 1/1/2000, marriage:1:end - 1/1/2002, marriage:2:to - C, marriage :2:开始 - 2003 年 1 月 1 日。如果更新不是太频繁,这种设计是合适的。
  • 选项 B:将关系存储在自己的空间(表)中。适用于关系快速变化的情况。

搜索数据

如果搜索结果可以等待 MapReduce 完成,那么它很好,但如果您需要更快的结果,我会并且实际上正在使用另一种工具进行各种搜索,例如Elastic Search、Apache Solr、Apache Lucene 等。范围查询在 Solr 等搜索工具中非常容易,结果比 MapReduce 更快。选择搜索工具的另一个原因是根据需要获得排序顺序。

关于hadoop - 在 HBase 中存储对象和它们之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582787/

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