Neo4j數(shù)據(jù)建模優(yōu)化:雙向關(guān)系

摘自:http://blog.csdn.net/hwz2311245/article/details/54602706
我們通常會(huì)將現(xiàn)實(shí)生活中的關(guān)系型數(shù)據(jù),通過(guò)一定的方式嚎卫,轉(zhuǎn)化為圖形化的結(jié)構(gòu)存儲(chǔ)起來(lái)。盡管圖形化的結(jié)構(gòu)相比于表結(jié)構(gòu)更加直觀炕淮,但也存在一些常見(jiàn)的誤區(qū)鉴竭。在這篇博文中,我們來(lái)討論其中的一個(gè)容易讓人混淆的概念:雙向關(guān)系循未。
單向關(guān)系
在Neo4j中陷猫,所有的關(guān)系都必須有一個(gè)類型來(lái)進(jìn)行區(qū)分,同時(shí)的妖,也必須有一個(gè)方向绣檬。通常來(lái)說(shuō),關(guān)系的方向同樣會(huì)包含一些信息嫂粟。換句話來(lái)說(shuō)娇未,如果沒(méi)有方向,一些關(guān)系的意義就會(huì)變得模糊赋元。打個(gè)比方忘蟹,下面的圖結(jié)構(gòu)表明了在冰球比賽中,Czech Republic隊(duì)擊敗了Sweden搁凸。假如這個(gè)關(guān)系的方向反過(guò)來(lái)媚值,那么就意味著Sweden勝利了。如果沒(méi)有任何方向护糖,那么這個(gè)關(guān)系的意義就變得很模糊了褥芒,因?yàn)闆](méi)有辦法區(qū)分出到底是哪個(gè)隊(duì)獲勝了。

這里寫(xiě)圖片描述

可以發(fā)現(xiàn),在這里锰扶,一個(gè)單向的關(guān)系同時(shí)也表明了一個(gè)反向關(guān)系的存在献酗,正如下一張圖所示蚕脏。通常情況下都是如此撩荣。再打個(gè)比方:昆汀·塔倫蒂諾導(dǎo)演了《低俗小說(shuō)》腌逢,同時(shí)也意味著《低俗小說(shuō)》的導(dǎo)演是昆汀·塔倫蒂諾斯撮。
這里寫(xiě)圖片描述

在設(shè)計(jì)這類模型的時(shí)候固耘,同時(shí)創(chuàng)建兩個(gè)方向的關(guān)系是一個(gè)常見(jiàn)的錯(cuò)誤柱查。因?yàn)橐粋€(gè)關(guān)系可以同時(shí)意味著另一個(gè)關(guān)系祸憋,因此仆葡,不論在空間還是遍歷時(shí)間上蹂楣,這都是一種浪費(fèi)俏站。Neo4j可以在任何方向上進(jìn)行遍歷。更重要的是痊土,Neo4j存儲(chǔ)數(shù)據(jù)的方式肄扎,使得遍歷的速度和關(guān)系的方向沒(méi)有任何關(guān)系
雙向關(guān)系
有一些關(guān)系在設(shè)計(jì)上就是雙向的赁酝。一個(gè)很典型的例子就是Fackbook或者現(xiàn)實(shí)生活中的朋友關(guān)系犯祠。這種關(guān)系是相互的:當(dāng)某個(gè)人是你的朋友,你也是他的朋友赞哗。根據(jù)我們對(duì)模型理解的不同雷则,也可以說(shuō)這種關(guān)系是無(wú)向的。
GraphAware和Neo Technology是合作公司肪笋。因?yàn)檫@是一個(gè)相互的關(guān)系月劈,我們可以分別構(gòu)建雙向或者無(wú)向的關(guān)系模型。
這里寫(xiě)圖片描述

但是藤乙,因?yàn)镹eo4j并不支持雙向或者無(wú)向的關(guān)系猜揪,初學(xué)者往往會(huì)構(gòu)造出下面這樣的結(jié)構(gòu)來(lái)。這和上述冰球的模型犯了同樣的錯(cuò)誤:多了一種不需要的關(guān)系坛梁。
這里寫(xiě)圖片描述

Neo4j的API允許開(kāi)發(fā)人員在查詢的時(shí)候完全忽略關(guān)系的方向而姐。比如,在Neo4j的查詢語(yǔ)言Cypher中划咐,查詢Neo Technology的全部合作公司的語(yǔ)句可以大致如下:
MATCH (neo)-[:PARTNER]-(partner)

查詢結(jié)果會(huì)和下面兩條語(yǔ)句執(zhí)行并合并后的結(jié)果完全一致:
MATCH (neo)-[:PARTNER]->(partner)
and MATCH (neo)<-[:PARTNER]-(partner)

因此拴念,構(gòu)建合作關(guān)系正確(至少是最有效)的方式就是用一個(gè)單向的關(guān)系,而且方向可以任意褐缠。

這里寫(xiě)圖片描述

結(jié)論
在Neo4j中政鼠,遍歷關(guān)系的任何一個(gè)方向所需的時(shí)間是相同的。進(jìn)一步說(shuō)队魏,方向可以被完全忽略公般。因此,當(dāng)單向的關(guān)系可以同時(shí)代表另一個(gè)方向的關(guān)系的時(shí)候,沒(méi)有必要同時(shí)創(chuàng)建兩個(gè)方向的關(guān)系官帘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞬雹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刽虹,更是在濱河造成了極大的恐慌酗捌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件状婶,死亡現(xiàn)場(chǎng)離奇詭異意敛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)膛虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钓猬,“玉大人稍刀,你說(shuō)我怎么就攤上這事〕ú埽” “怎么了账月?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)澳迫。 經(jīng)常有香客問(wèn)我局齿,道長(zhǎng),這世上最難降的妖魔是什么橄登? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任抓歼,我火速辦了婚禮,結(jié)果婚禮上拢锹,老公的妹妹穿的比我還像新娘谣妻。我一直安慰自己,他們只是感情好卒稳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蹋半。 她就那樣靜靜地躺著,像睡著了一般充坑。 火紅的嫁衣襯著肌膚如雪减江。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天捻爷,我揣著相機(jī)與錄音辈灼,去河邊找鬼。 笑死役衡,一個(gè)胖子當(dāng)著我的面吹牛茵休,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榕莺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俐芯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钉鸯,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吧史,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后唠雕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贸营,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年岩睁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞脂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捕儒,死狀恐怖冰啃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刘莹,我是刑警寧澤阎毅,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站点弯,受9級(jí)特大地震影響扇调,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抢肛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一狼钮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雌团,春花似錦燃领、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至灵寺,卻和暖如春曼库,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背略板。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工毁枯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叮称。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓种玛,卻偏偏與公主長(zhǎng)得像藐鹤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赂韵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容