С MongoDB возможно ли получать уведомления о сторонних изменениях через .NET Reactive Extensions (RX)?

1

Мне интересно, может ли кто-нибудь узнать, можно ли получать живые уведомления о любых изменениях в базе данных MongoDB через Reactive Extensions (RX) в С#?

Это означает, что любая сторонняя сторона может редактировать базу данных MongoDB, и служба может отслеживать изменения и мгновенно реагировать на них в режиме реального времени.

Что я пробовал

Я провел много времени, исследуя это как в Google, так и в других местах, и прошел через все пакеты NuGet, которые могут быть связаны. Единственный матч, который я смог найти, включал Java, и был на немецком языке.

Обновление 1

Глядя на хвостовые курсоры, здесь:

http://www.warski.org/blog/2012/11/event-streaming-with-mongodb/

  • 0
    Это скорее вопрос MongoDB .... если у вас есть события, публикуемые из MongoDB, вы можете просто использовать Observable.Create
  • 0
    @Chistopher Harris Было бы замечательно, если бы у меня была возможность контролировать каждый процесс, который пишет в базу данных MongoDB, но я этого не делаю. Может быть сторонняя запись в базу данных, то есть ручное редактирование человеком с использованием RoboMongo.
Показать ещё 2 комментария
Теги:
system.reactive

1 ответ

1
Лучший ответ

Как отслеживать сторонние изменения в данных MongoDB

Я не знаю о конкретной реализации Reactive Extensions, однако общий подход (как и в MongoDB 2.6) заключается в создании хвостового курсора на ограниченном наборе - тот же подход, который был сделан в немецком блоге, на который вы ссылались.

С помощью хвостового курсора на плагине репликации вы получите поток изменений во всех базах данных, которые вы можете фильтровать по пространству имен и операции (вставить, удалить, обновить) по мере необходимости.

Что делать, если я не использую набор реплик?

Хотя oplog обычно создается только для целей репликации, если у вас есть автономный сервер MongoDB, вы также можете запустить его как набор реплик одного узла, единственным преимуществом которого является oplog.

По умолчанию размер oplog на 64-битных системах (кроме OS X) будет составлять 5% свободного места на диске. Вы можете использовать параметр конфигурации oplogSize чтобы указать другой размер всплывающего окна. Если вы не собираетесь использовать репликацию, возможно, вы уменьшите размер oplog до более подходящего для вашего уведомления об изменении. Если вы не уверены в соответствующем размере, я бы ушел по умолчанию, а затем, следуя инструкциям, изменил размер Oplog, если это необходимо.

Чтобы преобразовать ваш автономный сервер в единую репликацию узлов, вам необходимо:

  • Добавьте replSet конфигурации replSet с уникальным именем для вашего набора реплик (и, необязательно, oplogSize если вы хотите, чтобы начальный размер отличался от значения по умолчанию)
  • Перезагрузите сервер MongoDB, чтобы это изменение вступало в силу
  • Как один раз в оболочке mongo, запустите rs.initiate() чтобы создать конфигурацию набора реплик и предустановить oplog
  • 2
    Вы также можете захотеть посмотреть / upvote SERVER-13932: Изменить API потока уведомлений в трекере проблем MongoDB. Это предложение функции для API-интерфейса уведомлений на сервере, которое может обеспечить абстракцию при непосредственном чтении журнала операций.
  • 0
    Это было бы эквивалентно функциональности Sql Service Broker в том, что любое приложение может получать уведомления о любых изменениях в сторонней таблице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню