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

SQL *

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

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

LLM'ы в преобразовании запроса на естественном языке в SQL (text2sql)

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.8K

Привет, Хабр! На связи участница профессионального сообщества NTA Марина Коробова.

Данные занимают центральное место в информационном обществе. Именно информация является основой для принятия решений, развития бизнеса и научных исследований. Многие организации инвестируют огромные средства в системы, способные хранить, обрабатывать и анализировать данные.

Одной из главных проблем, с которыми сталкиваются компании, это непосредственная работа с базами данных с помощью языка SQL (Structured Query Language). Не все знают этот язык, и не у всех есть время изучать его. Поэтому на рынке появляются инструменты, позволяющие писать запрос на естественном языке и получать ответ на языке запросов.

В посте познакомлю вас с двумя AI-инструментами для генерации SQL-запросов: SQLCoder Defog и SQLthroughAI.

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии9

Построение OLAP-запросов с использованием аналитических функций

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.8K

Привет, уважаемые читатели Хабра! Сегодня мы вас познакомим с OLAP и аналитическими функциями.

OLAP, или Online Analytical Processing, представляет собой технологию для анализа и извлечения данных из больших наборов информации. Это позволяет производить сложные агрегации, расчеты, фильтрации и срезы данных, что особенно полезно при работе с огромными объемами информации. В отличие от OLTP (Online Transaction Processing), который ориентирован на операции с данными, OLAP нацелен на поддержку бизнес-аналитики, многомерного анализа и принятия решений.

Читать далее
Всего голосов 13: ↑9 и ↓4+5
Комментарии3

Отправка и обработка HTTP запросов в PostgreSQL

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров18K

Эта статья о том как отправлять и обрабатывать HTTP-запросы непосредственно из/в PostgreSQL. Автор расскажет о том, что такое асинхронное уведомление в PostgreSQL, и наглядно продемонстрирует, как с его помощью можно взаимодействовать с внешними системами из самой СУБД.

Читать далее
Всего голосов 16: ↑14 и ↓2+12
Комментарии57

Airflow vs NiFi: исследуем оркестратор для формирования витрин данных

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров5.4K

Сегодня концепция витрин данных является стандартом и используется повсеместно. Поэтому даже небольшим компаниям важно определиться с помощью каких инструментов они будут решать проблему оркестрации процессов построения витрин. Какой инструмент в условиях относительно небольшого бюджета позволит достигать поставленных целей? Этот вопрос мы и постараемся раскрыть в статье. Для этого рассмотрим два известных инструмента: Airflow и NiFi, а также постараемся выявить их сильные и слабые стороны.

Читать далее
Всего голосов 9: ↑5 и ↓4+1
Комментарии14

Истории

Повышение эффективности SQL-запросов: советы и рекомендации

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров14K

В статье представлен ряд советов и методов, которые помогут читателям оценить производительность своих SQL-запросов и улучшить ее при необходимости. Здесь будут рассмотрены некоторые ключевые аспекты оптимизации запросов для SQL Server, чтобы помочь пользователям сделать их более эффективными и быстрыми.

Читать далее
Всего голосов 22: ↑18 и ↓4+14
Комментарии7

Регулярные выражения в реальных задачах

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров17K

Привет, Хабр! Меня зовут Татьяна, я разработчик в Росбанке, и в этом посте я расскажу про регулярные выражения. По своему опыту могу сказать, что регулярки — это очень полезный инструмент. Я часто пользуюсь ими, решая задачи по обработке текста в базах данных. Вначале я остановлюсь на теории, а затем рассмотрю несколько реальных задач, которые были решены с использованием регулярных выражений.

Читать далее
Всего голосов 21: ↑19 и ↓2+17
Комментарии17

О Prepared statements, серверном кэше скомпилированных запросов или как эффективно кэшировать запросы в YDB

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.8K

Существуют различные способы снижения стоимости выполнения SQL-запросов в современных СУБД. Наиболее распространенными подходами являются использование подготовленных запросы и кэширование. Оба метода доступны в YDB.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Многоуровневая группировка в SQL: Grouping sets

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров12K

Описан основной принцип работы конструкции Grouping sets в SQL на примере. Статья будет полезна для тех, кто хочет быстро разобраться с основными принципами группировки с использованием Grouping sets.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии12

Небольшой тест нескольких БД при работе с многими таблицами

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.2K

Я новичок в работе с базами данных и для их изучения (а заодно для изучения Питона) начал небольшой пет-проект. В процессе оказалось, что в моей многопользовательской системе запросы к БД всегда касаются только одного пользователя. «Отлично!» подумал я, «раздам каждому пользователю по табличке и сэкономлю ресурсы сервера на индексации!». Конечно сначала я почитал литературу и подобных решений в ней не нашел. Потом сходил на один из популярных ресурсов и там мне объяснили, что так делать нельзя. Но почему – никто объяснить не смог (или возможно не захотел). Поэтому я решил сделать небольшой тест на самых популярных БД – проверить что будет на самом деле.

Читать далее
Всего голосов 17: ↑6 и ↓11-5
Комментарии46

Погружаемся в базы данных и SQL: полезные материалы и инструменты от сотрудников Selectel

Время на прочтение4 мин
Количество просмотров10K

Почему программисты SQL так плохо шутят? Потому что их юмор — это всегда "SELECT * FROM jokes WHERE is_funny = 1".

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

Мы попросили наших коллег порекомендовать полезные ресурсы, которые помогут сделать первые шаги в работе с базами данных и SQL. Сохраняйте подборку в закладки, чтобы сэкономить время на изучение темы, и делитесь своими вариантами в комментариях.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии3

Oracle/ClickHouse. DWH. Партицирование как средство быстрого обновления данных

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7K

В этой статье хотелось бы рассмотреть такой вопрос - как частичное обновление больших объемов данных в таблицах, которые активно используются пользователями на чтение. Задача является типовой, и с ней сталкивается каждый инженер данных. При этом не важно на какой ступеньке своей карьерной лестницы вы находитесь, Junior или Senior, такие задачи будут.

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

Искусство ETL. FAQ по Data Cooker ETL

Время на прочтение5 мин
Количество просмотров3.3K

Как и было обещано, в завершение серии ( 1 2 3 4 5 ) статей о разработке инструмента для ETL больших данных, я выкладываю выжимку ответов на вопросы.


А то статьи были в формате туториала для разработчиков таких инструментов (длинные и с высоким уровнем сложности), так что стоит рассказать более кратко и понятно для каждого.


Q. Что это такое?


A. Специализированный инструмент для а) быстрого создания ETL процессов и б) эффективного по стоимости их выполнения.


Промка: https://dcetl.ru
Исходники: https://github.com/PastorGL/datacooker-etl
Официальная группа в телеге: https://t.me/data_cooker_etl

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Clickhouse — непростая жизнь в продакшене

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров20K

Около двух лет назад вышла небольшая статья Kafka Streams — непростая жизнь в production, в которой я описывал сложности, с которыми наша команда столкнулась при попытке решить задачи проекта с помощью kafka-streams. Эксперимент вышел неудачным, и мы в итоге совсем отказались от этой технологии. Вместо нее решили попробовать Clickhouse (CH), и сейчас уже можно сказать, что эта база нам очень хорошо подошла и отлично решает почти все задачи, которые нам ставит бизнес. В этой статье я расскажу об особенностях использования CH.

Читать далее
Всего голосов 41: ↑41 и ↓0+41
Комментарии8

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

Искусство ETL. Пишем собственный движок SQL на Spark [часть 5 из 5]

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров1.8K

REPL


В данной серии статей я подробно рассказываю о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

Краткое содержание предыдущей серии, посвящённой API расширения и разного рода технической обвязке:


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


Теперь можно поговорить о последних штрихах, делающих инструмент — инструментом, а именно, об интерактивно-отладочном режиме, то есть, REPL, клиенте и сервере, а также о генераторе документации.


Предупреждение о рейтинге «M for Mature»

Уровень сложности данной серии статей — высокий. Базовые понятия по ходу текста вообще не объясняются, да и продвинутые далеко не все. Поэтому, если вы не разработчик, уже знакомый с терминологией из области бигдаты и жаргоном из дата инжиниринга, данные статьи будут сложно читаться, и ещё хуже пониматься. Я предупредил.

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Проектирование БД и почему важен SQL для системного аналитика: гайд по улучшению качества требований

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров15K

Берём в работу новую задачу или проект. Начинаем со сбора бизнес-требований. Потом архитектура системы и влияние требований на нее, БД, API, интеграции. И вот, в процессе разработки выясняется, что в требованиях опять что-то не учли. Что может быть хуже?

Может, коллеги! Когда через пол года вам же приходится возвращаться к задаче и вы понимаете, что требования к развитию системы по словам разработчиков нереализуемы. Как так?! Элементарная же задача! А потом мне показывают БД. И тут я понимаю, что пришло время делать выбор: дорого переделывать или "костыли" подойдут.

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

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии6

Искусство ETL. Пишем собственный движок SQL на Spark [часть 3 из 5]

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров1.6K

04_assets_residents.tdl


В данной серии статей я подробно рассказываю о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

Краткое содержание предыдущей серии, последней, посвящённой проектированию спецификации языка:
Операторы жизненного цикла наборов данных (продолжение)
Операторы контроля потока выполнения
Операторы управления контекстом исполнения
Операторы выражений


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


Предупреждение о рейтинге «M for Mature»

Уровень сложности данной серии статей — высокий. Базовые понятия по ходу текста вообще не объясняются, да и продвинутые далеко не все. Поэтому, если вы не разработчик, уже знакомый с терминологией из области бигдаты и жаргоном из дата инжиниринга, данные статьи будут сложно читаться, и ещё хуже пониматься. Я предупредил.

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии7

Вы вообще нормальн… нормализованный??

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.9K

Сказ о том, нормализация данных завела производительность many-to-many в postgres в тупик, как это зло было повержено, и как тут нам помог Clickhouse.

Порой бывают ситуации, когда стоит посмотреть на задачу будто с нуля и отбросить предыдущий опыт и best practices. Подумать на несколько шагов вперёд. И лучше до того, когда уже вышли из SLA или нахватали негатива от клиентов или бизнеса. Об одной такой задаче и стандартном решении, которое пришлось больно редизайнить, хочется и поделиться с сообществом в этой статье.

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии20

SQL HowTo: ближайший общий предок в дереве (LCA)

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.1K

В иерархических структурах регулярно возникает потребность определить ближайшего общего предка в дереве, он же наименьший общий предок (Lowest (Least) Common Ancestor).

Правда, "классические" алгоритмы для решения этой задачи работают лишь с парой узлов (раз, два, три, четыре), а мы, используя всю мощь PostgreSQL, будем решать задачу сразу для нескольких узлов.

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

7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров24K

В мире баз данных идентификаторы имеют решающее значение для уникальной идентификации записей. Традиционно многие разработчики предпочитали автоматически увеличивающиеся целочисленные идентификаторы. Однако есть еще один вариант, который набирает популярность: универсально уникальные идентификаторы (UUID). В этой статье мы рассмотрим, почему UUID часто являются лучшим выбором по сравнению с автоматически увеличивающимися идентификаторами.

Читать далее
Всего голосов 34: ↑22 и ↓12+10
Комментарии90

MSSQL: Rebuild vs Reorganize в высоконагруженных системах

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.5K

В двух прошлых статьях я разобрал Index REBUILD в Enterprise и Standard editions. Настало время осветить Index Reorganize - то есть Index Rebuild для бедных. Рекомендую заглянуть в статьи по ссылкам выше - там описан скрипт, который выполняет rebuild или reorg, контролируя течение процесса.

Ведь index reorganize не держит долгих блокировок, почти не нагружает сервер, работая в одном треде, поэтому он безопасен, так? Правда? Ведь правда?

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

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