Как стать автором
Поиск
Написать публикацию
Обновить
88.06

SQL *

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

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

Как мы наводим порядок с данными в столичном транспортном институте

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

Привет, Хабр!  На связи команда разработки «МосТрансПроекта».

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

Необходимые данные (а их суммарный объем измеряется в петабайтах) собирают ЦОДД, Московский метрополитен, «Организатор перевозок», «Мосгортранс», «Администратор московского парковочного пространства» и другие структуры транспортного комплекса. В целом, ничего сложного: получаем доступ к базам, берем информацию, «причесываем», анализируем, действуем, решаем задачу. Но, как обычно это бывает с данными, все не так просто.

В поисках склада

Проблема в том, что для неподготовленного специалиста обособленные друг от друга базы напоминают склады с наваленными коробками — чтобы быть уверенным в результате, нужно заглянуть в каждую. Старожилы «МосТрансПроекта», конечно, знают, где взять ту или иную информацию, но без их помощи работать с данными было трудно. Иногда нужно было пройти увлекательный квест, чтобы забрать сведения, которые есть лишь у конкретного специалиста.

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

Читать далее

Детализированные стратегии кэширования динамических запросов

Время на прочтение7 мин
Количество просмотров4.7K
Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими находками.
Читать дальше →

Как в РСХБ разработали средство генерации SQL-запроса для упрощения задач по тестированию

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

Привет, Хабр! Меня зовут Андрей Околелов, я работаю ведущим инженером в Блоке обеспечения и контроля качества выпуска изменений ПО в РСХБ. В банковской сфере я работаю с 1992 года, с 2018 основная деятельность — тестирование банковских приложений.

SQL написать просто, когда это обычный Select. Но становится сложно, когда критериев очень много, а вариативности еще больше. А если еще добавить команду разработчиков, в которой у каждого свое мнение, то процесс становится очень трудным. В материале я расскажу, как внимание к деталям и смена фокуса от модели к предметной области позволяют решить множество проблем разработки запросов и создать удобный инструмент не только для разработчика, но и для всей команды.

Читать далее

Whirl Platform — разработка длиной в 10 лет

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

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

История более биографическая, чем техническая, с вкраплением мыслей о разработке в целом и небольшим обзором проекта который развивает наша команда. Если вы ждете техно-жесткача с фреймворками, конфигами и кусками кода, то дальше читать не надо - такого не будет. Продолжив вы узнаете про чужой опыт развития долгоживущего продукта, узнаете о еще одном отечественном open source проекте и просто увидите картинки с UI конструктором приложений.

Читать далее

Многомерные базы данных

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


Многомерные базы данных (МБД) представляют собой эффективные инструменты для организации и анализа больших объемов данных в сфере аналитики. Они представляют данные в форме кубов, где каждая ось представляет собой отдельное измерение, а значения представляются в виде ячеек. Концепция МБД зародилась в конце 1970-х годов.

Многомерные базы данных отличаются от обычных реляционных баз данных тем, что они специально оптимизированы для работы с аналитическими запросами и агрегированными данными. В отличие от традиционных баз данных, где данные хранятся в виде таблиц, в МБД основное внимание уделяется анализу данных и созданию быстрых и эффективных запросов.
Читать дальше →

Поиск таймаутов выполнения запросов с помощью Query Store

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

Недавно во время обсуждения по решению проблем, связанных с таймаутами запросов в Azure SQL Database, я подумала — интересно, можете ли вы найти запросы, время ожидания которых истекло, в Query Store (хранилище запросов)?

Оказывается, можно.

Читать далее

SQL HowTo: замена в строке по набору

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

Решим сегодня простую, казалось бы, задачу: как на PostgreSQL можно в строке провести замены по набору пар строк. То есть в исходной строке 'abcdaaabbbcccdcba' заменить, например, 'а' -> 'x', 'bb' -> 'y', 'ccc' -> 'z' и получить 'xbcdxxxybzdcbx'.

Фактически, мы попробуем создать аналог str_replace или strtr.

Читать далее

PostgreSQL ltree: обеспечение целостности данных

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

Здравствуйте. Это версия моей первой статьи на русском языке, прошу не судить строго.

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

В PostgreSQL существует специальное расширение ltree, предоставляющее дополнительные инструменты для работы с метками и путями. О нем и о решении вопросов, связанных с консистентностью (целостностью) данных, и поговорим. 

Итак, задача: сделать таблицу item с полем path типа ltree для удобной работы с деревом, а также обеспечить целостность данных на уровне базы. 

Терминология:

Читать далее

Дефрагментация таблиц в высоко нагруженных базах данных (MSSQL)

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

Хорошо, если у вас небольшие (сотни гигабайт) базы, а ночью или в выходные вы можете себе позволить иметь 'maintenance window' и дефрагментировать таблицы. А если нет? В любом случае дефрагментация многих терабайт может занять дни, так что существование maintenance window становится непринципиальным.

Case study: многие терабайты данных, деятельность связанная с процессингом карт (24/7, maintenance window нет в принципе), MSSQL. Разумеется, Enterprise Edition, разумеется AlwaysOn.

Миф: у нас SSD, поэтому дефрагментация нам не нужна. Еще как нужна! Часто в высоко нагруженных системах не делают дефрагментацию, потому что это сложно. В итоге процент фрагментации выходит на уровень почти 100%, и таблицы занимают в два раза больше страниц, чем нужно. В два раза больше места - это в два раза хуже Buffer Cache Hits Ratio. Это в два раза больше размер full backups. Это в два раза дольше full table scans. Это выше CPU (потому что страницы перемещаются с помощью процессора, а не сами по себе).

Читать далее

PostgreSQL 16: Часть 4 или Коммитфест 2023-01

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

Продолжаем следить за новинками 16-й версии. В начале февраля завершился четвертый коммитфест. Что нового нас ждет впереди?


Напомню, что самое интересное из первых трех коммитфестов можно прочитать в предыдущих статьях серии: 2022-07, 2022-09, 2022-11.

Читать дальше →

О бедненьком NULLе замолвите слово

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

Есть вещи, которые не нравятся, есть вещи, которые бесят, есть вызывающие жгучий гнев, и есть ситуация с NULL в SQL.

Давайте немножко похоливарим по этому поводу.

Читать далее

Анонс стрима 07.04.22: Сжать данные в SQL Server в десятки раз, а ускорить запросы в сотни

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

У меня в планах на этот год на Хабре было опубликовать пару статей по колумсторам и XML. Материала за годы накопилось предостаточно и выходило на 30..40 страниц текста - фактически мини-книга. Но когда за окном Градами и прочей дичью херячили месяц... оно как-то не складывалось настроиться на конструктив. Вначале агрессия на виновников этой дичи, потом паника за близких... печаль что все планы порушились и непонятно что ждать. А сейчас прям совсем ровно на все жизненные трудности ибо как-то получается разруливать все и помогать людям.

Так вот... со знакомым решили вернуться к прежней теме и постримить сегодня о колумсторах. Без политики, срача и прочего. Очень много шутеек о том как живеться в условиях спецоперации и немного полезной инфы о колумсторах на SQL Server.

Кто хочет из коллег послушать: https://www.youtube.com/watch?v=wXH3fUN0PsM

You are welcome!

...

PostgreSQL 15: Часть 4 или Коммитфест 2022-01

Время на прочтение8 мин
Количество просмотров4.9K
Первые три коммитфеста 15-й версии (2021-07, 2021-09, 2021-11) не баловали нас крупными изменениями. Не стал исключением и четвертый, январский коммитфест. Но всё-таки найдется о чем рассказать.
Читать дальше →

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

PostgreSQL 15: Часть 3 или Коммитфест 2021-11

Время на прочтение6 мин
Количество просмотров4.5K
Вместе с началом зимы, релизный цикл 15-й версии продвинулся еще на один, теперь уже третий, коммитфест. Напомню, что о предыдущих двух можно подробнее прочитать здесь: 2021-07, 2021-09.

Теперь же посмотрим, что происходило в последнем на текущий момент, ноябрьском коммитфесте.
Читать дальше →

Поисковик новостей (RSS), написанный на Java + SQLite

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

Данная идея не претендует на уникальность. Суть проста - тратить как можно меньше времени на чтение интересующих Вас новостей, отсеивая ненужные заголовки. Проект делал в рамках моего обучения языку Java и SQL, начиная с 2018 года. В настоящий момент программа включена в Реестр российского ПО. Функционал продублирован в Telegram боте.

Актуальная версия программы для windows и linux находится на avandy-news.ru. Исходный код проекта будет полезно изучить тем, кто хочет создавать свои десктопные приложения на Swing (но рекомендую изучать JavaFX) или для изучения процесса работы с базой данных посредством чистого JDBC. Для улучшения дизайна интерфейса применён FlatLaf.

Читать далее

Атака не клонов, или Генерация и анализ тестовых данных для нагрузки. Часть 3

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

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

Читать далее

КЛАДРируем адреса произвольной формы (ч.1 — импорт)

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

Достаточно часто при работе с вводимыми пользователем адресными данными возникает необходимость сначала подсказать ему, как правильно свой адрес указать, а потом - полученную строку адреса привести в некоторый машинно-читаемый вид.

Таким видом у нас в стране можно считать код по справочникам КЛАДР или ФИАС.

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

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

Читать далее

DataGrip 2021.1: Редактирование прав, контекстные шаблоны, предсказуемая навигация и не только

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

Привет!

Сегодня мы выпустили DataGrip 2021.1: наш самый мощный релиз за последние годы. И это не шутка!

И что же там за фичи?

Email Chart — это вам не ASCII Art

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

Отправляем графики (peformance, да и вообще все что угодно) по почте с PROD серверов, куда просто так не добраться .

Мужик! Графики по почте? Что, cерьезно? Web интерфейс, интерактивность, Grafana - "нет, не слышал"? Ты бы еще звездочками графики нарисовал бы в письме, ASCII art-ом. - говорит мне мой воображаемый оппонент.

Конечно, он абсолютно прав в идеальном, воображаемом мире. Это вам подтвердит любой пролетающий там розовый единорог. Однако, если мы не в стартапе, а в кровавом enterprise, то все не так розово.

Читать далее

Секционирование таблиц и время компиляции плана запроса в SQL Server

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

Меня иногда спрашивают: «Если в таблице много индексов и SQL Server вынужден анализировать больше вариантов, то не замедлит ли это построение плана запроса?»

Что же, вполне может быть, но что действительно сбивает с толку оптимизатор, так это секционирование. Даже простейшие запросы к секционированным таблицам могут привести к значительному увеличению использования процессорного времени. Хуже того, как однажды сказал знаменитый философ: «Больше секционирования — больше проблем».

Итак, давайте возьмем какую-нибудь из баз данных Stack Overflow и создадим функцию секционирования, которая будет разбивать наши данные по дням:

Читать далее

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