時間:2024-02-05 12:47作者:下載吧人氣:24
在 MySQL ShardingSphere-Proxy 逐漸成熟并被廣泛采用的同時,ShardingSphere 團(tuán)隊(duì)也在 PostgreSQL ShardingSphere-Proxy 上持續(xù)發(fā)力。相比前期的 alpha 與 beta,5.0.0 正式版對 PostgreSQL 的協(xié)議實(shí)現(xiàn)、SQL 支持度、權(quán)限控制等方面進(jìn)行了大量的完善,為后續(xù)全面對接 PostgreSQL 生態(tài)打下基礎(chǔ)。ShardingSphere-Proxy 與 PostgreSQL 的生態(tài)對接,讓用戶能夠在 PostgreSQL 數(shù)據(jù)庫的基礎(chǔ)上獲得如數(shù)據(jù)分片、讀寫分離、影子庫、數(shù)據(jù)加密/脫敏、分布式治理等透明化的增量能力。
除了 PostgreSQL 方面,由華為開源的國產(chǎn)數(shù)據(jù)庫 openGauss 的熱度持續(xù)攀升。openGauss 具備優(yōu)秀的單機(jī)性能,配合 ShardingSphere 的能力和生態(tài),能夠打造出覆蓋更多場景的國產(chǎn)分布式數(shù)據(jù)庫解決方案。
ShardingSphere PostgreSQL/openGauss Proxy 目前能夠支持?jǐn)?shù)據(jù)分片、讀寫分離、影子庫、數(shù)據(jù)加密/脫敏、分布式治理等 Apache ShardingSphere 生態(tài)中大部分能力,在完善程度上逐漸對齊 ShardingSphere MySQL Proxy。
本文將給大家介紹 ShardingSphere-Proxy 5.0.0 在 PostgreSQL 上所做的提升以及與 openGauss 的生態(tài)對接。
吳偉杰
Apache ShardingSphere Committer,SphereEx 中間件工程師。目前專注于 Apache ShardingSphere 及其子項(xiàng)目 ElasticJob 的研發(fā)。
ShardingSphere-Proxy 是 ShardingSphere 生態(tài)中的一個接入端,定位為對客戶端透明的數(shù)據(jù)庫代理。ShardingSphere Proxy 不局限于 Java,其實(shí)現(xiàn)了 MySQL、PostgreSQL 數(shù)據(jù)庫協(xié)議,可以使用各種兼容 MySQL / PostgreSQL 協(xié)議的客戶端連接并操作數(shù)據(jù)。
ShardingSphere-JDBC | ShardingSphere-Proxy | |
---|---|---|
數(shù)據(jù)庫 | 任意 | 基于 MySQL / PostgreSQL 協(xié)議的數(shù)據(jù)庫 |
連接消耗數(shù) | 高 | 低 |
異構(gòu)語言 | 支持 Java 等基于 JVM 語言 | 任意 |
性能 | 損耗低 | 損耗略高 |
無中心化 | 是 | 否 |
靜態(tài)入口 | 無 | 有 |
在做了分庫分表或其他規(guī)則的情況下,數(shù)據(jù)會分散到多個數(shù)據(jù)庫實(shí)例上,在管理上難免會有一些不便;或者使用非 Java 語言的開發(fā)者,需要 ShardingSphere 所提供的能力…… 以上這些情況,正是 ShardingSphere-Proxy 力所能及之處。
ShardingSphere-Proxy 隱藏了后端實(shí)際數(shù)據(jù)庫,對于客戶端來說就是在使用一個數(shù)據(jù)庫,不需要關(guān)心 ShardingSphere 如何協(xié)調(diào)背后的數(shù)據(jù)庫,對于使用非 Java 語言的開發(fā)者或 DBA 更友好。
在協(xié)議方面,ShardingSphere PostgreSQL Proxy 實(shí)現(xiàn)了 Simple Query 與大部分 Extended Query 協(xié)議,支持異構(gòu)語言通過 PostgreSQL/openGauss 驅(qū)動連接 Proxy。ShardingSphere openGauss Proxy 在復(fù)用 PostgreSQL 協(xié)議的基礎(chǔ)上,還支持 openGauss 特有的批量插入?yún)f(xié)議。
不過,由于 ShardingSphere-Proxy 相比 ShardingSphere-JDBC 增加了一層網(wǎng)絡(luò)交互,SQL 執(zhí)行的延時會有所增加,損耗相比 ShardingSphere-JDBC 略高。
兼容 PostgreSQL Simple Query 與 Extended Query
Simple Query 與 Extended Query 是大多數(shù)用戶在使用 PostgreSQL 時最常用的協(xié)議。
比如,使用如下命令行工具 psql
連接 PostgreSQL 數(shù)據(jù)庫進(jìn)行 CRUD 操作時,主要使用 Simple Query 協(xié)議與數(shù)據(jù)庫交互。
$ psql -h 127.0.0.1 -U postgres
psql (14.0 (Debian 14.0-1.pgdg110+1))
Type “help” for help.
postgres=# select id, name from person where age < 35;
id | name
—-+——
1 | Foo
(1 row)
網(wǎng)友評論