最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

多云轉(zhuǎn)晴:Databend 的天空計(jì)算之路

2023-04-19 11:58 作者:Databend  | 我要投稿

作者:尚卓燃(PsiACE)

澳門科技大學(xué)在讀碩士,Databend 研發(fā)工程師實(shí)習(xí)生

Apache OpenDAL(Incubating) Committer

https://github.com/psiace/

內(nèi)容提要:本文將會介紹天空計(jì)算的背景,以及 Databend 是如何從數(shù)據(jù)存儲、數(shù)據(jù)管理、數(shù)據(jù)共享等視角考慮跨云數(shù)據(jù)存儲與訪問的。

背景

云計(jì)算時代的開端可以追溯到 2006 年,當(dāng)時 AWS 開始提供 S3 和 EC2 服務(wù)。2013 年,云原生概念剛剛被提出,甚至還沒有一個完整的愿景。時間來到 2015 年 CNCF 成立,接下來的五年中,這一概念變得越來越流行,并且成為技術(shù)人繞不開的話題。

根據(jù) CNCF 對云原生的定義:云原生技術(shù)使組織能夠在公共、私有和混合云這類現(xiàn)代、動態(tài)的環(huán)境中構(gòu)建和運(yùn)行可擴(kuò)展的應(yīng)用程序。典型示例包括:容器、服務(wù)網(wǎng)格、微服務(wù)、不變基礎(chǔ)設(shè)施和聲明式 API 。

然而,無論是公有云還是私有云、無論是云計(jì)算還是云服務(wù),在天空中都已經(jīng)存在太多不同類型的“云”。每個“云”都擁有自己獨(dú)特的 API 和生態(tài)系統(tǒng),并且彼此之間缺乏互操作性,能夠兼容的地方也是寥寥無幾。云已經(jīng)成為事實(shí)上的孤島。這個孤島不僅僅是指公有云和私有云之間的隔閡,還包括了不同公有云之間、不同私有云之間、以及公有云和私有云之間的隔閡。這種孤島現(xiàn)象不僅給用戶帶來了很多麻煩,也限制了云計(jì)算的發(fā)展。

2021 年 RISELab 發(fā)表了題為 The Sky Above The Clouds 的論文,討論關(guān)于天空計(jì)算的未來。天空計(jì)算將云原生的思想進(jìn)一步擴(kuò)展,從而囊括公有云、私有云和邊緣設(shè)備。其目標(biāo)是實(shí)現(xiàn)一種統(tǒng)一的 API 和生態(tài)體系,使得不同云之間可以無縫地協(xié)作和交互。這樣一來,用戶就可以在不同的云之間自由地遷移應(yīng)用程序和數(shù)據(jù),而不必?fù)?dān)心兼容性和遷移成本的問題。同時,天空計(jì)算還可以提供更高效、更安全、更可靠的計(jì)算服務(wù),從而滿足用戶對于云計(jì)算的不斷增長的需求??傮w上講,天空計(jì)算致力于允許應(yīng)用跨多個云廠商運(yùn)行,實(shí)現(xiàn)多云之間的互操作性。

(上圖引自論文,展示不同類型的多云與天空的區(qū)別)


The Databend Way

跨云的關(guān)鍵

Databend 能夠滿足用戶在不同的云之間自由地訪問數(shù)據(jù)并進(jìn)行查詢,而不必?fù)?dān)心兼容性和遷移成本的問題。同時,Databend 還可以提供更高效、更安全、更可靠的計(jì)算服務(wù),從而滿足用戶對于云計(jì)算的不斷增長的需求。從這個角度來看,Databend 已經(jīng)初步形成了一套天空計(jì)算的解決方案。那么,對 Databend 而言,跨云的關(guān)鍵到底落在哪里呢?

(上圖所示為 Databend Cloud 架構(gòu)示意圖)

Databend 采用存算分離的架構(gòu),并完全面向云對象存儲進(jìn)行設(shè)計(jì)決策。得益于存儲與計(jì)算分離、存儲與狀態(tài)分離,Databend 可以實(shí)現(xiàn)對資源的精細(xì)化控制,輕松部署與擴(kuò)展 Query 和 Meta 節(jié)點(diǎn) ,并支持多種不同的計(jì)算場景和存儲場景,而無需考慮跨云數(shù)據(jù)管理與移動的問題。

Query 節(jié)點(diǎn)和 Meta 節(jié)點(diǎn)本身都是輕量化的服務(wù),并且對于部署環(huán)境沒有嚴(yán)格的依賴。但數(shù)據(jù)的存儲和訪問管理就不一樣,我們需要考慮不同云服務(wù)之間的 API 兼容性、以及如何與云服務(wù)本身的安全機(jī)制交互從而提供更安全的訪問控制機(jī)制。對于 Databend 而言,跨云,或者說實(shí)現(xiàn)天空計(jì)算的關(guān)鍵,就落在數(shù)據(jù)的管理與訪問之上。

(OpenDAL 可以將數(shù)據(jù)訪問問題從 M\N 轉(zhuǎn)化為 M+N)

為了解決這一問題,Databend 抽象出一套統(tǒng)一的數(shù)據(jù)訪問層(OpenDAL,現(xiàn)在是 Apache 軟件基金會旗下的孵化項(xiàng)目),從而屏蔽了不同云服務(wù)之間的 API 兼容性問題。在接下來的部分,我們將會從不同的視角來觀察 Databend 的無痛數(shù)據(jù)訪問體驗(yàn),體驗(yàn)真正完全云原生的天空計(jì)算的魅力。

數(shù)據(jù)存儲

Databend 存儲后端的細(xì)節(jié)隱藏在簡單的配置之下,通過修改配置文件就可以輕松地在十?dāng)?shù)種存儲服務(wù)之間切換。例如,如果你想使用 AWS S3,只需要指定類型為 s3 即可,Databend 會自動嘗試使用 IAM 來進(jìn)行認(rèn)證。如果你想使用其他與 S3 兼容的對象存儲服務(wù),也可以通過 endpoint_url 等設(shè)置來調(diào)整。

[storage] type = "s3" [storage.s3] bucket = "databend"

當(dāng)然,僅支持 S3 兼容的對象存儲服務(wù)還不夠。Databend 通過 OpenDAL 實(shí)現(xiàn)了 Google Cloud Storage、Azure Blob、Aliyun OSS、Huawei OBS 和 HDFS 等服務(wù)的原生存儲后端支持。 這意味著 Databend 可以充分利用各種供應(yīng)商提供的 API,為用戶帶來更優(yōu)秀的體驗(yàn)。例如,Aliyun OSS 的原生支持使得 Databend 可以通過 Aliyun RAM 對用戶進(jìn)行認(rèn)證和授權(quán),無需設(shè)置靜態(tài)密鑰,從而大大提高安全性并降低運(yùn)維負(fù)擔(dān)。

(上圖選自阿里云官網(wǎng),訪問控制場景與能力)

此外,原生支持還可以避免出現(xiàn)非預(yù)期行為,并與服務(wù)供應(yīng)商提供更緊密的集成。雖然各大廠商都提供了 S3 兼容 API,但它們之間存在微妙差異,在出現(xiàn)非預(yù)期行為時可能會導(dǎo)致服務(wù)性能下降或讀寫數(shù)據(jù)功能異常。Google Cloud Storage 提供了 S3 兼容的 XML API,但卻沒有支持批量刪除對象的功能。這導(dǎo)致用戶在調(diào)用該接口時遇到意外錯誤。而 Google Cloud Storage 的原生支持使 Databend 不必?fù)?dān)心 GCS 對 S3 的兼容實(shí)現(xiàn)問題對用戶業(yè)務(wù)造成影響。

總之,Databend 通過為各個服務(wù)實(shí)現(xiàn)原生支持來為用戶提供高效可靠的數(shù)據(jù)分析服務(wù)。

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

前面講過了存儲后端的跨云支持,現(xiàn)在讓我們將目光聚焦到數(shù)據(jù)的管理。更具體來說,數(shù)據(jù)在 Databend 工作流中的流入與流出。

COPY INTO,數(shù)據(jù)載入

要講數(shù)據(jù)管理,就不得不討論數(shù)據(jù)從哪里來。過去可能還需要考慮是否需要遷移存儲服務(wù),但現(xiàn)在,你可以從數(shù)十種 Databend 支持或兼容的存儲服務(wù)中加載數(shù)據(jù),一切都顯得那么自然。

COPY INTO 語句是窺探 Databend 跨云能力的一個窗口,下面的示例展示了如何從 Azure Blob 加載數(shù)據(jù)到 Databend 之中。

COPY INTO mytable ? ?FROM 'azblob://mybucket/data.csv' ? ?CONNECTION = ( ? ? ? ?ENDPOINT_URL = 'https://<account_name>.blob.core.windows.net' ? ? ? ?ACCOUNT_NAME = '<account_name>' ? ? ? ?ACCOUNT_KEY = '<account_key>' ? ?) ? ?FILE_FORMAT = (type = CSV);

當(dāng)然,不止是 Azure Blob ,Databend 支持的其他云對象存儲服務(wù)、IPFS 以及可以經(jīng)由 HTTPS 訪問的文件都可以作為 External location ,通過 COPY INTO 語句加載進(jìn)來。

Databend 的 COPY INTO 語句還支持進(jìn)行基本的轉(zhuǎn)換服務(wù),可以減輕 ETL 工作的負(fù)擔(dān)。

Stage ,數(shù)據(jù)暫存區(qū)

剛剛提到 External location ,事實(shí)上,要加載到 Databend 中的數(shù)據(jù)文件還可以在 Stage 中暫存。Databend 同樣支持 Internal stage 和 Named external stage 。

數(shù)據(jù)文件可以經(jīng)由 PUT_INTO_STAGE API 上傳到 Internal Stage,由 Databend 交付當(dāng)前配置的存儲后端進(jìn)行統(tǒng)一管理。而 Named external stage 則可以用于掛載其他 Databend 支持的多種存儲服務(wù)之中的 bucket 。

下面的例子展示了如何在 Databend 中創(chuàng)建一個名為 whdfs 的 Stage ,通過 WebHDFS 協(xié)議將 HDFS 中 data-files 目錄下的數(shù)據(jù)文件導(dǎo)入 Databend 。

bendsql> CREATE STAGE IF NOT EXISTS whdfs URL='webhdfs://127.0.0.1:9870/data-files/' CONNECTION=(HTTPS='false'); Query OK, 0 rows affected (0.01 sec) bendsql> COPY INTO books FROM @whdfs FILES=('books.csv') file_format=(type=CSV field_delimiter=',' ?record_delimiter='\n' skip_header=0); Query OK, 2 rows affected (1.83 sec)

如果你并不想直接導(dǎo)入數(shù)據(jù),也可以嘗試 SELECT FROM STAGE ,快速分析位于暫存區(qū)中的數(shù)據(jù)文件。

Catalog,數(shù)據(jù)掛載

放在對象存儲中的數(shù)據(jù)加載得到了解決,還有一個值得思考的問題是,如果數(shù)據(jù)原本由其他數(shù)據(jù)分析系統(tǒng)所管理,該怎么辦?

Databend 提供多源數(shù)據(jù)目錄(Multiple Catalog)的支持,允許掛載 Hive 、Iceberg 等外部數(shù)據(jù)目錄。

下面的示例展示如何利用配置文件掛載 Hive 數(shù)據(jù)目錄。

[catalogs.hive] type = "hive" # hive metastore address, such as 127.0.0.1:9083 address = "<hive-metastore-address>"

除了掛載,查詢也是小菜一碟 select * from hive.$db.$table limit 10; 。

當(dāng)然,這一切也可以通過 CREATE CATALOG 語句輕松搞定,下面的例子展示了如何掛載 Iceberg 數(shù)據(jù)目錄。

CREATE CATALOG iceberg_ctl ?TYPE=ICEBERG ?CONNECTION=( ? ?URL="s3://my_bucket/path/to/db" ? ?AWS_KEY_ID="<access-key>" ? ?AWS_SECRET_KEY="<secret_key>" ? ?SESSION_TOKEN="<session_token>" ?);

Multiple Catalog 相關(guān)的能力還在積極開發(fā)迭代中,感興趣的話可以保持關(guān)注。

再探 COPY INTO,數(shù)據(jù)導(dǎo)出

數(shù)據(jù)導(dǎo)出是數(shù)據(jù)管理中的另外一個重要話題,簡單來講,就是轉(zhuǎn)儲查詢結(jié)果以供進(jìn)一步的分析和處理。

這一能力同樣由 COPY INTO 語法提供支持,當(dāng)然,同樣支持?jǐn)?shù)十種存儲服務(wù)和多種文件輸出格式。下面的示例展示了如何將查詢結(jié)果以 CSV 格式文件的形式導(dǎo)出到指定 Stage 中。

-- Unload the data from a query into a CSV file on the stage COPY INTO @s2 FROM (SELECT name, age, id FROM test_table LIMIT 100) FILE_FORMAT = (TYPE = CSV);

這一語法同樣支持導(dǎo)出到 External location ,真正做到數(shù)據(jù)的自由流動。

Databend 還支持 PRESIGN ,用來為 Stage 中的文件生成預(yù)簽名的 URL ,用戶可以通過 Web 瀏覽器或 API 請求自由訪問該文件。

數(shù)據(jù)共享

剛才提到的 Databend 數(shù)據(jù)管理環(huán)節(jié)跨云主要是指 Databend 與外部服務(wù)之間的交互。此外,Databend 實(shí)例之間也可以經(jīng)由多種云存儲服務(wù)來支持?jǐn)?shù)據(jù)共享。

為了更好地滿足多云環(huán)境下的數(shù)據(jù)庫查詢需求,Databend 設(shè)計(jì)并實(shí)現(xiàn)了一套 RESTful API 來支持?jǐn)?shù)據(jù)共享。

(上圖所示為數(shù)據(jù)共享的工作流)

通過在配置文件中添加 share_endpoint_address 相關(guān)配置,用戶可以利用預(yù)先部署好的 open-sharing 服務(wù),經(jīng)由熟悉的云存儲服務(wù)共享 Databend 管理的數(shù)據(jù)庫或表。

CREATE SHARE myshare; GRANT USAGE ON DATABASE db1 TO SHARE myshare; GRANT SELECT ON TABLE db1.table1 TO SHARE myshare; ALTER SHARE myshare ADD TENANTS = vendor;

此時,表 db1.table1 將對接受方租戶 vendor 可見,并能夠進(jìn)行必要的查詢。

CREATE DATABASE db2 FROM SHARE myshare; SELECT * FROM db2.table1;

跨云的未來

上面的幾個視角,只是展示 Databend 在天空計(jì)算道路上的一個小小側(cè)影。

數(shù)據(jù)合規(guī)、隱私保護(hù)等內(nèi)容同樣是我們所關(guān)心的重要議題。

Databend 的愿景是成為未來跨云分析的基石,讓數(shù)據(jù)分析變得更加簡單、快速、便捷和智能。

總結(jié)

本文介紹了天空計(jì)算的概念和背景,以及 Databend 的跨云數(shù)據(jù)存儲和訪問。

天空計(jì)算是一種將公有云、私有云和邊緣設(shè)備統(tǒng)一起來的方法,目標(biāo)是提供一種無縫的 API 和生態(tài)體系,使得用戶可以在不同的云之間自由地遷移應(yīng)用程序和數(shù)據(jù)。

Databend 是一個開源的、完全面向云架構(gòu)的新式數(shù)倉,它采用存算分離的架構(gòu),并抽象出一套統(tǒng)一的數(shù)據(jù)訪問層(OpenDAL),從而屏蔽了不同云服務(wù)之間的 API 兼容性問題。Databend 可以滿足用戶在不同的云之間自由地訪問數(shù)據(jù)并進(jìn)行查詢,而不必?fù)?dān)心兼容性和遷移成本的問題。同時,Databend 還可以提供更高效、更安全、更可靠的計(jì)算服務(wù),從而滿足用戶對于云計(jì)算的不斷增長的需求。

歡迎部署 Databend 或者訪問 Databend Cloud ,即刻探索天空計(jì)算的無盡魅力。

關(guān)于?Databend

Databend 是一款開源、彈性、低成本,基于對象存儲也可以做實(shí)時分析的新式數(shù)倉。期待您的關(guān)注,一起探索云原生數(shù)倉解決方案,打造新一代開源 Data Cloud。

???????Databend Cloud:https://databend.cn

???Databend 文檔:https://databend.rs/

???Wechat:Databend

??GitHub:https://github.com/datafuselabs/databend

多云轉(zhuǎn)晴:Databend 的天空計(jì)算之路的評論 (共 條)

分享到微博請遵守國家法律
历史| 建昌县| 钦州市| 合作市| 松江区| 托里县| 牡丹江市| 平定县| 化州市| 门源| 鸡东县| 桂东县| 曲水县| 白水县| 宁武县| 清流县| 蓬安县| 青海省| 莱州市| 云南省| 同德县| 隆德县| 安国市| 凉城县| 阿城市| 肇源县| 于田县| 奎屯市| 呼图壁县| 千阳县| 泾源县| 襄城县| 东阳市| 厦门市| 诸暨市| 盘锦市| 读书| 聂拉木县| 重庆市| 广水市| 浦东新区|