亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

分布式數據庫簡介

2023-10-07 09:20:11
46
0

什么是分布式數據庫

傳統數據庫(例如mysql)一般是單機數據庫,其容量和性能受宿主機本身的性能的限制,在web系統這種數據量性能要求一般的場景下其可以很好的滿足,但是在大數據量大吞吐量的場景(例如:云數據庫這種單實例多租戶)下其力不從心,借用分布式的設計理念產生了分布式數據庫,用多臺物理機承載數據庫實例從而擴展數據庫的能力。

與mysql的區別

mysql通過各種擴展組件也可以實現類似分布式數據庫的能力,但是和云原生的分布式數據庫有很大區別。

一種分布式mysql的實現

1.  接入層

使用nginx這種網關做接入層,實現高可用和負載均衡;

2.  路由轉發層

其實就是一個mysql實例,只不過這個實例里面存儲的是用戶元數據,比如:某個用戶的某個表的某個范圍的行是存儲在哪一個mgr中的,用來做路由轉發;

3.  mgr集群

mysql可以用多個實例組成一個mgr(MySQL Group Replication),比如三個mysql實例組成一個mgr,那么這個mgr中一個主mysql負責讀寫和數據同步,其他從mysql負責數據冗余也可以提供讀服務,多個mgr就組成了一個mgr集群,配合上路由轉發就實現了分布式;

可以看出上面的分布式mysql和主流的分布式存儲設計不大一樣,主要特點就是冗余,其最小單位是一個mysql實例,可以結合下面介紹的分布式數據庫架構對比;

架構

1.  元數據引擎

  1. 管理存儲集群和一些數據庫中的元數據,比如dbschema,租戶信息之類的;和大部分分布式存儲系統類似。
  2. 當數據發生異常時,調度數據遷移;

2.  查詢引擎

所謂查詢引擎主要有兩個功能,

  1. 解析sql語句(或者是dataframe這種查詢)將其轉換成可執行的任務;
  2. 執行這些任務,根據元數據引擎中的信息將任務轉發至對應的存儲節點;

3.  索引引擎

數據庫都有的東西,主要功能就是提高查詢效率,類似與書本的目錄;

4.  存儲引擎

  1. 主流一般都是用lsm-tree算法,比如tikv直接使用rocksdb,cnosdb使用自己實現的lsm-tree引擎
  2. 既然云原生,那么可以使用云服務,比如對象存儲來作為存儲后端,比如OceanDB的ceresdb

架構

  1. 一個分布式數據庫實例只需要一個元數據集群,一般搞三個元數據實例(raft算法);
  2. 可以看出查詢引擎是無狀態的,所以它可以任意水平擴展
  3. 索引引擎是與數據一一對應的,所以索引引擎需要伴隨存儲引擎部署
  4. 存儲引擎也是支持水平擴展的,只是需要在元數據管理集群中注冊;

OLAP

一般來說,分布式數據庫是面向大量數據的存儲計算的(OLAP),與mysql這種OLTP的數據庫還有些不一樣,簡單說來就是,對于mysql這種一般是的場景就是一行的寫入和讀取,但是分布式數據庫更多會面對count,max這種在查詢時附帶函數計算的場景,而且這種計算大多是面向列的計算,所以在設計上,會有一下區別:

mysql:OLTP + 行存;

分布式數據庫:OLAP + 列存

行存與列存:是指數據在底層的組織方式;

0條評論
作者已關閉評論
Mr. 油
92文章數
0粉絲數
Mr. 油
92 文章 | 0 粉絲
原創

分布式數據庫簡介

2023-10-07 09:20:11
46
0

什么是分布式數據庫

傳統數據庫(例如mysql)一般是單機數據庫,其容量和性能受宿主機本身的性能的限制,在web系統這種數據量性能要求一般的場景下其可以很好的滿足,但是在大數據量大吞吐量的場景(例如:云數據庫這種單實例多租戶)下其力不從心,借用分布式的設計理念產生了分布式數據庫,用多臺物理機承載數據庫實例從而擴展數據庫的能力。

與mysql的區別

mysql通過各種擴展組件也可以實現類似分布式數據庫的能力,但是和云原生的分布式數據庫有很大區別。

一種分布式mysql的實現

1.  接入層

使用nginx這種網關做接入層,實現高可用和負載均衡;

2.  路由轉發層

其實就是一個mysql實例,只不過這個實例里面存儲的是用戶元數據,比如:某個用戶的某個表的某個范圍的行是存儲在哪一個mgr中的,用來做路由轉發;

3.  mgr集群

mysql可以用多個實例組成一個mgr(MySQL Group Replication),比如三個mysql實例組成一個mgr,那么這個mgr中一個主mysql負責讀寫和數據同步,其他從mysql負責數據冗余也可以提供讀服務,多個mgr就組成了一個mgr集群,配合上路由轉發就實現了分布式;

可以看出上面的分布式mysql和主流的分布式存儲設計不大一樣,主要特點就是冗余,其最小單位是一個mysql實例,可以結合下面介紹的分布式數據庫架構對比;

架構

1.  元數據引擎

  1. 管理存儲集群和一些數據庫中的元數據,比如dbschema,租戶信息之類的;和大部分分布式存儲系統類似。
  2. 當數據發生異常時,調度數據遷移;

2.  查詢引擎

所謂查詢引擎主要有兩個功能,

  1. 解析sql語句(或者是dataframe這種查詢)將其轉換成可執行的任務;
  2. 執行這些任務,根據元數據引擎中的信息將任務轉發至對應的存儲節點;

3.  索引引擎

數據庫都有的東西,主要功能就是提高查詢效率,類似與書本的目錄;

4.  存儲引擎

  1. 主流一般都是用lsm-tree算法,比如tikv直接使用rocksdb,cnosdb使用自己實現的lsm-tree引擎
  2. 既然云原生,那么可以使用云服務,比如對象存儲來作為存儲后端,比如OceanDB的ceresdb

架構

  1. 一個分布式數據庫實例只需要一個元數據集群,一般搞三個元數據實例(raft算法);
  2. 可以看出查詢引擎是無狀態的,所以它可以任意水平擴展
  3. 索引引擎是與數據一一對應的,所以索引引擎需要伴隨存儲引擎部署
  4. 存儲引擎也是支持水平擴展的,只是需要在元數據管理集群中注冊;

OLAP

一般來說,分布式數據庫是面向大量數據的存儲計算的(OLAP),與mysql這種OLTP的數據庫還有些不一樣,簡單說來就是,對于mysql這種一般是的場景就是一行的寫入和讀取,但是分布式數據庫更多會面對count,max這種在查詢時附帶函數計算的場景,而且這種計算大多是面向列的計算,所以在設計上,會有一下區別:

mysql:OLTP + 行存;

分布式數據庫:OLAP + 列存

行存與列存:是指數據在底層的組織方式;

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0