Друзья, привет! 👋
Предлагаю сегодня обсудить такую тему какшаблоны взаимодействия систем .
Давайте рассмотрим основныешаблоны взаимодействия , их преимущества и недостатки.
Что такое шаблоны взаимодействия ? 🤔
Шаблоны взаимодействия - это способы, с помощью которых организуется среда «общения» АС. И эти способы задают формат взаимодействия. В качестве аналогии из жизни можно использовать формат встречи - совещание, вечеринка и т.д. 🥳
Другими словами шаблоны отвечают на вопрос, «какую среду организовать для «общения» АС?»
Типы шаблонов взаимодействия:
1. Прямая интеграция систем — шаблон взаимодействия двух систем, при котором две системы или компоненты взаимодействуют друг с другом способом, который технологически реализуем на обеих системах.
Преимущества: производительность, тесная интеграция, отсутствие дополнительных точек отказа
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, отсутствие возможности переиспользования
2. Шлюз — шаблон взаимодействия двух систем, при котором две системы или компоненты взаимодействуют друг с другом с помощью интеграционного слоя, который берет на себя обеспечения интеграционной логики.
Преимущества: производительность, готовая реализация интеграции, унифицированное решение
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, отсутствие возможности переиспользования
3. Сервисная шина предприятия (англ. enterprise service bus, ESB) — связующее программное обеспечение, обеспечивающее централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами на принципах сервис-ориентированной архитектуры. Другими словами, это промежуточное ПО, которое позволяет объединить большее число систем или приложений, а также организовать взаимодействия между ними на основе сервисов
Преимущества: производительность, готовая реализация интеграции, унифицированное решение, возможность переиспользования
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, дополнительная точка отказа, команда сопровождения
4. Service mesh — шаблон для динамического связывания сервисов, в особенности микросервисов, из которых формируется одно приложение. Это выделенный слой инфраструктуры для обеспечения безопасного, быстрого и надёжного взаимодействия между сервисами.
Преимущества: производительность, гибкость, масштабируемость
Недостатки: дополнительная точка отказа, команда сопровождения с достаточными знаниями для создания и использования этого шаблона
5. Перегрузка данных — это специфический шаблон для передачи большого объема данных. Процесс перегрузки заключается в переносе данных из системы источника в систему потребителя или хранилище данных с помощью специализированных средств (например, ETL (от англ. Extract, Transform, Load) или промежуточное ПО)
А с какими шаблонами взаимодействия приходилось сталкивать вам на практике ?
Делитесь своим опытом в комментариях 👇
PS Относительно давно не было постов на канале, но буду исправлять эту ситуацию и стараться выкладывать полезный контент чаще 😊
PSS Ваши реакции мотивируют меня на новые посты 🔥
Предлагаю сегодня обсудить такую тему как
Давайте рассмотрим основные
Что такое шаблоны взаимодействия ? 🤔
Шаблоны взаимодействия - это способы, с помощью которых организуется среда «общения» АС. И эти способы задают формат взаимодействия. В качестве аналогии из жизни можно использовать формат встречи - совещание, вечеринка и т.д. 🥳
Другими словами шаблоны отвечают на вопрос, «какую среду организовать для «общения» АС?»
Типы шаблонов взаимодействия:
1. Прямая интеграция систем — шаблон взаимодействия двух систем, при котором две системы или компоненты взаимодействуют друг с другом способом, который технологически реализуем на обеих системах.
Преимущества: производительность, тесная интеграция, отсутствие дополнительных точек отказа
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, отсутствие возможности переиспользования
2. Шлюз — шаблон взаимодействия двух систем, при котором две системы или компоненты взаимодействуют друг с другом с помощью интеграционного слоя, который берет на себя обеспечения интеграционной логики.
Преимущества: производительность, готовая реализация интеграции, унифицированное решение
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, отсутствие возможности переиспользования
3. Сервисная шина предприятия (англ. enterprise service bus, ESB) — связующее программное обеспечение, обеспечивающее централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами на принципах сервис-ориентированной архитектуры. Другими словами, это промежуточное ПО, которое позволяет объединить большее число систем или приложений, а также организовать взаимодействия между ними на основе сервисов
Преимущества: производительность, готовая реализация интеграции, унифицированное решение, возможность переиспользования
Недостатки: сложность управления, сложность изменения, сложность поиска всех взаимодействий при большом их количестве, дополнительная точка отказа, команда сопровождения
4. Service mesh — шаблон для динамического связывания сервисов, в особенности микросервисов, из которых формируется одно приложение. Это выделенный слой инфраструктуры для обеспечения безопасного, быстрого и надёжного взаимодействия между сервисами.
Преимущества: производительность, гибкость, масштабируемость
Недостатки: дополнительная точка отказа, команда сопровождения с достаточными знаниями для создания и использования этого шаблона
5. Перегрузка данных — это специфический шаблон для передачи большого объема данных. Процесс перегрузки заключается в переносе данных из системы источника в систему потребителя или хранилище данных с помощью специализированных средств (например, ETL (от англ. Extract, Transform, Load) или промежуточное ПО)
А с какими шаблонами взаимодействия приходилось сталкивать вам на практике ?
Делитесь своим опытом в комментариях 👇
PS Относительно давно не было постов на канале, но буду исправлять эту ситуацию и стараться выкладывать полезный контент чаще 😊
PSS Ваши реакции мотивируют меня на новые посты 🔥
🔥14👍1
#базы_данных
Про оптимизацию sql запросов
Зачастую на практике мне (думаю, что вам тоже) приходится сталкиваться с написанием сложных sql запросов, а потом долгое время ожидать выполнения запроса и пить кофе ☕️
Чтобы уменьшить время наслаждения вкусным ароматом кофе и сократить время работы запросов предлагаю ознакомиться со следующей статьей. В ней рассказывают про разные подходы к оптимизации sql запросов.
В комментариях делитесь своим опытом о том, как часто вам приходится прибегать к вопросу оптимизации запросов и какой способ вы используете.
Можем сыграть в игру "самый долгий sql запрос". Пишите в комментарии самое долгое время выполнения запроса 😄
Победителю - подарок 🎁
Про оптимизацию sql запросов
Зачастую на практике мне (думаю, что вам тоже) приходится сталкиваться с написанием сложных sql запросов, а потом долгое время ожидать выполнения запроса и пить кофе ☕️
Чтобы уменьшить время наслаждения вкусным ароматом кофе и сократить время работы запросов предлагаю ознакомиться со следующей статьей. В ней рассказывают про разные подходы к оптимизации sql запросов.
В комментариях делитесь своим опытом о том, как часто вам приходится прибегать к вопросу оптимизации запросов и какой способ вы используете.
Можем сыграть в игру "самый долгий sql запрос". Пишите в комментарии самое долгое время выполнения запроса 😄
Победителю - подарок 🎁
Telegraph
Магия оптимизации SQL запросов
Думаю, каждый хоть раз использовал команду explain или хотя бы слышал про нее. Эта команда демонстрирует план выполнения запроса, но как именно СУБД приходит к нему остается загадкой. Да и как вообще СУБД понимает, что выбранный запрос оптимален? Неужели…
👍5
Друзья, доброе утро!
Количество участников канала стало трехзначным числом. Спасибо всем, кто следит за каналом и интересуется его новостями.
Всем хорошего дня 😊
Количество участников канала стало трехзначным числом. Спасибо всем, кто следит за каналом и интересуется его новостями.
Всем хорошего дня 😊
❤12
Начинаем новую неделю с серии постов про подходы к проектированию баз данных 🔥
Что такое ACID и BASE в теории баз данных ?
BASE (Basically Available, Soft state, Eventually consistent) и ACID (Atomicity, Consistency, Isolation, Durability) - это два разных подхода к проектированию и обеспечению целостности данных в распределенных системах.
ACID - это классический подход к управлению транзакциями в реляционных базах данных, который обеспечивает высокий уровень согласованности и надежности данных. ACID-транзакции являются “жесткими”, так как они гарантируют, что транзакция либо полностью выполнится, либо откатится к исходному состоянию в случае сбоя, что обеспечивает согласованность данных.
BASE, с другой стороны, является более гибким подходом, который учитывает ограничения и неизбежность ошибок в распределенных системах. BASE поддерживает высокую доступность и отказоустойчивость путем снижения требований к согласованности данных. Это достигается за счет того, что база данных может находиться в промежуточном состоянии - состоянии, когда некоторые копии данных могут быть обновлены, а другие нет. Однако, с течением времени все копии данных сходятся к одному состоянию (Eventually consistent), что обеспечивает согласованность.
В чем различаются эти подходы ?
Основная разница между BASE и ACID заключается в том, что ACID обеспечивает жесткую согласованность данных, в то время как BASE обеспечивает гибкую согласованность, позволяющую достичь высокой доступности и отказоустойчивости данных в условиях распределенности и масштабируемости.
В следующих постах мы подробно рассмотрим основные принципы, лежащие в модели ACID и BASE, а также поговорим про CAP теорему.
Ставьте реакции к посту, если было полезно🔥
#базы_данных
Что такое ACID и BASE в теории баз данных ?
BASE (Basically Available, Soft state, Eventually consistent) и ACID (Atomicity, Consistency, Isolation, Durability) - это два разных подхода к проектированию и обеспечению целостности данных в распределенных системах.
ACID - это классический подход к управлению транзакциями в реляционных базах данных, который обеспечивает высокий уровень согласованности и надежности данных. ACID-транзакции являются “жесткими”, так как они гарантируют, что транзакция либо полностью выполнится, либо откатится к исходному состоянию в случае сбоя, что обеспечивает согласованность данных.
BASE, с другой стороны, является более гибким подходом, который учитывает ограничения и неизбежность ошибок в распределенных системах. BASE поддерживает высокую доступность и отказоустойчивость путем снижения требований к согласованности данных. Это достигается за счет того, что база данных может находиться в промежуточном состоянии - состоянии, когда некоторые копии данных могут быть обновлены, а другие нет. Однако, с течением времени все копии данных сходятся к одному состоянию (Eventually consistent), что обеспечивает согласованность.
В чем различаются эти подходы ?
Основная разница между BASE и ACID заключается в том, что ACID обеспечивает жесткую согласованность данных, в то время как BASE обеспечивает гибкую согласованность, позволяющую достичь высокой доступности и отказоустойчивости данных в условиях распределенности и масштабируемости.
В следующих постах мы подробно рассмотрим основные принципы, лежащие в модели ACID и BASE, а также поговорим про CAP теорему.
Ставьте реакции к посту, если было полезно🔥
#базы_данных
🔥13👍3
Продолжаем тему предыдущего поста и остановимся на подходе ACID.
Давайте подробно разберём каждое свойство из аббревиатуры.
1⃣ Atomicity (Атомарность) – транзакция является неделимой и должна быть выполнена полностью или не выполнена вообще. Если транзакция не может быть выполнена до конца, то СУБД должна откатить ее и вернуть данные к предыдущему состоянию. Это гарантирует, что если транзакция не может быть выполнена успешно, то все изменения, внесенные в базу данных до этого момента, будут отменены.
2⃣ Consistency (Согласованность) – транзакции должны поддерживать целостность данных. Это означает, что если данные в базе данных находятся в конкретном состоянии, то любая транзакция должна привести базу данных к другому согласованному состоянию. Транзакции не могут изменять данные в противоречии с правилами базы данных.
3⃣ Isolation (Изолированность) – каждая транзакция должна выполняться в изоляции от других транзакций, т.е. не должно быть видимости изменений, внесенных в базу данных другими транзакциями, пока текущая транзакция не завершена. Это гарантирует, что транзакции не будут конфликтовать между собой.
4⃣ Durability (Долговечность) – изменения, внесенные в базу данных транзакцией, должны быть сохранены и доступны после завершения транзакции, даже если происходит отказ системы или другой сбой. Это гарантирует, что данные в базе данных сохранятся даже в случае сбоя системы.
Зачем соблюдать вышеперечисленные свойства ❓
ACID-свойства очень важны для проектирования ПО, особенно при работе с транзакционными базами данных. При соблюдении этих свойств, разработчики могут создавать приложения, которые гарантируют, что данные будут сохранены в надежном состоянии и не будут повреждены в случае сбоя или других непредвиденных обстоятельств. Но использование ACID-свойств может иметь некоторые ограничения на производительность системы, особенно при работе с большими объемами данных. Поэтому, для некоторых приложений может быть более подходящим использование более гибких моделей данных, таких как BASE, которые предоставляют более высокую производительность за счет некоторой потери надежности.
О модели BASE мы поговорим в следующем посте 🔜
#базы_данных
Давайте подробно разберём каждое свойство из аббревиатуры.
1⃣ Atomicity (Атомарность) – транзакция является неделимой и должна быть выполнена полностью или не выполнена вообще. Если транзакция не может быть выполнена до конца, то СУБД должна откатить ее и вернуть данные к предыдущему состоянию. Это гарантирует, что если транзакция не может быть выполнена успешно, то все изменения, внесенные в базу данных до этого момента, будут отменены.
2⃣ Consistency (Согласованность) – транзакции должны поддерживать целостность данных. Это означает, что если данные в базе данных находятся в конкретном состоянии, то любая транзакция должна привести базу данных к другому согласованному состоянию. Транзакции не могут изменять данные в противоречии с правилами базы данных.
3⃣ Isolation (Изолированность) – каждая транзакция должна выполняться в изоляции от других транзакций, т.е. не должно быть видимости изменений, внесенных в базу данных другими транзакциями, пока текущая транзакция не завершена. Это гарантирует, что транзакции не будут конфликтовать между собой.
4⃣ Durability (Долговечность) – изменения, внесенные в базу данных транзакцией, должны быть сохранены и доступны после завершения транзакции, даже если происходит отказ системы или другой сбой. Это гарантирует, что данные в базе данных сохранятся даже в случае сбоя системы.
Зачем соблюдать вышеперечисленные свойства ❓
ACID-свойства очень важны для проектирования ПО, особенно при работе с транзакционными базами данных. При соблюдении этих свойств, разработчики могут создавать приложения, которые гарантируют, что данные будут сохранены в надежном состоянии и не будут повреждены в случае сбоя или других непредвиденных обстоятельств. Но использование ACID-свойств может иметь некоторые ограничения на производительность системы, особенно при работе с большими объемами данных. Поэтому, для некоторых приложений может быть более подходящим использование более гибких моделей данных, таких как BASE, которые предоставляют более высокую производительность за счет некоторой потери надежности.
О модели BASE мы поговорим в следующем посте 🔜
#базы_данных
❤6👍3
Итак, мы завершаем серию постов про подходы к проектированию ПО👨💻
И сегодня разберём подход под названием BASE.
BASE - сокращение от Basically Available, Soft state, Eventually consistent. Подход BASE ставит упор на доступность данных и их масштабируемость, позволяя достигнуть этих целей за счет компромисса в отношении согласованности данных. В этом подходе допускается, что данные могут находиться в “мягком” состоянии, то есть состоянии, которое может быть не совсем точным или актуальным в любой момент времени.
Подход BASE подходит для систем, которые нуждаются в высокой доступности и масштабируемости, но могут терпеть небольшие задержки и несогласованности данных. Он может использоваться в системах, таких как распределенные системы, сетевые приложения, системы Big Data и другие.
Что означают буквы в аббревеатуре BASE❓
1⃣ Basically Available - это свойство обозначает, что система должна быть доступна для обработки запросов и предоставления данных в любое время, даже в случае сбоев в работе или разделения на несколько частей
2⃣ Soft state - это свойство обозначает, что состояние системы может быть временно несогласованным, то есть данные могут находиться в процессе изменения и обновления.
3⃣ Eventually consistent - это свойство обозначает, что в системе может быть временная несогласованность данных, но в конечном итоге все данные будут согласованы
Есть хорошая статья, где подробно описаны различия между двумя подходами в пооектировании: https://phoenixnap.com/kb/acid-vs-base
Knowledge Base by phoenixNAP
ACID vs. BASE Database Model: Differences Explained
ACID and BASE are two database transaction models, each with their own advantages and trade-offs. This article analyzes what they offer.
👍2🔥1
Какие темы вошли в первую версию карты?
1. Базовые знания из Computer Science 💻 - этот раздел является обязательным для всех it специальностей (мое личное мнение)
2. Нотации моделирования бизнес процессов 🧩 - BPMN, UML и т.д. Практически во всех вакансиях от аналитика требуют владения этими навыками
3. Требования к программному обеспечению 📜 - аналитик должен понимать какие требования существуют, как правильно подходить к процессу сбора требований
4. Архитектура ПО 🏠 - системный аналитик - это мини архитектор в команде. Зачастую приходится решать различные архитектурные задачи (+если хотите развиваться в сторону архитектора, то знание архитектуры - must have)
5. Теория баз данных 📟 - надо понимать как устроены БД, какие виды БД существуют и т.д.
6. Интеграция - знание темы нужно для того, чтобы понимать какими способами системы могут обмениваться информацией между собой
7. Языки программирования 🐍 - как обязательный включил бы sql, Python - как приятное дополнение :) Сейчас выпала задачка, пишу компонент ПО на Python, поэтому знание какого-нибудь ЯП - будет плюсом.
8. Тестирование ПО 📌- да, системный аналитик ещё и немного тестировщик. Поэтому с основами тестирования стоит ознакомиться.
9. Методологии разработки 🔖 - в каждой компании/команде свои подходы к разработке. Аналитик работает с задачей от самого начала до сдачи её заказчику. Поэтому понимать по какой методологии работает ваша команда - обязательно.
10. Soft skills 🗣 - важный пункт, гибкие навыки помогают быстрее наладить контакты, продвигаться по карьерной лестнице
11. Основы UX/UI 🧬 - добавил раздел, потому что иногда аналитику приходится на "скорую" руку сделать какой-нибудь макет в Figma (но всё зависит от сферы. думаю, этот пункт больше относится к тем, кто занимается mobile)
12. Инструменты для работы 🔨 - список всяких ПО, которые стоит освоить аналитику
Фух, вроде бы всё. Если есть идеи по тому, что можно ещё закинуть в карту - пишите в комментарии, обсудим :)
Также буду ждать критику/пожелания/замечания в комментариях к посту.
В ближайшее время ещё выложу пару опросов (не пугайтесь 😄). Хочу понять, что вам будет интересно читать в канале.
1. Базовые знания из Computer Science 💻 - этот раздел является обязательным для всех it специальностей (мое личное мнение)
2. Нотации моделирования бизнес процессов 🧩 - BPMN, UML и т.д. Практически во всех вакансиях от аналитика требуют владения этими навыками
3. Требования к программному обеспечению 📜 - аналитик должен понимать какие требования существуют, как правильно подходить к процессу сбора требований
4. Архитектура ПО 🏠 - системный аналитик - это мини архитектор в команде. Зачастую приходится решать различные архитектурные задачи (+если хотите развиваться в сторону архитектора, то знание архитектуры - must have)
5. Теория баз данных 📟 - надо понимать как устроены БД, какие виды БД существуют и т.д.
6. Интеграция - знание темы нужно для того, чтобы понимать какими способами системы могут обмениваться информацией между собой
7. Языки программирования 🐍 - как обязательный включил бы sql, Python - как приятное дополнение :) Сейчас выпала задачка, пишу компонент ПО на Python, поэтому знание какого-нибудь ЯП - будет плюсом.
8. Тестирование ПО 📌- да, системный аналитик ещё и немного тестировщик. Поэтому с основами тестирования стоит ознакомиться.
9. Методологии разработки 🔖 - в каждой компании/команде свои подходы к разработке. Аналитик работает с задачей от самого начала до сдачи её заказчику. Поэтому понимать по какой методологии работает ваша команда - обязательно.
10. Soft skills 🗣 - важный пункт, гибкие навыки помогают быстрее наладить контакты, продвигаться по карьерной лестнице
11. Основы UX/UI 🧬 - добавил раздел, потому что иногда аналитику приходится на "скорую" руку сделать какой-нибудь макет в Figma (но всё зависит от сферы. думаю, этот пункт больше относится к тем, кто занимается mobile)
12. Инструменты для работы 🔨 - список всяких ПО, которые стоит освоить аналитику
Фух, вроде бы всё. Если есть идеи по тому, что можно ещё закинуть в карту - пишите в комментарии, обсудим :)
Также буду ждать критику/пожелания/замечания в комментариях к посту.
В ближайшее время ещё выложу пару опросов (не пугайтесь 😄). Хочу понять, что вам будет интересно читать в канале.
🔥9
Вот и обещанный опрос про тематику канала :)
Что мне было бы интересно читать ?
Что мне было бы интересно читать ?
Anonymous Poll
58%
Обучающие посты (разбор темы, опросы, викторины)
68%
Рабочие кейсы (из опыта автора и не только)
16%
Интервью (в текстовом формате)
17%
Про карьеру в IT (профессии, их роли в IT проектах, направления развития)
1%
Свой вариант - пишите в комментариях к опросу
Остались последние часы уходящего 2023 года, самое время подвести итоги года и поставить цели на новый 2024 год. (да, я не забыл про свой канал, на 2024 год у меня на него большие планы:) )
Итак, мои итоги 2023 года:
1. Стал более техническим специалистом.
Что я имею ввиду?
В середине 2023 перешёл в другую компанию на позицию инженера данных. До этого работал с данными исключительно как аналитик. Но сейчас разработка стала скорее дополнением к моим обязанностам, так как обязанности аналитика всё равно остались.
2. Изучил новые для себя инструменты работы с большими данными, новые языки программирования.
2. Написал несколько статей на хабр
Скорее всего большинство участников канала как раз оттуда:)
3. Стал вести этот канал
Хоть и с перерывами))
4. Пробежал 2 старта за год полумарафон и 10км. Обновил личник на полумарафоне и на 10км.
5. Улучшил английский. Сейчас уровень B2. В новом 2024 году хочу довести английский до С1.
Хочу всем пожелать в Новом году ставить амбициозные цели и достигать их.
С Наступающим 2024 годом!
Итак, мои итоги 2023 года:
1. Стал более техническим специалистом.
Что я имею ввиду?
В середине 2023 перешёл в другую компанию на позицию инженера данных. До этого работал с данными исключительно как аналитик. Но сейчас разработка стала скорее дополнением к моим обязанностам, так как обязанности аналитика всё равно остались.
2. Изучил новые для себя инструменты работы с большими данными, новые языки программирования.
2. Написал несколько статей на хабр
Скорее всего большинство участников канала как раз оттуда:)
3. Стал вести этот канал
Хоть и с перерывами))
4. Пробежал 2 старта за год полумарафон и 10км. Обновил личник на полумарафоне и на 10км.
5. Улучшил английский. Сейчас уровень B2. В новом 2024 году хочу довести английский до С1.
Хочу всем пожелать в Новом году ставить амбициозные цели и достигать их.
С Наступающим 2024 годом!
👍7❤3
Что такое распределенные вычисления?
При работе с большими данными специалисты сталкиваются с проблемой, что вычисления с использованием одной машины становятся неэффективными.
В таком случае компании стараются внедрить инструменты для работы с большими данными, такие как Hadoop, Spark и т.д.
Основная идея таких инструментов - это использование мощностей нескольких машин (или нескольких "нод"). Вычисления на каждой ноде выполняются параллельно, что позволяет в несколько раз быстрее выполнить расчёты.
Как я написал выше, один из инструментов для работы с большими данными - это spark. Использование spark'a позволяет кратно уменьшить время вычислений.
Если хотите узнать о том за счёт чего достигается такая скорость вычислений в спарк - ставьте 🔥 на эту запись.
И в следующем посте я расскажу вам об этом, а ещё поделюсь своей историей о том как мне удалось в 10 раз оптимизировать загрузку данных с использованием spark (изменив при этом всего 1 строку кода 😁)
#hard_skills
При работе с большими данными специалисты сталкиваются с проблемой, что вычисления с использованием одной машины становятся неэффективными.
В таком случае компании стараются внедрить инструменты для работы с большими данными, такие как Hadoop, Spark и т.д.
Основная идея таких инструментов - это использование мощностей нескольких машин (или нескольких "нод"). Вычисления на каждой ноде выполняются параллельно, что позволяет в несколько раз быстрее выполнить расчёты.
Как я написал выше, один из инструментов для работы с большими данными - это spark. Использование spark'a позволяет кратно уменьшить время вычислений.
Если хотите узнать о том за счёт чего достигается такая скорость вычислений в спарк - ставьте 🔥 на эту запись.
И в следующем посте я расскажу вам об этом, а ещё поделюсь своей историей о том как мне удалось в 10 раз оптимизировать загрузку данных с использованием spark (изменив при этом всего 1 строку кода 😁)
#hard_skills
🔥20
Как Spark может ускорить скорость вычислений в 10 раз?
Недавно столкнулся с задачей оптимизации загрузки данных в хранилище.
Был уже готовый поток загрузки данных, который прогружал 1 день исторических данных за 5 часов. Требовалось перегрузить 5 месяцев исторических данных. По расчётам поток грузил бы данные 30 дней.
Проблема такой долгой загрузки данных была в том,
предварительно данные предобрабатывались отдельным Bash скриптом на одной ноде (с использованием мощностей всего лишь одной машины) без распараллеливания вычислений.
Здесь как раз на помощь пришёл spark. Использовалась строка кода с регулярным выражением. После переноса всего лишь одной этой строки кода на spark скорость вычислений увеличилась в 10 раз. Поток стал отрабатывать за 30 минут.
Как использование spark'a помогает получить такие результаты?
Во-первых, Spark использует мощности не одной машины, а мощности всего кластера (то есть нескольких машин, работающих параллельно)
Во-вторых, Spark позволяет кастомизировать загрузку данных под каждую задачу. Это достигается благодаря гибкой настройки параметров.
В-третьих, все вычисления в spark происходят в оперативной памяти. Это позволяет выполнять вычисления за короткий промежуток времени.
На прошлом посте набралось 15 🔥. Если наберём под этим постом 25 🔥, то поделюсь своей подборкой материалов для изучения spark.
#hard_skills
Недавно столкнулся с задачей оптимизации загрузки данных в хранилище.
Был уже готовый поток загрузки данных, который прогружал 1 день исторических данных за 5 часов. Требовалось перегрузить 5 месяцев исторических данных. По расчётам поток грузил бы данные 30 дней.
Проблема такой долгой загрузки данных была в том,
предварительно данные предобрабатывались отдельным Bash скриптом на одной ноде (с использованием мощностей всего лишь одной машины) без распараллеливания вычислений.
Здесь как раз на помощь пришёл spark. Использовалась строка кода с регулярным выражением. После переноса всего лишь одной этой строки кода на spark скорость вычислений увеличилась в 10 раз. Поток стал отрабатывать за 30 минут.
Как использование spark'a помогает получить такие результаты?
Во-первых, Spark использует мощности не одной машины, а мощности всего кластера (то есть нескольких машин, работающих параллельно)
Во-вторых, Spark позволяет кастомизировать загрузку данных под каждую задачу. Это достигается благодаря гибкой настройки параметров.
В-третьих, все вычисления в spark происходят в оперативной памяти. Это позволяет выполнять вычисления за короткий промежуток времени.
На прошлом посте набралось 15 🔥. Если наберём под этим постом 25 🔥, то поделюсь своей подборкой материалов для изучения spark.
#hard_skills
🔥17👍1
Этот пост не про технические навыки и компетенции в IT, а про такой навык как целеполагание.
Для достижения определённого результата важно ставить правильные цели.
Карьера. Доход. Отношения. Социальные достижения. Не важно какая сфера.
Всё начинается с правильной постановки цели.
Но что такое правильная цель? Существует много разных фреймворков для постановки цели. Самый популярный - SMART.
В соответствии со SMART цель должна быть:
1. Specific - конкретной
2. Measurable -измеримой
3. Attainable -достижимой
4. Relevant - значимой
5. Timebound-ограничена во времени.
Приведу пример своей цели на 2024 год в соответствии с этим фреймворком.
Моя цель: до конца 2024 года (timeboud) пробежать 10км (specific) из 37:40 (measurable).
Достижима (attainable) ? Да! Т.к. личник в прошлом году был 39:30
Relevant (значима)? Да! Доказать, самому себе что всё в жизни достижимо.
Первый старт на 10км будет уже в марте. Посмотрим на результаты!
Для достижения определённого результата важно ставить правильные цели.
Карьера. Доход. Отношения. Социальные достижения. Не важно какая сфера.
Всё начинается с правильной постановки цели.
Но что такое правильная цель? Существует много разных фреймворков для постановки цели. Самый популярный - SMART.
В соответствии со SMART цель должна быть:
1. Specific - конкретной
2. Measurable -измеримой
3. Attainable -достижимой
4. Relevant - значимой
5. Timebound-ограничена во времени.
Приведу пример своей цели на 2024 год в соответствии с этим фреймворком.
Моя цель: до конца 2024 года (timeboud) пробежать 10км (specific) из 37:40 (measurable).
Достижима (attainable) ? Да! Т.к. личник в прошлом году был 39:30
Relevant (значима)? Да! Доказать, самому себе что всё в жизни достижимо.
Первый старт на 10км будет уже в марте. Посмотрим на результаты!
👍7🔥4
Друзья, привет! В статьях выше писал о том, что такое spark, зачем он нужен и как его применяют в работе аналитики, data engineer'ы и data scientist'ы.
Сегодня делюсь подборкой материалов, по которым изучал Spark. Ставьте реакции, если хотите чтобы подобные подборки публиковались в канале чаще 😊
Книги:
Для изучения batch обработки данных на spark:
1. Learning Spark: Lightning-Fast Data Analytics
2. High Performance Spark: Best practices for scaling and optimizing Apache Spark
Для изучения потоковой обработки данных на spark:
1. Stream Processing with Apache Spark: Mastering Structured Streaming and Spark Streaming
Курс по spark (scala):
В курсе довольно понятно объясняют основные понятия spark-а и его преимущества + есть практические задания к темам:
https://www.coursera.org/learn/scala-spark-big-data
Лайфхак: курс можно проходить бесплатно слушателем (если не нужен сертификат) и без оформления заявки на денежную помощь, для этого на странице курса нужно нажать enroll for free, далее выбрать audit only.
Сегодня делюсь подборкой материалов, по которым изучал Spark. Ставьте реакции, если хотите чтобы подобные подборки публиковались в канале чаще 😊
Книги:
Для изучения batch обработки данных на spark:
1. Learning Spark: Lightning-Fast Data Analytics
2. High Performance Spark: Best practices for scaling and optimizing Apache Spark
Для изучения потоковой обработки данных на spark:
1. Stream Processing with Apache Spark: Mastering Structured Streaming and Spark Streaming
Курс по spark (scala):
В курсе довольно понятно объясняют основные понятия spark-а и его преимущества + есть практические задания к темам:
https://www.coursera.org/learn/scala-spark-big-data
Лайфхак: курс можно проходить бесплатно слушателем (если не нужен сертификат) и без оформления заявки на денежную помощь, для этого на странице курса нужно нажать enroll for free, далее выбрать audit only.
Coursera
Big Data Analysis with Scala and Spark
Offered by École Polytechnique Fédérale de Lausanne. ... Enroll for free.
🔥6👍1
Вчера был на конференции IT Purple от ФПМИ.
Выдали такую интересную брошюру с распределением ролей между участниками IT команд.
Из аналитиков на этой брошюре есть бизнес, системный и продуктовый аналитик.
На картинке можно посмотреть какие обязанности есть у каждой роли в командах.
Как по мне - прикольная вещь, показывает на каких этапах разработки какой специалист требуется. Позволяет посмотреть на всю картину разработки сверху в разрезе конкретной роли.
Выдали такую интересную брошюру с распределением ролей между участниками IT команд.
Из аналитиков на этой брошюре есть бизнес, системный и продуктовый аналитик.
На картинке можно посмотреть какие обязанности есть у каждой роли в командах.
Как по мне - прикольная вещь, показывает на каких этапах разработки какой специалист требуется. Позволяет посмотреть на всю картину разработки сверху в разрезе конкретной роли.
👍10
Кто такие дата инженеры ?
Вчера ходил на запись подкаста. В качестве первого гостя был Михаил Павлюк - дата инженер в СберОбразовании. Поговорили про профессию инженера данных и обсудили карьерный путь Миши.
В своих соц.сетях Миша рассказывает про инженерию данных, выкладывает обучалки и записывает интервью с IT специалистами.
Подписывайтесь, там много полезного контента про IT: Telegram канал Миши, Youtube (NOdata Misha), Youtube (ойтишники)
Запись первого подкаста уже находится в обработке. Следите за новостями - актуальную информацию буду постить сюда, а сам подкаст выйдет на моем YouTube канале 🔥🔥🔥
#ITA_podcast
Вчера ходил на запись подкаста. В качестве первого гостя был Михаил Павлюк - дата инженер в СберОбразовании. Поговорили про профессию инженера данных и обсудили карьерный путь Миши.
В своих соц.сетях Миша рассказывает про инженерию данных, выкладывает обучалки и записывает интервью с IT специалистами.
Подписывайтесь, там много полезного контента про IT: Telegram канал Миши, Youtube (NOdata Misha), Youtube (ойтишники)
Запись первого подкаста уже находится в обработке. Следите за новостями - актуальную информацию буду постить сюда, а сам подкаст выйдет на моем YouTube канале 🔥🔥🔥
#ITA_podcast
🔥4