偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

科普—Snowflake Architecture

開發(fā) 架構(gòu)
每當(dāng)一個虛擬倉庫接收到要執(zhí)行的查詢時,它將首先掃描本地 SSD 磁盤緩存,然后再訪問 Snowflake 遠(yuǎn)程磁盤存儲。從 SSD 讀取速度比從數(shù)據(jù)庫存儲層讀取速度快,但仍需要運(yùn)行虛擬倉庫來完成操作。

傳統(tǒng)的數(shù)據(jù)平臺架構(gòu)

Shared-Disk  架構(gòu)

shared-disk 是一種早期的架構(gòu),將數(shù)據(jù)存儲在一個中央存儲位置,并可從多個數(shù)據(jù)庫集群節(jié)點訪問。每個集群節(jié)點訪問的數(shù)據(jù)是一致可用的,因為所有數(shù)據(jù)修改都被寫入共享磁盤。

這是一種很傳統(tǒng)的數(shù)據(jù)庫設(shè)計,以其數(shù)據(jù)管理的簡單性而聞名。雖然該方法在理論上很簡單,但它需要復(fù)雜的磁盤鎖定機(jī)制來確保數(shù)據(jù)一致性,這反過來容易造成瓶頸。

數(shù)據(jù)并發(fā)性,即允許多個用戶在數(shù)據(jù)庫中影響多個事務(wù),也是一個主要問題,在 shared-disk 架構(gòu)中增加更多的計算節(jié)點只會加劇這個問題。因此,這種架構(gòu)的真正可擴(kuò)展性是有限的。

圖片圖片

Oracle RAC 是典型的 shared-disk 架構(gòu)。

Shared-Nothing 架構(gòu)

shared-noting 架構(gòu),每個節(jié)點都有自己的 CPU、內(nèi)存和磁盤,并且一般通過網(wǎng)絡(luò)層進(jìn)行節(jié)點之間的通信,計算節(jié)點可以自由獨立擴(kuò)展,規(guī)避了 shared-disk 的集中式存儲瓶頸。

圖片圖片

常見的 shared-nothing 架構(gòu)的數(shù)據(jù)庫有 DB2、Vertica、Greenplum。

Snowflake Architecture

Snowflake 團(tuán)隊采取了獨特的方法。他們不是試圖逐步改進(jìn)或轉(zhuǎn)換現(xiàn)有的軟件架構(gòu),而是構(gòu)建了一個全新的、專為云端設(shè)計的現(xiàn)代數(shù)據(jù)平臺,允許多個用戶同時共享實時數(shù)據(jù)。

獨特的 Snowflake 設(shè)計在物理上將存儲和計算進(jìn)行了分離,但在邏輯上進(jìn)行了集成,并提供了安全和管理等服務(wù)。

Snowflake 混合模型架構(gòu)由三個層組成:元數(shù)據(jù)服務(wù)層、計算層和數(shù)據(jù)存儲層。

圖片圖片

The Cloud Services Layer

與 Snowflake 實例中的數(shù)據(jù)的所有交互都始于 Cloud Service 層,又被稱為全局服務(wù)層。

Snowflake Cloud Service 層是一組服務(wù),用于協(xié)調(diào)身份驗證、訪問控制和加密等活動。它還包括用于處理一些基礎(chǔ)設(shè)施和元數(shù)據(jù)的管理功能,以及執(zhí)行查詢解析和優(yōu)化器等功能。

Cloud Service 層有時被稱為 Snowflake 的"大腦",因為所有不同的服務(wù)層組件共同工作,處理用戶從請求登錄開始的請求。

圖片圖片

每當(dāng)用戶請求登錄時,該請求由 Cloud Service 層處理。當(dāng)用戶提交一個 Snowflake 查詢時,SQL 查詢將首先發(fā)送到Cloud Service 層優(yōu)化器,然后再發(fā)送到計算層進(jìn)行處理。Cloud Service 層是使得可以在數(shù)據(jù)上進(jìn)行數(shù)據(jù)定義語言(DDL)和數(shù)據(jù)操作語言(DML)操作的SQL客戶端接口的核心。

The Query Processing (Virtual Warehouse) Compute Layer

Snowflake 的計算集群,通常也叫做虛擬數(shù)倉(Virtual Warehouse),是一個由 CPU、內(nèi)存、和臨時存儲組成的動態(tài)資源集群,用戶可以自由創(chuàng)建計算集群,Snowflake 在后臺進(jìn)行調(diào)度分配資源。

圖片圖片

Snowflake 獨特的架構(gòu)允許存儲和計算分離,這意味著任何一個 Virtual Warehouse 都可以訪問與其他 Virtual Warehouse 相同的數(shù)據(jù),而不會產(chǎn)生沖突或?qū)ζ渌?warehouse 的性能造成影響。這是因為每個 Snowflake 的 Virtual Warehouse 都是獨立運(yùn)行、無狀態(tài)的,不與其他 Virtual Warehouse 共享計算資源。

在一個 session 中運(yùn)行時,Virtual Warehouse 總是會消耗計算配額。

然而,Snowflake Virtual Warehouse 可以隨時啟動和停止,并且可以在運(yùn)行時隨時調(diào)整大小。Snowflake 支持兩種不同擴(kuò)展方式。Virtual Warehouse 可以通過調(diào)整 warehouse 的大小來進(jìn)行垂直擴(kuò)展,也可以通過向 warehouse 添加集群來進(jìn)行水平擴(kuò)展。可以同時使用這兩種擴(kuò)展方法,也  可以只使用其中一種。

Scaling Up

在創(chuàng)建計算集群的時候,可以指定其大小,這個大小主要表示了 warehouse 所占的服務(wù)器資源,size 越大,計算資源越多,計算性能也就越強(qiáng)。

Virtual Warehouse 可以擴(kuò)展其大小,這一般也叫做 scaling up,在處理一些復(fù)雜的任務(wù)時可以對其進(jìn)行調(diào)整。

圖片圖片

Scaling Out

Virtual Warehouse 還可以擴(kuò)展其集群的數(shù)量,進(jìn)一步提升計算性能,這種擴(kuò)展方式叫做 scaling out。

圖片圖片

計算集群可以被隨意創(chuàng)建,并且任意擴(kuò)展,這帶來了一個極大的好處便是可以將不同的 workload 分配到不同的 warehouse 中,并且共享底層的數(shù)據(jù)存儲。

圖片圖片

Centralized (Hybrid Columnar) Database Storage Layer

Snowflake 的集中式數(shù)據(jù)庫存儲層包含所有的數(shù)據(jù),例如結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。

當(dāng)數(shù)據(jù)加載到Snowflake時,它會被優(yōu)化重新組織為一種壓縮的列格式,并存儲和維護(hù)在 Snowflake 數(shù)據(jù)庫中。每個Snowflake 數(shù)據(jù)庫由一個或多個 schema 組成,schema 是數(shù)據(jù)庫對象(如表和視圖)的邏輯分組。

圖片圖片

存儲在 Snowflake 數(shù)據(jù)庫中的數(shù)據(jù)始終是經(jīng)過壓縮和加密的。Snowflake 負(fù)責(zé)管理數(shù)據(jù)存儲的每個方面。Snowflake會自動將存儲的數(shù)據(jù)組織成微型分區(qū),這是一種經(jīng)過優(yōu)化、不可變的壓縮列格式,并使用 AES-256 進(jìn)行加密。

Snowflake 通過優(yōu)化和壓縮數(shù)據(jù),使元數(shù)據(jù)提取和查詢處理更加簡單和高效,每當(dāng)用戶提交一個 Snowflake 查詢時,該查詢會先經(jīng)過 Cloud Service 層的優(yōu)化器,然后再發(fā)送到計算層進(jìn)行處理。

Snowflake 的數(shù)據(jù)存儲層有時被稱為遠(yuǎn)程磁盤層,底層文件系統(tǒng)是在 AWS、Google Cloud 或 Microsoft Azure 上實現(xiàn),數(shù)據(jù)存儲時使用的特定提供商是在創(chuàng)建 Snowflake 賬戶時選擇的。

Snowflake不限制您存儲的數(shù)據(jù)量、創(chuàng)建的數(shù)據(jù)庫數(shù)量或數(shù)據(jù)庫對象數(shù)量。Snowflake 表可以輕松存儲 PB 級別的數(shù)據(jù)。在 Snowflake 賬戶中,隨著存儲的增加或減少,不會對虛擬倉庫的大小產(chǎn)生影響。這兩者獨立于彼此和云服務(wù)層進(jìn)行擴(kuò)展。

Snowflake Caching

Snowflake 在 Cloud Service 和 Virtual Warehouse 層都有對應(yīng)的緩存策略,主要是為了能夠避免頻繁訪問遠(yuǎn)端 S3

存儲,加速查詢性能。

Result Cache

從Snowflake檢索數(shù)據(jù)的最快方式是使用 Result Cache。Snowflake 查詢的結(jié)果會被緩存或持久化保存24小時,然后被清除。但每次重新執(zhí)行查詢時,時間會被重置,最長可以從首次執(zhí)行查詢的日期和時間開始計算,持續(xù)31天。在31天之后,或者如果基礎(chǔ)數(shù)據(jù)發(fā)生變化,則在再次提交查詢時生成并緩存新的結(jié)果。

查詢結(jié)果緩存由 Snowflake 的 Cloud Service 層管理,并且可以被所有的計算集群所共享。

圖片圖片

Metadata Cache

在 Cloud Service 層中還維護(hù)了一個元數(shù)據(jù)緩存層 Metadata Cache,Snowflake 收集和管理有關(guān)表、分區(qū)等元數(shù)據(jù)。對于表,Snowflake 存儲行計數(shù)、表的字節(jié)大小、文件引用和表版本。因此,在運(yùn)行 SELECT COUNT(*) 查詢時,不需要運(yùn)行 Virtual Warehouse,因為計數(shù)統(tǒng)計信息保存在元數(shù)據(jù)緩存中。

圖片圖片

Virtual Warehouse Local Disk Cache

在計算層中,Virtual Warehouse 中還維護(hù)了本地磁盤緩存。

圖片圖片

每當(dāng)一個虛擬倉庫接收到要執(zhí)行的查詢時,它將首先掃描本地 SSD 磁盤緩存,然后再訪問 Snowflake 遠(yuǎn)程磁盤存儲。從 SSD 讀取速度比從數(shù)據(jù)庫存儲層讀取速度快,但仍需要運(yùn)行虛擬倉庫來完成操作。

責(zé)任編輯:武曉燕 來源: roseduan寫字的地方
相關(guān)推薦

2023-09-12 08:00:00

大數(shù)據(jù)數(shù)據(jù)管理Snowflake

2022-02-09 09:00:00

云計算BigQuerySnowflake

2009-09-25 15:31:24

Hibernate架構(gòu)

2020-08-10 15:24:05

Snowflake算法開源

2022-09-09 07:41:35

DatabricksSnowflake數(shù)據(jù)

2016-07-01 16:13:13

AWSLambda

2016-12-12 16:06:41

BI商業(yè)智能

2014-04-08 16:02:28

寬字節(jié)注入數(shù)據(jù)安全MYSQL

2023-04-20 09:54:36

數(shù)據(jù)管理大數(shù)據(jù)

2014-04-15 11:22:24

2014-07-22 10:33:50

Android Stu離線升級

2022-04-26 09:16:07

PWA線程生命周期

2020-08-03 07:00:00

Snowflake數(shù)據(jù)庫性能調(diào)優(yōu)

2022-04-18 10:49:14

開源產(chǎn)品組合架構(gòu)

2024-06-21 09:56:03

2023-02-07 09:24:28

2019-09-19 14:50:15

區(qū)塊鏈運(yùn)行原理

2018-12-03 13:53:19

車聯(lián)網(wǎng)5G傳感器

2014-01-15 12:59:21

2018-03-30 16:03:04

軟件無狀態(tài)”
點贊
收藏

51CTO技術(shù)棧公眾號