在Facebook上,人們已經(jīng)形成了一個(gè)復(fù)雜的社會(huì)關(guān)系網(wǎng)絡(luò),如何去存儲(chǔ)、擴(kuò)展和展示這個(gè)網(wǎng)絡(luò)是Facebook工程師的一大難題。早在幾年前,F(xiàn)acebook的工程師就意識(shí)到:關(guān)系型數(shù)據(jù)庫(kù)的老方法,正在逐步降低基礎(chǔ)設(shè)施和代碼的效率。2009年,他們開始設(shè)計(jì)一種新的數(shù)據(jù)庫(kù)體系結(jié)構(gòu),也就是分布式數(shù)據(jù)庫(kù)TAO(The Associations and Objects)。6月25日,F(xiàn)acebook在官方博客上公布了支持其基礎(chǔ)設(shè)施細(xì)節(jié)。
TAO的圖型架構(gòu)在信息組織方面類似于Facebook的圖搜索工具,它將世界看作由節(jié)點(diǎn)(對(duì)象,即人、地點(diǎn)和事物)和邊(關(guān)聯(lián),即他們之間的關(guān)系)組成的圖。隨著數(shù)據(jù)量的增大,保持?jǐn)?shù)據(jù)的關(guān)系模式變得不再重要,TAO及其對(duì)應(yīng)的API應(yīng)運(yùn)而生。
Marchukov認(rèn)為TAO最大的突破在于實(shí)現(xiàn)了圖解模型,F(xiàn)acebook的主要工作負(fù)載在于讀取數(shù)據(jù),TAO證明了圖數(shù)據(jù)模型很適合這類查詢操作較多的網(wǎng)站。實(shí)際上,類似Neo4j的圖形數(shù)據(jù)庫(kù)一直備受關(guān)注,因?yàn)樗苡行П硎救穗H關(guān)系。
Marchukov 在博客中提到,TAO不僅大規(guī)模實(shí)現(xiàn)了圖數(shù)據(jù)結(jié)構(gòu),也使用MySQL實(shí)現(xiàn)硬盤上的持久存儲(chǔ),同時(shí)要保證數(shù)據(jù)在各個(gè)數(shù)據(jù)中心的最終一致性,用戶才能獲取“新鮮事”。
TAO服務(wù)運(yùn)行在大量的服務(wù)器集群上,這些分布在不同地理位置的集群構(gòu)成一個(gè)樹形網(wǎng)絡(luò)。有另外的集群用來持久存儲(chǔ)對(duì)象和對(duì)象關(guān)聯(lián),RAM和閃存實(shí)現(xiàn)緩存。這種分層結(jié)構(gòu)在單獨(dú)進(jìn)行不同類型的集群擴(kuò)展時(shí)更方便,也能有效利用服務(wù)器硬件。