Как я могу использовать хранимые процедуры в DocumentDB, которые используют несколько коллекций

Я использую C# для запуска операций на экземпляре DocumentDB и мне очень нравится до сих пор. У меня много кода на C#, который запрашивает несколько коллекций для создания новых коллекций из отношений между первыми двумя коллекциями.

Могу ли я по существу перенести свою логику на сервер в хранимых процедурах? Я попытался ответить на этот вопрос для себя, но все, что я мог найти, это документация о том, как получить коллекцию, связанную с хранимой процедурой. Итак, я подумал, могу ли я вызвать хранимую процедуру, которая вызвала другую хранимую процедуру, передав первую коллекцию?

Можно ли как-нибудь ссылаться на несколько коллекций в хранимой процедуре?

Будет ли легче найти более простой способ узнать, что принадлежит каждой "коллекции", если я храню все в одной коллекции?

1 ответ

Решение

Хранимые процедуры выполняются внутри одной коллекции (или одного раздела в многораздельной коллекции). Вызов хранимой процедуры может работать только с данными в этой коллекции / разделе.

Когда я вижу этот вопрос, я обычно задаюсь вопросом, думаете ли вы о коллекциях как о прямом аналоге таблиц из мира SQL или даже об использовании слова "коллекция" из мира MongoDB. В DocumentDB лучше не разделять ваши данные по типам, а смешивать данные разных типов в одной коллекции и отделять их по некоторым другим границам горизонтального масштабирования, таким как арендатор, пользователь, география и т. Д. Если вы это сделаете, пока ваш хранимая процедура не должна пересекать границы арендатора, пользователя или географии, она сможет предоставить вам полностью ACID кросс-документные транзакции.

Другие вопросы по тегам