Мне кажется, изначальный посыл ложен. Вернее, неполон.
Большое количество проверок, охватывающих несколько агрегатов, в сложной системе быть, конечно, может.
Но тут есть важный нюанс - такие проверки концептуально не могут предполагать сильную мгновенную согласованность (strong immediate consistency) данных между агрегатами.
Если такая согласованность нужна в рамках всей модели целиком, то вы получите один огромный агрегат (или пару очень больших) на всю систему, что совершенно не хорошо, в том числе по описанным Вами причинам. В таком случае, конечно, будет разумнее использовать описанный Вами подход. Он в целом более эффективен, пока системе не нужно серьезное масштабирование.
Но когда приходится переступить через порог под названием "распределенная система хранения", и strong immediate consistency становится невозможна в принципе, и появляется необходимость применять сложные механизмы поддержания согласованности, вот тут то и возникают аргументы в пользу разделения системы на агрегаты, поверх которых уже и строятся двухфазные коммиты, саги и прочее счастье распределенной разработки.
Не хочу спорить с субъективными высказываниями, но, что касается объективного, то
Сложность поиска константна. И не при идеальных условиях, а всегда.
Нет. Только если у Вас количество коллизий = 0. В худшем же случае — линейная. Сложность поиска в Dictionary линейно зависит от количества коллизий для конкретного ключа. Больше елементов — больше коллизий.
А еще она позволяет устройствам с (AM)OLED экономнее расходовать батарею. Причем существенно. На Android Developer Summit в прошлом году Google отчитались по этому поводу. Расход батарейки на экран в YouTube с темней темой и 100% яркостью был на 60% меньше, чем со светлой темой.
Информация
В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Дата рождения
Зарегистрирован
Активность
Специализация
Бэкенд разработчик, Архитектор программного обеспечения
Мне кажется, изначальный посыл ложен. Вернее, неполон.
Большое количество проверок, охватывающих несколько агрегатов, в сложной системе быть, конечно, может.
Но тут есть важный нюанс - такие проверки концептуально не могут предполагать сильную мгновенную согласованность (strong immediate consistency) данных между агрегатами.
Если такая согласованность нужна в рамках всей модели целиком, то вы получите один огромный агрегат (или пару очень больших) на всю систему, что совершенно не хорошо, в том числе по описанным Вами причинам. В таком случае, конечно, будет разумнее использовать описанный Вами подход. Он в целом более эффективен, пока системе не нужно серьезное масштабирование.
Но когда приходится переступить через порог под названием "распределенная система хранения", и strong immediate consistency становится невозможна в принципе, и появляется необходимость применять сложные механизмы поддержания согласованности, вот тут то и возникают аргументы в пользу разделения системы на агрегаты, поверх которых уже и строятся двухфазные коммиты, саги и прочее счастье распределенной разработки.
Нет. Только если у Вас количество коллизий = 0. В худшем же случае — линейная. Сложность поиска в Dictionary линейно зависит от количества коллизий для конкретного ключа. Больше елементов — больше коллизий.