国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

開發(fā)分布式SQL數(shù)據(jù)庫(kù)的6種技術(shù)挑戰(zhàn)

新聞 數(shù)據(jù)庫(kù)運(yùn)維 分布式
在這篇文章中,我們將概述在構(gòu)建開源,云原生,高性能分布式SQL數(shù)據(jù)庫(kù)的過程中我們必須解決的一些最難的架構(gòu)問題。

 我們?cè)诮衲?月跨越了YugaByte DB三年開發(fā)階段,到目前為止,這是一段驚心動(dòng)魄的旅程,但并非沒有公平的技術(shù)挑戰(zhàn)。有時(shí)我們不得不回到繪圖板,甚至篩選學(xué)術(shù)研究,以找到比我們手頭的更好的解決方案,在這篇文章中,我們將概述在構(gòu)建開源,云原生,高性能分布式SQL數(shù)據(jù)庫(kù)的過程中我們必須解決的一些最難的架構(gòu)問題。

好的,讓我們開始探討從最簡(jiǎn)單到***挑戰(zhàn)性的問題:

1.架構(gòu):亞馬遜Aurora還是谷歌Spanner?

我們?cè)缙谧龀龅囊粋€(gè)決定是找到一個(gè)我們可以用作YugaByte DB架構(gòu)靈感的數(shù)據(jù)庫(kù)。我們密切關(guān)注兩個(gè)系統(tǒng),Amazon Aurora和Google Spanner。

Amazon Aurora是一個(gè)提供高可用性的SQL數(shù)據(jù)庫(kù)。它具有與流行的RDBMS數(shù)據(jù)庫(kù)(如MySQL和PostgreSQL)的兼容性,使其易于入門并可運(yùn)行各種應(yīng)用程序。Amazon Aurora也是AWS歷史上發(fā)展最快的服務(wù)之一。

Amazon Aurora服務(wù)與MySQL和PostgreSQL兼容,是AWS歷史上發(fā)展最快的服務(wù)。

Amazon Aurora具有可擴(kuò)展的數(shù)據(jù)存儲(chǔ)層,但查詢層不是這樣。以下是我們發(fā)現(xiàn)的Amazon Aurora的一些關(guān)鍵可擴(kuò)展性限制:

  • 寫入不是水平可伸縮的。擴(kuò)展寫入吞吐量的唯一方法是垂直擴(kuò)展處理所有寫入的節(jié)點(diǎn)(稱為主節(jié)點(diǎn))。這種擴(kuò)展方案只是到目前為止,因此數(shù)據(jù)庫(kù)能處理多少寫入IOPS存在固有的限制。
  • 寫入不是全局一致的。許多現(xiàn)代的云原生應(yīng)用程序本質(zhì)上是全局性的,需要跨多個(gè)區(qū)域部署底層數(shù)據(jù)庫(kù)。但是,Aurora僅支持多主機(jī)部署,在發(fā)生沖突時(shí)***一個(gè)寫入程序(具有***時(shí)間戳)獲勝。這可能導(dǎo)致不一致。
  • 通過使用犧牲一致性的從屬副本以獲得讀取的伸縮擴(kuò)展。為了擴(kuò)展讀取,應(yīng)用程序需要連接到從屬節(jié)點(diǎn)才能實(shí)現(xiàn)讀取。當(dāng)使用這些從屬節(jié)點(diǎn)實(shí)現(xiàn)讀取時(shí),應(yīng)用程序需要面對(duì)降級(jí)的一致性語義,以及一個(gè)單獨(dú)的連接端點(diǎn)。這使得應(yīng)用程序架構(gòu)非常復(fù)雜。

另外,Google Spanner是一個(gè)可水平擴(kuò)展的SQL數(shù)據(jù)庫(kù),專為大規(guī)??蓴U(kuò)展和地理分布式應(yīng)用程序而構(gòu)建。

Cloud Spanner是唯一為云構(gòu)建的企業(yè)級(jí)、全局分布且高度一致的數(shù)據(jù)庫(kù)服務(wù),專門用于將關(guān)系數(shù)據(jù)庫(kù)結(jié)構(gòu)的優(yōu)勢(shì)與非關(guān)系水平擴(kuò)展相結(jié)合。

這意味著Spanner可以無縫擴(kuò)展讀寫,支持需要全局一致性的地理分布式應(yīng)用程序,并在不犧牲正確性的情況下從多個(gè)節(jié)點(diǎn)執(zhí)行讀取。

但是,它放棄了RDBMS數(shù)據(jù)庫(kù)提供給開發(fā)人員期望的許多熟悉功能集。例如,Google Spanner文檔中突出顯示了不支持外鍵約束或觸發(fā)器的事實(shí)。

我們決定采用混合方法。

  • YugaByte DB的核心存儲(chǔ)架構(gòu)受到Google Spanner的啟發(fā),該架構(gòu)專為水平可擴(kuò)展性和地理分布式應(yīng)用程序而構(gòu)建。
  • YugaByte DB保留了與Amazon Aurora類似的PostgreSQL兼容查詢層,它可以支持豐富的功能集,并支持最廣泛的用例。

2. SQL協(xié)議:PostgreSQL還是MySQL?

我們想要對(duì)廣泛采用的SQL方言進(jìn)行標(biāo)準(zhǔn)化。我們還希望它是開源的,并且在數(shù)據(jù)庫(kù)周圍擁有成熟的生態(tài)系統(tǒng)。權(quán)衡的自然選擇是PostgreSQL和MySQL?

我們之所以選擇PostgreSQL(而不是MySQL),原因如下:

  • PostgreSQL有一個(gè)更寬松的許可證,更符合YugaByte DB的開源精神。
  • 與任何其他SQL數(shù)據(jù)庫(kù)相比,PostgreSQL在過去幾年中的流行度一直在飆升,這絕對(duì)沒有受到影響!

在目前排在DB-Engines排名網(wǎng)站前10位的五個(gè)SQL數(shù)據(jù)庫(kù)中,自2014年以來,只有PostgreSQL的受歡迎程度越來越高,而其他數(shù)據(jù)庫(kù)則趨于平穩(wěn)或正在失去理智。

此外,對(duì)于許多應(yīng)用程序,PostgreSQL是Oracle的***替代品。組織正在被PostgreSQL所吸引,因?yàn)樗情_源的,供應(yīng)商中立(MySQL由Oracle擁有),擁有一個(gè)參與的開發(fā)者社區(qū),一個(gè)繁榮的供應(yīng)商生態(tài)系統(tǒng),一個(gè)強(qiáng)大的功能集,以及一個(gè)成熟的代碼庫(kù),一直在戰(zhàn)斗 - 經(jīng)過20多年的嚴(yán)格使用而堅(jiān)固。

3.分布式事務(wù):Google Spanner或Percolator?

關(guān)于我們應(yīng)該如何設(shè)計(jì)分布式事務(wù),我們查看了Google Spanner和Percolator。

總而言之,Google Percolator提供高吞吐量但使用單個(gè)時(shí)間戳。這種方法本質(zhì)上是不可擴(kuò)展的,僅適用于單個(gè)數(shù)據(jù)中心,面向?qū)崟r(shí)分析(稱為HTAP)的應(yīng)用程序,而不是OLTP應(yīng)用程序。另一方面,Google Spanner的分散時(shí)間跟蹤方法對(duì)于地理分布式OLTP和單數(shù)據(jù)中心HTAP應(yīng)用程序來說都是一個(gè)很好的解決方案。

Google Spanner是在Google Percolator之后構(gòu)建的,用于替換廣告后端中手動(dòng)分片的MySQL部署,以實(shí)現(xiàn)水平可擴(kuò)展性和地理分布式用例。但是,考慮到其真正的分布式特性以及對(duì)時(shí)鐘偏移跟蹤的需求,Google Spanner的構(gòu)建難度要高一個(gè)數(shù)量級(jí)。

有關(guān)此主題的更多詳細(xì)信息,您可以詳細(xì)了解Percolator與Spanner的權(quán)衡。

我們決定采用Google Spanner方法,因?yàn)樗梢灾С郑?/p>

  • 更好的水平可擴(kuò)展性
  • 高度可用且性能更佳的多區(qū)域部署。

我們堅(jiān)信,大多數(shù)現(xiàn)代云應(yīng)用都需要上述兩種功能。實(shí)際上,GDPR和總共提供100個(gè)地區(qū)的公共云等合規(guī)性要求已經(jīng)使這成為現(xiàn)實(shí)。

4. Raft是否適用于地理分布式工作負(fù)載?

Raft和Paxos是眾所周知的分布式共識(shí)算法,并且已被正式證明是安全的,Spanner使用Paxos,但是,我們選擇了Raft,因?yàn)椋?/p>

  • 對(duì)于開發(fā)人員和運(yùn)營(yíng)團(tuán)隊(duì)Raft比Paxos更容易理解。
  • 它提供動(dòng)態(tài)更改成員資格的能力,這是至關(guān)重要的(例如:在不影響性能的情況下更改機(jī)器類型)。(banq注:Raft與Paxos主要區(qū)別在于Raft候選人可以是任何一個(gè)服務(wù)器節(jié)點(diǎn),不需要專門指定候選人,否則這些候選人全部宕機(jī)怎么辦?如同一些TCC分布式事務(wù)中存在事務(wù)協(xié)調(diào)器一樣有單點(diǎn)風(fēng)險(xiǎn))

然而,為了確??删€性化的讀取,Raft要求接收讀取查詢的每個(gè)***在實(shí)際提供讀取查詢之前首先將心跳消息傳播到Raft組中的大多數(shù)節(jié)點(diǎn)。在某些情況下,這可能會(huì)嚴(yán)重降低讀取性能。這種情況的一個(gè)示例是地理分布式部署,其中往返會(huì)顯著增加延遲,并且在諸如臨時(shí)網(wǎng)絡(luò)分區(qū)之類的事件的情況下增加失敗查詢的數(shù)量。

為了避免Raft高延遲,我們實(shí)施了***的租賃機(jī)制,這將允許我們無需往返實(shí)現(xiàn)***服務(wù),同時(shí)保留了Raft的線性化特性。此外,我們使用單調(diào)時(shí)鐘而不是實(shí)時(shí)時(shí)鐘,以容忍時(shí)鐘偏差。

5.我們可以構(gòu)建軟件定義的原子鐘嗎?

作為分布式數(shù)據(jù)庫(kù),YugaByte DB支持跨多個(gè)節(jié)點(diǎn)的多鍵ACID事務(wù)(快照和可序列化隔離級(jí)別),即使存在故障也是如此。這需要一個(gè)可以跨節(jié)點(diǎn)同步時(shí)間的時(shí)鐘。

Google Spanner使用TrueTime,這是一個(gè)具有嚴(yán)格錯(cuò)誤界限的高可用性全局同步時(shí)鐘的示例。但是,許多部署中都沒有此類時(shí)鐘。

物理時(shí)鐘(或掛鐘)不能在節(jié)點(diǎn)之間***同步。因此,他們無法跨節(jié)點(diǎn)排序事件(建立因果關(guān)系)。除非存在中央時(shí)間戳權(quán)限,否則諸如Lamport時(shí)鐘和向量時(shí)鐘之類的邏輯時(shí)鐘不會(huì)跟蹤物理時(shí)間,這成為可擴(kuò)展性瓶頸。

我們的方案: 混合邏輯時(shí)鐘(HLC)通過將使用NTP粗略同步的物理時(shí)鐘與跟蹤因果關(guān)系的Lamport時(shí)鐘相結(jié)合來解決該問題。

YugaByte DB使用HLC作為高可用性群集寬時(shí)鐘,具有用戶指定的***時(shí)鐘偏差上限值。HLC值在Raft組中用作關(guān)聯(lián)更新的方式,也用作MVCC讀取點(diǎn)。結(jié)果是符合ACID的分布式數(shù)據(jù)庫(kù),如Jepsen測(cè)試所示

6.重寫或重用PostgreSQL查詢層?​​​​​​​

***但同樣重要的是,我們需要決定是否重寫或重用PostgreSQL查詢層。

我們的初步?jīng)Q定

YugaByte數(shù)據(jù)庫(kù)查詢層在設(shè)計(jì)時(shí)考慮了可擴(kuò)展性。通過在C ++中重寫API服務(wù)器,已經(jīng)在這個(gè)查詢層框架中構(gòu)建了兩個(gè)API(YCQL和YEDIS),首先重寫PostgreSQL API似乎更容易和自然。

我們的最終決定

在我們意識(shí)到這不是一條理想的道路之前,我們沿著這條路走了大約5個(gè)月。與PostgreSQL成熟,完整的數(shù)據(jù)庫(kù)相比,其他API要簡(jiǎn)單得多。然后我們重新完成整個(gè)工作,回到繪圖板并重新開始重新使用PostgreSQL的查詢層代碼。雖然這在開始時(shí)很痛苦,但回顧起來它是一個(gè)更好的策略。

這種方法也有其自身的挑戰(zhàn)。我們的計(jì)劃是首先將PostgreSQL系統(tǒng)表移動(dòng)到DocDB(YugaByte DB的存儲(chǔ)層),最初支持一些數(shù)據(jù)類型和一些簡(jiǎn)單查詢,并隨著時(shí)間的推移添加更多數(shù)據(jù)類型和查詢支持。

不幸的是,這個(gè)計(jì)劃并沒有完全解決。要從psql執(zhí)行看似簡(jiǎn)單的最終用戶命令,實(shí)際上需要支持大量SQL功能。例如,\d用于列出所有表的命令在內(nèi)部執(zhí)行以下查詢:

  1.  c.relname as "Name"
  2.   CASE c.relkind 
  3.     WHEN 'r' THEN 'table' 
  4.     WHEN 'v' THEN 'view' 
  5.     WHEN 'm' THEN 'materialized view' 
  6.     WHEN 'i' THEN 'index' 
  7.     WHEN 'S' THEN 'sequence' 
  8.     WHEN 's' THEN 'special' 
  9.     WHEN 'f' THEN 'foreign table' 
  10.   END as "Type"
  11.   pg_catalog.pg_get_userbyid(c.relowner) as "Owner" 
  12. FROM pg_catalog.pg_class c 
  13.      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace 
  14. WHERE c.relkind IN ('r',''
  15.   AND n.nspname <> 'pg_catalog' 
  16.   AND n.nspname <> 'information_schema' 
  17.   AND n.nspname !~ '^pg_toast' 
  18.   AND pg_catalog.pg_table_is_visible(c.oid) 
  19. ORDER BY 1,2;  

WHERE支持操作符,例如IN,不等于,正則表達(dá)式匹配等。滿足上述查詢需要支持以下功能:

  • CASE 條款
  • 加入,特別是 LEFT JOIN
  • ORDER BY 
  • 內(nèi)建等 pg_table_is_visible()

顯然,這代表了各種各樣的SQL功能,因此我們必須在創(chuàng)建單個(gè)用戶表之前使所有這些功能都可用!我們?cè)贕oogle Spanner架構(gòu)上發(fā)布分布式PostgreSQL - 查詢層突出顯示了查詢層的詳細(xì)工作方式。

結(jié)論

即使對(duì)于專家用戶來說,不得不在市場(chǎng)上可用的許多數(shù)據(jù)庫(kù)之間進(jìn)行選擇,一開始看起來似乎勢(shì)不可擋。這是因?yàn)闉榻o定類型的應(yīng)用程序選擇數(shù)據(jù)庫(kù)取決于這些數(shù)據(jù)庫(kù)在其體系結(jié)構(gòu)中所做的權(quán)衡。

通過YugaByte DB,我們以一種新穎的方式組合了一組非常實(shí)用的架構(gòu)決策,以創(chuàng)建一個(gè)獨(dú)特的開源分布式SQL數(shù)據(jù)庫(kù)。PostgreSQL強(qiáng)大的SQL功能現(xiàn)在可供您使用,零數(shù)據(jù)丟失,水平寫入可擴(kuò)展性,低讀取延遲以及在公共云或Kubernetes中本機(jī)運(yùn)行的能力。

責(zé)任編輯:張燕妮 來源: jdon.com
相關(guān)推薦

2023-12-14 14:49:05

SQL數(shù)據(jù)庫(kù)分布式 SQL

2020-08-03 07:00:00

SQL數(shù)據(jù)庫(kù)

2010-06-29 16:19:03

SQL Server

2021-10-26 00:33:00

分布式數(shù)據(jù)庫(kù)系統(tǒng)

2024-05-06 00:00:00

.NET分布式鎖技術(shù)

2023-12-11 09:11:14

TDSQL技術(shù)架構(gòu)

2018-05-25 13:12:10

UCloud數(shù)據(jù)庫(kù)UDDB

2022-06-10 09:00:00

數(shù)據(jù)庫(kù)分布式數(shù)據(jù)庫(kù)集群

2014-06-30 14:20:05

NoSQL數(shù)據(jù)庫(kù)

2021-11-08 10:52:02

數(shù)據(jù)庫(kù)分布式技術(shù)

2010-06-29 16:41:24

SQL Server分

2019-06-26 09:43:13

數(shù)據(jù)庫(kù)分布式技術(shù)

2023-07-31 08:27:55

分布式數(shù)據(jù)庫(kù)架構(gòu)

2023-11-14 08:24:59

性能Scylla系統(tǒng)架構(gòu)

2015-06-16 10:39:43

NoSQL分布式算法

2023-07-28 07:56:45

分布式數(shù)據(jù)庫(kù)SQL

2023-03-26 12:43:31

數(shù)據(jù)庫(kù)KeyValue

2021-12-20 15:44:28

ShardingSph分布式數(shù)據(jù)庫(kù)開源

2013-04-26 16:18:29

大數(shù)據(jù)全球技術(shù)峰會(huì)
點(diǎn)贊
收藏

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

亚洲欧美日韩中文在线| 午夜免费在线观看精品视频| 高清成人av| 日本aⅴ亚洲精品中文乱码| 国产精品久久久久久影视| 在线观看91av| 亚洲成人自拍视频| 91天天综合| 久久成人久久鬼色| 在线看日韩av| 成人黄动漫网站| 亚洲精品激情| 久久视频在线直播| 国产一区二区不卡视频| 免费看成人吃奶视频在线| 久久99久国产精品黄毛片入口| 中文在线а√在线8| 777久久久精品| 日韩免费网站| 欧美精品在线一区二区| 男人和女人做事情在线视频网站免费观看 | 亚洲sss视频在线视频| 国产偷激情在线| 亚洲精品伦理在线| 黄色网战入口| 亚洲一区二区三区国产| 导航福利在线| 一本色道久久综合亚洲aⅴ蜜桃| 男人天堂综合| 欧美一区二区精品在线| 亚洲天堂电影| 久久精品久久久久久| aaa国产精品视频| 奇米四色中文综合久久 | 最近中文字幕2019免费| 电影一区二区三区久久免费观看| 欧美富婆性猛交| 国产成人一二| 国产日韩欧美综合| 亚洲国产专区校园欧美| 国产精品视频免费观看| 影音先锋另类| 亚洲主播在线观看| 在线观看国产麻豆| 亚洲精品视频免费观看| 日韩手机在线观看视频| 丝袜诱惑亚洲看片 | 国产高清在线a视频大全| 一本一道久久a久久精品 | 91在线精品秘密一区二区| 欧美 国产 综合| 国产欧美精品一区| 青青久草在线| 亚洲第一级黄色片| 99精品女人在线观看免费视频| 欧美在线视频一二三| 欧美日韩亚洲一区二区三区在线| 一本色道久久综合亚洲二区三区| aa级大片欧美| 中文在线视频| 亚洲韩国青草视频| 国产成人精品亚洲线观看| 91入口在线观看| 国产盗摄女厕一区二区三区| 99re免费99re在线视频手机版| 欧美综合欧美视频| 精品三区视频| 亚洲伊人第一页| 国产成人精品一区二| 免费观看又污又黄在线观看国产| 亚洲精美色品网站| 欧洲福利电影| 真实国产乱子伦对白视频| 一区二区三区加勒比av| 国产精品一区二区日韩| 国产成人福利网站| 国产精品一区二区免费不卡 | 草久在线视频| 国产视频久久网| 久久93精品国产91久久综合| 亚洲最大的网站| 精品日本高清在线播放| 邻居大乳一区二区三区| 丝袜a∨在线一区二区三区不卡| 日韩精品xxxx| 欧美性三三影院| 91亚洲无吗| 深田咏美在线x99av| 一级做a爱片久久| 亚洲人体视频| 91精品久久久久久久久久久久久久 | 欧美性xxxxx| 日韩国产91| 九色91国产| 亚洲免费大片在线观看| 欧美黑人疯狂性受xxxxx野外| 成人久久久久久| 91在线观看地址| av中文字幕一区| 成av人片在线观看www| 欧美午夜视频在线| 国产精品电影一区二区三区| 黄色的视频在线观看| 成人做爽爽免费视频| 国产亚洲午夜高清国产拍精品 | 亚洲精品va| 青青草精品视频在线| 91.成人天堂一区| 波多野结衣在线观看一区二区| 国产精品无码人妻一区二区在线| 欧美日韩国产片| 国产精品精品| 成人av小说网| 日韩中文字幕免费看| 国产一区二区三区在线观看精品| 日本视频在线| 91成人伦理在线电影| 亚洲午夜视频在线| 免费av一区二区三区四区| 污版视频在线观看| 欧美成人合集magnet| av一本久道久久综合久久鬼色| 自拍在线观看| 亚洲在线色站| 精品国产乱码久久久久久久久| 亚洲国产专区| av网站在线播放| 国产精品一区二区在线观看| 色综合夜色一区| 久久精品一区二区不卡| 羞羞视频在线免费看| 国产中文字幕亚洲| 欧美性猛交xxxx| 欧美三区不卡| 美女羞羞视频在线观看| 精品欧美日韩| 日韩免费一区二区三区在线播放| 亚洲欧美日本日韩| 日本在线视频网址| 成人性做爰片免费视频| 亚洲人a成www在线影院| 成人网在线免费视频| 亚洲精品乱码日韩| 国产亚洲综合视频| 久久色免费在线视频| 国产欧美日韩三级| 亚洲三级性片| 欧美日韩亚洲在线观看| 99视频这里有精品| 99在线欧洲视频| caoporen国产精品| 国产亚洲一级高清| 亚洲午夜精品网| 国产精品一二三在| 欧美日本一区| 国产一区二区三区四区五区| 欧美在线亚洲综合一区| 91欧洲在线视精品在亚洲| 日韩女优人人人人射在线视频| 亚洲一区二区在线免费观看视频| 香蕉久久网站| 国产在线观看91| 国产对白在线播放| 欧美xxxx综合视频| 亚洲国产精品精华液网站| 888久久久| 日韩经典av| 一本大道熟女人妻中文字幕在线 | 可以看av的网站久久看| 校园春色亚洲色图| 人人干人人干人人| 69堂成人精品视频免费| 亚洲激情在线视频| 欧美韩国一区二区| 综合久久婷婷| 超碰在线99| 亚洲人辣妹窥探嘘嘘| 91福利视频导航| 亚洲网站在线观看| 一二三四区精品视频| 日韩在线观看一区二区| 91综合久久爱com| 9i精品一二三区| 国产特级淫片高清视频| 国产美女主播一区| 精品一区二区三区四区| 一区二区三区中文字幕电影| 日韩精品一区第一页| 1313精品午夜理伦电影| 快射视频在线观看| 久久久久久三级| 欧美日韩精品免费在线观看视频| 欧美日本高清视频| 欧美精品99久久久**| 国产欧美一区二区精品忘忧草 | 日韩精品在在线一区二区中文| 丝袜足脚交91精品| 日韩电影在线观看完整版| 69视频在线观看| 免费的黄网站在线观看|