我在圖形數據庫(Cassandra頂部的Titan 0.5.2)中建立了一個數據集,它具有實體(由頂點表示)和兩種類型的屬性 - 實體之間的鏈接(自然由邊表示)和標量屬性像字符串或數字)。有許多屬性類型(現在大約2000),每個屬性類型總是相同的類型(即屬性P1始終是鏈接並且屬性P2始終是字符串),但是每個實體可以具有任何一組屬性,屬性可以是重複(即,實體E1可以具有三個P2值並且沒有P1值)。在圖形DB中建模值 - 頂點還是屬性?
問題是如何最好地模擬P2的標量值 - 它們是否應該是實體頂點E1的一部分?實體頂點E1和屬性頂點P2之間的邊上的屬性? E1和包含實際值的值頂點之間的邊界,標記爲P2?還有別的嗎?我主要對每個解決方案的性能考慮感興趣 - 即,在頂點或「薄」頂點上有很多屬性,但是它們中的很多和邊緣很多,會更好嗎?索引它們有什麼區別嗎? 而且我感興趣的其他方面的考慮方便查詢的,等等這樣的
的數據集是在數以千萬計的實體(但將有可能增長,可能是數億),並且每個頂點通常有大約10-20個屬性,但某些頂點可以具有更多屬性,即數百個或更多。預期的查詢可以使用任何財產,無論它存在的事實和它的價值,還可能需要計算諸如「該實體的最大P2值」或「該實體是否具有滿足一定條件的任何P2值」。查詢計劃由Gremlin類型查詢完成,但如果有幫助,則不會排除使用Titan-only功能。