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

SQL *

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

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

Записки оптимизатора 1С (часть 6). Логические блокировки MS SQL Server в 1С: Предприятие

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

Поговорим о блокировках в 1С:Предприятие. Идея написать эту статью появилась «по просьбам слушателей». Постараюсь максимально простым языком, без зауми рассказать о природе блокировок и что с ними делать. В один пост весь материал помещать не буду – громоздко, поэтому сегодня речь пойдет о логических блокировках сервера СУБД.

С точки зрения конечного пользователя проблема избыточных блокировок выглядит почти одинаково – замедление при выполнении операций и/или ошибка. Но природа блокировок бывает разной и решения тоже разные.

Читать далее
Рейтинг0
Комментарии0

Новости

«IT-Планета 2024»: задачи второго этапа по PostgreSQL

Время на прочтение32 мин
Количество просмотров973

Вдохновившись прошлогодним опытом, мы продолжили начинание и снова проводим конкурс по SQL на международной олимпиаде «IT-Планета».

Конкурс состоит из трех этапов. Заочный теоретический тест собрал почти 3000 человек, из которых на следующий этап мы отобрали примерно 200. Вопросы для этого этапа были подготовлены моим коллегой, Евгением Давыдовым.

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

Третий — очный — этап пройдет в конце мая; постараюсь не затягивать с отчетом, но пока храню интригующее молчание.

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

Приступить к делу
Всего голосов 13: ↑15.5 и ↓-2.5+18
Комментарии1

Грейды в аналитике. Как быстро повысить свой грейд?

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

Привет, Хабр!

Меня зовут Денис, я Ведущий Продуктовый Аналитик из МТС. Давайте сегодня поговорим про грейды в аналитике. Чем они отличаются? Расскажу, как можно быстро повышать свой грейд.

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

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

Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании. Часть 1

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

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

В статье мы обсудим четыре области вопросов, которые могут встретиться на собеседованиях по SQL. А в конце рассмотрим три задачки.

Читать далее
Всего голосов 16: ↑15.5 и ↓0.5+15
Комментарии51

Истории

Оптимизация CROSS JOIN — первые шаги

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

Различные СУБД предлагают широкий набор разновидностей операторов JOIN для таблиц. Если Вам встретилась проблема с производительностью CROSS JOIN, - например, декартово произведение таблицы с миллионом записей самой на себя, - добро пожаловать, в этой статье перечислены простейшие способы избавиться от CROSS JOIN.

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

Примеры в статье рассматриваются на основе CROSS JOIN из ClickHouse. Текущая версия ClickHouse не оптимизирует CROSS JOIN автоматически. Также стоит отметить, что поскольку часто SQL запросы не пишутся вручную, а, например, собираются по частям программно, то перечисленные далее случаи вполне реальны.

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

Использование временных таблиц (GTT) в ABAP-разработках

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

GTT – global temporary tables, таблицы которые наполняются и очищаются в рамках ABAP-сессии (application session), но находятся при этом на уровне БД (то есть данные не передаются между Database и Application).

GTT могут помочь сделать код по выборке из БД более удобочитаемым, а также сократить количество передаваемых данных между DataBase и Application.

ABAP в GTT подробнее
Всего голосов 2: ↑2.5 и ↓-0.5+3
Комментарии3

database/sql: плохой, хороший, злой

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

Многие Golang-разработчики  пробовали работать с БД в Go, и у каждого — свои боли. В этой статье разберём библиотеку database/sql как безотносительно конкретной СУБД, так и применительно к YDB. Рассмотрим трудности эксплуатации при использовании драйвера database/sql на проде. А также рассмотрим, что мы делали для решения проблем.

Меня зовут Алексей Мясников, я — руководитель Application Team в команде разработки YDB. Я очень люблю git blame за то, что с его помощью можно проследить, как развивалась инженерная мысль с течением времени и немножко побыть в шкуре разработчика той или иной классной штуки. В статье я расскажу, как реализовать драйвер database/sql для распределённой базы данных, какие проблемы при этом придётся преодолеть и как менялся подход с выходом новых версий Go. 

Читать далее
Всего голосов 33: ↑34.5 и ↓-1.5+36
Комментарии2

Meilisearch — организация поиска в связке с Laravel

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

Hola, Amigos! Меня зовут Евгений Шмулевский, я backend-разработчик на Laravel в агентстве продуктовой разработки Amiga. В статье описываю организацию поиска через Meilisearch и нюансы использования в связке с Laravel.

Читать далее
Всего голосов 10: ↑10.5 и ↓-0.5+11
Комментарии2

Древовидные структуры в SQL в одну таблицу

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

Как реализовать хранение и работу каталога папок в PostgreSQL? Есть большое количество вариантов. Но хочется, чтобы реализация выглядела лаконично, не нарушала прозрачность выполняемых операций, не вызывала блокировок, не требовала большого вовлечения клиента в специфику работы и т.д. Потому сегодня попробуем реализовать хранение древовидных структур и работу с ними без использования триггеров, блокировок, дополнительных таблиц (представлений) и внешних инструментов в SQL.

Читать далее
Всего голосов 44: ↑47.5 и ↓-3.5+51
Комментарии29

Транзакция, ACID, CAP теорема и уровни изоляций транзакций простыми словами

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

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

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

Читать далее
Всего голосов 34: ↑30 и ↓4+26
Комментарии10

Цикл статей о Greenplum. Часть 1. GP под капотом

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

Всем привет!

Как вы знаете, многие поставщики ПО ушли с российского рынка ввиду введённых санкций и многие компании столкнулись с необходимость заняться импортозамещением в кратчайшие сроки. Не стал исключением и наш заказчик. Целевой системой, на которое было принято решение мигрировать старое хранилище, стал Greenplum (далее GP) от компании Arenadata.

Этой статьей мы запускаем цикл материалов посвященных Greenplum. В рамках цикла мы разберем, как вообще устроен GP и как выглядит его архитектура. Постараемся выделить must have практики при работе с данным продуктом, а также обсудим, как можно спроектировать хранилище на GP, осуществлять мониторинг эффективности работы и многое другое. Данный цикл статей будет полезен как разработчикам БД, так и аналитикам.

Читать далее
Всего голосов 18: ↑18.5 и ↓-0.5+19
Комментарии2

Большая иерархия в SQL запросе + PostgreSQL

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

Сначала запрос адаптирован для работы в PostgreSQL 15.6.

Затем работа запроса проверена на достаточно объемной иерархии - в качестве источника данных использована структура архива jdk-master.zip из OpenJDK 22

Читать далее
Всего голосов 14: ↑15.5 и ↓-1.5+17
Комментарии6

Отображение части иерархии в SQL запросе

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

Продолжение статьи, в которой предложено решение задачи визуализации иерархической структуры средствами SQL запросов, на примере MySQL и SQLite

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

Читать далее
Всего голосов 12: ↑13.5 и ↓-1.5+15
Комментарии2

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

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Отображение иерархии в SQL запросе

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

В процессе тестирования одного курса по SQL на stepik.org встретилась задача, из которой сочинилась другая, более интересная:

Необходимо с помощью одного SQL запроса с использованием обобщенных табличных выражений отобразить иерархию, в соответствии с иллюстрацией выше

Читать далее
Всего голосов 32: ↑33.5 и ↓-1.5+35
Комментарии4

Эволюция обработки данных: от MapReduce к стриминговому движку

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

Yandex Query Language (YQL) — универсальный декларативный язык запросов к системам хранения и обработки данных, разработанный в Яндексе. А ещё это один из самых нагруженных сервисов: YQL ежедневно обрабатывает около 800 петабайт данных и 600 000 SQL-запросов, и эти показатели постоянно растут. 

Изначально YQL основывался на операциях MapReduce, которые эффективны для больших данных. Но для средних объёмов данных (до 50 Гб, которые составляют около 60% запросов) этот подход оказался неоптимальным, потому что нужно было обмениваться данными между операциями через диск. Поэтому разработчики создали новый более гибкий стриминговый движок, который значительно ускоряет обработку данных за счёт выполнения всех вычислений в памяти.

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

Читать далее
Всего голосов 34: ↑36.5 и ↓-2.5+39
Комментарии15

Сказ о том, как РП репликацию на Марии из зеркал состряпал…

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


Нежданно ни гадано, затеяли значит высшие "итишные" силы включить новые заморские очереди Кафка в уже выполненный на 4/3 проект и слава богу, что только для внешних взаимодействий и передачи всякой информации туды-сюды. Главный архитектор дал благословение и понеслось, да не туда, так как нести то некому это невиданное заморское чудо. Что делать, в обозримые сроки не впихнуть и перед боярами чин и обязательства не сдержать. Посидел РП, погоревал, да сдул пыль со знаний древних и ранее опробованных и тут понеслось.

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

Гайд на собеседования

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

Привет, Хабр! Я Денис, ведущий продуктовый аналитик!

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

Давайте начинать!

Читать далее
Всего голосов 25: ↑5 и ↓20-15
Комментарии26

Использование миграций баз данных в Go

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

Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В проекте было принято решение не использовать ORM, а вместо этого применить миграции. Так как я работал только с ORM, мне, как и автору статьи, было мало знакомо понятие миграций баз данных. В поисках информации о миграциях и популярных решениях, я наткнулся на эту статью. Перевод статьи я оставил ниже. Возможно, она будет вам полезна. Буду признателен, если вы сможете поделиться библиотеками, которые используете.

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

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

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

НЬЮ!


В предыдущих сериях (FAQ 1 2 3 4 5 ) мы весьма подробно рассмотрели, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL поверх Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

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


SELECT
    MAX(score1, score2, score3, score4, score5) AS max_score,
    MIN(score1, score2, score3, score4, score5) AS min_score,
    MEDIAN(score1, score2, score3, score4, score5) AS median_score,
    score1 + score2 + score3 + score4 + score5 AS score_sum
FROM raw_scores INTO final_scores
WHERE ABS(score1 + score2 + score3 + score4 + score5) > $score_margin;

— тут у нас функции MAX, MIN и MEDIAN принимают любое количество аргументов типа Double и возвращают Double, а ABS только один такой аргумент.


Вообще, кроме общей математики, в любом уважающем себя диалекте SQL как минимум должны быть функции для манипуляций с датой/временем, работы со строками и массивами. Их мы тоже обязательно добавим. В classpath, чтобы движок мог их оттуда подгружать. До кучи, ещё и операторы типа >= или LIKE, которые у нас уже были реализованы, но хардкодом, сделаем такими же подключаемыми.


Предупреждение о сложности материала

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

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

Проекции в Vertica: что это, как использовать, и почему не стоит создавать их под каждый запрос

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

Иван Якунин, продуктовый аналитик команды Fintech Marketplace, рассказал про то, как в Авито работают с Vertica, и на примерах объяснил, что такое проекции, и когда их стоит использовать.

Читать далее
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии7
1
23 ...

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