Есть база данных с товарами и историей по ним. По мере роста базы поиск по базе стал занимать очень много времени, (последний цикл до 10 дней может идти). Как можно оптимизировать работу по агрегации данных без значительного увеличения мощности серверов? в идеале получить все операции за 12 часов Модератор: код только текстом
Ммм... Можно данные разбить по периодам. Месяцы. Годы. Кварталы. И считать агрегации только по последнему
закрытому периоду. А по старым - считать не надо. Потому что уже посчитаны. Главное сохранить куда-то.
Типа analytic_table.
Раньше эта техника называлась OLAP. А щас ее вроде бы уже не используют. Заменили на BigData.
Те кто побогаче сливают исторические бизнес факты во внешние файлы. Apache Orc, Parquet ээ ,, да много их
видов бывает. И загружают в хранилища типа S3/MS Blob в виде файлов. (Bronze Level) И потом обрабатывают их уже для бизнес-аналитиков. Строют модели обучения. И прочее. И агрегации там-же. Это уже
наверное (Gold Level).
Но в вашем случае для единой БД пока проще создать еще одну табличку с агрегациями. Не все
по деньгам тянут покупку BigData технологий.
BrokeAgain, быстро не разберетесь. Это отдельная наука.
По повду технологий. Кастомер покупает вот это. https://www.databricks.com/
Оно работает поверх облаков AWS или Azure. Формула биллинга очень сложная.
Ее можно узнать не заранее а в конце месяца обычно. Зависит от количества
одновременно работащих нод Databricks. Ноды влияют на скорость агрегаций (и не только).
Термин бронза вы не так поняли. Это не про оплату. А про движение данных в pipeline.
Вкратце. Если вы загрузили в дисковое хранилище сырые данные. Log files. TCP dump.
Или просто какие-то документы или CSV, JSON, XML. Это считается бронза. Если бронзу
загрузить во внутренние таблички Databricks. Это серебро. Появилась schema и типизация.
А если вы уже обработали серебро и опубликовали в третий слой хранения тоже в таблицах
и этот третий слой - готов для презентации на UI - то это считаеться Gold. Хотя деление
весьма условное и можно нарезать еще кучу слоев.
для автора вопроса поясню, что облачные решения это не решение всех твоих проблем, зачастую это решение проблем если они внезапно совпали с уже решенными кем то.
Единственный хоть и туманный бонус облачных решений - это когда их использование не постоянно (редкое) а оплата за операции а не время, и нет необходимости разворачивать и поддерживать необходимые инструменты самостоятельно (часто облачные решения делают несовместимыми ни с чем чтобы вендорлочить клиентов на себе). На старте бывает, так получается, что получается выгоднее, но когда втягиваешься, обратно вылезти из ловушки становится поздно.
Лучше пока решай свою задачу сам, без понимания что и как это решать, использовать сторонние инструменты очень вредно (за эту ошибку будешь платить дорого), да в любом случае свое решение будет дешевле в целом во времени (а не сию секунду).