这是我参与「第四届青训营 」笔记创作活动的第5天
表格存储是什么?
表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。
为什么选择表格存储?(官方回答)
全托管 表格存储是一种全托管的数据库。使用表格存储您只需专注于业务研发,无需担心软硬件预置、配置、故障、集群扩展、安全等问题,在保证高服务可用性的同时,极大地减少了管理及运维成本。
模型丰富 表格存储支持多种数据库模型,包括Wide column、Timeline、Timestream、Grid。其中,Wide column模型是一款经典模型,目前绝大部分半结构化、结构化数据都存储在Wide column模型系统中;Timeline模型是表格存储自研的模型,主要用于消息数据,适用于IM、Feed和物联网设备消息下推等消息系统中消息的存储和同步,目前已被广泛使用;Timestream模型可应用于时序数据、时空数据等核心数据场景。
无缝扩展 表格存储通过数据分片和负载均衡技术,实现了存储无缝扩展。随着表数据量的不断增大,表格存储会进行数据分区的调整从而为该表配置更多的存储。
查询能力强 除了支持主键查询,表格存储还支持多元索引、全局二级索引。全局二级索引相当于给主表提供了另外一种排序方式,即对查询条件预先设计了一种数据分布,可加快数据查询的效率。多元索引基于倒排索引和列式存储,支持多字段自由组合查询、模糊查询、地理位置查询、全文检索等,可解决大数据的复杂查询难题。
高可靠 表格存储将数据的多个备份存储在不同机架的不同机器上,并会在备份失效时进行快速恢复,提供99.99999999%(10个9)的可靠性。
数据强一致 表格存储保证数据写入强一致,并保证数据 3 副本均写入磁盘,且所有数据保持一致。写操作一旦返回成功,应用程序就能立即读到最新的数据。
表格存储使用场景 表格存储适用于元数据、大数据、消息数据、时空数据、时序数据等场景下的系统搭建。
日常操作
我们首先来看看日常操作(增删改查)。对于日常操作,官方提供了单行操作和多行操作(批量操作),多元索引。对于批量操作,官方可能出于安全或者技术上的考虑,将很多操作都进行了数量的限制,这些限制会使得我们在编写代码时变得麻烦。
日常操作中需要注意的点如下:
1.更新和删除的操作都只能根据主键列进行。也就是如果你要更新或者删除某行数据,只能先查找出该行数据的主键,然后再根据该行主键去更新或删除。而无法直接通过某些组合的条件去做更新或删除的操作。
2.主键只有一个字段时,不可以设置自增,和平常的建表习惯有所不同。
3.范围读操作时,一次操作请求读取的行数不能超过 5000 行(4 MB)。
4.批量读操作时,一次操作请求读取的行数不能超过 100 笔。
5.批量写操作时,一次操作请求写入行数不能超过 200 笔,数据大小不能超过 4 MB。同时,无法保证批量操作一定都会执行成功,也就是如果 200 笔,有一笔失败了,你需要自己对失败的这笔数据进行处理。
6.使用多元索引查询数据有10秒左右的延迟,这里是天坑,有需要条件允许,使用多行操作直接在表上操作,不使用索引。
7.多元索引提供的范围读,限制每次读取100条数据,按照官方提供的限定条件建立索引,最多可提高到1000条,查询时被限制范围的列必须构成多元索引。
产品文档