云原生多模数据库 Lindorm使用容量型云存储作为冷数据存储介质。开通冷存储功能后,需要配置数据库中的表或者列簇,本文介绍配置冷存储的方法。
背景信息
冷存储功能仅支持云原生多模数据库 Lindorm引擎版本为2.1.8及以上。Lindorm支持在表级别设置存储属性,可以将整个表或某个列簇的Storage设为冷存储。如果设置为冷存储,那么这个表或某个列簇的数据都会存储在容量型云存储中,并不会占用该实例的默认存储空间。
容量型云存储的性能说明,请参见容量型云存储读取性能说明。
配置冷存储
配置数据库中的表或者列簇为冷存储的方法有两种:
通过HBase Shell设置冷存储。在设置前,需要已下载和配置Shell,具体操作请参见通过Lindorm Shell访问宽表引擎。
创建表格时执行以下语句设置冷存储。
create 'coldTable', {NAME => 'f', STORAGE_POLICY => 'COLD'}
如果表格已经创建,可以通过修改表中列簇的属性来设置冷存储的列簇。
重要如果这个列簇中已经有数据,那么只有在major compaction之后,数据才会进入到冷存储。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'COLD'}
如果您需要将表重新设置为热存储请执行以下语句。
alter 'coldTable', {NAME=>'f', STORAGE_POLICY => 'DEFAULT'}
通过HBase Java API设置冷存储。在设置前,需要已安装和配置SDK,具体操作请参见基于HBase Java API的应用开发。
创建表格时执行以下语句设置冷存储。
Admin admin = connection.getAdmin(); HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("coldTable")); HColumnDescriptor cf = new HColumnDescriptor("f"); cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD); descriptor.addFamily(cf); admin.createTable(descriptor);
如果表格已经创建,可以通过修改表中列簇的属性来设置冷存储的列簇。
重要如果这个列簇中已经有数据,那么只有在major compaction之后,数据才会进入到冷存储。
Admin admin = connection.getAdmin(); TableName tableName = TableName.valueOf("coldTable"); HTableDescriptor descriptor = admin.getTableDescriptor(tableName); HColumnDescriptor cf = descriptor.getFamily("f".getBytes()); // 设置表的存储类型为冷存储 cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_COLD); admin.modifyTable(tableName, descriptor);
如果您需要将表重新设置为热存储请执行以下语句。
Admin admin = connection.getAdmin(); TableName tableName = TableName.valueOf("coldTable"); HTableDescriptor descriptor = admin.getTableDescriptor(tableName); HColumnDescriptor cf = descriptor.getFamily("f".getBytes()); // 设置表的存储类型为默认存储,默认存储为热存储 cf.setValue("STORAGE_POLICY", AliHBaseConstants.STORAGETYPE_DEFAULT); admin.modifyTable(tableName, descriptor);