你需要知道的4個資料庫擴展解決方案 你已經用一個直觀的、用戶友好的用戶界面啟動了你的應用程式。但是,如果你的應用程式遇到負載問題,這將使你的終端客戶在使用它時感到沮喪。很有可能問題不在應用程式內部,而是在資料庫。根據一項調查,38%的資料庫專業人員報告說資料庫停機是讓他們夜不能寐的重要問題。停機可能 ...
你需要知道的4個資料庫擴展解決方案
你已經用一個直觀的、用戶友好的用戶界面啟動了你的應用程式。但是,如果你的應用程式遇到負載問題,這將使你的終端客戶在使用它時感到沮喪。很有可能問題不在應用程式內部,而是在資料庫。根據一項調查,38%的資料庫專業人員報告說資料庫停機是讓他們夜不能寐的重要問題。停機可能是由於任何數量的問題,包括不當的資料庫配置、不良的負載處理、資料庫查詢超時,等等。在這篇文章中,我們將討論你是否需要擴展你的資料庫以及如何解決資料庫的可擴展性問題。讓我們從最明顯的問題開始--為什麼要進行資料庫擴展?
為什麼要擴展你的資料庫?
你的應用程式的資料庫應該能夠擴展或收縮其計算資源,以配合應用程式的動態需求。例如,你的資料庫應該能夠擴大規模以處理突然激增的流量。另外,當不在狀態時,你的資料庫應該能夠收縮以節省資源。確保良好的資料庫擴展性的最好方法之一是根據你的要求選擇合適的資料庫。對於物理伺服器,資料庫的擴展和收縮可能是一個令人頭痛的問題。雲資料庫解決方案可以做到這一點。
資料庫的可擴展性是一項資源密集型和挑戰性的任務。因此,在開始項目之前,你需要確保你的產品需要一個可擴展的資料庫。首先,確定你的產品在可預見的未來是否會出現流量激增的情況。如果沒有,你仍然可以用你的舊資料庫來做。
如果你的企業是一個初創企業,那麼在獲取可擴展資料庫方面投入資源是沒有意義的。你可以在你的應用程式達到臨界質量並期待流量的良好激增時再這樣做。
下麵是一些需要資料庫可擴展性的情況:
你的應用已經過時了,你想遷移到雲系統上
你的應用程式經歷高負荷
你的應用程式需要符合法規的要求
你希望有一個平衡的工作負載,可以為世界各地的用戶提供服務
資料庫擴展解決方案
1. 緩存資料庫查詢
提高資料庫負載處理能力的最直接的方法之一是緩存資料庫查詢。通常情況下,一個應用程式只有少數幾個查詢構成了大部分的請求。你可以對這些查詢進行緩存,這樣在將來,這些請求就可以從緩存中讀取。這樣就不需要每次都從資料庫中獲取數據了。用戶很快就能得到所需的數據。這樣一來,緩存有助於提高資料庫的性能。
亞馬遜ElastiCache是一種緩存服務,可以幫助你緩存資料庫。有了Amazon ElastiCache,你可以通過記憶體緩存進行擴展。Amazon ElastiCache支持實時用例。以下是Amazon ElastiCache的理想用例:
游戲排行榜
分析
流媒體
2. 資料庫索引
擴展資料庫並不總是意味著在現有設置中增加更多的資料庫。有時,通過優化當前的資料庫,你可以在一定程度上進行擴展。這就是資料庫索引發揮作用的地方。使用資料庫索引技術,你正在構建數據,以提高從資料庫表中檢索數據的速度。
3. 數據複製
數據複製是一種策略,用於製作相同的資料庫副本以創建額外的機器。複製策略有利於解決峰值負載問題。由於數據被覆制,查詢可以分散在多個資料庫中,這反過來會減少單個資料庫的負載。此外,萬一存儲設備發生故障,複製的數據就會派上用場,系統仍然可以全面運作。
4. 分片
擴展資料庫的主要瓶頸之一是設計不當的資料庫。為了確保你不面臨這個瓶頸,必須從為正確的業務應用選擇正確的資料庫開始。比如:
一家銀行應該選擇關係型DBMS,以確保其結構化數據的ACID(原子性、一致性、隔離性、耐久性)。
一個線上多人游戲可以依靠鍵值無SQL資料庫
無論你選擇哪個資料庫,都要確保它有分片功能。分片是指將資料庫的一個大塊分割成較小的數據塊,稱為分片,可以跨多個資料庫存儲。有兩種類型的分片:
水平分片
垂直分片
當你的資料庫查詢返回一個數據行的子集時,水平分片證明是有效的。這些行通常被分組。例如,數據被過濾的查詢是基於短的日期範圍。
當你的資料庫查詢返回數據的列的子集時,垂直分片證明是有效的。例如,如果一些資料庫查詢只要求名字,而另一些只想要城市,那麼垂直分片在這種情況下證明是有效的。
分片有兩個主要優勢:
系統的整體存儲容量與資料庫分片的數量成正比。
如果一個分片離線,你仍然可以依靠分片池來檢索和存儲你的數據。當一個分片離線時,目前只有整體數據集的一部分不可用。因此,它不會對系統的運行產生重大影響。
結論
資料庫是任何應用程式的一個重要元素。如果你想擴展你的應用程式,你不能不擴展資料庫。幸運的是,由於近年來的技術進步,我們擁有所有需要的工具,使擴展過程無縫和毫不費力。人們可以利用雲服務提供商,如Azure、AWS或谷歌雲來擴展他們的應用程式。然而,在進入可擴展性之前,人們需要考慮某些因素。我希望這篇文章能讓你很好地理解與擴展相關的基本問題以及如何解決它們。
今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟體工程的迷思
企業項目化管理介紹
軟體項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共用
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
Openshift與Kubernetes的區別
如有想瞭解更多軟體設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關註我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog。