官术网_书友最值得收藏!

1.1 為什么是現在將圖引入數據庫技術

圖已經存在了數個世紀。為什么現在突然變得重要起來?

在你跳過這節之前,我們希望你能停下來聽我們說完。我們確實要介紹歷史,但這不會很長,也不深入。我們需要這樣做,因為近來歷史上的興衰可以解釋圖的再次興起。

圖之所以現在復興是因為技術行業的關注點在過去幾十年中改變了。在這之前,技術和數據庫更關注如何最有效地存儲數據。關系型技術逐步演進為領跑者確保了這種效率。現在我們想知道如何能從數據中獲取最大的價值。

我們現在獲得的啟示是當數據連接起來時,它在本質上就更有價值。

了解一些數據庫技術演變的歷史,對我們理解如何發展到這一步會有很多啟發,甚至可以解釋你為什么選擇這本書。數據庫技術的歷史可以粗略地分為三個時代:層次型、關系型和NoSQL。以下是對這些歷史時代的簡略探討,重點是每個時代與本書的關系。

下面的內容將簡要介紹圖技術的演變。我們只強調行業龐大歷史中最相關的部分。至少,我們節省了你的寶貴時間,讓你不至于浪費時間在維基百科鏈接中自己查詢。

這段簡短的歷史將把我們從20世紀60年代帶到今天。如圖1-1所示,該段歷史將以第四個時代——圖思維告終。我們希望你和我們一起踏上這段短暫的旅程,因為我們相信,歷史背景是開啟圖技術在我們行業內廣泛采用的關鍵之一。

圖1-1:用數據庫技術演進的歷史時間軸說明圖思維的出現

1.1.1 20世紀60年代~80年代:分層數據

在技術文獻中,20世紀60年代~80年代的數據庫技術被交替地標記為“分層”(hierarchical)或“導航”(navigational)。無論用哪個詞,這個時代旨在以樹狀結構組織數據。

在這個時代,數據庫技術將數據存儲為相互鏈接的記錄。這些系統的架構師設想遍歷這些樹狀結構,這樣任何記錄都可以通過鍵、系統掃描或通過導航樹的鏈接被訪問。

在20世紀60年代早期,CODASYL(Conference/Committee on Data Systems Languages,數據系統語言大會暨委員會)的數據庫任務組(Database Task Group,DBTG),組織編纂了該行業最早期的一系列標準。數據庫任務組創建了一個從這些樹形結構中檢索記錄的標準。這個早期標準被稱為“CODASYL方式”,為從數據庫管理系統中檢索數據制定了以下三個目標[1]

1.使用主鍵。

2.按序列順序檢索所有數據。

3.從一條記錄導航鏈接到另外一條記錄。

CODASYL是一個成立于1959年的聯盟,是曾經負責創建和標準化COBOL的組織。

最初,CODASYL的技術人員想要通過鍵、掃描和鏈接來檢索數據。而迄今為止,我們已經看到這三種原始標準中的兩種有了重大創新和采用:鍵和掃描。

但是為什么沒有用CODASYL檢索標準中的第三種(從一條記錄導航鏈接到另外一條記錄)呢?根據記錄之間的鏈接,存儲、導航和檢索記錄,這就是我們要講的圖技術。如上文所述,圖并不是什么新鮮事,技術人員已經使用很久了。

用一句話總結這部分歷史就是:CODASYL的鏈接導航技術太難用了也太慢。那時提出的最有創意的解決方案是B樹或者自平衡樹數據結構,作為解決性能問題的結構性優化。在這里,B樹通過提供可替代訪問路徑來加速在這些關聯記錄之間的條目檢索[2]

最終,實施成本、硬件成熟度和交付價值之間的不平衡致使這些系統被束之高閣,讓位于速度更快的關系型系統。到了今天,CODASYL已不復存在,盡管一些CODASYL委員依然繼續著他們的工作。

1.1.2 20世紀80年代~21世紀00年代:實體關系

Edgar F.Codd將數據組織與其檢索系統分離的想法點燃了數據管理技術的新一波創新浪潮[3]。Codd的工作開創了數據庫實體關系時代。

實體關系時代持續了幾十年,行業完善了按鍵檢索數據的方法,即20世紀60年代早期工作組設定的目標之一。在這個時代,我們的行業開發了在存儲、管理和從表中檢索數據方面極其有效的技術,直到現在也是如此。當時研發的技術在以后數十年后的今天仍然被廣泛應用,因為它們已經被驗證、有良好的文檔,并且為人熟知。

這個時代的系統引入并推廣了一種特定的數據思考方式。首先且最重要的是,關系型系統是建立在關系代數的良好數學理論之上的。需要特別指出的是,關系型系統將數據組織成為集合。這些集合關注如何存儲和檢索真實世界的實體,比如人物、地點和事物。相似的實體,例如人物,會被分到一個數據表中。在這些數據表里,每一條數據是一行(row)。可以通過主鍵訪問數據表中每一條數據。

在關系型系統中,實體可以被關聯在一起。但要創建實體之間的關系,你需要新建更多的表。一張關聯表將會組合每個實體的主鍵,并在關聯表中將它們存儲成新的一行。這個時代及其創新者打造的表形數據解決方案繁盛至今。

關于關系型系統的話題,有海量書籍和資源可以參考,本書并不打算對此進行過多介紹,而是會重點關注今天已被廣泛接受的思維過程和設計原則。

無論是好是壞,這個時代引入了一種根深蒂固的觀念,即所有數據都映射到一個表中。

如果你的數據需要被組織在表中并從表中檢索,關系型技術仍然是首選解決方案。但是無論它們的角色何等重要,關系型技術都不是一個萬能的解決方案。

20世紀90年代末期,互聯網的興起吹響了信息時代的號角。在這短暫的歷史舞臺上,我們嗅到了之前聞所未聞、見所未見的數據量和形態。在數據庫創新的這個時代,難以想象的數據量以千奇百怪的形態開始涌入應用程序的隊列中。此時終于有人意識到關系型模型是有所欠缺的:它甚至沒有提及數據使用的方式。行業已經有了詳盡的存儲模型,但是對于如何分析及智能地應用數據卻一籌莫展。

這帶我們來到了數據庫創新的第三波浪潮,也是最近一次。

1.1.3 21世紀00年代~20年代:NoSQL

數據庫技術在21世紀00年代~20年代的發展可以一句話概括為NoSQL(Non-SQL或不僅僅SQL)浪潮的來臨。這個時代的目標是為存儲、管理和查詢所有形態的數據打造具有擴展性的技術。

啤酒釀造市場在美國的蓬勃發展所激發的數據庫創新,可以幫助我們更好地理解NoSQL時代。啤酒的發酵流程沒有變化,但是風味卻增加了,原料的品質和鮮度得到了提升。釀造師和消費者之間的距離被拉近了,對生產方向產生了即時反饋環。現在,超市里的啤酒不再是老三樣,可能有30個以上的品牌供你選擇。

在尋找發酵的不同組合的問題上,數據庫行業可供選擇的數據庫管理技術經歷了指數級增長。架構師需要可擴展的技術來處理不同形態、量級的數據,以及飛速增長的應用程序的需求。這波浪潮中流行的數據形態包括鍵值、寬表(wide-column)、文檔、流和圖。

NoSQL時代想傳遞的信息很明顯:在表結構中存儲、管理和查詢海量數據不是永遠行得通的,就如同不是每個人都想來一杯“勇闖天涯”。

NoSQL運動有幾個動機。這些動機對于理解為什么以及我們處在這波圖技術市場的技術成熟周期的哪個階段來說是至關重要的。我們想指出的三個動機是對數據序列化標準、專用工具和水平可擴展性的需求。

首先,網頁應用程序的流行為在這些應用程序之間傳遞數據創造了天然的渠道。通過這些渠道,創新者發明了各種全新的數據序列化標準,例如XML、JSON和YAML。

自然地,這些標準引出了第二個動機:專用工具。跨Web交換數據的協議與生俱來就不是結構化的。該需求引發了鍵值、文檔、圖和其他專用數據庫的創新和普及。

最后,這類新興應用程序及其洶涌而來的數據,給系統可擴展性帶來了前所未有的壓力。摩爾定律的衍生物和應用給這個時代帶來一線希望:硬件成本,進而數據存儲成本,在持續降低。摩爾定律的效應使得數據復制、專用系統和整體計算能力都變得更便宜[4]

NoSQL時代的創新和新需求,為行業從垂直擴展系統遷移到水平擴展系統鋪平了道路。水平擴展系統通過增加物理或者虛擬機來提升系統的整體計算能力。水平擴展系統,通常被稱為集群,對于終端用戶來說表現為一個單獨的平臺,用戶通常無從得知他們的負載實際上是被一組服務器承載的。另外,一個垂直擴展系統需要更強力的機器。空間不足?那就找個更大更貴的盒子,直到沒有更大的為止。

水平擴展意味著增加更多資源來分擔負載,通常是并行的。垂直擴展意味著增大、增快某一個資源,以便它處理更多負載。

基于上述動機,這個為非結構化數據構建可擴展數據架構的通用工具集逐漸演變為NoSQL時代最重要的產物。現在,當設計下一個應用程序時,開發團隊可以進行選擇評估。他們可以從一整套技術集中進行選擇,以適應不同的數據形態、速率及可擴展性的需求。他們也有工具用來管理、存儲、搜索和檢索任何規模的文檔、鍵值、寬表以及圖數據。通過這些工具,我們開始以前所未有的方式處理多種形式的數據。

我們可以用這與眾不同的工具和數據做什么呢?我們可以更快地解決更大規模、更復雜的問題。

1.1.4 21世紀20年代以后:圖

我們從整個行業歷史中看到的關聯性為數據庫創新的第四個時代奠定了基礎:圖思維的浪潮。

這個時代的創新從存儲系統的效率轉移到了如何從存儲系統里的數據中汲取價值。

為什么是21世紀20年代

在我們概述對圖時代的看法之前,你可能想知道為什么我們把圖思維時代的開端設在2020年。下面我們想說明一下我們對圖市場時間線的看法。

我們著眼于2020年時間線的原因來自兩個思路的交匯。這里,我們匯集了Geoffrey A.Moore被廣泛采用的模型[5],以及當下對過去三個數據庫創新時代的觀察。

如同CODASYL,技術采納的生命周期通常無法逃脫Moore在20世紀50年代提出的理論。見Everett M.Roger寫于1962年的Diffusion of Innovations[6]一書。

特別地,在早期采用者和新技術的廣泛采用之間有一個已經被證明的、可觀察到的時間滯后。我們在1.1.2節介紹20世紀70年代關系型數據庫時看到過這種時間滯后。從第一篇論文到可實際應用的關系型技術出現之間有10年的滯后。你可以在其他時代中找到類似的滯后。

歷史告訴我們圖時代之前的每個時代都出現過一個小眾的時期,要在幾年以后才能得到廣泛采用。檢視21世紀20年代,我們對圖市場的情況做出同樣的假設。同時,歷史也告訴我們這并不意味著現有工具的消逝。

不管你想要怎么測量,它都不是一個我們可以確定日期的股票市場預測。我們的展望最終描繪了一個由價值演變驅動的技術采用的新時代。也就是說,價值在從存儲效率轉向來自高度連接的數據資產。這種變化需要時間,而且往往不會按計劃行事。

連點成線

回想20世紀60年代由CODASYL委員會提出的關于檢索數據的三種模式:通過鍵、掃描和鏈接訪問數據。第一個目標,通過鍵提取數據,對于任何形態的數據來說都是最高效的訪問方式。這種效率是在實體關系時代實現的,并且仍然是一種流行的解決方案。

對于CODASYL委員會的第二個目標,通過掃描訪問數據,NoSQL時代已經出現了可以處理大量數據掃描的技術。現在我們的軟硬件都具備從海量數據集中提取價值的能力。也就是說,我們已經成功實現了委員會的前兩個目標。

最后一個目標:通過遍歷鏈接訪問數據。我們的行業已經繞了整整一圈。

行業重新關注圖技術與我們從高效管理數據到需要從數據中提取價值的轉變密切相關。這種轉變并不是說高效管理數據不重要了,而是我們已經解決了一個問題,現在需要面對下一個難題了。我們的行業在關注速度和成本的同時也開始強調價值。

當你能夠把分離的信息關聯起來組成新的洞見時,你就可以從數據中提取價值。從數據中提取價值來自理解數據中復雜的關系網絡。

這等同于理解復雜問題和復雜系統,這些問題和系統在你的數據中可以通過固有的網絡觀察到。

我們的行業和本書的重點是開發和部署能夠從數據中提供價值的技術。與關系型時代一樣,理解、部署和應用這些技術需要一種新的思維方式。

為了看到我們在這里談論的價值,需要改變思維方式。這種思維是從優先考慮結構化數據轉變到考慮其關系。這就是我們所說的圖思維。

主站蜘蛛池模板: 汝州市| 镇坪县| 延安市| 江安县| 东莞市| 密云县| 竹山县| 安阳市| 溧水县| 包头市| 湟源县| 策勒县| 循化| 泰兴市| 东源县| 旌德县| 积石山| 彭泽县| 沂南县| 宜兰县| 防城港市| 宣武区| 临清市| 耒阳市| 广西| 栖霞市| 和静县| 闵行区| 烟台市| 五峰| 通化市| 阜城县| 江孜县| 曲沃县| 石首市| 吉木萨尔县| 商水县| 德清县| 开平市| 漳浦县| 彭阳县|