你需要知道的4個資料庫擴展解決方案

来源:https://www.cnblogs.com/wintersun/archive/2022/10/22/16815744.html
-Advertisement-
Play Games

你需要知道的4個資料庫擴展解決方案 你已經用一個直觀的、用戶友好的用戶界面啟動了你的應用程式。但是,如果你的應用程式遇到負載問題,這將使你的終端客戶在使用它時感到沮喪。很有可能問題不在應用程式內部,而是在資料庫。根據一項調查,38%的資料庫專業人員報告說資料庫停機是讓他們夜不能寐的重要問題。停機可能 ...


你需要知道的4個資料庫擴展解決方案

      你已經用一個直觀的、用戶友好的用戶界面啟動了你的應用程式。但是,如果你的應用程式遇到負載問題,這將使你的終端客戶在使用它時感到沮喪。很有可能問題不在應用程式內部,而是在資料庫。根據一項調查,38%的資料庫專業人員報告說資料庫停機是讓他們夜不能寐的重要問題。停機可能是由於任何數量的問題,包括不當的資料庫配置、不良的負載處理、資料庫查詢超時,等等。在這篇文章中,我們將討論你是否需要擴展你的資料庫以及如何解決資料庫的可擴展性問題。讓我們從最明顯的問題開始--為什麼要進行資料庫擴展?

為什麼要擴展你的資料庫?
       你的應用程式的資料庫應該能夠擴展或收縮其計算資源,以配合應用程式的動態需求。例如,你的資料庫應該能夠擴大規模以處理突然激增的流量。另外,當不在狀態時,你的資料庫應該能夠收縮以節省資源。確保良好的資料庫擴展性的最好方法之一是根據你的要求選擇合適的資料庫。對於物理伺服器,資料庫的擴展和收縮可能是一個令人頭痛的問題。雲資料庫解決方案可以做到這一點。

       資料庫的可擴展性是一項資源密集型和挑戰性的任務。因此,在開始項目之前,你需要確保你的產品需要一個可擴展的資料庫。首先,確定你的產品在可預見的未來是否會出現流量激增的情況。如果沒有,你仍然可以用你的舊資料庫來做。

       如果你的企業是一個初創企業,那麼在獲取可擴展資料庫方面投入資源是沒有意義的。你可以在你的應用程式達到臨界質量並期待流量的良好激增時再這樣做。

下麵是一些需要資料庫可擴展性的情況:

你的應用已經過時了,你想遷移到雲系統上

你的應用程式經歷高負荷

你的應用程式需要符合法規的要求

你希望有一個平衡的工作負載,可以為世界各地的用戶提供服務

資料庫擴展解決方案
1. 緩存資料庫查詢
     提高資料庫負載處理能力的最直接的方法之一是緩存資料庫查詢。通常情況下,一個應用程式只有少數幾個查詢構成了大部分的請求。你可以對這些查詢進行緩存,這樣在將來,這些請求就可以從緩存中讀取。這樣就不需要每次都從資料庫中獲取數據了。用戶很快就能得到所需的數據。這樣一來,緩存有助於提高資料庫的性能。

    亞馬遜ElastiCache是一種緩存服務,可以幫助你緩存資料庫。有了Amazon ElastiCache,你可以通過記憶體緩存進行擴展。Amazon ElastiCache支持實時用例。以下是Amazon ElastiCache的理想用例:

游戲排行榜

分析

流媒體

2. 資料庫索引
      擴展資料庫並不總是意味著在現有設置中增加更多的資料庫。有時,通過優化當前的資料庫,你可以在一定程度上進行擴展。這就是資料庫索引發揮作用的地方。使用資料庫索引技術,你正在構建數據,以提高從資料庫表中檢索數據的速度。

3. 數據複製 

image
      數據複製是一種策略,用於製作相同的資料庫副本以創建額外的機器。複製策略有利於解決峰值負載問題。由於數據被覆制,查詢可以分散在多個資料庫中,這反過來會減少單個資料庫的負載。此外,萬一存儲設備發生故障,複製的數據就會派上用場,系統仍然可以全面運作。

4. 分片
     擴展資料庫的主要瓶頸之一是設計不當的資料庫。為了確保你不面臨這個瓶頸,必須從為正確的業務應用選擇正確的資料庫開始。比如:

一家銀行應該選擇關係型DBMS,以確保其結構化數據的ACID(原子性、一致性、隔離性、耐久性)。

一個線上多人游戲可以依靠鍵值無SQL資料庫

image

無論你選擇哪個資料庫,都要確保它有分片功能。分片是指將資料庫的一個大塊分割成較小的數據塊,稱為分片,可以跨多個資料庫存儲。有兩種類型的分片:

水平分片

垂直分片

image

      當你的資料庫查詢返回一個數據行的子集時,水平分片證明是有效的。這些行通常被分組。例如,數據被過濾的查詢是基於短的日期範圍。

當你的資料庫查詢返回數據的列的子集時,垂直分片證明是有效的。例如,如果一些資料庫查詢只要求名字,而另一些只想要城市,那麼垂直分片在這種情況下證明是有效的。

分片有兩個主要優勢:

系統的整體存儲容量與資料庫分片的數量成正比。

如果一個分片離線,你仍然可以依靠分片池來檢索和存儲你的數據。當一個分片離線時,目前只有整體數據集的一部分不可用。因此,它不會對系統的運行產生重大影響。

結論
        資料庫是任何應用程式的一個重要元素。如果你想擴展你的應用程式,你不能不擴展資料庫。幸運的是,由於近年來的技術進步,我們擁有所有需要的工具,使擴展過程無縫和毫不費力。人們可以利用雲服務提供商,如Azure、AWS或谷歌雲來擴展他們的應用程式。然而,在進入可擴展性之前,人們需要考慮某些因素。我希望這篇文章能讓你很好地理解與擴展相關的基本問題以及如何解決它們。


今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟體工程的迷思
企業項目化管理介紹
軟體項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共用
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
Openshift與Kubernetes的區別

如有想瞭解更多軟體設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關註我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。


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

-Advertisement-
Play Games
更多相關文章
  • 一、AFNetworking整體框架是怎樣的 1、UIKit集成模塊 UIKit 2、請求序列化 Serialization 3、響應序列化 Serialization 4、會話 NSURLSession AFURLSessionManager最核心 子類:AFHTTPSessionManager ...
  • redux 實現彈出框案例 實現效果,點擊顯示按鈕出現彈出框,點擊關閉按鈕隱藏彈出框 新建彈出框組件 src/components/Modal.js, 在index.js中引入app組件,在app中去顯示計數器和彈出框組件 function Modal ({ showState, show, hid ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 環境搭建 Vue Web-Extension - A Web-Extension preset for VueJS (vue-web-extension.netlify.app) npm install -g @vue/cli npm i ...
  • 首先看看原生Promise有哪些功能: 支持同步和非同步 一個實例的狀態只能變更一次 支持鏈式調用 如果回調函數返回了新的實例,後續的then的執行權應該交給這個實例 提供快速解決和拒絕的實例 提供批量和優先 實例內部的報錯是可控的 接下來嘗試實現 註釋挺明瞭的,就不過分贅述啦,說下思路: js是同步 ...
  • 在vue3中的$attrs的變化 $listeners已被刪除合併到$attrs中。 $attrs現在包括class和style屬性。 也就是說在vue3中$listeners不存在了。vue2中$listeners是單獨存在的。 在vue3 $attrs包括class和style屬性, vue2中 ...
  • break ,continue,retrun的區別 1:break 在迴圈體內結束整個迴圈過程 for (var i = 1; i <= 5; i++) { if(i == 3){ break; } //只會輸出到2結束迴圈 console.log(i); } 2:continue 結束本次的迴圈, ...
  • 一、同源政策 跨域問題其實就是瀏覽器的同源策略造成的。同源策略限制了從同一個源載入的文檔或腳本如何與另一個源的資源進行交互。這是瀏覽器的一個用於隔離潛在惡意文件的重要的安全機制。同源指的是:協議、埠號、功能變數名稱必須一致。同源策略:protocol(協議)、domain(功能變數名稱)、port(埠)三者必須 ...
  • 題目描述:判斷字元串中重覆次數最多的字元 // 解決思路: // 1.判斷字元重覆的方法 // 創建空數組,利用鍵值對形式對每個字元進行計數 // 用到 採用for迴圈結合if判斷 對象[鍵] 是否有值,無則undefined // arr.charAt(i)取得arr中i索引號下的元素 // 2. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...