数据库建表基本语法和约束
作者:佚名|分类:经典语句|浏览:85|发布时间:2024-12-30
网易视频云是网易公司旗下的视频云服务产品,以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力APP接入音视频功能。现在,网易视频云的技术专家给大家分享一篇技术性文章:HBase - 建表语句解析。
像所有其他数据库一样,HBase也有表的概念,有表的地方就有建表语句,而且建表语句还很大程度上决定了这张表的存储形式、读写性能。比如我们熟悉的MySQL,建表语句中数据类型决定了数据的存储形式,主键、索引则很大程度上影响着数据的读写性能。虽然HBase没有主键、索引这些概念,但在HBase的世界里,有些东西和它们一样重要!
废话不说,直接奉上一条HBase建表语句,来为各位看官分解剖析:
create 'NewsClickFeedback',{NAME=>'Toutiao',VERSIONS=>1,BLOCKCACHE=>true,BLOOMFILTER=>'ROW',COMPRESSION=>'SNAPPY',TTL => ' 259200 '},{SPLITS => ['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']}
上述建表语句表示创建一个表名为“NewsClickFeedback”的表,该表只包含一个列簇“Toutiao”。接下来重点讲解其他字段的含义以及如何正确设置。Note:因为篇幅有限本文并不讲解具体的工作原理,后续会有相关专题对其进行分析。
VERSIONS
数据版本数,HBase数据模型允许一个cell的数据为带有不同时间戳的多版本数据集,VERSIONS参数指定了最多保存几个版本数据,默认为1。假如某个用户想保存两个历史版本数据,可以将VERSIONS参数设置为2,再使用如下Scan命令就可以获取到所有历史数据:
scan 'NewsClickFeedback',{VERSIONS => 2}
BLOOMFILTER
布隆过滤器,优化HBase的随即读取性能,可选值NONE|ROW|ROWCOL,默认为NONE,该参数可以单独对某个列簇启用。启用过滤器,对于get操作以及部分scan操作可以剔除掉不会用到的存储文件,减少实际IO次数,提高随机读性能。Row类型适用于只根据Row进行查找,而RowCol类型适用于根据Row+Col联合查找,如下:
Row类型适用于:get ‘NewsClickFeedback’,’row1′
RowCol类型适用于:get ‘NewsClickFeedback’,’row1,col2′
SPLITS
region预分配策略。通过region预分配,数据会被均衡到多台机器上,这样可以一定程度上解决热点应用数据量剧增导致系统自动split引起的性能问题。HBase数据是按照rowkey按升序排列,为避免热点数据产生,一般采用hash + partition的方式预分配region,比如示例中rowkey首先使用md5 hash,然后再按照首字母partition为16份,就可以预分配16个region。
其他配置
BLOCKCACHE
是否开启block cache缓存,默认开启。HBase有一个内存缓存区域,用于缓存频繁访问的数据和元数据,如果业务需求不大,这里可以作为一个小型缓存区域使用。如果需要更大的缓存,可以配置更大值,但也要注意到Meta信息如果被置换出去会导致整个集群性能降低
IN_MEMORY
数据是否常驻内存,默认为false。HBase有一个内存缓存区域,用于缓存频繁访问的数据和元数据,如果业务需求不大,这里可以作为一个小型缓存区域使用。如果需要更大的缓存,可以配置更大值,但也要注意到Meta信息如果被置换出去会导致整个集群性能降低
TTL
过期时间,用于设置数据在HBase中存活的时间。该参数可以根据业务需求进行设置,比如一个月或者三个月,可以减少空间占用和提升数据访问效率
(责任编辑:佚名)