Re[3]: CosmosDB аггрегирование
От: Jericho113 Украина  
Дата: 08.09.21 13:39
Оценка: 117 (1)
Здравствуйте, Sinclair, Вы писали:

S>Здесь вообще народу мало. А те, кто есть — вообще в основном по RDBMS специализируются.

S>Будет здорово, если вы отпишете, как решили проблему. В целом она выглядит как типичная причина того, что люди берут не NoSQL, а классические ACID-СУБД

Ну, зачастую, нужно было глубже залезть в доки по CosmosDB и посмотреть что предлагается.
Т.к NoSQL вообще для меня terra incognita то пришлось почитать и поэкспериментировать немного.

Решил через триггер который вызывается при добавлении/ изменении объекта и пересчитывает аггрегат статистики
Триггеры пока что только на JS можно писать но это не принципиально.
Javascrip API

Т.к. все изменения для одного объекта по его partition key происходят транзакционно и триггер принимает участие в той-же транзакции
то изменения аггрерированных данных можно проводить безболезненно..

Run CosmosDB Post-triggers

Но есть одна особенность — при добавлении/изменении объекта в CosmosDB нужно явно в этой комманде (C# код) указать необходимость вызова триггера..
Это с одной стороны не очень приятно — всегда нужно помнить про такую особенность, но мне не сильно критично т.к. вся работа с CosmosDB сосредоточена
в одном микросервисе.

Пока что мои эксперименты показали что в 5-7 одновременных запросов статистика собирается корректно.
Может конечно что-либо упустил но пока что все выглядит неплохо.
Да, в SQL Server это все делается намного проще по сравнению с CosmosDB но был выбран "NoSQL way".

Немного конечно сумбурно написал но если почитать инфу по ссылкам то все становится довольно просто.

PS: А вот есть на RSDN форум посвященный Azure/AWS/GCP и именно разработке для них а то в .net вроде бы не по теме писать про такое да и "Облачные технологии"
судя по тому что я там нахожу больше про DevOps нежели про разработку.
NetDigitally yours ....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.