由于我之前對(duì)數(shù)據(jù)庫是一點(diǎn)基礎(chǔ)知識(shí)都沒有,所以我先去看了看SQL的基礎(chǔ)教程忱叭,我先了解了關(guān)系型數(shù)據(jù)庫的基本知識(shí)和一些基本的操作語句
接下來去看了圖數(shù)據(jù)庫的書,先了解一下概念,然后在OS上面下載一個(gè)neo4j(屬于nosql)的練習(xí)一下移稳。
首先明確一下,圖書庫庫氓辣,不是儲(chǔ)存圖片的數(shù)據(jù)庫秒裕,而是用圖這種建模方式的數(shù)據(jù)庫,可能我還是認(rèn)識(shí)地不夠深入钞啸。但是這種數(shù)據(jù)庫不像SQL關(guān)系型數(shù)據(jù)庫一樣的儲(chǔ)存模式几蜻,所以在歷遍大數(shù)據(jù)的時(shí)候,會(huì)更加節(jié)約時(shí)間体斩。
在深度為5的時(shí)候梭稚,SQL的join 操作會(huì)顯示出低效率。
舉個(gè)例子絮吵,來說明Neo4J的速度快的秘密就在于數(shù)據(jù)結(jié)構(gòu)中(圖形的局部性是的歷遍的速度非郴】荆快)(摘自Neo4j實(shí)戰(zhàn))
如果你在一個(gè)小教室,有人問你周圍5米之內(nèi)有多少人蹬敲,你會(huì)站起來看一下
如果你在一個(gè)大教室暇昂,有人問你周圍5米之內(nèi)有多少人莺戒,你也是站起來看一下
如果你在一個(gè)超大禮堂,有人問你周圍5米之內(nèi)有多少人急波,你還是站起來看一下
時(shí)間是一樣的从铲,但是關(guān)系型數(shù)據(jù)庫的查詢,就是得數(shù)一數(shù)整個(gè)超大禮堂有多少人澄暮,然后刪除那些不在你身邊的人名段,這樣速度就慢了
圖形是最普遍的自然結(jié)構(gòu),也是人類很容易理解的結(jié)構(gòu)
neo4j是一個(gè)無架構(gòu)數(shù)據(jù)庫泣懊,在開始添加數(shù)據(jù)之前伸辟,你并不需要定義表和關(guān)系。一個(gè)節(jié)點(diǎn)可以具有你喜歡的任何屬性馍刮,任何節(jié)點(diǎn)都可以與其他任何節(jié)點(diǎn)建立關(guān)系信夫。
它是對(duì)你存入數(shù)據(jù)的一種描述。 而不是用一個(gè)規(guī)則來限制你的數(shù)據(jù)存入的內(nèi)容
Cypher Neo4j的查詢語言卡啰。
http://blog.csdn.net/wangweislk/article/details/47661863 入門可看
http://www.cnblogs.com/hwaggLee/p/5959716.html
在 neo4j 中創(chuàng)建節(jié)點(diǎn)
create (a) 創(chuàng)建空節(jié)點(diǎn)
create (a:Person) 創(chuàng)建標(biāo)簽(可以理解為類)為Person的節(jié)點(diǎn)
create (a:Person {name:‘Kaine‘,age:28}) 創(chuàng)建標(biāo)簽為Person忙迁,屬性name值為Kaine,屬性age值為28的節(jié)點(diǎn)
在neo4j 中創(chuàng)建關(guān)聯(lián)
match (a),(b)
where a.name=‘Kaine‘ and b.name=‘Sharon‘
create (a)-[r]->(b) 創(chuàng)建a節(jié)點(diǎn)和b節(jié)點(diǎn)的路徑碎乃,此時(shí)變量r即代表關(guān)聯(lián)姊扔,它也可以有標(biāo)簽
查詢關(guān)鍵字
match:用來匹配一定模式,可以是簡單的節(jié)點(diǎn)梅誓、關(guān)聯(lián)恰梢,也可以是復(fù)雜的路徑
where:用來限定條件,一般是限定match中的出現(xiàn)變量的屬性return:返回結(jié)果
start:開始節(jié)點(diǎn)梗掰,一般用于有索引的節(jié)點(diǎn)或者關(guān)聯(lián)