2015-06-24 66 views
4

我對Neo4j相當陌生,但在RDBMS設計和開發方面經驗豐富。嘗試瞭解Neo4j中的標籤和屬性之間的區別。我讀過的東西似乎可以區分兩者,事實上,我發現這些術語經常互換使用。我認爲一定是有區別的,否則Neo4j的Wise男人和女人不會創造這兩個...Neo4j中的標籤和屬性有什麼區別?

感謝您的幫助!

回答

4

屬性是一個鍵值對,它是關係或節點的一部分。

標籤是您分配給一個或多個節點的名稱/標籤/類別。 請注意,具有類似標籤的節點不一定共享同一組屬性密鑰。

約束和索引是根據標籤定義的。 (儘管傳統索引API--它們是v2之前的版本,即預標籤 - 只能與屬性一起使用)。

從文件系統的角度來看,常規標籤查找通常比常規屬性查找更快,因爲標籤在其自己的文件(即「標籤存儲」)中存儲和標準化,而不是在所有相應節點上傳播和重複以獲得屬性。

+0

標籤就像您想要放置節點的標籤或類別,它們還允許我們將元數據附加到節點(如索引,約束條件以及未來更多) –

+0

非常感謝您的回覆,我很感謝它。自從我發佈這個問題以來,我也做了一些更多的閱讀,並且對差異有了更好的理解。但是我仍然對他們顯而易見的冗餘感到困惑。當然,我可以創建一個帶有「Person」標籤的節點,以及帶有「Vehicle」標籤的另一個節點,但創建一個名爲「Type」的屬性無法實現同樣的效果,併爲其賦予「人「在一個節點上,」車「在另一個節點上?它看起來像一個標籤只是一個特殊類型的屬性(鍵值對),你基本上有一個「無鍵」值。 – David

+0

此外,我的理解是,您可以爲標籤和屬性分配索引,約束等,那麼將某些內容定義爲標籤而不是屬性的優點是什麼? – David

相關問題