成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

帶你遨游銀河系的 10 種分布式數據庫

運維 數據庫運維 分布式
關系型數據庫指的是使用關系模型(二維表格模型)來組織數據的數據庫,由二維表及其之間的聯系所組成的一個數據組織。

[[404296]]

大家好,我是悟空。

上一篇講到了 MySQL 和 NoSQL 的區別和優缺點:

《有了 MySQL,為什么要用 NoSQL》

這次我們來聊下分布式場景下的數據庫。

首先我們還是來看下關系型和非關系型的數據庫的區別和特點。

一、關系型 vs 非關系型

1.1 關系型

1.1.1 什么是關系型?

關系型數據庫指的是使用關系模型(二維表格模型)來組織數據的數據庫,由二維表及其之間的聯系所組成的一個數據組織。

1.1.2 常見關系型數據庫

常見關系型數據庫管理系統(ORDBMS):Oracle、MySql、Microsoft SQL Server、SQLite、PostgreSQ、IBM DB2。

1.1.3 關系型的優勢

  • 采用二維表結構非常貼近正常開發邏輯。
  • 支持通用的SQL(結構化查詢語言)語句。
  • 豐富的完整性大大減少了數據冗余和數據不一致的問題。
  • 可以用SQL句子多個表之間做非常繁雜的查詢;
  • 關系型數據庫提供對事務的支持。

1.1.4 關系型的不足之處

(1)存儲的是行記錄。

不能存儲數組、嵌套字段等格式的數據。

(2)擴展表結構不方便。

操作不存在的列會報錯,而增加列又需要執行 SQL 語句才行。而且修改時需要特別注意,因為更新表時會長時間鎖表,這對線上環境可能造成嚴重影響。

(3)占用內存高。

關系型數據庫在對大量數據的表進行統計之類的運算時,占用內存會很高,因為它即使只針對某一列進行運算,也會將整行數據從存儲設備讀入內存。

(4)全文搜索性能差

類似于 MySQL 的關系型數據庫,只能用 like 進行整表掃描的匹配,效率很低?,F如今,有很多場景需要支持模糊匹配,而且必須支持高效查找。比如查詢包含關鍵字的日志信息,又或者是根據某個商品關鍵字查詢商品列表。

1.2 非關系型

1.2.1 什么是非關系型?

NoSQL

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。

非關系型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等。

1.2.2 常見非關系型數據庫

  • 鍵值數據庫:Redis、Memcached、Riak。
  • 列式數據庫:Bigtable、HBase、Cassandra。
  • 文檔數據庫:MongoDB、CouchDB、MarkLogic。
  • 圖形數據庫:Neo4j、InfoGrid。

1.2.3 非關系型的優勢

  • 格式靈活:存儲數據的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關系型數據庫則只支持基礎類型。
  • 速度快:NoSQL 可以使用硬盤或者內存來存儲,而關系型數據庫只能使用硬盤;
  • 高擴展性;
  • 成本低:nosql數據庫部署簡單,基本都是開源軟件。

1.2.4 非關系型的不足之處

  • 不提供sql支持,學習和使用成本較高;
  • 無事務處理。MongoDB 4.0 已支持事務。
  • 數據結構相對復雜,復雜查詢方面稍欠。

二、分布式數據庫

2.1 分布式數據庫的定義

分布式數據庫其實沒有一個官方的定義,只是我們技術人員提出的一個約定俗成的說法。

在數據庫領域,當產品不斷演進逐漸被大家認識和認可后,就會成了一個標準,比如說微軟的 SQL Server 數據庫,其他數據庫都喜歡拿它作為對比,那 SQL Server 數據庫就會成為一個標準。

但是分布式數據庫也是最近幾年才被大家提出,還是比較新的,也沒有參照。不過我們可以通過這些大廠大牛們總結的經驗來認識分布式數據庫。

分布式數據庫就是用分布式架構實現的數據庫。

2.2 分布式數據庫的優勢

分布式一直是我研究的一個話題,現在很多流行的技術都用上了分布式架構,比如微服務、消息隊列。

那為什么我們要用分布式架構呢?簡單來說,就是用多機(機器)來橫向擴展單機的性能,另外一個很重要的原因就是分布式的可靠性,比如多機備份、容災等。

那數據庫是不是也需要提升性能和保證可靠性呢?答案是肯定的。

哪些大廠在用分布式數據庫?

每年雙 11,阿里就喜歡 show 一波交易戰績,其分布式數據庫 OceanBase 功不可沒。頭部大廠如騰訊、字節跳動、美團也開始使用分布式數據庫,還有各大銀行也上線了分布式數據庫。

所以說分布式數據庫是一種趨勢,如果業務場景要求高性能和高可靠,就可以考慮使用分布式架構下的數據庫了。

2.3 分布式數據庫的特點

首先我們來看下數據庫按照交易類型區分的兩大場景:

  • 聯機交易(OLTP)

OLTP 是面向交易的處理過程,單筆交易的數據量小,但是要在很短的時間內給出結果,典型場景包括購物、繳費、轉賬等;

  • 聯機分析(OLAP)

OLAP 場景通常是基于大數據集的運算,典型場景包括生成個人年度賬單和企業財務報表等。

OLTP 的特點是寫多讀少、低延時、高并發,那么數據庫+分布式在 OLTP 場景下會具有哪些特點呢?

特點:

  • 在寫多讀少的場景很強大。
  • 低延時的響應。
  • 支持高并發。
  • 支持海量存儲。
  • 高可靠性。

三、10 種分布式數據庫

3.1 PingCAP 的 TiDB

開源 + 良好的社區運營,擁有超高人氣。

定義:是一款同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式數據庫產品,具備水平擴容或者縮容、金融級高可用、實時 HTAP、云原生的分布式數據庫、兼容 MySQL 5.7 協議和 MySQL 生態等重要特性。目標是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數據規模較大等各種應用場景。

TiDB 架構圖

TIDB 采用分層架構,有三種角色:

  • TIDB:作為 SQL 引擎。
  • TiKV:作為底層分布式鍵值存儲。
  • PD:承擔元數據管理和全局時鐘的職責。

TiDB 的衍生項目:

  • Ti-Binlog、Ti-CDC 支持數據導出。
  • Ti-Operator 更方便地實現容器云部署。
  • Chaos Mesh 支持混沌工程。

缺點:不支持全球化部署,這為跨地域大規模集群應用 TiDB 設置了障礙。

3.2 Google 的 Spanner

Spanner是谷歌公司研發的、可擴展的、多版本、全球分布式、同步復制數據庫。它支持外部一致性的分布式事務。

Spanner 架構,來自 Google 論文

F1 主要作為 SQL 引擎

Spanner 主要負責事務一致性、復制機制、可擴展存儲等。

Spanner 架構中的核心處理模塊是 Spanserver,

Spanner 的架構,來自 Google 論文

Spanserver 的核心工作有三部分:

基于 Paxos 協議的數據復制。Paxos 協議可以看我之前寫的一篇文章:《用三國殺講分布式算法,舒適了吧?

基于 Tablet 的分片管理。

基于 2PC 的事務一致性管理。2PC 協議可以看我之前寫的一篇文章:《用太極拳講分布式理論,真舒服!

2017 年,F1 和 Spanner 被拆分了,不再是綁定關系。原理如如下:

來自 Google 論文

3.3 CockroachDB 蟑螂數據庫

CockroachDB (蟑螂數據庫)是一個可伸縮的、支持地理位置處理、支持事務處理的數據存儲系統。

為什么叫做蟑螂?

因為這個數據庫只要損壞的節點不超過總數一半,那么集群仍然可以正常工作,生命力超強。

通過分布式一致性算法實例來調節確保一致性,它所選擇使用Raft一致性算法。所有的一致性狀態存在于RocksDB中。

Cockroach 是一個分布式的 SQL 數據庫。首要設計目標就是 可擴展性,強一致性,可存活性,就像它的名字一樣。Cockroach 的目標是在無人工干預的情況下,以極小的中斷時間容忍磁盤,主機,機架甚至 數據中心災難 。Cockroach 的節點是對等的,其中一個設計目標是以最少配置加無依賴,部署去中心化的對等節點。中文社區地址:cockroachdb-cn。

CockroachDB 提供兩種不同的的事務特性,包括快照隔離(snapshot isolation,簡稱SI)和順序的快照隔離(SSI)語義,后者是默認的隔離級別。

CockroachDB 是一個分布式的K/V數據倉庫,支持ACID事務,多版本值存儲是其首要特性。主要的設計目標是全球一致性和可靠性,從蟑螂的命名上是就能看出這點。蟑螂數據庫能處理磁盤、物理機器、機架甚至數據中心失效情況下最小延遲的服務中斷;整個失效過程無需人工干預。蟑螂的節點是均衡的,其設計目標是同質部署(只有一個二進制包)且最小配置。

CockroachDB 和 TiDB、YugabyteDB 都公開聲稱設計靈感來自 Spanner,所以往往會被認為是同構的產品。CockroachDB 和 TiDB,經常會被大家拿來比較。

區別:

  • CockroachDB 采用了標準的 P2P 架構,只要損壞的節點不超過總數一半,那么集群仍然可以正常工作。
  • CockroachDB 支持全球化部署,因為它采用了混合邏輯時鐘(HLC),所以能夠在全球物理范圍下做到數據一致性。
  • 分片管理機制的不同。

3.4 YugabyteDB

在架構上和 CockroachDB 有很多相似之處,比如支持全球化部署,采用混合邏輯時鐘(HLC),基于 Percolator 的事務模型,兼容 PostgreSQL 協議。

由于高度的相似性,YugabyteDB 與 CockroachDB 的競爭表現得非常激烈。

Yugabyte 采用兩層架構:查詢層和存儲層。不過這個架構僅僅是邏輯上的,部署結構中,這兩層都位于 TServer 進程中。這一點和 TiDB 不同。

Yugabyte 的查詢層支持同時 SQL 和 CQL 兩種 API,其中 CQL 是兼容 Cassandra 的一種方言語法,對應于文檔數據庫的存儲模型;而 SQL API 是直接基于 PostgresQL 魔改的,能比較好地兼容 PG 語法,

Yugabyte 的存儲層才是重頭戲。其中 TServer 負責存儲 tablet,每個 tablet 對應一個 Raft Group,分布在三個不同的節點上,以此保證高可用性。Master 負責元數據管理,除了 tablet 的位置信息,還包括表結構等信息。Master 本身也依靠 Raft 實現高可用。

YugabyteDB 架構

3.5 阿里OceanBase

OceanBase是由螞蟻集團完全自主研發的金融級分布式關系數據庫,始創于2010年。OceanBase具有數據強一致、高可用、高性能、在線擴展、高度兼容SQL標準和主流關系數據庫、低成本等特點。

3.6 騰訊的 TDSQL

TDSQL 的節點都是用的 MySQL。它是采用分布式集群架構(如下圖),這種集群架構具有較高的靈活性,簡化了各個 節點之間的通信機制,也簡化了對于硬件的需求。這不僅意味著 TDSQL 的關系型實例、分 布式實例、分析性實例可以混合部署在同一集群中,也意味著即使是簡單的 x86 服務器,也 可以搭建出類似于小型機、共享存儲等一樣穩定可靠的數據庫。

TDSL 架構

3.7 中興通訊的 GoldenDB

GoldenDB 幾乎是國內銀行業應用規模最大的分布式數據庫,和 TDSQL 同樣在數據節點上選擇了 MySQL,但全局時鐘節點的增加使它稱為一個標準的 PGXC 架構。

3.8 騰訊的 TBase

TBase 是騰訊數據平臺團隊在開源的 PostgreSQL 基礎上研發的企業級分布式 HTAP 數據庫管理系統:

  • 具備高性能可擴展的分布式事務能力,支持 RC 和 RR 兩種隔離級別;
  • 通過安全、管理、審計三權分立體系,提供全方位的數據安全保證機制;
  • 支持高性能分區表,可使得數據檢索效率成倍提升;
  • SQL 方面兼容 2003 標準、PostgreSQL 語法和常用 Oracle 函數&數據類型、窗口函數等;
  • 提供大小商戶數據分離、冷熱數據分離等高效的數據治理能力

集群中有三種節點類型,各自承擔不同的功能,通過網絡連接成為一個系統。這三種節點類型分別是:

  • **Coordinator:**協調節點,對外提供接口,負責數據的分發和查詢規劃,多個節點位置對等,每個節點都提供相同的數據庫視圖,CN 存儲系統的全局元數據。
  • **Datanode:**處理存儲本節點相關的元數據,每個節點還存儲數據的一個分片。在功能上,DN 節點負責完成執行協調節點分發的執行請求。
  • GTM: 全局事務管理器(Global transaction manager.),負責管理集群事務信息,同時管理集群的全局對象,比如序列,除此之外 GTM 上不提供其他的功能。

3.9 VoltDB

VoltDB 官網提供的簡介:VoltDB是全球最快的內存型數據庫,它繼承了傳統關系數據庫的強一致性要求,又提供了互聯網云上部署的能力和分布式 數據庫的橫向擴展能力。VoltDB通過將數據庫全部保存在內存中的方法,消除了大量的數據和日志的磁盤存取操作,通過單線程的方式,消除了磁盤鎖和記錄鎖;通過數據庫分片技術,讓數據庫支持高并發請求;通過分布式集群支持數據庫橫向擴展。其查詢速度達到傳統數據庫的100倍以上。

2019 年正式閉源,變為純商業化產品。而同時,VoltDB 在國內也沒有建立完備的服務支持體系,這在很大程度上影響到它的推廣。

3.10 巨杉 SequoiaDB

SequoiaDB 巨杉數據庫是一款開源的金融級分布式關系型數據庫,主要面對高并發聯機交易型場景提供高性能、可靠穩定以及無限水平擴展的數據庫服務。

邏輯架構

用戶可以在 SequoiaDB 巨杉數據庫中創建多種類型的數據庫實例,以滿足上層不同應用程序各自的需求。

SequoiaDB 巨杉數據庫支持 MySQL、PostgreSQL、SparkSQL 和 MariaDB 四種關系型數據庫實例、類 MongoDB 的 JSON 文檔類數據庫實例、以及 S3 對象存儲與 POSIX 文件系統的非結構化數據實例。

支持七種不同的實例類型

SequoiaDB 巨杉數據庫存儲引擎采用分布式架構。集群中的每個節點為一個獨立進程,節點之間采用 TCP/IP 協議進行通訊。

同一個操作系統可以部署多個節點,節點之間采用不同的端口進行區分。

數據庫存儲引擎邏輯架構

好了,對于分布式數據庫,如果你也有分布式數據庫的使用經驗,歡迎留言~

參考資料:

https://docs.pingcap.com/zh/tidb/stable

http://vldb.org/pvldb/vol11/p1835-samwel.pdf

http://ericfu.me/yugabyte-db-introduction/

https://blog.csdn.net/duan_zhihua/article/details/88549173

https://www.voltdb.com/

https://www.zhihu.com/question/24225007/answer/1707736658

https://www.zhihu.com/question/24225007/answer/1326259742

 

https://time.geekbang.org/column/article/296558

本文轉載自微信公眾號「悟空聊架構」,可以通過以下二維碼關注。轉載本文請聯系悟空聊架構公眾號。 

 

責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2022-06-10 09:00:00

數據庫分布式數據庫集群

2021-12-20 15:44:28

ShardingSph分布式數據庫開源

2023-12-05 07:30:40

KlustronBa數據庫

2023-07-31 08:27:55

分布式數據庫架構

2023-07-28 07:56:45

分布式數據庫SQL

2023-11-14 08:24:59

性能Scylla系統架構

2022-06-09 10:19:10

分布式數據庫

2022-03-10 06:36:59

分布式數據庫排序

2011-05-19 09:18:48

分布式數據庫

2020-06-23 09:35:13

分布式數據庫網絡

2022-08-01 18:33:45

關系型數據庫大數據

2024-09-09 09:19:57

2023-03-07 09:49:04

分布式數據庫

2010-06-29 16:19:03

SQL Server

2024-03-11 08:57:02

國產數據庫證券

2022-12-14 08:00:00

數據庫分布式數據庫隔離

2023-12-11 09:11:14

TDSQL技術架構

2024-03-15 07:33:02

分布式數據庫索引數據結構

2021-12-14 10:16:00

鴻蒙HarmonyOS應用

2023-04-26 06:56:31

分布式數據庫偽需求
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 丁香婷婷成人 | 国产一级视频在线 | 欧美天堂一区 | 日韩在线观看一区 | 国产日韩精品一区 | 午夜在线| 国产精品久久国产精品 | 日韩免费中文字幕 | 91精品国产综合久久精品 | 欧美亚洲另类丝袜综合网动图 | v亚洲 | 黄色毛片在线观看 | 九九热在线免费观看 | 国产乱码精品一区二区三区忘忧草 | 亚洲精品视 | 国产一级在线观看 | 一本久久a久久精品亚洲 | 国产日韩视频在线 | 国产精品观看 | 九色在线 | 五月免费视频 | 色婷婷亚洲一区二区三区 | 在线观看亚洲 | 中文字幕av一区二区三区 | 91新视频| 久久亚洲国产精品 | 欧美电影免费观看高清 | 欧美国产日韩一区二区三区 | 色婷婷九月 | 日韩中文字幕在线不卡 | 久草精品视频 | 中文字幕高清av | 国产日韩精品一区 | 欧美区在线 | 午夜小电影 | 久久久久免费观看 | 99精品视频网 | 老司机午夜性大片 | 久久精品影视 | 艹逼网 | 国产免费一区二区三区 |