你應該使用哪個雲資料庫?
雲端計算的基本原則是採用一次性和可更換的多臺機器,這對採用雲端計算技術以及在雲中實施的資料庫系統的功能有直接影響。
傳統資料庫大致可以分為並行優先(例如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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面對眾多雲資料庫,應該使用哪個雲資料庫好?資料庫
- 刪庫跑路?你應該看看雲資料庫資料庫
- Bash vs Python:你該使用哪個?Python
- Java 與 Python:你應該選擇哪個?JavaPython
- 資料庫讀寫分離這個坑,你應該踩過吧?資料庫
- Time Machine 與 iCloud Drive:應該使用哪個來備份你的Mac?MacCloud
- 你應該瞭解的流行圖資料庫查詢語言資料庫
- 恆訊科技分析:雲資料庫和伺服器資料庫不同在哪?哪個好?資料庫伺服器
- django哪個模組配置資料庫Django資料庫
- 你應該學習哪種程式語言?
- 當下應該學習Python哪個版本?哪個方向好?Python
- 資料庫連線池到底應該設多大?資料庫
- 資料庫到底應該如何儲存密碼?資料庫密碼
- 量化回測到底應該用哪種復權資料
- 我應該手動修改線上資料庫的資料嗎?資料庫
- 哪個品牌的雲資料庫比較好?重點關注這三個方面資料庫
- 雲原生時代,資料庫該何去何從?資料庫
- 資料庫專家都應該知道的5個統計學知識資料庫
- 20個大家應該知道的大資料資源大資料
- SQL Server無法刪除資料庫 "xxx",因為該資料庫當前正在使用(如何刪除一個Sql Server資料庫)SQLServer資料庫
- [譯] 2019 年你應該要知道的 11 個 React UI 元件庫ReactUI元件
- 【譯】13 個你應該選擇/考慮使用 Flutter 的理由Flutter
- 國外資料庫十大風雲人物,你認識幾個?資料庫
- 小遊戲市場大洗牌,你知道你的產品應該選擇哪個渠道嗎?遊戲
- 雲資料庫伺服器哪個好?考察這三方面!資料庫伺服器
- 你應該知道的16個linux命令Linux
- 企業IT規劃|資料治理該歸哪個部門管?
- zblog的資料庫配置檔案是哪個?怎樣修改資料庫配置資訊?資料庫
- 你的資料庫真的需要遷移到雲嗎?資料庫
- 你的資料是如何洩露的?企業和個人應該這樣做……
- Python資料分析庫之pandas,你該這麼學!No.1Python
- C# 中 10 個你真的應該學習(和使用!)的功能C#
- “無法刪除資料庫,因為該資料庫當前正在使用” – 解決方法資料庫
- [譯] WAR 還是 JAR,你應該用哪種格式打包?JAR
- iis連線資料庫的檔案是哪個資料庫
- 使用Python分析大量資料應該學些什麼?Python
- 你真的會使用資料庫的索引嗎?資料庫索引
- 如何快速使用摩杜雲資料庫RDSMySQL?資料庫MySql