作者简介
张永伦,京东数科高级软件工程师,Apache ShardingSphere(Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络IO、性能优化方面的技术挑战。目前专注于Sharding-Proxy的持续优化和PostgreSQL协议的开发工作。
ShardingSphere的第一个Apache Release将在近期发布,新版的Sharding-Proxy首次实现了对PostgreSQL的支持,欢迎试用。
在这个初始版本中,我们分别对PostgreSQL Server的8.4和10.4版本进行了一些基本的测试。
只需配置一个yaml文件,即可实现分库分表功能,具体配置如下:
数据源配置
Sharding-Proxy内置HikariCP连接池用于连接物理PostgreSQL数据库。这里配置两个物理库,分别是demo_ds_0和demo_ds_1。
分片规则配置
逻辑上分为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
执行INSERT
order_id是偶数,user_id是奇数,说明这条记录被插入到demo_ds_1的t_order_0表中。连接真实数据库可以验证。
执行SELECT
执行UPDATE
执行DELETE
兼容性:
支持PostgreSQL命令行
支持pgjdbc
连接池方面,重点测试了HikariCP
性能:
单表查询的速度在6w左右(https://github.com/apache/incubator-shardingsphere/issues/1892)
目前只是初始版本,以后我们会持续的对功能和性能进行优化,尽快达到生产可用的状态。
欢迎大家一起参与完善,共同打造PostgreSQL的优秀生态。
ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,放眼未来,拥抱变化,是非常值得推荐的。反之,也可以用另一种思路看待问题,放眼未来,关注不变的东西,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
ShardingSphere目前已经进入Apache孵化器, 欢迎通过ShardingSphere的dev邮件列表与我们讨论。
项目地址:
https://github.com/apache/incubator-shardingsphere
更多信息请浏览官网:
https://shardingsphere.apache.org
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供MySQL/PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, PostgreSQL Command Client等)操作数据,对DBA更加友好。它的特点是:
向应用程序完全透明,可直接当做MySQL/PostgreSQL使用。
适用于任何兼容MySQL/PostgreSQL协议的客户端。
Apache ShardingSphere(Incubating)自2016开源以来,不断精进、不断发展,被越来越多的企业和个人认可:Github上收获7000+的stars,70+公司企业的成功案例。此外,越来越多的企业和个人也加入到Apache ShardingSphere(Incubating)的开源项目中,为它的成长和发展贡献了巨大力量。
我们从未停息过脚步,聆听社区伙伴的需求和建议,不断开发新的、强大的功能,不断使其健壮可靠!
开源不易, 我们却愿向着最终的目标,步履不停!
那么,正在阅读的你,是否可以助我们一臂之力呢?分享、转发、使用、交流,以及加入我们,都是对我们最大的鼓励!
项目地址:
https://github.com/apache/incubator-shardingsphere
更多信息请浏览官网:
https://shardingsphere.apache.org/
扫码进群