關係資料庫集群

来源:https://www.cnblogs.com/lovesong/archive/2018/05/12/9028649.html
-Advertisement-
Play Games

背景 當站點的規模不斷膨脹,這給資料庫帶來巨大的查詢壓力,單單資料庫性能優化已經是不夠的,需對資料庫進行伸縮擴展。有三種方式: 1、資料庫主從 2、數據表分庫(垂直分區) 3、數據分區(水平分區) PS:事實上,很多大規模的站點基本上經歷了從簡單主從複製到垂直分區,再到水平分區的步驟。 資料庫主從 ...


背景

當站點的規模不斷膨脹,這給資料庫帶來巨大的查詢壓力,單單資料庫性能優化已經是不夠的,需對資料庫進行伸縮擴展。有三種方式:

1、資料庫主從

2、數據表分庫(垂直分區)

3、數據分區(水平分區)

PS:事實上,很多大規模的站點基本上經歷了從簡單主從複製到垂直分區,再到水平分區的步驟。

資料庫主從

幾乎所有主流關係資料庫都支持數據複製功能,可將主伺服器數據複製到從伺服器,這個功能可以對資料庫進行簡單擴展。在主從基礎上,採用讀寫分離的方法將應用程式中對資料庫的寫操作指向主伺服器(保證數據一致性),而將讀操作指向從伺服器。

為何有用?

大多數站點的資料庫讀操作要比寫操作更密集,而且查詢條件相對複雜,資料庫能力大部分消耗在查詢上。通過將大量讀操作剝離出來,轉移到更多的從伺服器上實現水平擴展,是非常簡單有效的。 

MySQL為例

MySQL主從配置簡單,只需做兩點:

1、開啟主伺服器上的二進位日誌(log-bin)。

2、在主伺服器和從伺服器上分別進行簡單的配置和授權。

分發讀操作方式:

應用程式本身不擅長分散讀操作到多台從伺服器上,可使用資料庫反向代理來分發。MySQL可使用MySQL Proxy。

數據表分庫(垂直分區)

對於某些寫操作更加頻繁的站點,主從方式的主伺服器還是會成為瓶頸,從伺服器的擴展並沒帶來好的效益。這時可以根據業務分割,將不同業務數據表部署在不同的資料庫集群上,這就是數據表分庫,也叫垂直分區。

制約

這種方式有個制約,跨庫的表不能進行join操作,原本簡單聯合語句就能完成的,分庫後需要一步步查詢信息。但是,分庫後的查詢方式會更加容易保持相對穩定的開銷。

例子,淘寶的用戶和商品信息,將這兩個數據表拆分成兩個資料庫。

數據分區(水平分區)

當數據表分庫後,某一業務資料庫(已經是很精細的業務)還是無法承受寫操作壓力時。這時可以考慮數據分區,將同一數據表中的數據通過特定演算法進行分離,分別保存在不同數據表中,從而可以部署在不同的資料庫伺服器上。

PS:數據分區並不依賴特定的技術,更多是一種邏輯層面劃分。

例子,Facebook的用戶表,可以根據user_id的奇偶性將用戶劃分為兩部分,分別存儲到不同資料庫伺服器上。

參考文獻

1、《構建高性能Web站點》

2、《大型網站技術架構》 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 索引: 開源Spring解決方案--lm.solution 參看代碼 GitHub: rabbitmq.txt 一、Linux (DeepinOS) 環境 二、Windows 環境 三、消息隊列主要概念 蒙 2018-05-12 20:38 周六 ...
  • 問題背景: 當我們使用新的環境的時候,需要很快得熟悉自己環境的配置,這時候我們如果知道一些命令就極為方便了。這樣你就能對自己的環境較為熟悉,進行工作的時候也能隨心所欲了。 如果你使用workstation 版本,如果你使用的是gnome/kde桌面環境,你也可以通過系統設置工具來詳細查看自己的環境的 ...
  • Ubuntu的介紹 Ubuntu是一個以桌面應用為主的開源GNU/Linux操作系統,Ubuntu是基於GNU/Linux,支持x86、amd64(即x64)和ppc架構,由全球化的專業開發團隊(Canonical Ltd)打造的。 專業的Python開發者一般會選擇Ubuntu這款Linux系統作 ...
  • 系統環境:Windows 10 Pro x64 軟體版本:VMware 12 Pro 安裝鏡像:CentOS-7-x86_64-Everything-1804.iso 下載地址:https://www.centos.org/download/ 1.點擊創建新的虛擬機,選擇典型。 2.單擊瀏覽並選擇鏡 ...
  • Linux系統初學-第三課 Linux網路配置 1.動態IP配置 配置文件路徑 /etc/sysconfig/network-scripts/ ls查看網卡eth0,其中HWADDR值得獲取:ifconfig eht0 | grep HWaddr,保存之後,service network resta ...
  • 在處理一次線上問題時,需要遍歷一張玩家信息表,看單個account是否存在多個entity。使用aid_playerid_dict建立aid到playerid的映射,遍歷過程中,發現同一個aid會出現兩(多)次,沒有細看playerid,以為是一個account存在多個entity。 仔細看log, ...
  • 一 、介紹 二 、插入數據INSERT 三 、更新數據UPDATE 四 、刪除數據DELETE 五 、查詢數據SELECT 六 、許可權管理 一、 介紹 MySQL數據操作: DML 在MySQL管理軟體中,可以通過SQL語句中的DML語言來實現數據的操作,包括 本節內容包括: 插入數據更新數據刪除數 ...
  • 一、Oracle下載 官網地址:http://www.oracle.com/technetwork/database/enterprise edition/downloads/index.html 百度網盤:鏈接: https://pan.baidu.com/s/1q2vSPlHk_g1zLSANY ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...