这里期望给大家提供一个简易小攻略,快速上手表格存储Tablestore。期望表格存储Tablestore能够解决你当前架构与场景中遇到问题。(会不定期的更新)
在此之前给大家提供两个小法宝。会大大提高后续研发效率:
入门篇一 初步调研了解
Step.1 场景锲合度判断
选择使用表格存储前关键需要明确你的场景是否适合。
表格存储是阿里云自2010起自研使用的一个多模型NoSQL数据库,面向海量大数据存储,身经百战。非常适合存储如下结构化/半结构化数据:
这些场景特点是:1. 数据规模大,常见的关系型数据库难以存储。2.需要支持很高的读写吞吐与极低的响应延迟。 3. 数据结构相对简单,无跨数据表的关联查询,数据存储写入是无需复杂的事务机制。
典型的案例推荐:
案例推荐 | 存储数据 |
---|---|
打造亿量级订单管理解决方案 | 历史订单 |
现代IM中消息系统构建 | 聊天消息 |
管理海量快递轨迹数据架构实现 | 轨迹信息(时序数据) |
海量气象格点数据解决方案实战 | 气象监控(时序数据) |
百亿级全网舆情分析系统存储设计 | 爬虫信息 |
共享汽车管理平台 | Iot信息(元数据、时序数据) |
可以查看更多案例。
如果你的的场景符合上面的描述,放心的往下走,一起来构建你的服务,解决你的问题。
Step.2 了解费用
表格存储当前的付费模型目前是纯按量模式,根据实际使用量按小时计费。所以前期的接入成本非常的低。可以免费开通使用。后面正式业务上量后可以按照资源包等其他手段优化成本。
费用简介:表格存储费用,可以直接看链接中最下方的视频简介有个快速了解。
入门篇二、开通与构建数据
Step.1 开通产品,创建实例
表格存储是Serverless的产品,直接在产品详情页点击开通即可。开通产品不会有任何费用产生。
开通后可以立马在控制台创建实例,可以根据业务场景需求创建不同的实例类型,详情可以参考实例类型说明:
类型 | 使用场景 | 读性能 | 写性能 | 并发力 |
---|---|---|---|---|
高性能实例 | 适用于对读写性能和并发都要求非常高的场景,例如游戏、金融风控、社交应用、推荐系统等。 | 高 | 高 | 高 |
容量型实例 | 适用于对读性能不敏感,但对成本较为敏感的业务,例如日志监控数据、车联网数据、设备数据、时序数据、物流数据、舆情监控等。 | 中 | 高 | 中 |
然后就可以在控制台中创建实例:控制台创建实例说明。
Step.2 选择数据模型,设计表结构
表格存储是一个多模态的数据库产品,支持多种数据模型适配不同的应用场景:
实例模型 | 适用场景 | 详情 | |
---|---|---|---|
宽行模型(WideColumn) | 表格存储数据模型,适合元数据、大数据场景 | 点击查看 | |
时间线模型(Timestream) | 时序场景,如轨迹,监控等 | 点击查看 | |
轻量级消息模型(Timeline) | 消息场景如IM,Feed流等 | ||
格点模式(Grid) | 多维网格数据的存储、查询和管理。如 |
可以根据实际使用场景选择不同的数据模型,这里需要注意的是宽行模型是当前表格存储的基础数据模型。其他的数据模型基于此封装输出。如果场景匹配度较高,可以直接使用后面封装完整的模式。当前也可以根据实际场景设计表结构。
如果使用宽行模型,表结构的设计是我们的能够发挥表格存储能力、满足业务需求的关键。需要考虑:
- 如何避免热点,提升整体服务能力,避免系统瓶颈
- 如何设计主键顺序,满足业务查询需求
如果表设计完成,可以控制台中创建表:控制台创建表示例。
入门篇三、基础数据的读写
在完成表设计,创建表以后既可以尝试写入数据。表格存储的读写接口都非常简单,可以简单分为单行数据操作与多行数据操作。
操作类型 | 接口 | 说明 |
---|---|---|
单行数据操作 (Java示例) |
GetRow | 读取一行数据。 |
PutRow | 新写入一行数据 | |
UpdateRow | 更新一行数据。 | |
DeleteRow | 删除一行数据。 | |
多行数据操作 (Java 示例) |
BatchGetRow | 批量读取一个或多个表中多行数据。 |
BatchWriteRow | 批量插入、更新或者删除一个或多个表中的多行数据。 | |
GetRange | 读取表中指定主键范围内的数据。 |
如果同时可以在控制台体验数据读写。
综上基本已经完成一个数据系统的基本元素,包含了基础的数据读写。除此之外可以根据你的场景需要在这里关注诸如:条件更新、原子计数器、局部事务、主键列自增的需求。
接下来进阶使用一些关键能力。让你的数据真正玩转起来。
进阶篇——多元索引
表格存储的宽行模型本身设计只提供了相对简单的数据查询能力,而由于业务场景的需求,往往需要较为多维度的查询需求(尤其是非主键查询)。而表格存储的索引能力能够满足该需求。我们将原本的数据称之为主表,在这个基础上面提供二级索引&多元索引能力。
索引类型 | 原理 | 场景 |
---|---|---|
数据表主表 | 数据表类似于一个巨大的Map,它的查询能力也就类似于Map,只能通过主键查询。 | 适用于可以确定完整主键(Key)或主键前缀(Key prefix)的场景。 |
全局二级索引 | 通过创建一张或多张索引表,使用索引表的主键列查询,相当于把数据表的主键查询能力扩展到了不同的列。 | 适用于能提前确定待查询的列,待查询列数量较少,且可以确定完整主键或主键前缀的场景。 |
多元索引 | 使用了倒排索引、BKD树、列存等结构,具备丰富的查询能力。 | 适用于除数据表主键和全局二级索引之外的其他所有查询和分析场景。 |
可以根据上面的场景选择不同的索引能力,可以直接在控制台创建多元索引。
进阶篇——计算引擎的对接
表格存储中存储的多为数据中台类数据,除了面向TP类业务还是非常大的需求需要针对这部分数据进行分析处理。而当前产品已经与基本主流的计算引擎无缝对接,支持流、批等多种开源、阿里云产品生态。能够挖掘使用数据价值。
数据计算类型 | 使用文档(计算引擎选择) | 场景 |
---|---|---|
批计算 | - Maxcompute - - Hive/HadoopMR |
海量数据分析 |
流计算 | - Blink/Flink | 流式数据分析、清洗 |
交互式分析 | - DLA | 即席数据分析 |
事件触发(函数计算) | - 函数计算FunctionCompute | 数据清洗、同步等 |
进阶篇——数据实时消费通道
Tunnel能够实时捕获表内数据的变化,返回一个有序的行级的数据变更记录。提供全增量一体数据实时消费通道,高效完成数据全链路处理分析。
由于捕获数据变化的能力,可以方便的完成数据的迁移、流式计算、事件触发、数据消费等。尤其针对数据需要连续计算、清洗的场景,可以非常便捷的通过通道服务实现。
详情可以参考:数据实时消费通道
进阶篇——数据安全
这里简单总结了一些安全相关的功能点,涉及数据安全相关需求,可以参考这里:
功能点 | 解决问题 |
---|---|
VPC绑定 | 网络安全问题。限制实例仅仅被指定VPC网络访问 |
数据多版本 | 数据误操作等问题。提供多数据版本,支持读取指定版本数据。 |
访问权限管控(RAM&STS) | 访问权限问题。提供精细到API级别的权限管控能力。 |
结语
期望表格存储本身能够帮助大家解决当前场景的问题。业务场景与技术也在不断的变化发展,表格存储也会跟大家一起面对变化,迎接一轮又一轮的浪潮。