2014-02-28 31 views
2

我擁有一個使用Neo4j作爲圖形數據庫的應用程序。在Neo4j的數據庫:
我隔,以實現該命令模式和優化我的請求(頁面請求),整個共享同一個數據庫中讀取和寫入(以下CQRS建議)。 (並非兩個不同)DDD /在圖形數據庫中存儲域事件

現在我打算存儲一些域事件,如UserRegisteredEvent等,以便通過在Actor(Akka)中託管的某些事件處理程序進行排隊。

是否有意義存儲在共享數據庫域的事件,在我的情況下,簡單的Neo4j節點?
或者我真的需要一個tierce數據庫,比如MySQL嗎?

我確切說我不需要事件採購與我的解決方案。

+0

雖然看的Neo4j同樣的想法,我恍然大悟,所以想必其他人也必須考慮到這一點?這似乎是非常有意義的,因爲事件與圖形密切相關,因此圖形數據庫似乎是一個明顯的選擇......您是否進一步研究過這個問題? – Schalk

+0

@Schalk最後,我通過與相應節點「模型」建立直接關係來存儲事件。如果事件是「UserCreatedEvent」,我創建一個鏈接到「User」的節點「UserCreatedEvent」。我有一個調度程序,可以檢索標籤「New」(Neo4j 2.0)處理的所有新事件。 – Mik378

回答

3

如果您可以通過某種方式關聯存儲的事件,或者您希望將更多信息添加到可以使用關係或屬性表示的這些事件,則圖形數據庫(在您的案例中是neo4j)是查詢以來的方式將比一個(或不那麼)規範化的rdbms快得多。

在未來也可以很容易地沒有采取SQL的關懷和已經增加了對實體缺少的屬性添加更多的屬性。

從我的角度來看

因此,添加事件節點共享的Neo4j數據庫是一個更好的方法,即使是簡單的節點,因爲查詢被製作成子圖,它不會影響你的業務領域。

+0

這正是我想到的:)謝謝 – Mik378

+0

即使不需要序列化事件,因爲Neo4j是NoSql數據庫,意思是沒有模式。 – Mik378

+1

很高興我們在同一頁:)但請選擇一個答案或將其修改爲wiki。 – amb

1

我對Neo4j並沒有太多的瞭解,但是沒有規則說您必須使用RDBMS作爲事件存儲 - 只要您可以在sequenece中編寫和讀取一組事件(作爲對象序列化/反序列化)基於一個聚合ID然後你的好。