Azure Database for PostgreSQL 中的節(jié)點(diǎn)和表–超大規(guī)模 (Citus)

來(lái)源: Microsoft Azure
作者:Microsoft Azure
時(shí)間:2021-02-01
16110
超大規(guī)模(Citus)承載類型允許Azure Database for PostgreSQL服務(wù)器(稱為節(jié)點(diǎn),)在無(wú)共享體系結(jié)構(gòu)中彼此協(xié)調(diào)。服務(wù)器組中的節(jié)點(diǎn)共同保存更多的數(shù)據(jù),并使用比單個(gè)服務(wù)器上的更多的CPU內(nèi)核。該體系結(jié)構(gòu)還允許通過(guò)向服務(wù)器組中添加更多節(jié)點(diǎn)來(lái)縮放數(shù)據(jù)庫(kù)。

Nodes

超大規(guī)模(Citus)承載類型允許Azure Database for PostgreSQL服務(wù)器(稱為節(jié)點(diǎn),)在"無(wú)共享"體系結(jié)構(gòu)中彼此協(xié)調(diào)。服務(wù)器組中的節(jié)點(diǎn)共同保存更多的數(shù)據(jù),并使用比單個(gè)服務(wù)器上的更多的CPU內(nèi)核。該體系結(jié)構(gòu)還允許通過(guò)向服務(wù)器組中添加更多節(jié)點(diǎn)來(lái)縮放數(shù)據(jù)庫(kù)。

協(xié)調(diào)器和輔助角色

每個(gè)服務(wù)器組都有一個(gè)協(xié)調(diào)器節(jié)點(diǎn)和多個(gè)輔助角色。應(yīng)用程序?qū)⑵洳樵儼l(fā)送到協(xié)調(diào)器節(jié)點(diǎn),該節(jié)點(diǎn)將其中繼到相關(guān)的工作線程并累計(jì)其結(jié)果。應(yīng)用程序無(wú)法直接連接到輔助角色。

超大規(guī)模(Citus)使數(shù)據(jù)庫(kù)管理員能夠在不同的工作節(jié)點(diǎn)上分發(fā)表,并存儲(chǔ)不同的行。分布式表是超大規(guī)模(Citus)性能的關(guān)鍵。如果無(wú)法分發(fā)表,則會(huì)將它們完全留在協(xié)調(diào)器節(jié)點(diǎn)上,并且無(wú)法利用跨計(jì)算機(jī)并行。

對(duì)于分布式表的每個(gè)查詢,協(xié)調(diào)器會(huì)將其路由到單個(gè)輔助角色節(jié)點(diǎn),或?qū)⑵洳⑿性诙鄠€(gè)節(jié)點(diǎn)上,具體取決于所需的數(shù)據(jù)是位于單個(gè)節(jié)點(diǎn)上還是在多個(gè)節(jié)點(diǎn)上。協(xié)調(diào)器通過(guò)咨詢?cè)獢?shù)據(jù)表確定要執(zhí)行的操作。這些表跟蹤輔助角色節(jié)點(diǎn)的DNS名稱和運(yùn)行狀況,以及跨節(jié)點(diǎn)分布的數(shù)據(jù)。

表類型

超大規(guī)模(Citus)服務(wù)器組中有三種類型的表,每個(gè)表在節(jié)點(diǎn)上以不同方式存儲(chǔ),并用于不同目的。

類型1:分布式表

第一種類型,最常見(jiàn)的是分布式表。它們看起來(lái)像是SQL語(yǔ)句的普通表,但它們?cè)诠ぷ鞴?jié)點(diǎn)之間水平分區(qū)。這意味著表中的行存儲(chǔ)在名為分片的碎片表中的不同節(jié)點(diǎn)上。

超大規(guī)模(Citus)只在整個(gè)群集中運(yùn)行SQL但DDL語(yǔ)句。更改分布式表的架構(gòu)會(huì)進(jìn)行級(jí)聯(lián)以更新所有表在工作線程中的分片。

分布列

超大規(guī)模(Citus)使用算法分片將行分配到分片。根據(jù)名為分布列的表列的值,賦值是明確的。群集管理員必須在分發(fā)表時(shí)指定此列。做出正確的選擇對(duì)性能和功能非常重要。

類型2:引用表

引用表是一種分布式表,其整個(gè)內(nèi)容將集中到單個(gè)分片中。分片在每個(gè)輔助角色上復(fù)制。對(duì)任何工作人員的查詢都可以在本地訪問(wèn)引用信息,而無(wú)需從另一個(gè)節(jié)點(diǎn)請(qǐng)求行的網(wǎng)絡(luò)開(kāi)銷。引用表沒(méi)有分布列,因?yàn)闊o(wú)需區(qū)分單獨(dú)的分片每行。

引用表通常很小,用于存儲(chǔ)與在任何輔助節(jié)點(diǎn)上運(yùn)行的查詢相關(guān)的數(shù)據(jù)。例如訂單狀態(tài)或產(chǎn)品類別等枚舉值。

類型3:本地表

使用超大規(guī)模(Citus)時(shí),連接到的協(xié)調(diào)器節(jié)點(diǎn)是一個(gè)常規(guī)的PostgreSQL數(shù)據(jù)庫(kù)。可以在協(xié)調(diào)器上創(chuàng)建普通表,并選擇不分片。

對(duì)于本地表,最好是不參與聯(lián)接查詢的小型管理表。例如,應(yīng)用程序登錄和身份驗(yàn)證的用戶表。

分片

上一部分介紹了如何將分布式表存儲(chǔ)為輔助角色節(jié)點(diǎn)上的分片。本部分將討論更多技術(shù)詳細(xì)信息。

pg_dist_shard協(xié)調(diào)器的元數(shù)據(jù)表為系統(tǒng)中每個(gè)分布式表的每個(gè)分片都包含一行。該行將分片ID與(shardminvalue,shardmaxvalue)的哈??臻g中的整數(shù)范圍匹配。

SQL

SELECT*from pg_dist_shard;

logicalrelid|shardid|shardstorage|shardminvalue|shardmaxvalue

---------------+---------+--------------+---------------+---------------

github_events|102026|t|268435456|402653183

github_events|102027|t|402653184|536870911

github_events|102028|t|536870912|671088639

github_events|102029|t|671088640|805306367

(4 rows)

如果協(xié)調(diào)器節(jié)點(diǎn)要確定哪些分片包含一行g(shù)ithub_events,則將對(duì)該行中分布列的值進(jìn)行哈希處理。然后,該節(jié)點(diǎn)檢查哪些分片的'范圍包含哈希值。定義這些范圍是為了使哈希函數(shù)的圖像是其不相交的聯(lián)合。

分片放置

假設(shè)分片102027與相關(guān)行相關(guān)聯(lián)。在其中一個(gè)輔助角色中調(diào)用的表中讀取或?qū)懭朐撔術(shù)ithub_events_102027。哪個(gè)工作線程?這完全由元數(shù)據(jù)表確定。分片到輔助角色的映射稱為分片位置。

協(xié)調(diào)器節(jié)點(diǎn)將查詢重寫為引用特定表的片段,github_events_102027并在相應(yīng)的輔助角色上運(yùn)行這些片段。下面是在幕后運(yùn)行的查詢示例,用于查找包含分片ID 102027的節(jié)點(diǎn)。

SQL

SELECT

shardid,

node.nodename,

node.nodeport

FROM pg_dist_placement placement

JOIN pg_dist_node node

ON placement.groupid=node.groupid

AND node.noderole='primary'::noderole

WHERE shardid=102027;

輸出

┌─────────┬───────────┬──────────┐

│shardid│nodename│nodeport│

├─────────┼───────────┼──────────┤

│102027│localhost│5433│

└─────────┴───────────┴──────────┘ 

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開(kāi)了嶄新的一頁(yè),突破了性能、云原生開(kāi)發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家