Я работаю с mongodb и представляю возможную стратегию сохранения данных в разных коллекциях, например, в 2.Но, как и транзакционная система, я хочу убедиться, что данные присутствуют в collection1 и collection2 или вообще ничего.
На практике я хочу отслеживать операции, которые выполняются в моем приложении при выполнении чего-либо.Так, например, когда мое приложение сохраняет данные, я хочу также сохранить, чтобы оно выполнило операции вставки, когда изменило данные, я хочу отслеживать операцию изменения и т. Д.
Эти данные операций могли бы быть сохранены как вложенный документ одной коллекции,Например, если я попытаюсь сохранить данные в collection1 , тогда я могу сохранить «вставьте данные операции» в той же коллекции1, что и встраиваемый документ.Если я попытаюсь изменить данные в collection2 , тогда я смогу сохранить «изменить данные операции» в той же самой коллекции2, что и встраиваемый документ, и т. Д. Таким образом, когда я хочу получить «данные вложенного документа операций», я должен запросить collection1, collection2, collection3 и т. д. и т. д. Я думаю, что это дорого.Дальнейшие collection1, collection2, collection3 уже подчеркнуты приложением, поэтому я больше не хочу подчеркивать.
Альтернативно, я могу сохранить «данные операции» в отдельном наборе, например, имя коллекции «oper_coll».Поэтому я могу запросить только «oper_coll» для получения «данных операций», но это означает, что когда я сохраняю данные в collection1, я должен сохранять «данные операций» в «oper_coll» для отслеживания текущей операции.Я хочу, чтобы данные правильно сохранялись в collection1, а операции - в oper_coll.Если что-то идет не так, ничего не происходит, данные не представлены ни в одной коллекции (collection1 и oper_coll).Поэтому мне нужна система транзакций на уровне приложений, потому что я знаю, что mongodb не поддерживает транзакции.
Итак, я хочу реализовать нечто подобное на уровне приложения, потому что мне нужно сохранить данные1 в collection1 и, если все в порядке, сохранить данные2 в collection2.Если что-то пойдет не так, откатите все.
У вас есть идеи?