做画册的国外网站,sem网站建设,柳州公司网站制作公司,wordpress开发文档下载导读
日前#xff0c;某电商用户由于业务发展迅猛#xff0c;访问量极速增长#xff0c;导致数据库容量及性能遭遇瓶颈。为降低数据库大小#xff0c;提升性能#xff0c;用户决定对架构进行垂直拆分。根据不同的表来进行拆分#xff0c;对应用程序的影响也更小#xf…导读
日前某电商用户由于业务发展迅猛访问量极速增长导致数据库容量及性能遭遇瓶颈。为降低数据库大小提升性能用户决定对架构进行垂直拆分。根据不同的表来进行拆分对应用程序的影响也更小拆分规则也会比较简单清晰。
该用户按照会员、商品、订单将数据垂直拆分至三个数据库分库后数据分布到不同的数据库实例以达到降低数据量增加实例数的扩容目的。然而前途是美好的道路是曲折的。一旦涉及拆分就逃不开“原本在同一数据库里的查询要变成跨两个数据库实例”的查询问题。
单库时系统中很多列表和详情页所需数据可以简单通过SQL join关联表查询而拆库后拆分后的数据可能分布在不同的节点/实例上不能跨库使用join此时join带来的问题就很棘手了。 例如业务中需要展示某个品类商品的售卖订单量现在订单数据和商品数据分布在两个独立的数据库实例中业务上要怎么进行关联查询
用户首先想到的方法是对现有业务代码进行重构分别从两个数据库查询数据然后在业务代码中进行join关联。那么问题来了如果采用这个解决方案业务上那么多查询改造起来拆分难度极大操作起来过于复杂。跨库join操作又没有非常高效的办法需要各个分库迭代查询查询效率也会有一定影响。
是不是光想想就一个头两个大别担心关于数据库拆分后的业务改造难题其实用一条SQL就可轻松搞定。具体解法如下⬇️
解决思路
经沟通我们发现用户遇到的其实就是典型的跨数据库实例查询问题。目前阿里云DMS已经支持跨数据库实例SQL查询的能力用户可以通过DMS利用一条SQL即可解决上述难题。不仅能够满足“跨库Join”这一核心诉求还能极大地简化用户的技术方案。 除了开篇介绍的客户案例DMS跨数据库实例的查询功能可以解决我们业务中遇到的任意跨数据库查询的诉求。例如跨线上库及历史库的join查询快速获取全量数据单元化架构下join各个单元的数据库查询全局数据游戏业务可以join MySQL中的用户数据及MongoDB中的游戏装备数据等。
接下来我们通过一个快速上手的实例来看看用户如何写这条SQL。
商品库的信息
实例连接198.12.13.1:3306 , 数据库名seller 商品表名commodity 包含部分字段的表结构
create table commondity(
id BIGINT(20), -- 商品ID
name varchar(100), -- 商品名称
create_time TIMESTAMP , -- 商品入库时间
catogary BIGINT(30), -- 商品类目
features text, -- 商品描述
param text) -- 商品属性
订单库的信息
实例连接198.12.13.2:3306 , 数据库名buyer 订单表表名order_list 包含部分字段的表结构单态
create table order_list(
id BIGINT(20), -- 订单ID
buyer_id BIGINT(30), -- 买家ID
create_time TIMESTAMP , -- 订单生成时间
seller_id BIGINT(30), -- 卖家ID
commodity_id BIGINT(30), -- 商品ID
status int(8) –
创建DBLink
在编写查询SQL之前需要先在DMS中配置卖家库和买家库的DBLink。 编写并运行跨库查询SQL
当DBLink配置完成后即可开始在DMS中编写并运行SQL实现查询某个商品的订单列表的需求。
SELECT comomndity.catogary,count(1)from buyer_db.buyer.order_list
order,seller_db.seller.commondity commondity
where order.commodity_id commondity.id
GROUP BY commondity.catogary;
这个SQL的语法完全兼容MySQL只是在From的表名前面带上DBLink。 所以业务方只需要使用DMS跨数据库查询SQL便可轻松解决拆库之后的跨库查询难题业务基本无需改造。
什么是DMS跨数据库查询 SELECT * FROM oracle.dsqltest.b oracle inner join
mysql.dsqltest.a mysql on oracle.id mysql.id WHERE oracle.id1 DMS提供的跨数据库实例查询功能孵化于阿里巴巴集团目前已服务超过5000名开发者全面支撑阿里巴巴跨数据库实例的所有线上查询需求。DMS支持跨同异构数据库的在线查询支持MySQL、SQLServer、PostgreSQL及Redis等数据源为应用提供了一种数据全局查询的能力。用户无需通过数据汇集即可通过标准SQL实现跨实例的交叉查询。
立即体验
请先登录DMS控制台。从SQL操作中进入跨实例SQL窗口。创建DBlink编写并运行SQL。阿里云双十一1折拼团活动:满6人,就是最低折扣了 【满6人】1核2G云服务器99.5元一年298.5元三年 2核4G云服务器545元一年 1227元三年 【满6人】1核1G MySQL数据库 119.5元一年 【满6人】3000条国内短信包 60元每6月 参团地址http://click.aliyun.com/m/1000020293/
原文链接 本文为云栖社区原创内容未经允许不得转载。