我是Cassandra的新手,我想集中討論在Cassandra中存儲加權圖的時間序列,其中邊權重每次增加,但也隨時間而變化。例如,在Cassandra中存儲加權圖時間序列
w_ij(t+1) = w_ij(t)*exp(-dt/tau) + 1
我的第一槍涉及兩個CQL V3表:
首先,我通過連接圖的ID創建一個分區鍵和兩個節點入射在特定邊緣,例如G-V1-V2。我這樣做是爲了能夠在下面描述的組合鍵的第二個組件上使用「ORDER BY」指令,它是類型的時間戳。將此字符串稱爲EID,用於「邊緣ID」。
TABLE 1 - a time series of edge updates - PRIMARY KEY: EID, time, weight TABLE 2 - values of "last update time" and "last weight" - PRIMARY KEY: EID - COLUMNS: time, weight
在每個刻度,我獲取和更新存儲的時間和權重值在表2予使用這些值來計算時間增量和新的重量。然後我在表1中插入這些值。
此策略中是否存在可怕的低效率? 應該如何做?我已經知道表2的更新過程不是冪等的,可能會導致不一致,但我可以暫時接受。
編輯:我可以做的一件事是將兩個表合併成一個時間序列表。