阿里云的表格存储(Table Store)是一种NoSQL 数据存储服务,提供海量结构化数据的存储和实时访问。
首先表格存储是NoSQL存储服务,功能非常精简,因此很多关系型数据库的功能它是不支持的,于MongoDB相比也是简化很多。
特点
支持的功能屈指可数:
1、写入(批量写入、修改)数据;
2、通过主键读取(批量读取)数据;
3、范围Range读取等。
不支持复杂搜索、不支持分页、不支持自定义排序。
至于优势呢,我觉得正是因为功能的精简,所以存储成本低,性能高,支持海量的数据的无缝扩展。
分区键、主键的选择
表格存储的分区键和主键的设计非常重要,主键的值决定了数据的唯一性,也决定了你在应用中怎么使用数据。如果你要获取数据,只能通过主键来获取,而表格存储最多只能有4个主键。
表格存储根据表的主键索引数据,表中的行按照它们的主键进行升序排序。
表格存储会根据表的分片键将表的数据自动切分成多个分片,每个分片调度到一台服务节点上。分区键是最小的分区单位,一个分区键下的数据无法在做切分。为了防止某一个分区键的数据成为访问热点达到单机服务能力上限,应用程序需要让数据的分布和访问量的分布尽可能均匀。
常见错误
在使用的过程中,最常见的两个错误。
1、OTSParameterInvalid "Rows count exceeds the upper limit"
BatchWriteRow 一次操作请求写入行数不能超过 200,大小不能超过4M!
2、OTSParameterInvalid "The input parameter is invalid"
这个错误很隐晦,刚遇到时百思不得其解,最后google了一下,原来是在BatchWriteRow时存在主键相同的数据!