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