ShardingSphere即将支持PostgreSQL代理

作者简介

张永伦,京东数科高级软件工程师,Apache ShardingSphere(Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络IO、性能优化方面的技术挑战。目前专注于Sharding-Proxy的持续优化和PostgreSQL协议的开发工作。

ShardingSphere的第一个Apache Release将在近期发布,新版的Sharding-Proxy首次实现了对PostgreSQL的支持,欢迎试用。

在这个初始版本中,我们分别对PostgreSQL Server的8.4和10.4版本进行了一些基本的测试。

环境部署

只需配置一个yaml文件,即可实现分库分表功能,具体配置如下:

数据源配置

ShardingSphere即将支持PostgreSQL代理_第1张图片

Sharding-Proxy内置HikariCP连接池用于连接物理PostgreSQL数据库。这里配置两个物理库,分别是demo_ds_0和demo_ds_1。

分片规则配置

ShardingSphere即将支持PostgreSQL代理_第2张图片

逻辑上分为t_order和t_order_item两个表,表分片规则都是order_id % 2,所以每个库有四张真实表:t_order_0, t_order_1, t_order_item_0, t_order_item_1。库分片规则为user_id % 2。

完成配置后,启动Sharding-Proxy,使用PostgreSQL命令行客户端进行功能验证。pgjdbc驱动和HikariCP连接池也可以直接用,把Sharding-Proxy当成数据库就对了。

使用3307端口登录Sharding-Proxy

ShardingSphere即将支持PostgreSQL代理_第3张图片

执行INSERT

order_id是偶数,user_id是奇数,说明这条记录被插入到demo_ds_1的t_order_0表中。连接真实数据库可以验证。

ShardingSphere即将支持PostgreSQL代理_第4张图片

执行SELECT

ShardingSphere即将支持PostgreSQL代理_第5张图片

执行UPDATE

ShardingSphere即将支持PostgreSQL代理_第6张图片

执行DELETE

ShardingSphere即将支持PostgreSQL代理_第7张图片

兼容性

  • 支持PostgreSQL命令行
  • 支持pgjdbc
  • 连接池方面,重点测试了HikariCP

性能

目前只是初始版本,以后我们会持续的对功能和性能进行优化,尽快达到生产可用的状态。

欢迎大家一起参与完善,共同打造PostgreSQL的优秀生态。

关于ShardingSphere

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,放眼未来,拥抱变化,是非常值得推荐的。反之,也可以用另一种思路看待问题,放眼未来,关注不变的东西,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

ShardingSphere目前已经进入Apache孵化器, 欢迎通过ShardingSphere的dev邮件列表与我们讨论。

项目地址:

https://github.com/apache/inc...

更多信息请浏览官网:

https://shardingsphere.apache...

关于Sharding-Proxy

定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供MySQL/PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, PostgreSQL Command Client等)操作数据,对DBA更加友好。它的特点是:

  • 向应用程序完全透明,可直接当做MySQL/PostgreSQL使用。
  • 适用于任何兼容MySQL/PostgreSQL协议的客户端。

ShardingSphere即将支持PostgreSQL代理_第8张图片

你可能感兴趣的:(数据库,分布式)