你應該使用哪個雲資料庫?

陶然陶然發表於2022-03-03

  雲端計算的基本原則是採用一次性和可更換的多臺機器,這對採用雲端計算技術以及在雲中實施的資料庫系統的功能有直接影響。

  傳統資料庫大致可以分為並行優先(例如MongoDB或Teradata)或單儲存系統優先(例如PostgreSQL或MySQL)。這兩個類別都有其核心設計固有的侷限性。這些限制的程度部分是成熟度的函式。但是,對於某些核心架構決策來說,可能無法有效支援特定功能。

  例如,Greenplum有序列,但Redshift沒有,儘管這兩者都是PostgreSQL的衍生物。而BigQuery沒有序列,但Teradata有序列,儘管在傳統意義上它們並不是真正的序列。

  雲資料庫屬於相同的類別,而新系統明顯傾向於並行優先。雲端計算系統的基本屬性是機器的可擴充套件性和可替換性的並行性。

  在單系統優先類別中,雲端計算例項化往往側重於傳統單機產品的管理成本、升級和可靠性(RPO/RTO),例如Heroku PostgreSQL、Amazon Aurora(PostgreSQL/MySQL)、Google cloud SQL(PostgreSQL/MySQL)和Azure SQL(SQL Server)。

  在並行優先類別中,實際上有兩個子類別:SQL/關係類別(BigQuery、Snowflake、Redshift、Spark、AzureSynapse)和DHT/NoSQL(BigTable、Dynamo、Cassandra、Redis)類別。這種區別與是否存在類似SQL的語言關係不大,而與系統中資料的物理佈局是否經過調整以便通過雜湊快速查詢鍵進行單行訪問,或者使用排序合併和篩選操作進行批量訪問有關。

  並行優先關聯式資料庫通常依賴於一個或多個原生雲端儲存系統。這些儲存系統總是並行優先構建,並公開一個非常有限的get-object/put-object API,它通常允許對資料進行分割槽,但不允許高效能隨機訪問。這限制了資料庫實現高階持久資料結構(例如索引),在許多情況下,還限制了可變資料的能力。

  因此,使用原生儲存的雲端計算實現往往依賴於微分割槽的順序讀寫而不是索引。根據物件名稱,儲存級物件往往只有一條物理訪問路徑。索引必須在底層儲存的外部實現,即使這樣做了,底層雲端儲存API也可能使在儲存級別物件中實際使用地址或位元組偏移量變得困難。

   雲端計算的優點

   ·雲平臺是為使用者管理的基礎設施。在雲中,部署、可靠性和管理是使用者關注的問題。從電源、軟體安裝和硬體到作業系統管理和安全(從加固到入侵檢測)的堆疊的所有層都由雲端計算供應商管理。

  雲端計算供應商免費試用產品的便利性可以幫助使用者啟動並執行初始實驗,然後在需要時擴充套件到大規模,這在傳統的內部部署系統中是困難的。

  另一個好處是雲端計算供應商提供了許多標準化流程來與第三方SaaS產品整合。其結果是雲端計算供應商讓基礎設施成為別人的問題,因此使用者可以專注於其核心業務。

   ·效率。雲端計算可以最大化資源利用率。與非雲系統相比,雲端計算系統向資料庫應用程式公開資源利用控制要常見得多。雲端計算技術可以平滑負載,將其移動到低需求的時間段,並且可以優先考慮互動式和關鍵業務作業。

  當然,雲端計算供應商可以利用大規模採購的效率、負載共享和極高的利用率。僅這些規模引數就可以成為遷移到雲平臺的理由。更不用說使用供應商的專業知識進行強化和入侵檢測的好處了。

  與規模密切相關的是雲端計算供應商能夠以低廉的價格提供被動儲存,這使得無論是出於實驗或分析原因,還是出於備份或審計,更容易保留更長的歷史資料視窗,並且更加經濟高效地實施時間旅行等功能,可以從歷史角度檢查資料。

  當然,繁重的資料處理負載可以通過使用雲端計算供應商的規模臨時向外擴充套件來解決,當然使用者會為此付出代價。

   ·經濟性。除了規模和效率的經濟性之外,雲端計算供應商的會計機制傾向於將儲存和處理的成本資料暴露到單個查詢級別。這允許使用者對任何給定分析的成本收益做出合理的商業決策,並相應地做出優化決策。事實上,有時使用者可能會決定通過擴充套件雲端計算規模來擴大和簡化分析的結構,而不是花費時間和精力來塑造一個“穩健的分析”,這可能更便宜、更準確。

   雲端計算的弱點

   ·雲平臺是為使用者管理的基礎設施。雲端計算具有一組與大型機截然不同的故障域。雲平臺上的分散式計算是共享的基礎設施(計算、儲存、網路),這可能會受到更多的干擾,其中任何一個故障都可能導致互動性失敗或暫時性工作失敗。在極少數情況下,即使是雲端計算供應商的自動化管理也會通過更改系統的屬性或行為對客戶體驗產生負面影響。

   ·效率。與傳統的內部部署系統相比,大多數雲端計算資料庫仍然不成熟。雲資料庫缺乏更成熟產品的特性。有些功能可能永遠不會被引入,因為完全分散式、易發生故障的平臺的概念使它們不切實際。

  許多基於雲的並行關係系統對於特定的資料庫變異(INSERT、UPDATE、DELETE)操作的效率顯著降低,這在某些用例中可能會導致問題。

  當然,雲端計算與內部部署系統或託管在其他雲平臺中的系統之間的額外延遲往往會迫使雲端計算基礎設施整合。使用者往往被迫首先選擇地理位置和雲端計算供應商,然後實際上僅限於其雲端計算供應商提供的服務。

   ·經濟性。雲端計算的成本遵循與內部部署截然不同的曲線:擴充套件容量非常容易。控制成本變得更加困難。另一方面,如果成本有上限的話,則在達到成本上限後提交的互動式作業可能會被拒絕。這增加了一層複雜性,傳統資料庫管理員需要學習這些知識才能建立成功的部署。

  當然,被雲端計算供應商鎖定對於企業來說很普遍。雲平臺之間的遷移並不比內部部署系統之間的遷移容易。

  使用者有如此多的產品可供選擇,但並沒有一種產品具有所有功能。最重要的第一步是確定所有必需工作流的基本屬性或行為,並確保所選的雲端計算供應商有能力提供這些服務,而每個行為可能來自不同但至少弱整合的產品。因此不要期望像Oracle公司或Teradata公司提供的產品提供“一切”服務。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28285180/viewspace-2841595/,如需轉載,請註明出處,否則將追究法律責任。

相關文章