This media is not supported in your browser
VIEW IN TELEGRAM
🔒 Блокировки баз данных: ключевые различия
Блокировка — временное ограничение на выполнение некоторых операций обработки данных. Она предотвращают одновременный доступ к данным для обеспечения целостности и консистентности данных.
📌 Основные типы блокировок:
🔷 Shared Lock: позволяет нескольким транзакциям одновременно читать ресурс, но не модифицировать его
🔷 Exclusive Lock: позволяет транзакции как читать, так и модифицировать ресурс
🔷 Update Lock: используется для предотвращения взаимоблокировки, когда транзакция намеревается обновить ресурс
🔷 Schema Lock: используется для защиты структуры объектов базы данных
🔷 Bulk Update Lock: используется во время массовых вставок
🔷 Key-Range Lock: используется в индексированных данных для предотвращения фантомных чтений
🔷 Row-Level Lock: блокирует конкретную строку в таблице
🔷 Page-Level Lock: блокирует конкретную страницу (фиксированный блок данных) в базе данных
🔷 Table-Level Lock: блокирует всю таблицу
👉 Источник
#инфографика
Блокировка — временное ограничение на выполнение некоторых операций обработки данных. Она предотвращают одновременный доступ к данным для обеспечения целостности и консистентности данных.
📌 Основные типы блокировок:
🔷 Shared Lock: позволяет нескольким транзакциям одновременно читать ресурс, но не модифицировать его
🔷 Exclusive Lock: позволяет транзакции как читать, так и модифицировать ресурс
🔷 Update Lock: используется для предотвращения взаимоблокировки, когда транзакция намеревается обновить ресурс
🔷 Schema Lock: используется для защиты структуры объектов базы данных
🔷 Bulk Update Lock: используется во время массовых вставок
🔷 Key-Range Lock: используется в индексированных данных для предотвращения фантомных чтений
🔷 Row-Level Lock: блокирует конкретную строку в таблице
🔷 Page-Level Lock: блокирует конкретную страницу (фиксированный блок данных) в базе данных
🔷 Table-Level Lock: блокирует всю таблицу
👉 Источник
#инфографика
📑 Пагинация страниц при проектировании API: основные методы
🔹 На основе смещения:
🔹 На основе курсора:
🔹 На основе страницы:
🔹 На основе ключа:
🔹 На основе времени:
🔹 Гибридная пагинация:
👉 Читать подробнее о достоинствах и недостатках
#проектирование_систем #инфографика
🔹 На основе смещения:
GET /orders?offset=0&limit=3
🔹 На основе курсора:
GET /orders?cursor=xxx
🔹 На основе страницы:
GET /items?page=2&size=3
🔹 На основе ключа:
GET /items?after_id=102&limit=3
🔹 На основе времени:
GET /items?start_time=xxx&end_time=yyy
🔹 Гибридная пагинация:
GET /items?cursor=abc&start_time=xxx&end_time=yyy
👉 Читать подробнее о достоинствах и недостатках
#проектирование_систем #инфографика
🛠 Технический стек Netflix: обзор инструментов CI/CD пайплайна
☑️ Планирование работы: Jira + Confluence
☑️ Разработка: Java + другие языки для различных юзкейсов
☑️ Сборка: Gradle + Gradle-плагины
☑️ Packaging: Amazon Machine Image
☑️ Хаос-тестирование
☑️ Деплой: Spinnaker для Canary rollout deployment
☑️ Мониторинг: Atlas + Kayenta
☑️ Инциденты: PagerDuty
👉 Источник
#инфографика
☑️ Планирование работы: Jira + Confluence
☑️ Разработка: Java + другие языки для различных юзкейсов
☑️ Сборка: Gradle + Gradle-плагины
☑️ Packaging: Amazon Machine Image
☑️ Хаос-тестирование
☑️ Деплой: Spinnaker для Canary rollout deployment
☑️ Мониторинг: Atlas + Kayenta
☑️ Инциденты: PagerDuty
👉 Источник
#инфографика
🥷 Ходите стать профи в отладке контейнеров? Ловите мини-курс от Ивана Величко, в котором сложный материал объясняется на простых иллюстрациях:
🔷 Docker: How To Debug Distroless And Slim Containers
🔷 Kubernetes Ephemeral Containers and kubectl debug Command
🔷 Containers 101: attach vs. exec — what's the difference?
🔷 Why and How to Use containerd From Command Line
🔷 Docker: How To Extract Image Filesystem Without Running Any Containers
🔷 KiND — How I Wasted a Day Loading Local Docker Images
#инфографика
🔷 Docker: How To Debug Distroless And Slim Containers
🔷 Kubernetes Ephemeral Containers and kubectl debug Command
🔷 Containers 101: attach vs. exec — what's the difference?
🔷 Why and How to Use containerd From Command Line
🔷 Docker: How To Extract Image Filesystem Without Running Any Containers
🔷 KiND — How I Wasted a Day Loading Local Docker Images
#инфографика
🚀 8 ключевых стратегий масштабирования систем:
☑️ Проектирование stateless сервисов, которые не зависят от данных конкретного сервера и проще масштабируются
☑️ Расширение количества серверов для распределения нагрузки
☑️ Использование балансировщика нагрузки для равномерного распределения входящих запросов по серверам
☑️ Автоматическое масштабирование для автоматической корректировки ресурсов в реальном времени
☑️ Кэширование для уменьшения нагрузки на базу данных и обработки повторяющихся запросов
☑️ Репликация данных на нескольких узлах для масштабирования операций чтения и повышения отказоустойчивости
☑️ Распределение данных по нескольким инстансам для масштабирования операций записи и чтения
☑️ Перенос трудоемких задач на фоновые рабочие процессы с использованием асинхронной обработки
👉 Источник
#инфографика
☑️ Проектирование stateless сервисов, которые не зависят от данных конкретного сервера и проще масштабируются
☑️ Расширение количества серверов для распределения нагрузки
☑️ Использование балансировщика нагрузки для равномерного распределения входящих запросов по серверам
☑️ Автоматическое масштабирование для автоматической корректировки ресурсов в реальном времени
☑️ Кэширование для уменьшения нагрузки на базу данных и обработки повторяющихся запросов
☑️ Репликация данных на нескольких узлах для масштабирования операций чтения и повышения отказоустойчивости
☑️ Распределение данных по нескольким инстансам для масштабирования операций записи и чтения
☑️ Перенос трудоемких задач на фоновые рабочие процессы с использованием асинхронной обработки
👉 Источник
#инфографика
🚀 История девятимесячного пути к горизонтальному шардированию стека Postgres Figma и ключ к открытию (почти) бесконечной масштабируемости: по мотивам статьи из блога Figma
Стек базы данных Postgres, с ростом пользовательской базы на 200% с 2018 года до 3 миллионов пользователей в месяц, вырос почти в 100 раз.
📌 Как команде это удалось?
🔷 Вертикальное масштабирование и репликация: они обновили базу до крупнейшего инстанса Amazon RDS и создали несколько реплик для масштабирования чтения, используя PgBouncer для управления соединениями.
🔷 Вертикальное разделение: перенесли высоконагруженные таблицы в отдельные базы данных, управляемые несколькими PgBouncer.
🔷 Горизонтальное шардирование: для больших таблиц внедрили горизонтальное шардирование, создавая новый сервис DBProxy для маршрутизации и выполнения запросов.
👉 Подробнее
👉 Источник
#проектирование_систем #инфографика
Стек базы данных Postgres, с ростом пользовательской базы на 200% с 2018 года до 3 миллионов пользователей в месяц, вырос почти в 100 раз.
📌 Как команде это удалось?
🔷 Вертикальное масштабирование и репликация: они обновили базу до крупнейшего инстанса Amazon RDS и создали несколько реплик для масштабирования чтения, используя PgBouncer для управления соединениями.
🔷 Вертикальное разделение: перенесли высоконагруженные таблицы в отдельные базы данных, управляемые несколькими PgBouncer.
🔷 Горизонтальное шардирование: для больших таблиц внедрили горизонтальное шардирование, создавая новый сервис DBProxy для маршрутизации и выполнения запросов.
👉 Подробнее
👉 Источник
#проектирование_систем #инфографика
🛠 Коллекция инструментов для разработчика на любой случай жизни
Правильный инструмент разработки может сэкономить драгоценное время, энергию и, возможно, выходные.
👉 Источник
#инфографика
Правильный инструмент разработки может сэкономить драгоценное время, энергию и, возможно, выходные.
👉 Источник
#инфографика
🤩 Почему PostgreSQL — лучшая СУБД по мнению разработчиков в соответствии с Stackoverflow Developer Survey?
Потому что это единая СУБД, которая охватывает почти все кейсы, в которых нуждаются разработчики:
☑️ OLTP (Online Transaction Processing)
☑️ OLAP (Online Analytical Processing)
☑️ Потоковая обработка с PipelineDB
☑️ Геопространственные возможности с PostGIS
☑️ Данные временных рядов с Timescale
☑️ Распределенные таблицы с Citus
👉 Источник
#инфографика
Потому что это единая СУБД, которая охватывает почти все кейсы, в которых нуждаются разработчики:
☑️ OLTP (Online Transaction Processing)
☑️ OLAP (Online Analytical Processing)
☑️ Потоковая обработка с PipelineDB
☑️ Геопространственные возможности с PostGIS
☑️ Данные временных рядов с Timescale
☑️ Распределенные таблицы с Citus
👉 Источник
#инфографика
📌 Семантическое версионирование (SemVer): наглядная иллюстрация
Семантическое управление версиями — это формальное соглашение для определения номера версии новых выпусков ПО. Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:
1️⃣ МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API
2️⃣ МИНОРНУЮ версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости
3️⃣ ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к формату МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ.
👉 Источник
#инфографика
Семантическое управление версиями — это формальное соглашение для определения номера версии новых выпусков ПО. Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:
1️⃣ МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API
2️⃣ МИНОРНУЮ версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости
3️⃣ ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к формату МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ.
👉 Источник
#инфографика