2014-07-24 46 views
3

我知道neo4j存儲以圖表而非表格結構化的數據。在RDBMS我們將有表的模式,但在neo4j我們將不會有表。只有節點,關係和屬性被定義。那麼在neo4j中有沒有metadata的概念。就像存在關於節點的任何信息,數據庫中的關係?如果是,它在元數據中的存儲方式和存儲方式如何?此外,我們在哪裏可以找到圖形數據庫(位置)的元數據相關的信息neo4j圖形數據庫中的元數據

感謝,

+1

您是否閱讀過[手冊](http://docs.neo4j.org/chunked/milestone/index.html),特別是[關於模式的章節](http://docs.neo4j.org/chunked/里程碑/ graphdb-的Neo4j-schema.html)?其他介紹材料如何[1](http://www.neo4j.org/learn),[2](http://neo4j.com/graphacademy/online-course/),[3](http:// neo4j.com/guides/graph-concepts/),[4](http://neo4j.com/docs/2.0.2/data-modeling-examples/)? – jjaderberg

+0

@jjaderberg,我經歷瞭解釋模式的手冊。但他們在那裏解釋瞭如何使用INDEX和CONSTRAINT創建和使用。所以我看到或期待一些其他的答案。在這裏,我的模式/元數據指的是與索引和約束不同的東西。就像在數據庫中某處的rdbms一樣,表的信息被存儲爲模式文件。 neo4j數據庫以類似的方式在數據庫中的任何文件中存儲節點和屬性的任何信息? – shree11

回答

2

沒有,直接元數據不存在。你可以做的最大限度是查詢所有的結構類型,並在數據庫中存儲一個小的內部圖。

START r=rel(*) 
RETURN type(r), count(*) 
START n=node(*) 
RETURN labels(n), count(*) 

特定的數據庫文件存儲的文件夾data/graph.db在但除了一些指標和密鑰文件它們是二進制和不容易閱讀。

+0

@ ulkas,感謝指導在密碼端獲取節點和關係信息。但是,當我運行上述查詢它給我一個錯誤。在START和RETURN之間詢問WITH關鍵字。即使在寫入後它給我一個錯誤。 – shree11

+0

@ ulkas,感謝指導在密碼端獲取節點和關係信息。當我運行上述查詢seperatatly節點和關係(即第一2lines和最後2lines),我得到的輸出。但是,當我運行上述完整的查詢(一次4線)它給我一個錯誤。在START和RETURN之間詢問WITH關鍵字。即使在寫入WITH後它給我一個錯誤。所以在運行單個腳本後,如何獲得輸出說明節點和關係信息。 – shree11

+0

@ shree11這是因爲這些是2個單獨的查詢。要麼兩次運行它們,要麼嘗試「聯合」它們 – ulkas

4

Neo4J不會以您要查找的方式直接存儲元數據。 NeoProfiler工具正是爲此目的而編寫的。您可以在Neo4J數據庫上運行它,它會盡可能多地提取關於標籤,索引,約束,屬性,節點和關係的信息。這種方式的效果與@ulkas在其他答案中所暗示的查詢相差不大,輸出效果會更好。

更廣泛地說,在RDBMS中,您抽出的模式信息實質上限制了數據庫。這裏的模式就像一套規則;除非符合該模式,否則不能插入數據。在Neo4J中,因爲它非常靈活,即使有一個模式,它也只是記錄那裏的內容,但它不會成爲你可以放入什麼的一系列約束。在任何時候,你都可以插入沒有任何內容的新數據與當前模式有關(除了你不能違反唯一性約束之類的事情)。

如果您希望在neo4j中查看數據庫的等效模式,請查看上面鏈接的neoprofiler。有幾個人寫了關於「metagraphs」的文章 - 也就是說,他們討論將neo4j模式表示爲一個圖本身,例如一個節點引用一個標籤。從那個「標籤節點」的關係出發到其他類型的標籤節點,指定節點之間可以存在哪種關係。例如,標記爲「員工」的節點可能經常與標籤「公司」的節點具有「work_for」關係。

+0

@ Frobber,這個概念已經很好地解釋了,並且將會研究neoProfiler。我非常感謝 – shree11

+0

我知道這是一個老問題,但僅僅爲了增加上面的(好)答案的頂部,另一條路線可能是使用最近發佈的[MindmapsDB](https://mindmaps.io/pages /index.html),這與OP考慮的問題完全一致。充分披露:我爲MindmapsDB工作,但它是一個開源項目,我不想賣東西。 – MiKo

相關問題