云原生 Serverless Database 使用体验
Serverless
共 8567字,需浏览 18分钟
·
2021-12-18 02:06
作者 | 李欣
弹性扩展能力差。Serverless 场景中一个重要特点是应用负载具有显著的波峰波谷。当面临流量洪峰时,DBA 又需要手动对集群进行扩容以避免集群被打爆;而适逢流量低谷时,则需要对集群进行缩容以节省成本。 运维复杂度高。MySQL 搭建需要进行购置集群、安装服务、管理连接。业务上线后还要关注数据安全、服务可用性、响应时间等等,用于集群运维的时间占比会变高,无法把更多的精力专注于业务研发上。 成本高。通常 DBA 需要预估业务规模来事先设定数据库初始容量,当业务请求量未达到预估值时,集群中的资源会一直处于闲置状态,造成资源浪费。
Serverless DataBase
完全弹性。可根据应用负载自动弹性扩缩容,这一特性可为用户带来更经济的计费模式和更丝滑的体验。 按量计费。Serverless 数据库的使用成本主要来自于计算成本和存储成本。用户只需为业务实际产生的存储单元和响应单元付费,节省成本。
零运维。即开即用,无需管理容量、水位、软件升级、内核优化等运维事项,真正让研发专注于业务开发。
表格存储 Tablestore 简介
宽表模型主要承载表结构数据存储,例如电商订单数据。
消息模型主要承载消息数据存储,例如 IM/Feeds 消息。
时序模型主要承载时序数据存储,例如物联网设备时序数据。
Tablestore 体验
1、准备工作
(1)创建一个阿里云账号,并获取到阿里云账号的 AK。(云账号 AK 是访问所有云服务包括 Tablestore 的密钥,后续需要通过 AK 来访问 Tablestore 服务)。
首先通过 config 命令配置连接密钥并通过 enable_service 命令开通 Tablestore 服务:
config --id accessKeyID --key accessKeySecret
enable_service
create_instance -d "order storage" -n serverless-db -r cn-hangzhou
实例相当于 MySQL 数据库的概念,实例创建后无需思虑实例所在物理机集群的水位,只需专注开发业务逻辑即可。同时实例上的读写和存储均为按量计费,若无读写无存储,实际则不会产生任何费用。
至此,一个能够支持 GB 到 PB 存储的、无并发限制、零运维、完全弹性的 Serverless DataBase 就创建完成了。
2、创建表
create_instance -d "order storage" -n serverless-db -r cn-hangzhou
3、数据导入
import -i orderDataFile -l 1000000
Current speed is: 10000 rows/s. Total succeed count 10000, failed count 0.
Current speed is: 12600 rows/s. Total succeed count 22600, failed count 0.
......
Current speed is: 9200 rows/s. Total succeed count 1000000, failed count 0.
Import finished, total count is 1000000, failed 0 rows.
4、订单查询
get --pk '["0000005be2b43dd134eae18ebe079774"]'
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+
| order_id | cId | cName | hasPaid | oId | orderTime | pBrand | pCount | pId | pName | pPrice | pType | sId | sName | totalPrice |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+
| 0000005be2b43dd134eae18ebe079774 | c0015 | 消周五 | false | o0035062633 | 1507519847532 | 小米 | 3 | p0005003 | 小米 6 | 2299.21 | 手机 | s0017 | 售郑七 | 6897.63 |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+--------+---------+-------+-------+--------+------------+
5、订单检索与统计
create_search_index -t order -n order_index
{
"IndexSetting": null,
"FieldSchemas": [{
"FieldName": "id",
"FieldType": "KEYWORD",
"Index": true,
"EnableSortAndAgg": true,
"Store": true
},{
"FieldName": "pName",
"FieldType": "TEXT",
"Index": true,
"EnableSortAndAgg": false,
"Store": true
},{
"FieldName": "totalPrice",
"FieldType": "DOUBLE",
"Index": true,
"EnableSortAndAgg": true,
"Store": true
}
...//其他字段
]
}
select * from `order` where
sName = "售周五" and
pBrand = "小米" and
pName like "红米%"
limit 3;
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+
| id | cId | cName | hasPaid | oId | orderTime | pBrand | pCount | pId | pName | pPrice | pType | payTime | sId | sName | totalPrice |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+
| 00001c760c04126da067e90409467c4e | c0022 | 消赵一 | true | o0009999792 | 1494976931954 | 小米 | 3 | p0005004 | 红米 5s | 499.01 | 手机 | 1494977189780 | s0005 | 售周五 | 1497.03 |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+
| 0000d89f46952ac03da71a33c8e83eef | c0012 | 消钱二 | false | o0024862442 | 1502415559707 | 小米 | 2 | p0005004 | 红米 5s | 499.01 | 手机 | null | s0015 | 售周五 | 998.02 |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+
| 0000f560b62779285e86947f8e8d0e4c | c0008 | 消冯八 | false | o0000826505 | 1490386088808 | 小米 | 1 | p0005004 | 红米 5s | 499.01 | 手机 | null | s0015 | 售周五 | 499.01 |
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+---------+--------+-------+---------------+-------+--------+------------+
select pBrand,count(*) from `order` group bypBrand;
+--------+----------+
| pBrand | count(*) |
+--------+----------+
| vivo | 162539 |
+--------+----------+
| 联想 | 304252 |
+--------+----------+
| oppo | 242513 |
+--------+----------+
| 苹果 | 96153 |
+--------+----------+
| 小米 | 194543 |
+--------+----------+
总结
如对本文中所述有疑问或者希望进一步了解表格存储,可以钉钉搜索群号:“23307953”,群内提供免费的在线专家服务,欢迎加入。
社区官网
Serverless Devs
http://www.serverless-devs.com/
https://github.com/Serverless-Devs/Serverless-Devs
https://serverlessdevs.resume.net.cn/zh-cn/desktop/index.html
http://serverlessdk.oss.devsapp.net/docs/tutorial-dk/intro/react
https://serverlessdevs.resume.net.cn/zhcn/cli/index.html
https://serverlesshub.resume.net.cn/#/hubs/special-view
评论