Table Store前身是阿里云的OTS
贴一段阿里云上Table Store(原OTS)的产品概述
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的 NoSQL 数据存储服务,提供海量结构化数据的存储和实时访问。
- 表格存储以实例和表的形式组织数据,通过数据分片和负载均衡技术,达到规模的无缝扩展。
- 表格存储向应用程序屏蔽底层硬件平台的故障和错误,能自动从各类错误中快速恢复,提供非常高的服务可用性。
- 表格存储管理的数据全部存储在 SSD 中并具有多个备份,提供了快速的访问性能和极高的数据可靠性。
- 用户在使用表格存储服务时,只需要按照预留和使用的资源进行付费,无需关心数据库的软硬件升级维护、集群缩容扩容等复杂问题。
简介
Table Store前身是阿里云的OTS
贴一段阿里云上Table Store(原OTS)的产品概述
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的 NoSQL 数据存储服务,提供海量结构化数据的存储和实时访问。
- 表格存储以实例和表的形式组织数据,通过数据分片和负载均衡技术,达到规模的无缝扩展。
- 表格存储向应用程序屏蔽底层硬件平台的故障和错误,能自动从各类错误中快速恢复,提供非常高的服务可用性。
- 表格存储管理的数据全部存储在 SSD 中并具有多个备份,提供了快速的访问性能和极高的数据可靠性。
- 用户在使用表格存储服务时,只需要按照预留和使用的资源进行付费,无需关心数据库的软硬件升级维护、集群缩容扩容等复杂问题。
简介解读
Table Store是原OTS,OTS是据说是根据谷歌论文的BigTable自己实现的。hadoop生态圈中对应bigTable的是hbase。而OTS完美兼容hbase .解读ots的时候和hbase的做一些简单对比。
- 简介1解读
简介1的重点是数据模型和数据自动分片,自动负载均衡,无缝扩展。
表格存储的数据模型概念包括表、行、主键和属性,如下图所示(图片来自阿里云TableStore)。
如果有对应数据的话,那数据展示就会如下所示
ID | Type | ISBN |
---|---|---|
4476 | Book | NULL |
65555 | NULL | Music |
这个模型完美的说明了简介1.这是一个很常见的K/V结构,主键以外任意的字段可以为空。这种形式和hbase的数据模型是完全相同的。能自动根据id来做分区达成自动数据分片和负载均衡。和hbase的Resgion会自动分片数据,Resgion自动增长切割迁移也是一样。
差异在于,主键有4个字段,而且每一列都包装好了数值类型,在操作的时候会更方便。
- 简介2解读
简介2是服务高可用。
ots提供的服务如果和hbase一样,hbase提供服务的region server,会在出现故障的时候自动迁移到集群的其他机器中。 - 简介3解读
简介3是数据高可靠,多备份,高速访问。TableStore的数据存储在盘古上,自然解决了这些问题,用的还是SSD的盘古。 - 简介4解读
一些维护啥的就不用关心了,给钱我帮你做。
使用方法
DataStore有http api和阿里云的DataStore的sdk两种。
http api
他们的http api看上去比hbase rest api要强大。支持大部分的功能,但是为了尽可能多的支持功能,他们的api里只能用post方法请求。
dataStroe sdk的api
sdk有aliyun_tablestore_java_sdk和TableStore HBase Client。使用TableStore HBase Client 支持 1.x.x 版本以上的开源 HBase API。无休修改代码就可将hbase上的业务迁移过来。
TableStore和hbase的区别
TableStore的官网介绍里有文章表格存储和 HBase 的区别 写的是他们和hbase的差异。支持表示TableStore有的而hbase没有的。不支持表示hbase有的TableStore没有的。
Table
Table
不支持多列族,只支持单列族。
解读
hbase的多列族比较鸡肋,给干掉了。
Row和Cell
不支持设置 ACL
不支持设置 Cell Visibility
不支持设置 Tag
解读
DataStore做了权限,而hbase没有。cell可见和tag,也是方便拿来做权限的。
GET
表格存储只支持单列族,所以不支持列族相关的接口,包括:
setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp)
setMaxResultsPerColumnFamily(int limit)
setRowOffsetPerColumnFamily(int offset)
解读
还是多列族单列族的事情。
SCAN
类似于 GET,既不支持列族相关的接口,也不能设置优化类的部分接口,包括:
setBatch(int batch)
setMaxResultSize(long maxResultSize)
setAllowPartialResults(boolean allowPartialResults)
setLoadColumnFamiliesOnDemand(boolean value)
setSmall(boolean small)
####
还是列族的事情
Batch
暂时不支持 BatchCallback。
解读
没有对应hbase的batchCallback接口。
Mutations 和 Deletions
不支持删除特定列族
不支持删除最新时间戳的版本
不支持删除小于某个时间戳的所有版本
解读
我去,这个都不支持?
Increment 和 Append
暂时不支持
Filter
支持 ColumnPaginationFilter
支持 FilterList
部分支持 SingleColumnValueFilter,比较器仅支持 BinaryComparator
其他 Filter 暂时都不支持
解读
我要这filter又有何用,我要这过滤器又如何?这支持的几个都是hbase后面版本也支持的。
Optimization
HBase 的部分接口涉及到访问、存储优化等,这些接口目前没有开放:
blockcache:默认为 true,不允许用户更改
blocksize:默认为 64K,不允许用户更改
IsolationLevel:默认为 READ_COMMITTED,不允许用户更改
Consistency:默认为 STRONG,不允许用户更改
Admin
解读
我曹,解读不下去了,下面还有一堆的区别对比。你丫写个区别对比全是自己和hbase相比的缺点,要你何用。
总结
OTS参考的hbase版本太早了,开源社区更新太快,导致hbase有很多特性在ots里面不支持。阿里云现在也上了hbase,和DataStore是强竞争关系。