0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Тема проекта: Сбор и анализ потоковых данных криптовалют.</strong></p>
1
<p><strong>Тема проекта: Сбор и анализ потоковых данных криптовалют.</strong></p>
2
<p><strong>Цель и задачи проекта</strong></p>
2
<p><strong>Цель и задачи проекта</strong></p>
3
<p>Цель проекта: обработать потоковые данные по криптовалютам и создать интерактивный дашборд.</p>
3
<p>Цель проекта: обработать потоковые данные по криптовалютам и создать интерактивный дашборд.</p>
4
<ol><li>Собрать данные по криптовалютам из потока.</li>
4
<ol><li>Собрать данные по криптовалютам из потока.</li>
5
<li>Сохранить данные в хранилище и собрать витрину.</li>
5
<li>Сохранить данные в хранилище и собрать витрину.</li>
6
<li>Визуализировать данные в виде дашборда.</li>
6
<li>Визуализировать данные в виде дашборда.</li>
7
<li>Сделать выводы по выполненному проекту.</li>
7
<li>Сделать выводы по выполненному проекту.</li>
8
</ol><p><strong>Какие технологии использовались</strong></p>
8
</ol><p><strong>Какие технологии использовались</strong></p>
9
<ul><li>Kafka </li>
9
<ul><li>Kafka </li>
10
<li>S3 Minio</li>
10
<li>S3 Minio</li>
11
<li>ClickHouse</li>
11
<li>ClickHouse</li>
12
<li>Docker</li>
12
<li>Docker</li>
13
<li>Parquet</li>
13
<li>Parquet</li>
14
<li>Python</li>
14
<li>Python</li>
15
</ul><p><strong>Kafka</strong></p>
15
</ul><p><strong>Kafka</strong></p>
16
<p><strong>Цель использования:</strong></p>
16
<p><strong>Цель использования:</strong></p>
17
<p>Для реализации асинхронной и надежной передачи потоковых данных с источника</p>
17
<p>Для реализации асинхронной и надежной передачи потоковых данных с источника</p>
18
<p><strong>Почему выбрали:</strong></p>
18
<p><strong>Почему выбрали:</strong></p>
19
<p>Высокая отказоустойчивость и горизонтальная масштабируемость.</p>
19
<p>Высокая отказоустойчивость и горизонтальная масштабируемость.</p>
20
<p>Поддержка множества клиентских библиотек и интеграций.</p>
20
<p>Поддержка множества клиентских библиотек и интеграций.</p>
21
<p>Возможность хранить данные как временное буферное хранилище.</p>
21
<p>Возможность хранить данные как временное буферное хранилище.</p>
22
<p><strong>Впечатления:</strong></p>
22
<p><strong>Впечатления:</strong></p>
23
<p><strong>Плюсы:</strong>Отличная производительность при работе с большими объемами данных, гибкость в топологиях сообщений (topics, partitions, consumer groups).</p>
23
<p><strong>Плюсы:</strong>Отличная производительность при работе с большими объемами данных, гибкость в топологиях сообщений (topics, partitions, consumer groups).</p>
24
<p><strong>Минусы:</strong>Сложности в настройке и мониторинге кластера, особенно без специализированных инструментов. Требует понимания концепций логгирования и партиционирования.</p>
24
<p><strong>Минусы:</strong>Сложности в настройке и мониторинге кластера, особенно без специализированных инструментов. Требует понимания концепций логгирования и партиционирования.</p>
25
<p><strong>S3 MinIO</strong></p>
25
<p><strong>S3 MinIO</strong></p>
26
<p><strong>Цель использования:</strong></p>
26
<p><strong>Цель использования:</strong></p>
27
<p>Для долгосрочного хранения неструктурированных данных (сырые данные).</p>
27
<p>Для долгосрочного хранения неструктурированных данных (сырые данные).</p>
28
<p><strong>Почему выбрали:</strong></p>
28
<p><strong>Почему выбрали:</strong></p>
29
<p>Совместимость с AWS S3 API позволяет легко переносить решения в облако.</p>
29
<p>Совместимость с AWS S3 API позволяет легко переносить решения в облако.</p>
30
<p>Бесплатный и open-source. Простая интеграция с другими компонентами системы.</p>
30
<p>Бесплатный и open-source. Простая интеграция с другими компонентами системы.</p>
31
<p><strong>Впечатления:</strong></p>
31
<p><strong>Впечатления:</strong></p>
32
<p><strong>Плюсы:</strong>Простота развертывания, хорошая документация, поддержка multipart upload, шифрования и т.д.</p>
32
<p><strong>Плюсы:</strong>Простота развертывания, хорошая документация, поддержка multipart upload, шифрования и т.д.</p>
33
<p><strong>Минусы:</strong>Не все функции облачного S3 доступны "из коробки", но для большинства задач хватает.</p>
33
<p><strong>Минусы:</strong>Не все функции облачного S3 доступны "из коробки", но для большинства задач хватает.</p>
34
<p><strong>ClickHouse</strong></p>
34
<p><strong>ClickHouse</strong></p>
35
<p><strong>Цель использования:</strong></p>
35
<p><strong>Цель использования:</strong></p>
36
<p>Для аналитической обработки больших объемов данных в режиме реального времени.</p>
36
<p>Для аналитической обработки больших объемов данных в режиме реального времени.</p>
37
<p><strong>Почему выбрали:</strong></p>
37
<p><strong>Почему выбрали:</strong></p>
38
<p>Очень высокая скорость выполнения аналитических запросов.</p>
38
<p>Очень высокая скорость выполнения аналитических запросов.</p>
39
<p>Поддержка вставки миллионов строк в секунду.</p>
39
<p>Поддержка вставки миллионов строк в секунду.</p>
40
<p>Удобная SQL-совместимая оболочка.</p>
40
<p>Удобная SQL-совместимая оболочка.</p>
41
<p><strong>Впечатления:</strong></p>
41
<p><strong>Впечатления:</strong></p>
42
<p><strong>Плюсы:</strong>Невероятно быстрый движок для OLAP-запросов, особенно если правильно использовать движки таблиц (MergeTree и его вариации).</p>
42
<p><strong>Плюсы:</strong>Невероятно быстрый движок для OLAP-запросов, особенно если правильно использовать движки таблиц (MergeTree и его вариации).</p>
43
<p><strong>Минусы:</strong>Не предназначен для OLTP, некоторые операции обновления/удаления ограничены, может быть сложно настроить безопасность и кластеризацию без опыта.</p>
43
<p><strong>Минусы:</strong>Не предназначен для OLTP, некоторые операции обновления/удаления ограничены, может быть сложно настроить безопасность и кластеризацию без опыта.</p>
44
<p><strong>Docker</strong></p>
44
<p><strong>Docker</strong></p>
45
<p><strong>Цель использования:</strong></p>
45
<p><strong>Цель использования:</strong></p>
46
<p>Для контейнеризации сервисов, упрощения развёртывания и изоляции окружений.</p>
46
<p>Для контейнеризации сервисов, упрощения развёртывания и изоляции окружений.</p>
47
<p><strong>Почему выбрали:</strong></p>
47
<p><strong>Почему выбрали:</strong></p>
48
<p>Позволяет создавать воспроизводимые окружения.</p>
48
<p>Позволяет создавать воспроизводимые окружения.</p>
49
<p>Упрощает запуск и тестирование сервисов локально.</p>
49
<p>Упрощает запуск и тестирование сервисов локально.</p>
50
<p>Облегчает деплой на разных стадиях CI/CD.</p>
50
<p>Облегчает деплой на разных стадиях CI/CD.</p>
51
<p><strong>Впечатления:</strong></p>
51
<p><strong>Впечатления:</strong></p>
52
<p><strong>Плюсы:</strong>Очень удобная система управления образами и контейнерами, активное сообщество, множество готовых образов.</p>
52
<p><strong>Плюсы:</strong>Очень удобная система управления образами и контейнерами, активное сообщество, множество готовых образов.</p>
53
<p><strong>Минусы:</strong>При увеличении числа сервисов начинает нужна оркестрация (например, Kubernetes), а также важно правильно организовать сетевую и дисковую политику.</p>
53
<p><strong>Минусы:</strong>При увеличении числа сервисов начинает нужна оркестрация (например, Kubernetes), а также важно правильно организовать сетевую и дисковую политику.</p>
54
<p><strong>Streamlit</strong></p>
54
<p><strong>Streamlit</strong></p>
55
<p><strong>Цель использования:</strong></p>
55
<p><strong>Цель использования:</strong></p>
56
<p>Разработка интерактивного пользовательского интерфейса для отображения результатов анализа данных и работы ML-моделей.</p>
56
<p>Разработка интерактивного пользовательского интерфейса для отображения результатов анализа данных и работы ML-моделей.</p>
57
<p><strong>Почему выбрали:</strong></p>
57
<p><strong>Почему выбрали:</strong></p>
58
<p>Простота освоения и быстрое создание MVP.</p>
58
<p>Простота освоения и быстрое создание MVP.</p>
59
<p>Интеграция с популярными библиотеками (Pandas, Matplotlib, Plotly, Scikit-learn)</p>
59
<p>Интеграция с популярными библиотеками (Pandas, Matplotlib, Plotly, Scikit-learn)</p>
60
<p>Не требует знания HTML/CSS/JavaScript для создания прототипов.</p>
60
<p>Не требует знания HTML/CSS/JavaScript для создания прототипов.</p>
61
<p><strong>Впечатления:</strong></p>
61
<p><strong>Впечатления:</strong></p>
62
<p><strong>Плюсы:</strong></p>
62
<p><strong>Плюсы:</strong></p>
63
<p>Очень простая и интуитивная API. Отлично подходит для экспериментов и быстрого показа результатов коллегам или заказчику.</p>
63
<p>Очень простая и интуитивная API. Отлично подходит для экспериментов и быстрого показа результатов коллегам или заказчику.</p>
64
<p><strong>Минусы:</strong></p>
64
<p><strong>Минусы:</strong></p>
65
<p>Неподходящий выбор для масштабных, многостраничных или высоконагруженных приложений.</p>
65
<p>Неподходящий выбор для масштабных, многостраничных или высоконагруженных приложений.</p>
66
<p><strong>Parquet</strong></p>
66
<p><strong>Parquet</strong></p>
67
<p><strong>Цель использования:</strong></p>
67
<p><strong>Цель использования:</strong></p>
68
<p>Хранение больших объёмов структурированных данных.</p>
68
<p>Хранение больших объёмов структурированных данных.</p>
69
<p><strong>Почему выбрали:</strong></p>
69
<p><strong>Почему выбрали:</strong></p>
70
<p>Поддерживает сжатие и кодирование, что уменьшает размер хранимых данных.</p>
70
<p>Поддерживает сжатие и кодирование, что уменьшает размер хранимых данных.</p>
71
<p>Хорошо интегрируется с такими инструментами, как Pandas, ClickHouse, S3 и другими.</p>
71
<p>Хорошо интегрируется с такими инструментами, как Pandas, ClickHouse, S3 и другими.</p>
72
<p>Позволяет сохранять схему данных вместе с самими данными.</p>
72
<p>Позволяет сохранять схему данных вместе с самими данными.</p>
73
<p><strong>Впечатления:</strong></p>
73
<p><strong>Впечатления:</strong></p>
74
<p><strong>Плюсы:</strong></p>
74
<p><strong>Плюсы:</strong></p>
75
<p>Отличная производительность при чтении подмножества полей.</p>
75
<p>Отличная производительность при чтении подмножества полей.</p>
76
<p>Хорошая совместимость между разными платформами и фреймворками.</p>
76
<p>Хорошая совместимость между разными платформами и фреймворками.</p>
77
<p><strong>Минусы:</strong></p>
77
<p><strong>Минусы:</strong></p>
78
<p>Для просмотра содержимого без программной оболочки нужны специальные инструменты. Может быть избыточен для маленьких наборов данных.</p>
78
<p>Для просмотра содержимого без программной оболочки нужны специальные инструменты. Может быть избыточен для маленьких наборов данных.</p>
79
<p><strong>Что получилось</strong></p>
79
<p><strong>Что получилось</strong></p>
80
<p><strong>Ссылки:</strong></p>
80
<p><strong>Ссылки:</strong></p>
81
<ul><li><a>https://github.com/netart-studio/otus_de_project</a></li>
81
<ul><li><a>https://github.com/netart-studio/otus_de_project</a></li>
82
</ul><p><strong>BI, Дашборд</strong></p>
82
</ul><p><strong>BI, Дашборд</strong></p>
83
<p><strong>Г</strong>рафики котировок со средними скользящими и кривые спредов</p>
83
<p><strong>Г</strong>рафики котировок со средними скользящими и кривые спредов</p>
84
<p><strong>Видео демонстрация</strong></p>
84
<p><strong>Видео демонстрация</strong></p>
85
<p><a>https://rutube.ru/video/55ce11a5964923c23b07ff2bd6c6a357/</a></p>
85
<p><a>https://rutube.ru/video/55ce11a5964923c23b07ff2bd6c6a357/</a></p>
86
<p><strong>Демонстрация проекта: rutube.ru</strong></p>
86
<p><strong>Демонстрация проекта: rutube.ru</strong></p>
87
<p><strong>Выводы</strong></p>
87
<p><strong>Выводы</strong></p>
88
<ul><li>Цель проекта достигнута. Все поставленные задачи выполнены.</li>
88
<ul><li>Цель проекта достигнута. Все поставленные задачи выполнены.</li>
89
<li>Трудности были с настройкой<strong>Kafka</strong>. </li>
89
<li>Трудности были с настройкой<strong>Kafka</strong>. </li>
90
<li>На выполнение проекта ушло две недели. </li>
90
<li>На выполнение проекта ушло две недели. </li>
91
<li>Проект оказался полезным, я освоил новые для себя инструменты такие как<strong>Kafka, S3 Minio, Clickhouse.</strong>Полезность проекта оцениваю в 10 балов.</li>
91
<li>Проект оказался полезным, я освоил новые для себя инструменты такие как<strong>Kafka, S3 Minio, Clickhouse.</strong>Полезность проекта оцениваю в 10 балов.</li>
92
</ul>
92
</ul>