背景
在業務場景技術選型的過程中,存儲技術通常是必不可少的一環,而當前存儲技術繁雜多樣,如何迅速選擇合適業務的技術非常重要。本文根據業務特點抽象出核心需求,根據不同需求採取對應的最佳方案。
業務需求抽象
業務特點抽象由廣到窄分爲如下幾點:
-
是否結構化數據。這裏非結構化數據主要是圖片、視頻和語音等二進制信息。
-
是否分析型服務。存儲服務一般分爲在線業務型和分析型。在線業務型用於在線服務增產改查和一些事務性需求;分析型服務一般是運營、產品和分析型對離線數據進行洞察分析。
-
是否關係型數據。這裏主要區分SQL和NoSQL。關係型數據按結構化關係來存儲(數據存儲模型符合第三範式),其一般是傳統行式數據庫。非關係存儲一般是K-V存儲和文檔存儲。
-
是否有數據更新和低延遲需求。主要用於對分析型服務分類,數據更新一般是對已有數據進行update修改,低延遲通常是指秒級延遲需求。
-
是否水平擴展。這裏水平擴展主要對newSQL和SQL進行分類。因爲傳統關係型數據庫的擴展性比較弱,主要通過上層sharding方案實現擴展,其存儲在設計方面的可擴展性很弱,沒有自動數據balance、數據遷移功能。可水平擴展就說明該存儲在設計上就實現了數據自動balance、對新加入節點進行用戶透明的數據遷移。
-
是否預聚合。這裏主要是對OLAP進行分類,OLAP分爲ROLAP和MOLAP,ROLAP類似傳統關係型數據庫,對分析需求進行adhoc查詢,非常靈活,查詢延遲一般在秒級以上。MOLAP主要是對數據先預聚合再查詢,因爲預聚合要管理員提前定義聚合指標,所以查詢靈活度較低,但是響應非常迅速,一般在亞秒級。
技術選型圖
閉源技術補充
本圖主要劃分了開源數據庫技術選型,但除了開源選型,在當前的雲計算時代,也有很多大廠對應的閉源技術可以選擇,下面列舉一二並給出選擇參考。
非結構化存儲
除了開源的ceph,閉源的有AWS的S3、Google的cloud storage、阿里雲的OSS和百度雲的BOS等。
關係型水平擴展數據庫
除了開源的TiDB,還有AWS的Aurora、Google的cloud spanner、阿里雲的Oceanbase和百度對開源CockroachDB封裝的版本等。
分析型數據庫
開源的分析型數據庫比較豐富,可根據具體團隊狀況、技術棧、社區活躍度情況選擇。閉源方面可以使用AWS的Redshift、Google的BigQuery、阿里雲的ADS和百度雲的Palo等。
總結
開源技術豐富多樣,一般針對不同場景都有對應的實現技術方案,比較靈活多樣,用戶根據需求抽象再參考本文就可以選擇合適的存儲技術。
對於使用雲的用戶,各家廠商都有完備的對應技術方案,開箱即用。