hbase 设计连接长键值对与多列
hbase design concat long key-value pairs vs many columns
请帮助我了解在 HBase 中存储信息的最佳方式。
基本上,我有一个像 hashed_uid+date+session_id 这样的行键,带有持续时间、日期、时间、位置、深度等指标。
我读了很多我有点困惑的材料。人们建议使用更少的列族以获得更好的性能,因此我面临三个选择:
让每个指标排成一行,如 rowkey_key cf1->alias1:value
有很多像rowkey cf1->key1:val1, cf1->key2:val2 ...
这样的列
将所有键值对编码成一个大字符串,如rowkey cf1->"k1:v1,k2:v2,k3:v3..."
提前谢谢你。我不知道该选择哪个。我的 HBase 设计目标是为用户分析输出的增量窗口功能做准备,例如过去 60 天的百分位数、参与度和统计摘要。最有可能的是,我会为此使用配置单元。
您可能对列族和列命名的相似性感到困惑。这些概念在 HBase 中是不同的东西。列族由多个列组成。这种设计是为了在只需要读取某类列时提高访问数据的速度。例如,您有原始数据和处理过的数据。如果处理后的数据存储在分离的列族中,则读取处理后的数据将不会涉及原始数据。您可以部分地让每行键有任意数量的列;存储在一个区域,不超过10GB。设计取决于你什么:
- 当您需要存储大量数据时,第一个变体没有其他选择
每个单行键的数据,不能存储在一个区域中。多于
10GB。
- 当您每个
只需要获取几个指标时,第二个很好
每行键单次读取。
- 最后一个版本适合你
始终获取每行键的单次读取的所有指标。
请帮助我了解在 HBase 中存储信息的最佳方式。 基本上,我有一个像 hashed_uid+date+session_id 这样的行键,带有持续时间、日期、时间、位置、深度等指标。 我读了很多我有点困惑的材料。人们建议使用更少的列族以获得更好的性能,因此我面临三个选择:
让每个指标排成一行,如
rowkey_key cf1->alias1:value
有很多像
rowkey cf1->key1:val1, cf1->key2:val2 ...
这样的列
将所有键值对编码成一个大字符串,如
rowkey cf1->"k1:v1,k2:v2,k3:v3..."
提前谢谢你。我不知道该选择哪个。我的 HBase 设计目标是为用户分析输出的增量窗口功能做准备,例如过去 60 天的百分位数、参与度和统计摘要。最有可能的是,我会为此使用配置单元。
您可能对列族和列命名的相似性感到困惑。这些概念在 HBase 中是不同的东西。列族由多个列组成。这种设计是为了在只需要读取某类列时提高访问数据的速度。例如,您有原始数据和处理过的数据。如果处理后的数据存储在分离的列族中,则读取处理后的数据将不会涉及原始数据。您可以部分地让每行键有任意数量的列;存储在一个区域,不超过10GB。设计取决于你什么:
- 当您需要存储大量数据时,第一个变体没有其他选择 每个单行键的数据,不能存储在一个区域中。多于 10GB。
- 当您每个
只需要获取几个指标时,第二个很好 每行键单次读取。 - 最后一个版本适合你
始终获取每行键的单次读取的所有指标。