2020數據庫選型攻略:專用VS多模

  數據庫選型愈來愈難,據DB-Engines數據庫流行度排行榜顯示,目前全球有多達359個開源和商業的數據庫。數據庫

  從應用類型看,有OLTP事務型數據庫,有OLAP分析型數據庫,還有HTAP混合型數據庫。服務器

  從存儲方式看,有關係型數據庫和非關係型數據庫(NoSQL)之分。而NoSQL數據庫又依據支持的數據模型不一樣,分爲鍵值數據庫、文檔數據庫,列式數據庫,圖形數據庫等。架構

  若是從架構類型看,又分Share Everything、Share Storage、Share Nothing。併發

  數據庫市場百花齊放雖然給企業帶來了更多選擇,但也致使選型變得更加困難。less

  專用 VS 多模運維

  關於專用數據庫與多模數據庫之爭,由來已久。其中,AWS屬於專用數據庫派,認爲數據庫就應該像汽車同樣,不一樣的汽車解決不一樣的運輸需求,不一樣數據庫去解決不一樣場景需求,而不是經過關係數據庫來一刀切。分佈式

  所以,AWS提供的數據庫產品組合多達十幾種。微服務

  而甲骨文、微軟、SAP則屬於「瑞士軍刀」派,即多模數據庫派。經過擴展其SQL查詢功能或添加功能(如R或Python支持)來實現多模功能。工具

  去年,DeveloperWeek一組調查數據顯示。有將近一半受訪者實際上使用了不止一種數據庫來支持其業務應用程序,而不是單個數據庫!使用多個數據庫的比例爲44.3%,使用一個數據庫的比例爲55.7%。雖然看起來使用一個數據庫的比例仍是更多,但不能忽略一點,多數據庫的使用在過去10年出現了爆炸式增加。性能

  數據顯示,75.6%的多數據庫類型組合使用了SQL和NoSQL數據庫。這進一步說明,對於許多企業來講,並不能一刀切。

  顯然,數據格式、應用場景紛繁複雜,不少需求已經不是單一數據庫能解決的。同時,微服務架構的崛起,也在推進企業不一樣業務場景採用不一樣的數據庫,若是選擇不當,會致使服務的性能上不去。

  所以,選型時不要將企業的數據庫限制在一種數據庫上,相互補充才能填補數據庫需求的空白。

  選型要點

  一、業務場景

  任何脫離業務場景需求的數據庫選型都是耍流氓。

  數據庫選型的決定性因素是結合業務應用場景,分析目前已有的需求和將來可能會出現的新需求,來考量選擇何種數據庫。

  業務用數據庫來作什麼?分析仍是交易?或者二者兼而有之?業務要處理什麼樣的數據?對數據庫性能需求是什麼?

  若是是傳統的ERP、CRM、財務等企業內部應用,須要事務完整性,保證ACID事務,那麼,毫無疑問,關係型數據庫是最佳選擇。若是業務要作物聯網數據採集和監控,須要高頻、實時、持續的寫入,那麼,時序數據庫是正確的選擇。

  業務要處理什麼樣的數據?結構化?半結構化?非結構化數據?決定須要支持的數據模型。原則上「什麼數據模型,就用什麼庫。」

  若是你要存儲和處理的是圖片、音頻、視頻等非結構化數據,那麼,NoSQL數據庫會是最佳選擇。進一步來講,業務要存儲遊戲場景中的角色信息、經驗道具信息、好友排名等信息,而這些信息通常都和 ID(鍵)掛鉤,那麼,鍵值數據庫是個很好的選擇。

  業務須要處理的多大的數據規模、併發吞吐量、響應時間需求是什麼?決定了對數據庫的性能需求。

  若是業務是秒殺,春節火車票等,有超高峯值業務,那麼,分佈式數據庫會是一個不錯的選擇。

  不清楚什麼業務場景下應該選用哪一種數據庫系統的,能夠參考上圖。

  二、可運維性

  有種說法,數據庫選型不考慮可運維性的都應該槍斃。雖說法誇張,但也有其道理,畢竟,數據庫買來最後是DBA來運維,DBA的意見不能忽視。

  自身團隊技術儲備如何?選型要考慮現有開發、運維人員的技能,儘可能選擇學習曲線短的。

  數據庫選型,不少人會忽略生態,一個好的數據庫不只自身強大,周邊生態完善很重要。與周邊上下游產品的兼容性,配套軟件、工具、技術人才等都對可運維性產生極大影響。

  每一種數據庫都不簡單,掌握都須要一個過程。數據庫發生問題,如何快速定位並解決問題?若是有個活躍的用戶社區,DBA會有信心不少。

  若是選擇了一種數據庫,但招不到DBA,一旦人員流失,讓數據庫處於無人維護的境地,那也挺要命的。

  良好的工具生態能夠節省企業的開發及運維人員投入。例如:遷移工具,AWS DMS早在2016年3月就已推出,可讓用戶輕鬆地將其數據庫遷移過來,同時避免停機。事實證實該服務很受歡迎,AWS官方數據顯示,截止到目前,DMS已經幫助20萬個數據庫進行遷移。

  若是你選擇的是雲數據庫,那麼,有Serverless(無服務器)模式的雲數據庫會讓運維更輕鬆,以AWS爲例,Amazon Aurora Serverless,Amazon DynamoDB,Amazon TimeStream,Amazon Keyspaces,這些都是無服務器版本的數據庫,數據庫能夠根應用程序需求來自動啓動、關閉以及擴展或縮減,而無需管理任何數據庫實例,能極大下降數據庫管理的工做量。由於,手動管理數據庫容量須要佔用寶貴的時間,也可能致使數據庫資源的使用效率低下。

  三、成本

  數據庫選型不只要考慮部署數據庫的硬件資源成本、軟件成本、服務成本和人力成本,還要考慮隱形的成本,好比遷移成本、維護成本、學習成本,運營成本等。

  隨着開源數據庫的流行,存在一種選型誤區,認爲開源數據庫省錢。其實,開源數據庫未必就比商業數據庫成本低,雖然沒有License費用,但對技術團隊要求很高,對於通常傳統行業是玩不轉的,若是你的技術團隊不具有這種能力,還不如商用數據庫更省心甚至省錢。

  若是想在二者中取得平衡,那麼,一些結合了新技術新硬件的新興數據庫多是不錯的選擇。好比:AWS Aurora,既兼容主流的開源數據庫MySQL和PostgreSQL,又具有商業數據庫的性能優點。用大白話說,就是既能省錢,性能又要優於開源數據庫。

  分佈式數據庫雖然很火,但也不要盲目趕時髦,要用對地方,要清楚什麼場景適合分佈式數據庫,什麼場景不適合,不然,不只達不到預期效果還更費錢。

  寫在最後

  雖然,數據庫領域各類新技術新概念不斷涌現,但還談不上誰替代誰。

  目前,沒有萬能的數據庫,只有最合適的數據庫。數據庫選型仍是要根據業務需求來選擇最合適的產品,切勿盲目趕時髦,去追新求熱。鄭州婦科醫院哪家好http://jbk.39.net/yiyuanfengcai/yyjs_sysdfkyy/

相關文章
相關標籤/搜索