我正在尝试创建将MYSQL数据库转换为NOSQL Hbase数据库的Java应用程序。
到目前为止,它从mysql读取数据并将其插入到hbase中
但现在我正试图处理MYSQL表之间的关系,
我知道如果有关系,你应该将一个表添加为超级列族。
我查看了apatch网站文档,我找不到任何东西。
有任何想法吗 ?
答案 0 :(得分:1)
列族与关系无关。相反,您必须通过行键设计正确创建反向索引,这可以允许通过从另一个表中获取密钥来有效地O(1)从一个表中检索数据。或者为了避免连接尝试将所有数据存储在一行中。为HBase提供SQL接口的任何工具都会生成需要时间来启动和执行的作业。如果您执行Get操作或扫描连续行,HBase会很快。 希望这很有用。
<强>更新强>
有关列系列的更多详细信息,请查看好书 Architecting HBase Applications
列族是特定于HBase的概念,您在其他RDBMS中找不到该概念 应用。对于同一区域,不同的列族将存储数据 不同的文件,可以配置不同。具有相同访问模式的数据 并且应将相同的格式分组到同一列族中。举个例子 关于格式,如果您需要存储大量的文本元数据信息 客户资料以及每位客户的个人资料照片的图像文件 可能希望将它们存储到两个不同的列族中:一个压缩(在哪里 将存储所有文本信息),并且一个未压缩(图像所在的位置) 文件将被存储)。作为访问模式的示例,如果有一些信息 主要是阅读,几乎从不写,有些大多是书面的,几乎从不 阅读,您可能希望将它们分成两个不同的列族。如果要存储的不同列具有类似的格式和访问模式,请重新组合 它们属于同一列系列。 给定RegionServer的写高速缓存存储区由所有列共享 为给定主机托管的所有区域配置的系列。滥用列族将对memstore施加压力,这将生成许多小文件,这些 反过来会产生许多可能影响性能的压缩。那里 您可以为a配置的列族数没有技术限制 表。但是,在过去三年中,我们有机会使用大多数用例 工作只需要一个列系列。有些需要两个列族, 但每次我们看到两个以上的列系列时,它都是可能的 建议减少数量,以提高效率。如果您的设计包括 超过三个列系列,您可能需要深入了解它,看看是否真的需要所有这些系列;最有可能的是,它们可以重新组合。如果你不 你的两个列族和数据之间有任何一致性约束 在不同的时间到达它们,而不是为单个表创建两个列族,您还可以创建两个表,每个表都有一个列族。在确定区域大小时,此策略非常有用。确实,虽然它是 最好通过将它们分开来保持两个列族几乎相同的大小 两个不同的表格,现在让我更容易独立成长。
此answer也很有用。