锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

SQL语句怎么搞定跨实例查询?

时间:2020-10-26 20:54:49

最近,一个电子商务用户由于业务发展迅速,流量增长,造成数据库容量和性能遇到瓶颈。为了减少数据库的大小和提高性能,用户决定将体系结构垂直分割。根据不同的表进行分割对应用程序的影响较小,分割规则更简单、更清晰。

根据产品的成员的用户的命令,在垂直分割的数据到三个数据库,数据至子文库后不同的数据库实例的分布,以便减少数据量,增加膨胀的目的实例的数量。然而,前途是光明的,道路是曲折的。一旦指向的分辨率,请就逃不开,“原本在同一个数据库查询,在两个数据库实例成为”查询。

单库系统和上市详细页面需要大量的数据可以通过简单的查询SQLjoin关联表;图书馆的拆迁后,分割后的数据可以在不同的节点/实例进行分配,不能使用跨数据库连接,此时联接问题带来非常棘手。

SQL语句怎么搞定跨实例查询?

SQL语句怎么搞定跨实例查询?

例如:业务中需要我们展示某个品类商品的售卖订单量,现在订单信息数据和商品经济数据主要分布在两个学生独立的数据库实例中,业务上要怎么可以进行分析关联查询?

首先,用户考虑重构现有的业务代码,从两个数据库查询数据,然后将join关联到业务代码中。 然后问题来了,如果采用这个解决方案,那么业务中的很多查询都是转换的,拆分非常困难,操作过于复杂。 跨库连接操作不是很高效,需要每个子库迭代查询,查询效率也会有一定影响。

只是一个脑袋和两个大脑袋的想法吗?不用担心,关于数据库业务转换后的拆分问题,其实用 sql 可以很容易做到吗?原理是这样的?

解决思路

协商后,我们发现用户遭遇实际上是跨数据库的查询问题的典型例子。目前,阿里云DMS必须支持SQL查询的跨数据库实例通过DMS应对这些挑战,使用SQL的功能,用户可以。不仅要满足“跨数据库加入”的核心诉求,同时也大大简化了用户的技术解决方案。

SQL语句怎么搞定跨实例查询?

SQL语句怎么搞定跨实例查询?

除了开篇介绍的客户进行案例,DMS跨数据库设计实例的查询系统功能分析可以有效解决问题我们公司业务中遇到的任意跨数据库信息查询的诉求。例如:跨线上库及历史库的join查询,快速发展获取全量数据;单元化架构下,join各个控制单元的数据库管理查询全局数据;游戏教学业务,可以joinMySQL中的用户通过数据及MongoDB中的游戏技术装备研究数据等。

接下来,我们通过一个快速上手的实例,来看看用户如何写这条SQL。

商品库的信息

实例进行连接:198.12.13.1:3306,数据库名:seller

商品表名:商品

部分字段的表结构:

createtablecommondity(idBIGINT(20),--商品IDnamevarchar(100),--商品名称create_TImeTIMESTAMP,--商品入库时间catogaryBIGINT(30),--商品类目featurestext,--商品描述paramtext);--商品属性

订单库的信息

实例进行连接:198.12.13.2:3306,数据库名:buyer

订单信息表表名:order_list

部分字段的表结构:

createtableorder_list(idBIGINT(20),--订单IDbuyer_idBIGINT(30),--买家IDcreate_TImeTIMESTAMP,--订单信息生成一个时间seller_idBIGINT(30),--卖家IDcommodity_idBIGINT(30),--商品IDstatusint(8)–订单管理状态)

创建DBLink

在编写进行查询SQL之前,需要我们先在DMS中配置以及卖家库和买家库的DBLink。

SQL语句怎么搞定跨实例查询?

SQL语句怎么搞定跨实例查询?

编写和运行SQL跨数据库查询

当DBLINK配置完成后,就可以开始在DMS和运行SQL书写,查询需求,实现商品的订单列表。

1) count (1) from buyer DB. buyer.order list

order,

seller_db.seller.commonditycommonditywhereorder. commodity_id=commondity.idGROUPBYcommondity.catogary;

这个SQL的语法知识完全可以兼容MySQL,只是在From的表名前面我们带上DBLink。

因此,企业只需要使用DMS跨数据库查询SQL跨数据库查询可以轻松解决的库后拆的问题,没有基本的业务转型。

什么是DMS跨数据库进行查询

SELECT * FROMoracle.dsqltest.boracleinnerjoin

mysql.dsqltest.amysqlonoracle.id=mysql.id

WHEREoracle.id=1

SQL语句怎么搞定跨实例查询?

Dms 提供的跨数据库实例查询功能,已经在阿里巴巴集团孵化,目前为5000多名开发者服务,完全支持阿里巴巴跨数据库实例的所有在线查询要求。Dms 支持跨异构数据库的在线查询,支持 mysql、 sql server、 postgresql 和 redis 等数据源,并为应用程序提供全局查询功能。用户可以使用标准 sql 跨实例交叉查询,而不需要数据聚合。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章