HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: субд, data science, принципы, data engineer, инженеры данных, оптимизация, производительность</p>
1 <p>Теги: субд, data science, принципы, data engineer, инженеры данных, оптимизация, производительность</p>
2 <p>В основе современных аналитических СУБД и распределённых систем обработки данных лежит<strong>ряд ключевых принципов</strong>. Если<strong>Инженер Данных</strong>сможет постичь их суть и успешно использовать, то он постигнет<strong>дзен</strong>, обретёт спокойствие и уверенность в завтрашнем дне.</p>
2 <p>В основе современных аналитических СУБД и распределённых систем обработки данных лежит<strong>ряд ключевых принципов</strong>. Если<strong>Инженер Данных</strong>сможет постичь их суть и успешно использовать, то он постигнет<strong>дзен</strong>, обретёт спокойствие и уверенность в завтрашнем дне.</p>
3 <p>Эти<strong>принципы</strong>формулируются предельно просто: • параллельная обработка; • оптимальное хранение данных (согласно сценариям использования); • управление ресурсами и группами пользователей; • резервирование и репликация данных; • мониторинг производительности и своевременное устранение проблем.</p>
3 <p>Эти<strong>принципы</strong>формулируются предельно просто: • параллельная обработка; • оптимальное хранение данных (согласно сценариям использования); • управление ресурсами и группами пользователей; • резервирование и репликация данных; • мониторинг производительности и своевременное устранение проблем.</p>
4 <p>Ниже приведены распространённые способы нарушить эти принципы и тем самым свести преимущества таких систем к нулю.</p>
4 <p>Ниже приведены распространённые способы нарушить эти принципы и тем самым свести преимущества таких систем к нулю.</p>
5 <h3>1. Лишить возможности производить вычисления параллельно</h3>
5 <h3>1. Лишить возможности производить вычисления параллельно</h3>
6 <p>Всё равно, что отказаться от основного принципа работы с большими данными. Чтобы обеспечить параллельную обработку, данные должны быть распределены равномерно между узлами (нодами, воркерами и т. д.). Скорость обработки данных в такой системе будет равна скорости самого медленного из её элементов. И вы чётко увидите это при возникновении узких мест (<strong>bottlenecks</strong>).</p>
6 <p>Всё равно, что отказаться от основного принципа работы с большими данными. Чтобы обеспечить параллельную обработку, данные должны быть распределены равномерно между узлами (нодами, воркерами и т. д.). Скорость обработки данных в такой системе будет равна скорости самого медленного из её элементов. И вы чётко увидите это при возникновении узких мест (<strong>bottlenecks</strong>).</p>
7 <h3>2. Заставить узлы (ноды) обмениваться большими объёмами данных по сети</h3>
7 <h3>2. Заставить узлы (ноды) обмениваться большими объёмами данных по сети</h3>
8 <p>Недостаточно только распределить данные равномерно, необходимо обеспечить максимальную локальность выполнения операций на узлах кластера. Это соединения (JOIN), группировки (GROUP BY), аналитические функции. Кто сказал<strong>Map Side Join</strong>? Для этого нужно знать (или хотя бы предполагать), как ваши данные будут использоваться (предикаты для WHERE, JOIN ON, колонки для GROUP BY и т. д.).</p>
8 <p>Недостаточно только распределить данные равномерно, необходимо обеспечить максимальную локальность выполнения операций на узлах кластера. Это соединения (JOIN), группировки (GROUP BY), аналитические функции. Кто сказал<strong>Map Side Join</strong>? Для этого нужно знать (или хотя бы предполагать), как ваши данные будут использоваться (предикаты для WHERE, JOIN ON, колонки для GROUP BY и т. д.).</p>
9 <h3>3. Постоянно обрабатывать лишние объёмы данных</h3>
9 <h3>3. Постоянно обрабатывать лишние объёмы данных</h3>
10 <p>Тождественно расходованию драгоценных ресурсов впустую. Чтобы читать только набор данных, максимально приближенный к запрашиваемому, данные можно<strong>упорядочить</strong>(отсортировать) и<strong>поделить на секции</strong>(партиции).</p>
10 <p>Тождественно расходованию драгоценных ресурсов впустую. Чтобы читать только набор данных, максимально приближенный к запрашиваемому, данные можно<strong>упорядочить</strong>(отсортировать) и<strong>поделить на секции</strong>(партиции).</p>
11 <h3>4. Предоставить карт-бланш на доступ к ресурсам</h3>
11 <h3>4. Предоставить карт-бланш на доступ к ресурсам</h3>
12 <p>В рамках кластера действует несколько групп пользователей и процессов, обладающих разными приоритетами. Если один пользователь или процесс съест все ресурсы системы, остальные не получат ничего.</p>
12 <p>В рамках кластера действует несколько групп пользователей и процессов, обладающих разными приоритетами. Если один пользователь или процесс съест все ресурсы системы, остальные не получат ничего.</p>
13 <h3>5. Забыть про сжатие данных</h3>
13 <h3>5. Забыть про сжатие данных</h3>
14 <p>Цитата одного из визионеров систем аналитики: "<em>If you aren't compressing your tables, you are simply leaving money on the table</em>". Существует множество алгоритмов и подходов:<strong>Algorithmic</strong>(LZO),<strong>Multi-value</strong>(Bitmap),<strong>Encoding</strong>(Delta range). Порой можно достичь коэффициентов сжатия в 10-100 раз по сравнению с сырыми данными.</p>
14 <p>Цитата одного из визионеров систем аналитики: "<em>If you aren't compressing your tables, you are simply leaving money on the table</em>". Существует множество алгоритмов и подходов:<strong>Algorithmic</strong>(LZO),<strong>Multi-value</strong>(Bitmap),<strong>Encoding</strong>(Delta range). Порой можно достичь коэффициентов сжатия в 10-100 раз по сравнению с сырыми данными.</p>
15 <h3>6. Подвергнуть OLTP-нагрузке</h3>
15 <h3>6. Подвергнуть OLTP-нагрузке</h3>
16 <p>Нужно помнить, что аналитические системы не предназначены для частых и точечных операций UPDATE, DELETE. Такая нагрузка будет<strong>тратить ресурсы впустую</strong>. Подходы к организации таких операций различны, вплоть до разделения на 2 зоны: для записи (<strong>Write Optimized</strong>) и для чтения (<strong>Read Optimized</strong>). И порой дешевле удалить и записать заново весь кусок данных целиком, чем обновлять одну строку.</p>
16 <p>Нужно помнить, что аналитические системы не предназначены для частых и точечных операций UPDATE, DELETE. Такая нагрузка будет<strong>тратить ресурсы впустую</strong>. Подходы к организации таких операций различны, вплоть до разделения на 2 зоны: для записи (<strong>Write Optimized</strong>) и для чтения (<strong>Read Optimized</strong>). И порой дешевле удалить и записать заново весь кусок данных целиком, чем обновлять одну строку.</p>
17 <h3>7. Забыть про резервирование</h3>
17 <h3>7. Забыть про резервирование</h3>
18 <p>Организация репликации данных (хранении копий) и регулярных бэкапов окажет незаменимую помощь при возникновении непредвиденных ситуаций и выходе из строя узлов и дисков.</p>
18 <p>Организация репликации данных (хранении копий) и регулярных бэкапов окажет незаменимую помощь при возникновении непредвиденных ситуаций и выходе из строя узлов и дисков.</p>
19 <h3>8. Пренебрегать мониторингом и анализом</h3>
19 <h3>8. Пренебрегать мониторингом и анализом</h3>
20 <p>Без инструментов и методов мониторинга система превратится в<strong>Чёрный Ящик</strong>, в котором не представляется возможным понять, что происходит внутри. При возникновении проблем определённые метрики и показатели укажут на корневые причины, а также способы их устранения.</p>
20 <p>Без инструментов и методов мониторинга система превратится в<strong>Чёрный Ящик</strong>, в котором не представляется возможным понять, что происходит внутри. При возникновении проблем определённые метрики и показатели укажут на корневые причины, а также способы их устранения.</p>
21 <p><em>Все эти рецепты будем подробно изучать и разбирать, и, что самое главное, самостоятельно применять в рамках<a>курса Data Engineer</a>. Знание ключевых принципов и подходов обеспечит<strong>принятие стратегически правильных и грамотных решений</strong>.</em></p>
21 <p><em>Все эти рецепты будем подробно изучать и разбирать, и, что самое главное, самостоятельно применять в рамках<a>курса Data Engineer</a>. Знание ключевых принципов и подходов обеспечит<strong>принятие стратегически правильных и грамотных решений</strong>.</em></p>
22  
22