儘管我沒有使用Neo4j,而是使用了TitanDB(IBM Graph),但由於我是圖形數據庫的新手,因此我現在使用Neo4j文檔中建議的模式建模了一個基本的新聞源。此數據模型是否適合TitanDB中的基本新聞Feed?
http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html
在充分閱讀所有的文檔,我知道這些數據庫的運作方式之間的幾個關鍵差異。
在鏈接描述的模型,每一個用戶的posts
被存儲作爲由edges
彼此連接vertexes
,形成從各user
頂點發出出的狀態更新的一長列。
雖然這使得給定的Neo4j的capabalities我知道TitanDB具有vertex-centric
索引的能力,在這裏詳細描述的感覺:
http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html
現在我想確保查詢特定用戶的進給量最佳的,有很多用戶的大圖,以及大量永久保留的帖子或狀態更新。因此,我想避免必須遍歷所有用戶朋友的所有帖子,然後才能最終訂購和限制它們,只是爲了獲得用戶Feed的前15個項目。
因此,我不能確定,如果Neo4j的文檔中描述的模型是真的TitanDB使用最好的一個,所以我的問題如下:
- 是對Neo4j的文檔優化中描述的模型在TitanDB中快速搜索新聞提要?
- 如果是這樣,我需要創建哪些索引才能以最佳方式檢索用戶Feed?
- 如果沒有,我會更好每個
post
頂點直接連接到誰張貼的user
,並在每個posted
邊緣的time
財產使用vertex-centric
指數?
我真的在建模,索引和檢索泰坦數據庫中的基本新聞傳播的一些一般建議。提前致謝。
感謝Benjamin - 爲了讓我清楚,您的索引建議是否與Neo4j文檔模型一起使用?或者是否需要我通過自己的邊緣將頂點後綴直接附加到用戶頂點,而不是按照我的建議作爲鏈接列表?此外,這是一個'頂點'索引,橫跨兩個屬性(後頂點的userid和後頂點的時間戳),還是'邊緣'索引? (連接邊的時間戳)。很抱歉,如果問題看起來很平凡,Graph數據庫在概念上是相當變化的。 – gordyr
對不起,我的意思是第一組括號中的以下內容:(用戶頂點中的用戶標識和帖子頂點中的時間標記) – gordyr
您好,我建議您不要使用鏈表方式,而是直接使用直接邊緣。關於索引:假設您在Post頂點中包含了一個用戶標識,它將只是該元素的索引。指數不能跨越多個元素。 –