имеет ли mongodb такие свойства, как триггер и процедура в реляционной базе данных?

как следует из названия, включите фреймворк map-reduce если я хочу вызвать событие для запуска проверки согласованности или операций безопасности до вставки записи, как я могу это сделать с MongoDB?

2 ответов


MongoDB не поддерживает триггеры, но люди создали решения вокруг них, в основном используя oplog, хотя это поможет вам, только если вы работаете с наборами реплик, так как oplog-это закрытая коллекция, которая отслеживает изменения данных для целей репликации. Для решения nodejs см.:https://www.npmjs.org/package/mongo-watch или см. Более ранний поток SO:как прослушать изменения в коллекции MongoDB?

Если вы не обеспокоенный последовательностью, прочитайте о беспокойстве записи в mongoDB. http://docs.mongodb.org/manual/core/write-concern/ Вы можете быть расслабленным или строгим, как вы хотите, установив insert write concern levels, от fire и hope до получения подтверждения от всех членов набора реплик.

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


MongoDb не имеет триггеров или хранимых процедур. Хотя есть решения, которые некоторые использовали для эмуляции поведения, поскольку это не встроенная функция, вам нужно будет решить, эффективны ли решения для вас. Поиск" триггеров и mongodb " должен найти десятки. Все зависит от oplog и реплик.

но, учитывая характер MongoDb и типичную 3-уровневую архитектуру, я ожидал бы, что в точке вставки данных, которая может быть в интернете например, на веб-сервере можно выполнить необходимые проверки согласованности и безопасности. Вы не позволите клиенту, такому как мобильное приложение, напрямую устанавливать данные в коллекцию баз данных без некоторых проверок.

многие драйверы для MongoDb и расширенных библиотек уже имеют встроенные проверки проверки и согласованности, поэтому делать меньше. Использование уникальных индексов для некоторых полей также может обеспечить уровень согласованности, который невозможно выполнить только с помощью драйвера. Посмотрите на звонки, как findAndModify что делать атомарные обновления.