DerbyJS、Racer、MongoDBを使用してログビューアーを開発しようとしています。ログは別のソースによってMongoDBデータベースに継続的に挿入され、ログビューアーはユーザーインターフェイスのログテーブルを自動的に更新できるはずです。
次のようなMongoDBイベントをネイティブに聞く方法があるかどうか疑問に思いました。
- On update
- On delete
これらは、たとえば、OracleDBトリガーに似ています。
、、、およびmongodbの他のデータイベントなどのイベントは、という名前の特別なコレクションを使用してinsert
聞くことができます。またはを使用して、dbインスタンスでレプリケーションを有効にする必要があります。update
oplog
mongod --master
mongod --replicaSet
Oplogは実際には、レプリケーションを実装するためにmongodbによって内部的に使用される上限付きコレクションです。マスター/スレーブレプリケーションを使用している場合は、という名前のコレクションが見つかります。oplog.$main
レプリカセットを使用している場合は、という名前になりますoplog.rs
。
oplogで調整可能なカーソルを使用できます。これは機能するはずです。
Oplogは、事実上、ログ自体です。したがって、ロギングの目的でそれらを個別に保存する必要がない場合があります。ただし、そのサイズは固定されています。完全な古いデータが削除されることを意味します。
local
、oplogが維持されているデータベースを調べていることを確認してくださいこれはmongoskinwikiページからの実例です
skin = require "mongoskin"
db = skin.db "localhost:27017/local"
#//Cursor on oplog (a capped collection) which maintains a history for replication
#//oplog can be used only when replication is enabled
#//Use oplog.rs instead of oplog.$main if you are using replica set
oplog = db.collection "oplog.$main"
cursor = oplog.find({'ns': "icanvc.projects"},{tailable: yes, awaitData: yes})
#//Using cursor.nextObject will be slow
cursor.each (err, log)->
console.error err if err
console.log log if not err
ログビューアアプリケーションへの一般的なアプローチは、ログエントリの上限付きコレクションで調整可能なカーソルを使用することです。
いいえ、https://jira.mongodb.org/browse/SERVER-124アプリケーション側である必要があります。
node.jsのドライバー内にMongoDBのトリガーが組み込まれているかどうかはわかりませんが、おそらくそうではないため、これを自分でコーディングする必要があります。