我使用Datomic存儲由其它系統產生的事件的凸起(在此情況下的預測可以被視爲在一個Datomic實體)。這些事件有一個與它們相關的時間戳,告訴事件何時(例如)創建。這顯然不同於Datomic在投影中存儲新屬性(基於事件)時將分配給事務的事務時間。我的應用程序的用戶對交易時間不感興趣,而是對事件時間感興趣。我之所以首先使用Datomic,是爲了能夠在特定時間獲取實體(或查詢數據庫)。但是這次應該是而不是是Datomic交易時間,而是事件時間。例如,我希望能夠在此基礎上事件時間獲得一個實體:
(datomic/entity (datomic/as-of db event-time) id)
可能的解決方案,我想的
一個想法是設定:db/txInstant
每筆交易的事件發生的時間,但我一直在做advised這不是一般原則。此問題的另一個潛在問題是,您不能分配比模式更舊的:db/txInstant
(在我的應用程序中,將是)。解決這個問題的方法是將創建模式的事務設置爲早期的:db/txInstant
。
問題
怎樣一個典型的處理事件的時間,而不是交易時間Datomic? 「可能的解決方案」如何維持?
聽起來很合理,但是如果我這樣做,我怎麼能在特定的事件時間獲得實體? – Johan
爲了闡明我的意思,我對數據庫在特定時刻的外觀如何感興趣,此時應該是事件時間而不是Datomic處理/交易時間。 – Johan