Как стать автором
Обновить
98.48

SQL *

Формальный непроцедурный язык программирования

Сначала показывать
Порог рейтинга

В конце прошлого года Группа Arenadata выпустила обновления ряда своих продуктов.

Новые релизы:

  • Arenadata DB (ADB) — v6.27.1.59;

  • Arenadata DB Backup Manager (ADBM) — v2.3.2;

  • Arenadata DB Control (ADBC) — v4.11.0;

  • Arenadata Streaming (ADS) — v3.6.2.2.b1;

  • Arenadata Catalog (ADC) — v0.8.0;

  • Arenadata Cluster Manager (ADCM) — v2.5.0.

Обновления компонентов Arenadata Cluster Manager (ADCM):

  • Arenadata Monitoring (ADM) — v4.1.0;

  • Arenadata Enterprise Tools (ADET) — v2024121800.

В новых версиях улучшена производительность, исправлены ошибки, добавлен новый функционал и дополнительные возможности.

⛓ Текст обзора и ссылки на полное описание релизов здесь.

Теги:
+3
Комментарии1

Учим SQL с помощью «Игры в кальмара». Вышел занимательный учебник, где нужно стать частью Организации Squid Game и помогать в подготовке Игр с помощью SQL.

Вы только что были приняты на работу в качестве Data Scientist в таинственную организацию Squid Game. Фронтмен, управляющий Squid Games, пообещал вам полностью удаленную работу. Но, как это обычно бывает в индустрии, вас подставили и обманули. Оказалось, что роль больше связана с аналитикой продуктов на SQL, а работа не полностью удаленная, а гибридная: 5 дней в офисе, 2 дня удаленно. Вы даже не успели пожаловаться на эту работу, как фронтмен приставил к вашей голове пистолет и начал требовать ответы на различные бизнес‑вопросы. Вы должны написать SQL‑запросы, чтобы ответить ему — иначе пуля.

В игре 9 уровней, в каждом из которых вас ждут таблицы и схемы для обработки. Выполняете задачу — вписываете в ячейку ответ и молитесь, чтобы он был правильным. Ошиблись — вы уволены.

Теги:
+1
Комментарии1
1

Представляем YDB DWH компонент для аналитической обработки данных в СУБД Яндекса

В YDB появилась новая функциональность: теперь СУБД Яндекса поддерживает работу со сложными аналитическими запросами (OLAP). Благодаря этому компании смогут не только хранить и обрабатывать в YDB сотни терабайт транзакционных данных, но и выполнять над этими данными запросы и создавать системы для поддержки принятия решений — корпоративные хранилища данных.

Система горизонтально масштабируется за счёт шардирования — автоматического партиционирования по объёму и нагрузке, — а также обеспечивает быстрое выполнение запросов благодаря массивно‑параллельной архитектуре (МРР).

Аналитическая функциональность компонента YDB DWH включает колоночные таблицы с консистентным хранением данных и управление смешанной нагрузкой. В платформу СУБД Яндекса также входит движок выполнения запросов со спиллингом данных на диск, стоимостный оптимизатор, федеративные SQL‑запросы к внешним источникам данных (S3, PostgreSQL, Greenplum, Oracle, Microsoft SQL), что позволяет создавать корпоративные хранилища данных. В планах реализация поддержки SQL-диалекта PostgreSQL для интеграции как в OLAP‑, так и в OLTP‑сценарии.

Платформа распространяется по коммерческой лицензии. Её можно и установить в собственной инфраструктуре (on‑premise), и использовать как управляемый сервис в Yandex Cloud.

Теги:
+5
Комментарии5

Подборка для аналитиков по работе с SQL

Собрали статьи, которые будут интересны начинающим аналитикам. Если вы только начинаете знакомство с SQL или хотите освежить знания, эта подборка для вас.

Типы данных SQL — что о них нужно знать начинающему аналитику. Разбираем, какими они бывают и как с ними работать.

Таблицы в SQL: типы и операции — различные типы таблиц и основные операции, которые можно выполнять над ними.

SQL-запросы — основные команды для управления базами данных.

Оконные функции в SQL — что это и как использовать.

Основные ошибки SQL — список распространённых ошибок в работе с запросами баз данных SQL и лучших практик, о которых забывают некоторые пользователи. Рассказываем, как найти ошибки и исправить их.

Потренироваться и решить 70 задач в тренажёре можно на бесплатном курсе «Основы работы с базами данных и SQL».

Теги:
Рейтинг0
Комментарии0
1

Зачастую бизнес‑объекты в информационных системах хранятся в классических реляционных базах данных, где каждому атрибуту объекта соответствует колонка в таблице.

Чтобы изменить такую объектную модель, например, добавить или удалить атрибут, нужно внести изменения в схему базы данных, то есть выполнить DDL‑операцию. Она сопровождается блокировками таблиц и увеличением времени простоя при работе с данными. Кроме того, при увеличении числа атрибутов можно превысить ограничение на количество колонок в таблице. Например, в Postgres их можно создать не более 1600.

Эти проблемы можно устранить, используя хранение данных в формате JSON. Основные преимущества такого подхода:

  • отказ от фиксированной структуры таблиц;

  • гибкость без необходимости изменения схемы.

Обращение к динамическим полям может осложниться при работе с Hibernate до версии 6.2. Более ранние версии не позволяют обращаться к полям внутри JSON на уровне HQL, что ограничивает возможности фильтрации и сортировки. Поэтому оптимальный вариант — использовать Native SQL. Hibernate позволяет регистрировать SQL‑функции, чтобы вызывать их из HQL‑запросов. Пример регистрации такой функции для Postgres приведен ниже:

registerFunction("jsonQuery",
    new SQLFunctionTemplate(StandardBasicTypes.STRING,
        "jsonb_path_query_first(?1, ?2)::varchar"));
  • Первый параметр — колонка в БД, внутри которой хранится JSON, выполняющий запрос.

  • Второй параметр — запрос в виде JSON Path, который позволяет добраться до определенных полей.

Пример структуры JSON и использования на ней SQL-функции в запросе:

{
  "CPU_Brand": "Intel",
  "CPU_Model": "Xeon 8380",
  "RAM_Size_GB": 64
}
SELECT obj.id
FROM userObject obj
WHERE jsonQuery(obj.json, '$.CPU_Brand') = 'Intel'

При работе с более сложными вещами, например, фильтрация объектов с вложенными данными, SQL Server требует применения конструкций CROSS APPLY и openjson.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии3
1

Пишем эффективные аналитические запросытретья лекция курса в МГТУ им. Баумана

Третья лекция нашего курса «Deep dive into SQL and DWH» прошла 21 ноября — делимся видеозаписью!

Дата-архитектор Павел Ковалёв рассказал о внутреннем устройстве систем Greenplum и Clickhouse и возможностях, которые они предоставляют с точки зрения оптимизации запросов.

Посмотреть запись можно здесь:

Оставшиеся два занятия курса пройдут в формате очной практики. Видеозаписи трёх прошедших лекций доступны в отдельном плейлисте.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Пишем эффективные аналитические запросывторая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Вторая лекция прошла 14 ноября; предлагаем посмотреть её видеозапись.

Внутри — обзор инструментов построения DWH/Data Lake, в том числе: Hadoop, Spark, Trino, Databricks, Amazon Athena, Amazon Redshift и Google BigQuery.

Посмотреть можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса будет посвящена техникам оптимизации аналитических SQL-запросов и состоится уже в ближайший четверг, 21 ноября, с 17:25 до 19:00.

Присоединяйтесь в зуме!

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Пишем эффективные аналитические запросы: первая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Первая лекция прошла 7 ноября — предлагаем посмотреть её видеозапись.

Внутри лекции:

  • Обзор основных понятий курса (OLTP и OLAP, хранилище данных, его базовые слои, архитектуры обработки данных и т.д.)

  • Устройство DWH — на примере компании Сравни

  • Основы оптимизации аналитических SQL-запросов

  • Как решать проблемы с неэффективными запросами: практические кейсы

Посмотреть запись можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса, посвященная архитектурному обзору инструментов для построения DWH, пройдёт уже в ближайший четверг, 14 ноября, с 17:25 до 19:00. Присоединяйтесь в онлайне!

***

Больше информации о наших лекциях, митапах, статьях и других полезных материалах про ИТ, в тг-канале Sravni Tech.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Привет! Я — Ося, разработчик в Инновационном Центре «Безопасный транспорт», ваш виртуальный проводник в мир технологий и разработки. В блоге рассказываю, как решаю сложные задачи и делюсь знаниями. Здесь мы будем разбираться в коде, обсуждать подходы к проектам и актуальные тренды в IT. Пишу о разработке, больших данных и инновационных технологиях.

Я — робот-осьминог и талисман ИЦ, который иллюстрирует разносторонность и многозадачность нашей команды. Мои 8 щупалец представляют различные направления работы, а 3 сердца обеспечивают высокую эффективность. Отсутствие скелета позволяет гибко адаптироваться к изменениям, а более 1000 рецепторов на щупальцах помогают мне воспринимать малейшие колебания в окружении.

Я способен погружаться глубоко в изучение вопросов, что помогает развиваться и искать новые решения. Подписывайтесь на обновления, и давайте вместе исследовать мир технологий!

Теги:
Всего голосов 4: ↑2 и ↓2+3
Комментарии0
1

Как обрабатывать 5 млн изменяющихся форм в минуту с SLI 99.99% — Кирилл Грищук

Опубликовали запись доклада секции «Разработка» с Ural Digital Weekend 2024.

При разработке сервиса, от которого зависят все сценарии организации, необходимо предусмотреть все возможные и невозможные сценарии, в рамках доклада поговорим о доступности данных и способе их получения клиентам, рассмотрим различные подходы и определим, когда стоит выбирать нестандартный способ, поделюсь ошибками, которые мы совершили.

Ссылка на запись доклада в ВКонтакте.

Ссылка на презентацию: https://goo.su/qHW9

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Сделал Неовим-плагин, для работы дбт-моделями. Пока реализованы несколько сценариев:

  • запуск модели;

  • полный перезапуск модели;

  • компилирование модели с выводом в новый буфер;

  • генерация yaml-описания модели с выводом в новый буфер;

  • отображение зависимостей модели в Телескопе.

Установка и доступные команды доступны в репозитории. Если есть пожелания и рекомендации — пишите в гит или телеграм.

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Чем дольше копаю тему статистического анализа производительности СУБД, тем больше удивляюсь - почему никто не занимался/не занимается использованием математических методов в DBA ? Статей и материалов практически - нет. По performance engineering - можно найти, по DBA в общем то тишина.

И это очень странно, ведь математическая статистика именно для этого и предназначена и используется уже сотни лет - анализ результатов наблюдений и экспериментов , поиск и выявление закономерностей, формирование и проверка гипотез о причинах .

Это же так просто и в общем то лежит на поверхности - сделал изменение , собери статистику влияния и оцени характер полученных результатов по совокупности опытов. Нужно подчеркнуть - не картинки, не "кажется" , "наверное" , "скорее всего", "может быть" , а цифры. И цифры взятые не с потолка , а рассчитанные математически. И даже не надо ничего нового придумывать и изобретать - медиана, мода , стандартное отклонение , дисперсия , корреляция - 3й курс КАИ, если не ошибаюсь. Вполне достаточно , для получения объективных результатов анализа, а не гаданий и шаманских танцев с бубнами.

Почему DBA не используют математику ? Риторический вопрос ....

Великие - правы.
Великие - правы.

Теги:
Всего голосов 4: ↑1 и ↓30
Комментарии5

О способе оценки производительности отдельного SQL запроса .

В дополнении к теме:

Размышления о мониторинге производительности отдельного SQL запроса

Для возможного варианта решения задачи:

https://habr.com/ru/posts/833162/

если производительность отдельного SQL запроса в настоящее время не мониторится.

Предположение.

Для того, чтобы оценить производительность отдельного SQL запроса необходимо и достаточно получить отношение стоимости запроса (EXPLAIN ANALYSE) к актуальному времени выполнения запроса .

Важное следствие и ограничение:

Данную оценку производительности можно получить только на данный конкретный момент времени при данном конкретном состоянии СУБД в целом.

Данное весьма существенное ограничение , вообще говоря, влечет реальные проблемы для использования данной методики в промышленной эксплуатации СУБД(запрос может быть весьма ресурсоемким). Но с другой стороны, позволяет очень чётко и однозначно отследить причины изменения производительности запроса при изменении текста запроса и/или, что важнее - при изменении входящих параметров запроса .

Т.е. данная методика больше применима на этапе разработки и нагрузочного тестирования , а не в ходе промышленной эксплуатации СУБД.

Теги:
Всего голосов 4: ↑1 и ↓30
Комментарии3

Ближайшие события

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Друзья! У Петра вышло продолжение серии обзорных статей про ClickHouse — open-source OLAP базу данных, ориентированную на колонки. В новой статье наш DevOps-инженер рассказывает про особенности репликации в этой СУБД.

Из этой части вы узнаете:

  • как работают сервисы координации Zookeeper и ClickHouse Keeper;

  • по какой причине может произойти падение репликации;

  • почему не следует очищать Keeper вручную.

Чтобы вспомнить, о чём Пётр рассказывал в первой части — нажмите сюда.

А чтобы ознакомиться с новой частью — сюда.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

В продолжении темы - "время отклика СУБД" https://habr.com/ru/posts/827054/

Метрику не имеет смысла использовать для алерта о деградации производительности СУБД .

Допустим имеется OLTP нагрузка на СУБД - большое количество коротких запросов. В результате, имеем некоторое значение метрики "Среднее время отклика" = sum(total_exec_time) / sum(calls).

И вот , ситуация изменилась - запросов OLTP стало меньше , но появились аналитические/долгие запросы .

В результате значение метрики увеличивается - запросов стало меньше , общее время выполнения увеличилось.

Является ли данная ситуация алертом для создания инцидента о деградации производительности СУБД ?

Конечно же - нет.

Более того - в этом случае резко увеличится количество обрабатываемых блоков разделяемой области.

Что также не является показателем деградации производительности СУБД , даже совсем наоборот .

P.S. Использование данной метрики оправдано только в одном сценарии - нагрузочное тестирование инфраструктуры при обязательном условии постоянства нагрузки на СУБД.

Теги:
Всего голосов 3: ↑1 и ↓20
Комментарии0

На днях опубликовал на GitHub свой скрипт 2013 года, который наполнял с ИБП Ippon Smart Winner 750 базу данных IBM DB2 данными по напряжению сети (за каждую секунду в течение года, по результатам наблюдений скорректировал уставки на реле напряжения, их безопасность для техники подтвердилась при отгорании нуля), обновлял статус моего DynDNS клиента по данным с роутера, запускал и останавливал виртуальную машину VMware Player (там у меня крутилась openSUSE с сайтом на Apache/Django) по расписанию и когда в планировщике BeholdTV была запланирована запись кабельного телевидения (это было необходимо, поскольку видео захватывалось в .asf/x264 - crf18/AC3 без использования графического ускорения и на всё ресурсов не хватало), следил за качеством ADSL линии. А сегодня дополнил ещё рядом скриптов: в 2014 перенёс сайт на Raspberri Pi (Arch Linux ARM) и там стал захватывать IPTV видео. Про захват у меня на Дзене можно почитать, а скрипы создания оглавления и некоторого контроля версии файлов (WSH/JS) опубликовал на GitHub здесь же. Также скрипты по установке времени и некоторой оптимизации скорости отклика сайта, мониторинга доступности посредством Online Domain Tools. Ещё дополнил своими Windows скриптами по работе с СУБД IBM DB2 Express-C и её оптимизации по книге "Best practices Tuning and monitoring database system performance" (она тоже выложена в соответствии с лицензией). Изначально не включил библиотеку RGraph для построения графиков, теперь выложил под лицензией MIT 2013 года.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

На днях вышел из строя ИБП. Переключился на стабилизатор. Было уже. До техники APC стоял ИБП Ippon Smart Winner 750. Мониторил напряжение. Сохранял в базе данных SQL сервера IBM DB2 Express-C 10.5 данные за каждую секунду и хранил в течение года. Это помогло выставить уставки на реле напряжения и нормально пережить несколько отгораний нуля без потерь для техники. Скрипты соответствующие опубликовал сегодня на GitHub у себя. При работе от стабилизатора приходилось потом чинить неоднократно SQL базу данных, благо у меня было настроено журналирование в "Архивном" режиме, а сама база данных периодически тестировалась на наличие повреждений. Сложнее с остальной частью данных на компьютере: в NTFS принято частичное журналирование и внезапное отключение ведёт к необходимости решать, восстанавливать ли из бэкапа или соглашаться с тем, что возможно какие-то повреждения будут не сразу обнаружены и могут вызвать проблемы с дальнейшим ремонтом. Чуть раньше такой же пост на Дзене у себя опубликовал.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Обновление библиотеки asyncpg-lite до версии 0.3.1.1

Рад сообщить, что библиотека asyncpg-lite обновлена до версии 0.3.1. Все предыдущие версии были удалены и больше не доступны для установки. Для корректной работы, пожалуйста, удалите старые версии с помощью следующей команды:

pip uninstall asyncpg-lite

Чтобы установить последнюю версию, используйте:

pip install --upgrade asyncpg-lite

Актуальная версия: 0.3.1.1

Вы можете найти страницу библиотеки на GitHub по следующему адресу: asyncpg-lite на GitHub.

Что нового в версии 0.3.1.1

В этой версии все методы библиотеки были переписаны. Если ранее библиотека работала исключительно с чистым asyncpg, то теперь asyncpg используется как асинхронный драйвер для взаимодействия с PostgreSQL, а все запросы выполняются через SQLAlchemy.

Причины обновления

Основная причина переписывания библиотеки — улучшение безопасности. Старые версии имели определенные уязвимости, которые теперь устранены.

Подробный разбор новой версии библиотеки я постараюсь опубликовать завтра в формате статьи.

Благодарю за ваше внимание и поддержку!

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Все те кто пользовался библиотекой asyncpg-lite. Сообщаю, что завтра вечером будет выпущено обновление библиотеки asyncpg-lite. В новой версии библиотека будет полностью переписана с использованием SQLAlchemy и asyncpg (в старой версии использовался чистый asyncpg), при этом базовый синтаксис останется практически неизменным.

Такое решение принято из-за ограничений чистого asyncpg в предотвращении SQL-инъекций. Вместо разработки собственного решения я решил воспользоваться проверенными инструментами ORM, которые предоставляет SQLAlchemy, но, при этом, я постарюсь максимально сохранить ту простоту в использовании, которая была в старых версиях asyncpg-lite.

Начиная с версии asyncpg-lite 0.3, библиотека будет основываться на SQLAlchemy и драйвере asyncpg для работы с PostgreSQL. Версии ниже 0.3 будут сняты с доступности для скачивания и установки с завтрашнего дня.

С выходом asyncpg-lite 0.3 настоятельно рекомендуем удалить старые версии библиотеки и установить актуальную.

Вместе с новой версией библиотеки будет опубликована сопроводительная статья, подробно описывающая все изменения в синтаксисе.

Благодарю за внимание! 🚀

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

asyncpg-lite обновлена до версии 0.2.2.1!

В новой версии:

  • Убран флаг dsn_flag (теперь достаточно не передавать данные в параметр dns и состояние этого флага будет автоматически сброшено на dsn_flag = False)

  • Параметр deletion_password теперь обязательный (это сделано для безопасного выполнения критических операций - используйте надежный пароль)

  • Добавлен флаг debug: bool во все методы (по умолчанию его значение False)

  • Исрпавлены ошибки и улучшены логи (теперь там больше полезной информации)

Зачем нужен флаг debug?

Установив этот флаг в методе вы сможете вывести в консоль дополнительную информацию, такую как параметры запроса и сам SQL-запрос.

На уровень всего класса DatabaseManager не выводил, чтоб не перегружать консоль информацией.

С библиотекой вы сможете ознакомиться тут: asynpg-lite: Простой асинхронный менеджер для PostgreSQL на Python

Благодарю за обратную связь. Обязательно оставляйте свои замечания и пожелания к новым дополнениям к библиотеке.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0
1

Вклад авторов