Информация об изменениях

Сообщение Re: Подсчёт количества привязанных сущностей от 15.07.2021 20:57

Изменено 15.07.2021 21:01 swame

Re: Подсчёт количества привязанных сущностей
Здравствуйте, rosencrantz, Вы писали:

R>Есть например аппликейшн для управления данными об учениках в школах. Например Mysql база, в которой хранится иерархия: Schools, Classes, Students. Ожидаемые объёмы данных скажем 1000 школ x 1000 классов на школу x 100 студентов на класс. Т.е. всего 1000 школ, 1млн классов, 100млн студентов. Редактировать-добавлять-удалять можно как отдельные записи через CRUD UI, так и балком — целый класс, целую школу, прям сразу вообще всё — это например через аплоад CSV файлов. Когда удаляешь школу, удаляются все её классы и все ученики из этих классов. Когда удаляешь класс, удаляются все ученики.


R>В аппликейшне при этом есть несколько страничек, на которых нужно показывать актуальную статистику:


R>1. Сколько вообще всего школ, классов и учеников

R>2. Глядя на школу — сколько в ней классов и учеников
R>3. Глядя на класс — сколько в нём учеников

R>Данные нужно показывать моментально. К этим страничкам обращаются параллельно по 100 запросов в секунду.


R>Как бы вы стали реализовывать функциональность подсчёта? Стали бы использовать триггеры в БД или стали бы делать изменение счётчиков в коде? Если статистике разрешается отставать от данных скажем на 1 час — как это повлияло бы на решение?


При таком объеме данных можно даже пофамильные списки учеников полностью уместить в 2-3 Гб оперативной памяти 32 битного процесса.
Но для задачи просмотра в WEБ приложении даже этого не надо, если обновлять статические странички по школам и классам.
Re: Подсчёт количества привязанных сущностей
Здравствуйте, rosencrantz, Вы писали:

R>Есть например аппликейшн для управления данными об учениках в школах. Например Mysql база, в которой хранится иерархия: Schools, Classes, Students. Ожидаемые объёмы данных скажем 1000 школ x 1000 классов на школу x 100 студентов на класс. Т.е. всего 1000 школ, 1млн классов, 100млн студентов. Редактировать-добавлять-удалять можно как отдельные записи через CRUD UI, так и балком — целый класс, целую школу, прям сразу вообще всё — это например через аплоад CSV файлов. Когда удаляешь школу, удаляются все её классы и все ученики из этих классов. Когда удаляешь класс, удаляются все ученики.


R>Данные нужно показывать моментально. К этим страничкам обращаются параллельно по 100 запросов в секунду.


R>Как бы вы стали реализовывать функциональность подсчёта? Стали бы использовать триггеры в БД или стали бы делать изменение счётчиков в коде? Если статистике разрешается отставать от данных скажем на 1 час — как это повлияло бы на решение?


При таком объеме данных можно даже пофамильные списки учеников полностью уместить в 2-3 Гб оперативной памяти 32 битного процесса.
Но для задачи просмотра в WEБ приложение даже этого не надо, если циклически обновлять статические странички по школам и классам.