开发者社区> 瑾谦> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[Phoenix] 四、加盐表

简介: 在密码学中,加盐是指在散列之前将散列内容(例如:密码)的任意固定位置插入特定的字符串。这个在散列中加入字符串的方式称为“加盐”。其作用是让加盐后的散列结果和没有加盐的结果不相同,在不同的应用情景中,这个处理可以增加额外的安全性。
+关注继续查看

1. 什么是加盐?

在密码学中,加盐是指在散列之前将散列内容(例如:密码)的任意固定位置插入特定的字符串。这个在散列中加入字符串的方式称为“加盐”。其作用是让加盐后的散列结果和没有加盐的结果不相同,在不同的应用情景中,这个处理可以增加额外的安全性。而Phoenix中加盐是指对pk对应的byte数组插入特定的byte数据。

2. 加盐能解决什么问题?

加盐能解决HBASE读写热点问题,例如:单调递增rowkey数据的持续写入,使得负载集中在某一个RegionServer上引起的热点问题。

3. 怎么对表加盐?

在创建表的时候指定属性值:SALT_BUCKETS,其值表示所分buckets(region)数量, 范围是1~256。

CREATE TABLE mytable (my_key VARCHAR PRIMARY KEY, col VARCHAR) SALT_BUCKETS = 8;

4. 加盐的原理是什么?

加盐的过程就是在原来key的基础上增加一个byte作为前缀,计算公式如下:

new_row_key = ((byte) (hash(key) % BUCKETS_NUMBER) + original_key

以上公式中 BUCKETS_NUMBER 代表创建表时指定的 salt buckets 大小,hash 函数的实际计算方式如下:

public static int hash (byte a[], int offset, int length) {
    if (a == null)
      return 0;
    int result = 1;
    for (int i = offset; i < offset + length; i++) {
        result = 31 * result + a[i];
    }
    return result;
}

5. 一个表“加多少盐合适”?

  • 当可用block cache的大小小于表数据大小时,较优的slated bucket是和region server数量相同,这样可以得到更好的读写性能。
  • 当表的数量很大时,基本上会忽略blcok cache的优化收益,大部分数据仍然需要走磁盘IO。比如对于10个region server集群的大表,可以考虑设计64~128个slat buckets。

6. 加盐时需要注意

  • 创建加盐表时不能再指定split key。
  • 加盐属性不等同于split key, 一个bucket可以对应多个region。
  • 太大的slated buckets会减小range查询的灵活性,甚至降低查询性能。

References

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HIVE基本查询操作(二)——第3关:Hive抽样查询
HIVE基本查询操作(二)——第3关:Hive抽样查询
0 0
Hive分桶表学习总结
Hive分桶表学习总结
0 0
hive:级联报表查询
hive:级联报表查询
0 0
hive:建库建表、表分区、内部表外部表、数据导入导出
hive:建库建表、表分区、内部表外部表、数据导入导出
0 0
Apache Hive--DDL--创建表--分桶表总结&分桶表好处| 学习笔记
快速学习 Apache Hive--DDL--创建表--分桶表总结&分桶表好处
0 0
Apache Hive--DDL--创建表--分桶表创建&分桶数据导入| 学习笔记
快速学习Apache Hive--DDL--创建表--分桶表创建&分桶数据导入
0 0
hive分桶表
桶表是对数据进行哈希取值,然后放到不同文件中存储 创建一个桶表 create table bucket_table(id int,name string) clustered by(id) into 4 buckets; 加载数据 set hive.
906 0
hive外表和事务表
1.抽取到hdfs成功后,就可以连接hive,创建外表了 建立外表 beeline -u jdbc:hive2://192.
1061 0
hive中的表、外部表、分区和桶的理解
一、概念介绍         Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据         Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。
889 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
HBase应用与发展之HBase RowKey与索引设计
立即下载
HBase Rowkey设计要点
立即下载
低代码开发师(初级)实战教程
立即下载