0

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

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

例如:

假设我有一个 Student 表,其中 subjectId 作为外键,而 Subject 表有 id 作为主键,那么表示形式会如何?我们如何将学生和主题映射在一起?

4

1 回答 1

2

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

这是一件非常大的事情,在这里无法完全解释。请参阅链接以获取更多详细信息。

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

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

例如:假设我有一个 Student 表,其中 subjectId 作为外键,而 Subject 表有 id 作为主键,那么表示形式会如何?我们如何将学生和主题映射在一起?

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

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

高温高压


回应您的评论:

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

在此处输入图像描述

或者,如果您想区分这两种数据,您可以有 1 个包含 2 个列族的表,1 个用于学生相关数据,1 个用于学科相关数据,如下所示:

在此处输入图像描述

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

1.获取所有报考数据科学学科的学生: 使用columnvalue过滤器来实现。

1. 列出特定学生的所有科目:这很简单。就在那个特定的行上。

继续为学生申请的每个科目添加列。

于 2013-08-05T12:05:10.883 回答