如何表示hbase中的外键映射

时间:2013-08-05 11:42:13

标签: hbase

有人请帮助我了解Hbase如何在内部工作。

列的值是否可以引用另一个表的键?

例如:

假设我有一个带有subjectId作为外键的Student表,并且Subject表将id作为主键,那么表示将如何? 我们如何将学生和学科一起映射?

1 个答案:

答案 0 :(得分:2)

有人请帮助我了解HBase如何在内部工作。

这是一个非常大的东西,完全无法解释。有关详细信息,请参阅this链接。

列的值是否可以引用另一个表的键?

列绝对可以将另一行的键存储在同一个表或另一个表中。您必须从第一个表中读取此值,然后转到第二个表以获取行(如果两个行都在不同的表中)。

例如: 假设我有一个带有subjectId作为外键的Student表,并且Subject表将id作为主键,那么表示将如何?我们如何将学生和主题一起映射?

看起来你误解了HBase。它不像传统的RDBMS那样工作。使用HBase时,没有主键,复合键或外键的概念。您可以将rowkey视为主键。行根据这些行键按字典顺序排序。

回到你的问题。您的表中可以有2个列系列,1个用于学生,另一个用于主题。通过这种方式,您可以访问任何内容,而无需从一个表移动到另一个表。

HTH


回应你的意见:

您可以拥有一个只有一个列族的表,它将包含所有列。像这样:

enter image description here

或者,如果您希望将这两种数据分开,您可以拥有1个包含2个列系列的表,1个用于学生相关数据,1个用于主题相关数据,如下所示:

enter image description here

使用 studentID 作为rowkey,因为它对每个学生都是唯一的。现在,如果你想获取:

<强> 1。让所有申请了主题数据科学的学生 使用columnvalue过滤器来实现此目的。

<强> 1。列出特定学生的所有科目:这很简单。只是了解那一行。

在学生申请时,继续为每个科目添加专栏。