SQL Portal | Базы Данных
SQL Portal. Базы данных
Ищете информацию о базах данных? Хотите развиваться в этой сфере? Присоединяйтесь к нашему Telegram-каналу SQL Portal. Здесь вы найдёте полезные материалы, статьи, уроки и обсуждения для начинающих и профессионалов. Погружайтесь в мир баз данных вместе с нами! 📈💡
Публикации канала
Поиск узких мест в базе данных Когда приложение начинает тормозить, первой под подозрение часто попадает база данных. Но высокая задержка на стороне БД не означает, что пора покупать более мощный сервер. Причина может быть в неэффективном запросе, блокировках, исчерпании пула соединений, дисковом I/O или нехватке ресурсов. Разберёмся, как найти настоящую причину. 1. Найдите симптомы. Проверьте время выполнения запросов (особенно p95), количество активных соединений, число медленных запросов, загрузку CPU и дисковый I/O. Сопоставьте эти показатели с задержками приложения, всплесками трафика и недавними деплоями, чтобы понять, когда началась проблема. 2. Определите узкое место. Выясните, что именно происходит: база медленно выполняет запросы, ожидает снятия блокировок, исчерпала доступные соединения или упёрлась в ограничения ресурсов. Также важно различать время выполнения запроса и время ожидания свободного соединения или завершения другой транзакции. 3. Соберите данные. В PostgreSQL для диагностики пригодятся следующие инструменты: pg_stat_statements — поиск ресурсоёмких запросов. pg_stat_activity — просмотр активных запросов и сессий, ожидающих выполнения. pg_locks — анализ блокировок. EXPLAIN (ANALYZE, BUFFERS) — изучение плана выполнения запроса и активности буферов. Будьте осторожны: ANALYZE действительно выполняет запрос. 4. Найдите первопричину. Медленные запросы: отсутствующие индексы, неэффективные JOIN, полное сканирование таблиц или неудачные планы выполнения. Блокировки: долгие транзакции или одновременные обновления данных. Исчерпание соединений: неправильная настройка пулов, простаивающие или утёкшие соединения. Высокая дисковая нагрузка: интенсивное чтение и запись, большие сканирования или ограничения хранилища. Нехватка ресурсов: ограничения по CPU, памяти или дисковой ёмкости. 5. Примените подходящее решение. Оптимизируйте запросы и индексы, сокращайте время транзакций, устраняйте блокировки, настраивайте пулы соединений или повышайте производительность хранилища. Масштабируйте базу только тогда, когда данные подтверждают, что проблема именно в нехватке ресурсов. Увеличение числа соединений или добавление реплик без устранения первопричины может лишь усугубить ситуацию. 6. Убедитесь, что проблема решена. Сравните задержки запросов, использование соединений, загрузку CPU, дисковый I/O и частоту ошибок приложения с показателями до инцидента. Проверьте, сохраняется ли улучшение при типичной нагрузке. Последовательность диагностики: Наблюдение → Локализация → Исследование → Диагностика → Исправление → Проверка Примеры в этом материале основаны на PostgreSQL, но сам подход применим и к MySQL, SQL Server и Oracle. При этом диагностические инструменты и команды будут отличаться. Не гадайте, в чём проблема с базой данных. Соберите доказательства, устраните причину и измерьте результат. 👉 @SQLPortal
Excel, Python или SQL — какой инструмент выбрать под задачу? Логика часто одна и та же, меняется лишь подход к её реализации. Сравниваем три инструмента на практике: фильтрацию, сортировку, агрегацию, обработку пропусков, вычисления и объединение данных. Полезная шпаргалка для тех, кто работает с данными и хочет понимать, как решать одни и те же задачи в Excel, Python и SQL. 👉 @SQLPortal
Forwarded From Arenadata 🚀 29 октября Arenadata проведёт техническую онлайн-конференцию ArenaTech На ArenaTech инженеры Arenadata расскажут, как устроены продукты компании изнутри, поделятся опытом решения сложных инженерных задач и представят ключевые направления технологического развития. 🟢Основные темы конференции: 🔜СУБД: архитектура, развитие и эксплуатация. Обсудим планы развития Arenadata DB (ADB) и Greengage DB, новые возможности MPP-СУБД, включая hot standby, вопросы безопасности и устранения уязвимостей. Отдельное внимание уделим утилите ggrebalance, которая позволяет сокращать число сегментов кластера и заменять хосты с сохранением равномерного распределения данных. 🔜Платформа данных: безопасность и Kubernetes. Расскажем об управлении секретами и доступом в Arenadata Hyperwave (ADH) с использованием OpenBao. Разберём особенности переноса Impala, Trino и Spark в Kubernetes: интеграцию с Kerberos, разработку операторов, адаптацию Spark и использование Celeborn и YuniKorn. 🔜Инструменты: кластерный менеджер, документация, ИИ-поиск. Поделимся опытом организации процессов разработки технической документации и расскажем, как создавались интеллектуальный поиск и ИИ-ассистент, упрощающие поиск информации в документации многокомпонентной платформы данных. Также расскажем про развитие нашего кластерного менеджера ADCM. После каждого доклада участники смогут задать вопросы спикерам в рамках Q&A-сессии. Конференция будет интересна разработчикам, дата-инженерам, администраторам СУБД, архитекторам, DevOps-инженерам и техническим руководителям. 🗓 29 октября, 12:00 МСК Формат: онлайн 🔛 Программа и регистрация
50 ключевых навыков, которыми должен владеть аналитик данных От SQL, Excel, Python и Power BI до статистики, визуализации данных и бизнес-аналитики — этот чек-лист охватывает навыки, необходимые для уверенной работы аналитиком данных. Сохраняй, чтобы использовать в своём обучении и отслеживать прогресс! 👉 @SQLPortal
Команда, ваш выход 👋 👉 @SQLPortal
19 функций Excel, которые должен знать каждый От SUM, AVERAGE и IF до XLOOKUP, INDEX + MATCH и функций для работы с датами — освойте формулы, которые упрощают очистку данных, расчёты и анализ. Сохраняйте шпаргалку, чтобы всегда держать нужные функции под рукой! 👉 @SQLPortal
Варианты: Anonymous Quiz 7% - A 20% - B 53% - C 3% - D 18% - E
Вопрос по SQL: Что вернёт этот SQL-запрос? 👉 @SQLPortal
Индексы не делают базы данных «быстрыми». Они ускоряют конкретные запросы — и за это приходится платить. Как на самом деле работает индекс • Индекс — отдельная структура данных, чаще всего B-Tree (B-дерево). • Он хранит значения столбца и ссылки на соответствующие строки. • Вместо полного сканирования таблицы база данных может сразу перейти к нужным данным. Чтение ускоряется за счёт того, что приходится просматривать меньше данных. Что происходит при INSERT / UPDATE Запись данных в таблицу. Поиск нужной позиции в индексе. Обновление узлов индекса. При необходимости — перебалансировка дерева. Запись изменений в журнал транзакций (WAL / redo log) для обеспечения надёжности. Каждый индекс увеличивает объём работы при записи. Стоимость операций: Чтение — примерно (O(\log n)). Запись — примерно (O(\log n)) для каждого обновляемого индекса. 10 индексов могут значительно увеличить нагрузку при записи, но это не означает, что запись обязательно станет в 10 раз медленнее. Почему индексы тормозят системы с большим количеством записей • Повышают нагрузку на CPU. • Увеличивают количество операций ввода-вывода. • Могут усиливать конкуренцию за блокировки и другие ресурсы. • Увеличивают время выполнения транзакций. Поэтому в высоконагруженных системах количество индексов тщательно контролируют. Ошибки при работе с индексами в production • Индексировать каждый столбец. • Индексировать поля с небольшим количеством уникальных значений, не учитывая характер запросов. • Игнорировать порядок столбцов в составных индексах. • Не учитывать характер операций записи. Главное правило для production: проектируйте индексы исходя из реальных запросов и сценариев работы с данными, а не только из структуры таблиц. 👉 @SQLPortal
Очистка данных в SQL — это не только удаление дубликатов Перед анализом данных важно привести их в порядок: исправить текстовые значения, обработать NULL, проверить типы данных, унифицировать категории, найти некорректные значения и провести проверки качества. И главное правило: перед UPDATE или DELETE сначала проверь, какие строки попадут под изменение. Чистые данные — основа корректной аналитики. 👉 @SQLPortal
Amazon RDS: как AWS управляет реляционными базами данных В production недостаточно просто хранить данные. Нужно настраивать резервное копирование, устанавливать обновления, масштабировать ресурсы, следить за производительностью и обеспечивать отказоустойчивость. Amazon RDS (Relational Database Service) — управляемый сервис AWS, который упрощает развёртывание и обслуживание реляционных баз данных. AWS берёт на себя значительную часть инфраструктурных задач, а разработчики могут сосредоточиться на приложении и данных. RDS поддерживает несколько популярных СУБД: • Amazon Aurora • PostgreSQL • MySQL • MariaDB • Oracle Database • Microsoft SQL Server Как это работает? • Выбираете движок базы данных. • Настраиваете вычислительные ресурсы и хранилище. • Настраиваете сеть через Amazon VPC. • Задаёте учётные данные и параметры безопасности. • Создаёте экземпляр базы данных. • Подключаете приложение. • RDS помогает автоматизировать многие задачи обслуживания. Ключевые возможности RDS • Резервное копирование. Автоматическое создание бэкапов и восстановление данных в пределах настроенных возможностей хранения резервных копий. • Обновления. Установка поддерживаемых обновлений СУБД в соответствии с настройками обслуживания. • Отказоустойчивость. В конфигурации Multi-AZ база может иметь резервный экземпляр в другой зоне доступности. При сбое основного экземпляра сервис поддерживает автоматическое переключение на резервный. • Масштабирование. Можно изменять вычислительные ресурсы и объём хранилища по мере роста нагрузки. • Мониторинг. Интеграция с Amazon CloudWatch позволяет отслеживать производительность и использование ресурсов. RDS и Aurora — в чём разница? Amazon Aurora — облачная реляционная СУБД, доступная через Amazon RDS. Она совместима с PostgreSQL и MySQL и разработана с учётом особенностей инфраструктуры AWS. Безопасность Для защиты баз данных используются: • Изоляция сети через Amazon VPC. • Security Groups для контроля сетевого доступа. • Интеграция с IAM для поддерживаемых сценариев. • Шифрование данных при хранении и передаче. • Аутентификация и разграничение прав доступа. Главный принцип — выдавать минимально необходимые права и по возможности не открывать базу данных напрямую в публичный интернет. Где используют Amazon RDS? Веб-приложения, интернет-магазины, SaaS-платформы, корпоративные системы, backend API и приложения с транзакционными нагрузками. Главное преимущество RDS — возможность использовать привычные реляционные базы данных, не управляя вручную всей инфраструктурой и значительной частью рутинных операций обслуживания. 👉 @SQLPortal
SQL выполняет запросы не в том порядке, в котором ты их пишешь Понимание логического порядка выполнения SQL-запроса помогает разобраться, как работают FROM, JOIN, WHERE, GROUP BY, HAVING, SELECT и ORDER BY. Разберись, как SQL выбирает таблицы, фильтрует строки, группирует данные, применяет условия к группам и сортирует результат. Полезная шпаргалка для точного анализа данных и написания запросов. 👉 @SQLPortal
SQL, Python и PySpark: 50 операций с данными в сравнении Фильтрация, JOIN, агрегации, оконные функции и преобразования данных — посмотрите, как одни и те же задачи решаются в трёх технологиях. Сохраняйте шпаргалку, чтобы быстрее находить знакомые операции при переходе между инструментами. 👉 @SQLPortal
8 приёмов очистки данных в SQL Работа с пропусками, удаление дубликатов, приведение текста к единому формату и проверка записей помогают подготовить данные к анализу. Сохраняйте шпаргалку, чтобы меньше ошибок в данных попадало в ваши отчёты. 👉 @SQLPortal
Партиционирование и шардинг: в чём разница? Оба подхода делят данные на части, но решают разные задачи. Партиционирование — разделение одной логической таблицы на секции. В типичном случае они находятся в одной СУБД и используют ресурсы одного сервера. Основные способы: • Range — по диапазонам, например заказы по годам. • List — по заданным значениям, например регионам US, EU и APAC. • Hash — по хешу ключа распределения. Если условия запроса позволяют, СУБД исключает ненужные секции из обработки — это называется partition pruning. Вместо всей таблицы читается только подходящая часть. Партиционирование упрощает обслуживание, загрузку и удаление старых данных. Но ускорение зависит от запросов и ключа разбиения: само по себе оно не делает любой запрос быстрее. Устройство индексов тоже зависит от СУБД: они могут быть локальными или глобальными. Шардинг — распределение данных между несколькими узлами или базами. Каждый шард использует собственные вычислительные ресурсы и хранилище. Например, клиентов распределяют по хешу customer_id. Приложение, прокси или сама распределённая СУБД определяет, куда отправить запрос. Если ключ шарда неизвестен, может потребоваться обращение к нескольким шардам. Шардинг позволяет распределить нагрузку и объём данных, но усложняет: • JOIN между шардами; • транзакции, затрагивающие несколько узлов; • перераспределение данных; • борьбу с перегруженными шардами; • маршрутизацию и эксплуатацию. Эти подходы можно сочетать: таблицы внутри каждого шарда тоже могут быть партиционированы. Обязательной цепочки «одна БД → партиции → реплики → шардинг» нет. Решение выбирают по узкому месту: объёму данных, нагрузке на чтение и запись, требованиям к задержкам и обслуживанию. 👉 @SQLPortal
Steampipe: SQL-запросы к облачной инфраструктуре Какие ресурсы остались без обязательных тегов? Есть ли публично доступные S3-бакеты? В каких Kubernetes namespaces отсутствуют NetworkPolicies? Для ответа необязательно переключаться между консолями и писать отдельные скрипты. Steampipe — open-source инструмент, который позволяет запрашивать данные из AWS, Kubernetes и других сервисов с помощью SQL. Через плагины он обращается к API сервисов и представляет данные в виде таблиц. Можно фильтровать ресурсы, объединять результаты и проверять инфраструктуру привычными запросами. Полезен для инвентаризации, поиска ошибок конфигурации и разовых проверок безопасности. Руководство по Steampipe 👉 @SQLPortal
Большая коллекция из практических рекомендаций по защите приложений. Внутри: SQL Injection, XSS, JWT, OAuth2, Kubernetes, Docker, API Security, а теперь ещё и безопасность агентов MCP и RAG. https://cheatsheetseries.owasp.org 👉 @SQLPortal
Бесплатная база по работе с данными Книга создателя pandas с подробным разбором NumPy, pandas, очистки данных, визуализации и временных рядов. Весь материал сопровождается практическими примерами, исходники и датасеты доступны на GitHub. https://wesmckinney.com/book/ 👉 @SQLPortal
Что происходит между GET /users/123 и ответом API? Несколько сотен миллисекунд могут включать установку соединения, балансировку нагрузки, проверку авторизации, обращение к кэшу и базе данных. Код контроллера занимает лишь часть этого времени. В статье разобран путь запроса в приложении на Spring Boot: • DNS и TLS. • Балансировка нагрузки. • Spring Security и JWT. • Попадание и промах кэша Redis. • Ожидание соединения из пула. • Запросы к PostgreSQL. • Взаимодействие с Kafka. • Источники задержек на каждом этапе. Не каждый запрос проходит все эти шаги: соединение может переиспользоваться, кэш — исключить обращение к БД, а Kafka участвует только там, где это предусмотрено логикой приложения. Читать на Medium 👉 @SQLPortal
SQL или Python для анализа данных? Освойте оба. SQL удобен для выборки, фильтрации, объединения и агрегации данных в БД. Python — для очистки, исследовательского анализа, автоматизации и сложных вычислений. Эти инструменты дополняют друг друга: подготовьте выборку с помощью SQL, а затем исследуйте и визуализируйте её в Python. 👉 @SQLPortal
Комментарии
Комментариев пока нет
Комментарии пишут вошедшие — так видно, кто автор.
Войти