簡體   English   中英

關於卡桑德拉的泰坦地理數據

[英]Titan geo data on Cassandra

我正在尋找使用Titan來創建可擴展的地理空間數據存儲(我在想R樹)。 在文檔中,有一個GeoShape查詢,文檔說titan可以使用Lucene或ElasticSearch執行地理數據。 但是,看起來這會非常慢,因為在cassandra中遍歷節點本質上是在cassandra中進行連接查詢,這是一個非常糟糕的主意。 我想我可能會誤解數據表示。

我閱讀了Titan數據模型文檔 ,但我仍然不太了解它。 如果所有邊都存儲在Cassandra行中,那么Titan仍然必須在頂點表上“連接”。 解決此問題的一種方法是使列值等於邊屬性數據,然后您可以將頂點數據和邊數據整齊地打包到行中。 但是,當您想要執行超過1個節點的查詢時,這會中斷,我們又會再次回到加入問題。

所以。 Titan是否在Cassandra中模擬連接查詢? - 和 - 在這些條件下地理查找的性能如何?

我認為這個問題將邊緣遍歷與地理空間索引查找混為一談。 它們在API和實現級別都是分開的。 索引未在數據模型圖片中示出。

讓我們更具體一點。 假設我使用Murmur3Partitioner或RandomPartitioner與ES和Cassandra一起運行Titan。 我在邊緣稱為“地點”的ES地理空間索引,如“入門”頁面中所述 通過地理空間查詢(例如“入門”文檔中的“WITHIN”)查找邊緣,首先點擊ES。 ES返回ID Titan可以用來快速查找Cassandra中相關的頂點/邊緣數據,而無需對關系連接進行模擬。

地理空間數據的這些邊緣查找的成本應該大致相當於ES的WITHIN實現(我認為委托給Spatial4j)的成本,加上Titan在獲取ID后對Cassandra進行的查找,其數量應大致為線性。 ES發現的邊緣。 這只是背后的估計,所以請大量使用它。

在我通過地理匹配獲得邊緣之后,如果我想在集合中的每個邊緣附近運行任意遍歷,那么我將看看在頭/尾頂點上生成MultiQuery並啟用數據庫級緩存。 如果查詢未命中緩存或緩存已冷/禁用,則Titan仍會嘗試在可能的情況下檢索遍歷在每個頂點的單個Cassandra切片中所關注的所有邊。 如果您擔心Titan的邊緣遍歷效率,那么您可能會發現帶有Titan的Boutique Graph Data很有趣。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM