前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【TBase开源版测评】分布式数据自动shard分片

【TBase开源版测评】分布式数据自动shard分片

原创
作者头像
用户7622706
修改2020-08-03 10:53:13
9251
修改2020-08-03 10:53:13
举报

本次我们根据TBase测评操作指引说明文档体验分布式数据自动shard分片,命令和使用方式基本上跟PostgreSQL没有区别,给我们这些原来使用过PostgreSQL数据库的人能很快的上手使用。

一、体验流程

1、查看集群的数据节点情况

代码语言:javascript
复制
连接数据库,:psql -p 30004 -d postgres -U tbase

连接数据库

代码语言:javascript
复制
输入查看命令:select node_name,node_type,node_host,node_port from pgxc_node where node_type='D';

查看数据节点

这里是我已经安装好的集群的数据节点的情况。

2、创建shard表,查看数据分布情况

输入命令创建shard表:

代码语言:javascript
复制
create table tbase(id int,nickname text) distribute by shard(id);

创建表

这就有点莫名其妙了。官方对此问题并没有任何说明,最终查阅了部分postgresql的文档后找到解决办法:

解决错误提示

继续创建表:

创建表

使用命令创建要导入数据的订单详情表:

代码语言:javascript
复制
create table tbnote_qtxsdcb(f_djhm text) distribute by shard(f_djhm);

创建订单详情表

使用管理工具从原有项目的mssql数据库中的数据导入到tbase数据库中,导入后查看数据总量:

查看数据总量

随机抽取部分数据进行查看在各个数据节点的分布情况:

查看数据

查看数据

查询结果显示,数据分布在了所有的节点上,这个分布基本上是均衡的。查询的时候只需连接到TBase的Coordinator节点,可以查询分布在任何节点的数据,而无需关注数据节点分布情况。上面简单的例子可以看到业务在使用shard表时只用指定shard key,后续的查询都无需关注数据的分布情况,与使用单机数据库没有任何差别。

3、典型复杂场景分析(join为例),为了体验此功能,我们将线上项目中的订单表导入到测试集群中:

创建表命令:

代码语言:javascript
复制
create table tbnote_qtxsdzb(f_djhm text);

创建订单表

使用管理工具从原有项目的mssql数据库中的数据导入到tbase数据库中,导入后查看数据总量:

查看数据总量

数据导入之后,我们首先体验join key与shard key相同的情况下的join查询:

代码语言:javascript
复制
explain select t1.f_djhm,t2.f_hybh from tbnote_qtxsdcb as t1 join tbnote_qtxsdzb as t2 on t1.f_djhm=t2.f_djhm limit 10;

查询命令

可以下推到节点计算的场景,这个场景在分库分表的插件也可以做到。然后体验join key与shard key不同的情况下的join查询:

代码语言:javascript
复制
explain select t1.f_djhm,t2.f_hybh from tbnote_qtxsdcb as t1 join tbnote_qtxsdzb as t2 on t1.f_djhm=t2.f_bc limit 10;

查看数据

join无法下推的场景该场景能体现分布式的优势,分库分表的插件并不能自动的做到这种。分析上面的查询计划可以看到,需要把数d的数据都拉取到dn002上去执行join操作,这样就涉及到了数据节点的数据交互,有时候会带来比较大的网络开销,同时性能不佳。

二、体验总结

通过本次体验,对TBase的分布式数据自动shard分片功能有了深刻的认识,也尝试的在项目架构中考虑如何把这一特性应用到实际项目中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档