2013-12-10 37 views
6

我的用例是對資源進行審計日誌記錄。討論考慮一個非常簡單的模式:資源名稱,訪問時間戳和訪問用戶名。有了所有的NoSQL選項,我想知道哪種解決方案最適合我的用例?哪個NoSQL數據庫最適合追加審計日誌用例?

資源名稱被保存在圖形數據庫(Neo4j)中,儘管我們可以將頂點和邊添加到連接到資源頂點的審計頂點,但審計信息可能很大,我擔心會污染相對簡單的圖。

我目前正傾向於一個文檔數據庫,如MongoDB或Couchbase,其中每個資源都有自己的文檔,審計日誌是該文檔中的一個簡單數組,附加到該文檔中。我擔心隨着審計日誌變長,整個文檔必須在應用程序服務器和數據庫之間交換,I/O可能會成爲問題。我認爲最大限度地減少這種情況的一個靈魂就是使每個審計條目都是自己的文檔,並將其ID附加到父資源文檔數組中。

搜索審計日誌目前不是必需的,但是對於文檔數據庫,我覺得有一個很好的途徑可以在以後集成Elastic Search。

看來Redis可能會更適合我的用例,但數據持久性並不像其他解決方案那樣嚴格。

從概念上說,我想我正在尋找任何支持「附加」API方法調用而不需要交換太多信息的NoSQL解決方案。具有諷刺意味的是,這基本上是一個SQL INSERT語句,但是我擔心傳統的RDBMS不能滿足我的規模要求。審計表會變得非常快,我寧願利用最新和最好的NoSQL方法來進行分區/分片。

任何對日誌附加用例的深入瞭解都將受到讚賞!

這些似乎是相似的,所以問題:

Database design for audit logging

NoSQL or RDBMS for audit data

感謝, 賈裏德

+0

每秒多少次請求?你需要多長時間保存數據?老實說,postgres或mysql會很好,只是存檔舊數據。分析數據也會更容易。 – scalabilitysolved

+0

偉大的問題,但可悲的是沒有體面的反應,你最終選擇哪種解決方案? –

回答

0

Apache Kafka是登錄爲本,高度可擴展的,並且允許訂閱在多個消息不同的方式。