支持?jǐn)?shù)據(jù)多樣性的多模型數(shù)據(jù)庫的興起
在管理數(shù)據(jù)多樣性方面,數(shù)據(jù)庫世界變得有些混亂。
不久前,除了少數(shù)領(lǐng)先的數(shù)據(jù)庫管理系統(tǒng)(DBMS)平臺(tái)外,數(shù)據(jù)庫僅支持單個(gè)數(shù)據(jù)模型。而多模型數(shù)據(jù)管理的復(fù)興正在改變這種情況,并為數(shù)據(jù)庫架構(gòu)師帶來好處。
多樣化數(shù)據(jù)結(jié)構(gòu)帶來的挑戰(zhàn)
存儲(chǔ)和處理不同結(jié)構(gòu)的數(shù)據(jù)是一項(xiàng)挑戰(zhàn),這里沒有放之四海而皆準(zhǔn)的標(biāo)準(zhǔn)。數(shù)據(jù)有多種形式,一些最受歡迎的數(shù)據(jù)模型包括關(guān)系、文檔、鍵值和圖形。
在過去,當(dāng)處理新的數(shù)據(jù)結(jié)構(gòu)時(shí),我們要么將數(shù)據(jù)強(qiáng)加到現(xiàn)有DBMS的數(shù)據(jù)模型中,要么購買支持該新結(jié)構(gòu)的新DBMS。
在最長的時(shí)間里,我們使用的是關(guān)系(SQL)DBMS及其前身來解決結(jié)構(gòu)化數(shù)據(jù)需求。事實(shí)證明,這對(duì)于我們的大部分?jǐn)?shù)據(jù)都適用。盡管沒有進(jìn)行優(yōu)化,但是我們?nèi)匀皇褂眠@些傳統(tǒng)數(shù)據(jù)庫用于(應(yīng)用程序中)少量的非結(jié)構(gòu)化數(shù)據(jù)。
隨著新數(shù)據(jù)源(大數(shù)據(jù)和實(shí)時(shí)處理)帶來的半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的增加,我們看到大家開始對(duì)專用非關(guān)系型DBMS選項(xiàng)感興趣。這些數(shù)據(jù)庫(通常稱為NoSQL數(shù)據(jù)庫)以非表格結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行建模。
然而,數(shù)據(jù)模型和新的DBMS模型的普及帶來困境。使用多種數(shù)據(jù)庫技術(shù)管理不同的數(shù)據(jù)模型帶來優(yōu)化,但增加了復(fù)雜性。
解決單模型困境
專用的單模型DBMS產(chǎn)品優(yōu)化了數(shù)據(jù)存儲(chǔ)和處理。但是,在架構(gòu)中添加其他DBMS會(huì)增加復(fù)雜性,包括增加集成、開發(fā)、維護(hù)和操作。這迫使企業(yè)尋求更好的方法來處理各種數(shù)據(jù)模型。
幸運(yùn)的是,SQL和NoSQL DBMS供應(yīng)商都互相學(xué)習(xí)彼此功能(包括多數(shù)據(jù)模型),希望企業(yè)合理化其DBMS技術(shù)到單個(gè)數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)模型支持曾經(jīng)是DBMS之間的差異因素,而現(xiàn)在它成為共同因素。
什么是多模型數(shù)據(jù)庫
單個(gè)數(shù)據(jù)管理系統(tǒng)內(nèi)數(shù)據(jù)模型的融合催生了一種新的DBMS類,稱為多模型數(shù)據(jù)庫。一些領(lǐng)先的DBMS選項(xiàng)已經(jīng)支持多種模型已有一段時(shí)間,但目前我們還沒有看到快速部署。
部署方法可能會(huì)有所不同。我更喜歡這樣的架構(gòu):在單個(gè)集成數(shù)據(jù)庫引擎中,以本機(jī)數(shù)據(jù)類型和結(jié)構(gòu)存儲(chǔ)支持的模型。這樣可在所有模型之間提供一致的數(shù)據(jù)管理,并允許在單個(gè)接口內(nèi)中對(duì)數(shù)據(jù)進(jìn)行多模型訪問。
從哪里開始使用多模型數(shù)據(jù)庫
初看之下,面對(duì)多語言持久性,多模型數(shù)據(jù)庫似乎飛速發(fā)展,多語言持久性主張根據(jù)其數(shù)據(jù)用途將數(shù)據(jù)存儲(chǔ)在多種數(shù)據(jù)存儲(chǔ)技術(shù)中。但是,如果可在同一個(gè)DBMS中處理不同的數(shù)據(jù)模型會(huì)如何?
如果你已經(jīng)投資于多模型DBMS,并且它滿足或超過了你的數(shù)據(jù)和應(yīng)用程序的功能性和非功能性要求,那么,更好的做法是利用企業(yè)的現(xiàn)有技術(shù),而不是引入新技術(shù)。
隨著多模型數(shù)據(jù)庫的出現(xiàn),我們現(xiàn)在可以將數(shù)據(jù)模型和DBMS分為兩個(gè)方面的決策:
首先,確定最適合你的數(shù)據(jù)結(jié)構(gòu)和使用的數(shù)據(jù)模型。
然后,確定哪些DBMS選項(xiàng)支持該數(shù)據(jù)模型和應(yīng)用程序的需求。實(shí)際上,你可以期望技術(shù)架構(gòu)中同時(shí)具有單模型和多模型DBMS選項(xiàng)。
對(duì)于應(yīng)用程序的特殊用途組件,單模型DBMS可能會(huì)提供最佳的數(shù)據(jù)管理。對(duì)于所有其他組件,多模型DBMS將合理化和簡化你的技術(shù)架構(gòu)。
當(dāng)涉及到數(shù)據(jù)多樣性時(shí),并沒有適用于所有情況的數(shù)據(jù)模型。無論你選擇使用單模型數(shù)據(jù)庫還是多模型數(shù)據(jù)庫,現(xiàn)在都沒有理由將數(shù)據(jù)強(qiáng)制為非優(yōu)化數(shù)據(jù)模型。