Mysql

伏地魔項目網站中的 MySQL 聲明

  • August 10, 2017

我剛剛進入 Project Voldemort(一個 NoSQL 鍵值數據儲存)站點,看到了一些有趣的東西:

“與 MySQL 複製不同,讀寫都是水平擴展的”

好吧,這句話似乎試圖將 Valdemort 與 MySQL 傳統 RDBMS 進行比較。然而,MySQL Cluster 也是 MySQL 解決方案系列的一部分。它可以水平擴展寫入和讀取。

  • 這個說法是不是對 MySQL 有點不公平?
  • MySQL Cluster 可以很好地擴展嗎?

AFAIK MySQL Cluster 具有擴展能力,但這實際上是一個手動過程。事實上,進行這種擴展需要更多的規劃和更多的硬體。原因如下:

MySQL 集群

根據“使用 MySQL 集群擴展 Web 數據庫的指南”(2011 年 10 月的白皮書),第 5 頁第 4,5 段的子標題“自動分片”下:

MySQL 集群實現為主動/主動、多主數據庫,確保任何應用程序或 SQL 節點所做的更新立即可供訪問集群的所有其他節點使用。

表在低成本商品數據節點池中自動分片,使數據庫能夠水平擴展以服務於讀取和寫入密集型工作負載,既可以從 SQL 訪問,也可以直接通過 NoSQL API 訪問。最多支持 255 個節點,其中 48 個可以是數據節點…… MySQL Cluster 在聚合和每個節點的性能方面都表現出色,無需配置和管理使用率低下的硬體機架。

縮放可以是自動的,但在 MySQL 集群架構的範圍內。

MongoDB

MongoDB 可以通過在分片前執行一個名為 mongos 的路由程序來自動分片。路由器知道數據的位置,因此應用程序可以連接到它並正常發出請求。儲存數據和通信請求的伺服器數量沒有明顯限制。

結論

只需將 MySQL Cluster 與 MongoDB 進行比較,您就會發現兩者都可以使用自動分片。主要區別在於您被限制為 48 個數據節點,即使最多可以為 MySQL Cluster 基礎架構配置 255 個伺服器(其餘 207 個最大節點組成 SQL 節點

$$ providing mysqld process and other APIs $$和管理節點$$ providing ndb_mgmd process $$)。MongoDB 沒有這樣的架構限制。MySQL Cluster 在設計上可能會用盡肘部空間。 說“讀寫水平擴展”將很快適用於內部執行此操作的產品。使用 MySQL 複製,此語句成立。為什麼?MySQL 複製是非同步的(即使 MySQL 5.5 也是半同步的,充其量也是如此),而 MySQL Cluster 和 MongoDB(以及其他 NoSQL 數據庫)在 ACID 兼容的支持下是同步的。

披露:我是 MySQL Cluster 產品團隊的一員

255 個節點限制適用於單個集群。您可以有多個支持您的應用程序,並在它們之間進行複制。

考慮每個節點的性能也很重要——在最近的測試中,MySQL Cluster 在 8 個物理 Intel 伺服器上實現了 6.8m QPS,配置有 2 個套接字和 24GB 的 RAM(即低成本,商品): http://mysql。 com/why-mysql/benchmarks/mysql-cluster/

MySQL 集群中的分片是自動的——它發生在數據庫層,預設情況下基於散列主鍵。與使用基於範圍的分區的替代自動分片機制相比,這往往會提供更好的分片分佈

這裡有一個不錯的答案,將應用程序與數據庫級分片進行比較,以及後者的好處: MySQL Sharding vs MySQL Cluster

引用自:https://dba.stackexchange.com/questions/8883