云計算的基本原則是采用一次性和可更換的多臺機器,這對采用云計算技術(shù)以及在云中實施的數(shù)據(jù)庫系統(tǒng)的功能有直接影響。
傳統(tǒng)數(shù)據(jù)庫大致可以分為并行優(yōu)先(例如MongoDB或Teradata)或單存儲系統(tǒng)優(yōu)先(例如PostgreSQL或MySQL)。這兩個類別都有其核心設(shè)計固有的局限性。這些限制的程度部分是成熟度的函數(shù)。但是,對于某些核心架構(gòu)決策來說,可能無法有效支持特定功能。
例如,Greenplum有序列,但Redshift沒有,盡管這兩者都是PostgreSQL的衍生物。而BigQuery沒有序列,但Teradata有序列,盡管在傳統(tǒng)意義上它們并不是真正的序列。
云數(shù)據(jù)庫屬于相同的類別,而新系統(tǒng)明顯傾向于并行優(yōu)先。云計算系統(tǒng)的基本屬性是機器的可擴展性和可替換性的并行性。
在單系統(tǒng)優(yōu)先類別中,云計算實例化往往側(cè)重于傳統(tǒng)單機產(chǎn)品的管理成本、升級和可靠性(RPO/RTO),例如Heroku PostgreSQL、Amazon Aurora(PostgreSQL/MySQL)、Google cloud SQL(PostgreSQL/MySQL)和Azure SQL(SQL Server)。
在并行優(yōu)先類別中,實際上有兩個子類別:SQL/關(guān)系類別(BigQuery、Snowflake、Redshift、Spark、AzureSynapse)和DHT/NoSQL(BigTable、Dynamo、Cassandra、Redis)類別。這種區(qū)別與是否存在類似SQL的語言關(guān)系不大,而與系統(tǒng)中數(shù)據(jù)的物理布局是否經(jīng)過調(diào)整以便通過散列快速查找鍵進(jìn)行單行訪問,或者使用排序合并和篩選操作進(jìn)行批量訪問有關(guān)。
并行優(yōu)先關(guān)系數(shù)據(jù)庫通常依賴于一個或多個原生云存儲系統(tǒng)。這些存儲系統(tǒng)總是并行優(yōu)先構(gòu)建,并公開一個非常有限的get-object/put-object API,它通常允許對數(shù)據(jù)進(jìn)行分區(qū),但不允許高性能隨機訪問。這限制了數(shù)據(jù)庫實現(xiàn)高級持久數(shù)據(jù)結(jié)構(gòu)(例如索引),在許多情況下,還限制了可變數(shù)據(jù)的能力。
因此,使用原生存儲的云計算實現(xiàn)往往依賴于微分區(qū)的順序讀寫而不是索引。根據(jù)對象名稱,存儲級對象往往只有一條物理訪問路徑。索引必須在底層存儲的外部實現(xiàn),即使這樣做了,底層云存儲API也可能使在存儲級別對象中實際使用地址或字節(jié)偏移量變得困難。
云計算的優(yōu)點
·云平臺是為用戶管理的基礎(chǔ)設(shè)施。在云中,部署、可靠性和管理是用戶關(guān)注的問題。從電源、軟件安裝和硬件到操作系統(tǒng)管理和安全(從加固到入侵檢測)的堆棧的所有層都由云計算供應(yīng)商管理。
云計算供應(yīng)商免費試用產(chǎn)品的便利性可以幫助用戶啟動并運行初始實驗,然后在需要時擴展到大規(guī)模,這在傳統(tǒng)的內(nèi)部部署系統(tǒng)中是困難的。
另一個好處是云計算供應(yīng)商提供了許多標(biāo)準(zhǔn)化流程來與第三方SaaS產(chǎn)品集成。其結(jié)果是云計算供應(yīng)商讓基礎(chǔ)設(shè)施成為別人的問題,因此用戶可以專注于其核心業(yè)務(wù)。
·效率。云計算可以最大化資源利用率。與非云系統(tǒng)相比,云計算系統(tǒng)向數(shù)據(jù)庫應(yīng)用程序公開資源利用控制要常見得多。云計算技術(shù)可以平滑負(fù)載,將其移動到低需求的時間段,并且可以優(yōu)先考慮交互式和關(guān)鍵業(yè)務(wù)作業(yè)。
當(dāng)然,云計算供應(yīng)商可以利用大規(guī)模采購的效率、負(fù)載共享和極高的利用率。僅這些規(guī)模參數(shù)就可以成為遷移到云平臺的理由。更不用說使用供應(yīng)商的專業(yè)知識進(jìn)行強化和入侵檢測的好處了。
與規(guī)模密切相關(guān)的是云計算供應(yīng)商能夠以低廉的價格提供被動存儲,這使得無論是出于實驗或分析原因,還是出于備份或?qū)徲?,更容易保留更長的歷史數(shù)據(jù)窗口,并且更加經(jīng)濟高效地實施時間旅行等功能,可以從歷史角度檢查數(shù)據(jù)。
當(dāng)然,繁重的數(shù)據(jù)處理負(fù)載可以通過使用云計算供應(yīng)商的規(guī)模臨時向外擴展來解決,當(dāng)然用戶會為此付出代價。
·經(jīng)濟性。除了規(guī)模和效率的經(jīng)濟性之外,云計算供應(yīng)商的會計機制傾向于將存儲和處理的成本數(shù)據(jù)暴露到單個查詢級別。這允許用戶對任何給定分析的成本收益做出合理的商業(yè)決策,并相應(yīng)地做出優(yōu)化決策。事實上,有時用戶可能會決定通過擴展云計算規(guī)模來擴大和簡化分析的結(jié)構(gòu),而不是花費時間和精力來塑造一個“穩(wěn)健的分析”,這可能更便宜、更準(zhǔn)確。
云計算的弱點
·云平臺是為用戶管理的基礎(chǔ)設(shè)施。云計算具有一組與大型機截然不同的故障域。云平臺上的分布式計算是共享的基礎(chǔ)設(shè)施(計算、存儲、網(wǎng)絡(luò)),這可能會受到更多的干擾,其中任何一個故障都可能導(dǎo)致交互性失敗或暫時性工作失敗。在極少數(shù)情況下,即使是云計算供應(yīng)商的自動化管理也會通過更改系統(tǒng)的屬性或行為對客戶體驗產(chǎn)生負(fù)面影響。
·效率。與傳統(tǒng)的內(nèi)部部署系統(tǒng)相比,大多數(shù)云計算數(shù)據(jù)庫仍然不成熟。云數(shù)據(jù)庫缺乏更成熟產(chǎn)品的特性。有些功能可能永遠(yuǎn)不會被引入,因為完全分布式、易發(fā)生故障的平臺的概念使它們不切實際。
許多基于云的并行關(guān)系系統(tǒng)對于特定的數(shù)據(jù)庫變異(INSERT、UPDATE、DELETE)操作的效率顯著降低,這在某些用例中可能會導(dǎo)致問題。
當(dāng)然,云計算與內(nèi)部部署系統(tǒng)或托管在其他云平臺中的系統(tǒng)之間的額外延遲往往會迫使云計算基礎(chǔ)設(shè)施整合。用戶往往被迫首先選擇地理位置和云計算供應(yīng)商,然后實際上僅限于其云計算供應(yīng)商提供的服務(wù)。
·經(jīng)濟性。云計算的成本遵循與內(nèi)部部署截然不同的曲線:擴展容量非常容易??刂瞥杀咀兊酶永щy。另一方面,如果成本有上限的話,則在達(dá)到成本上限后提交的交互式作業(yè)可能會被拒絕。這增加了一層復(fù)雜性,傳統(tǒng)數(shù)據(jù)庫管理員需要學(xué)習(xí)這些知識才能創(chuàng)建成功的部署。
當(dāng)然,被云計算供應(yīng)商鎖定對于企業(yè)來說很普遍。云平臺之間的遷移并不比內(nèi)部部署系統(tǒng)之間的遷移容易。
用戶有如此多的產(chǎn)品可供選擇,但并沒有一種產(chǎn)品具有所有功能。最重要的第一步是確定所有必需工作流的基本屬性或行為,并確保所選的云計算供應(yīng)商有能力提供這些服務(wù),而每個行為可能來自不同但至少弱集成的產(chǎn)品。因此不要期望像Oracle公司或Teradata公司提供的產(chǎn)品提供“一切”服務(wù)。