Как стать автором
Обновить
55.37
Рейтинг

SQL *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Как прикрутить SQL к чему угодно при помощи Apache Calcite

Блог компании Конференции Олега Бунина (Онтико) Высокая производительность *SQL *Apache *Конференции

Сделать свою собственную SQL-базу данных или запускать SQL-запросы в NoSQL-базе данных — кажется, это очень непростая задача.  А если мы говорим о распределенной БД, то сложность возрастает многократно. Но, к счастью, Apache Calcite — фреймворк с открытым кодом — поможет сделать это довольно легко.

Роман Кондаков, Software Engineer в Querify Labs, на конференции HighLoad++ Весна 2021 рассказал об опыте интеграции Apache Calcite в распределенную in-memory-платформу Apache Ignite. Если ваша система распределена, и вы хотите завести в ней SQL, читайте про то, как устроен Apache Calcite и какие есть нюансы его использования для распределенных систем.  Видео его выступления можно посмотреть здесь.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 2.4K
Комментарии 2

Запросы в PostgreSQL: 4. Индексное сканирование

Блог компании Postgres Professional PostgreSQL *SQL *

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

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

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

Computed Columns и nvarchar(max)

SQL *Microsoft SQL Server *Администрирование баз данных *

Недавно столкнулся с проблемным запросом, который делал отбор по столбцу с типом nvarchar(max). Про производительность отборов по nvarcar(max) я уже писал, а сейчас решил сделать пост о том, как можно решить проблему, если фильтр по nvarchar(max) нужен.

В первой части я покажу что можно сделать, если на самом деле nvarchar(max) не был нужен, а хватило бы "нормальной" длины, с которой столбец можно проиндексировать. А во второй - что делать, если строка на самом деле такая длинная, что проиндексировать столбец с ней не представляется возможным.

На помощь приходят Computed Columns
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.1K
Комментарии 5

Как и для чего мы сделали «Перчатку» — приложение для сотрудников «Перекрёстка» с элементами соцсети

Блог компании X5 Group Мессенджеры *SQL *MongoDB *ReactJS *

В рознице «Перекрёстка» работает порядка 30 тыс. сотрудников без закрепленного рабочего места и персонального компьютера. Чтобы они могли активнее участвовать в жизни компании и коммуницировать с коллегами, мы разработали «Перчатку». Это приложение с чатом и корпоративными сервисами: графиком смен и отпусков, информацией о выплатах и другими возможностями вроде ведения блогов и комментирования публикаций коллег.

 Инструментарий «Перчатки» также включает чат-бота «Василису», которая помогает новичкам влиться в коллектив: сопровождает в первые дни, находит корпоративные онлайн-курсы. Отличительной особенностью проекта являются элементы геймификации — за активность в «Перчатке» пользователи получают специальные баллы («клеверы»), на которые можно приобретать «сувенирку».

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 2.2K
Комментарии 12

Запросы в PostgreSQL: 3. Последовательное сканирование

Блог компании Postgres Professional PostgreSQL *SQL *

В предыдущих статьях я рассказал об этапах выполнения запросов и о статистике.

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

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

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

SQL HowTo: три WHERE в одном запросе

Блог компании Тензор Ненормальное программирование *PostgreSQL *SQL *Администрирование баз данных *

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

Сегодня на примере вполне реальной задачи рассмотрим такие возможности оператора INSERT ... ON CONFLICT.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 5.5K
Комментарии 18

Миграция данных или как мы поменяли АБС в РСХБ. Часть 1

Блог компании Россельхозбанк Oracle *SQL *Алгоритмы *

Hello, world! Меня зовут Руслан, я работаю в отделе внедрения АО «Россельхозбанк» и в этой статье поделюсь с вами, как мы переносили данные из АБС «БИСквит» в систему ЦФТ-Банк. Если вы так же, как и мы когда-то, задумаетесь о смене основной банковской системы или уже находитесь в этом процессе, то вам, определенно, сюда!

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

Запросы в PostgreSQL: 2. Статистика

Блог компании Postgres Professional PostgreSQL *SQL *

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 4.6K
Комментарии 2

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

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *ERP-системы *
Tutorial

В первой части серии статей про работу с адресами по КЛАДР мы научились импортировать данные этого справочника к себе в базу и превращать их во что-то более удобное для дальнейшей работы.

Сегодня же займемся реализацией конкретных прикладных алгоритмов на этой структуре и рассмотрим, как можно реализовать мгновенную помощь пользователю при вводе адреса, используя возможности префиксного поиска в PostgreSQL.

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

PlanetScale — Serverless SQL база данных для разработчиков

MySQL *SQL *Системы управления версиями *Администрирование баз данных *Хранение данных *

Этим летом я по уши увяз в serverless-тематике и даже решил переписать один из своих pet-проектов целиком на serverless. Движок для сайта, поддерживающий бессерверные вычисления и вендор для кэширующей прослойки были найдены быстро - NextJS (с деплоем на Vercel) и Upstash с оплатой за каждую отдельную операцию и байт в хранилище. Камнем преткновения стал выбор провайдера для DBaaS. Мне бы хотелось реализовать всё таким образом, чтобы у проекта было две разных базы данных - для разработки и для production, и мне совсем не хотелось запускать базу данных для разработки на локальной машине. Поверхностное ознакомление с DBaaS провайдерами показало, что за дополнительную базу данных пришлось бы платить вдвое больше несмотря на то, что она использовалась бы дай Бог пару раз в неделю. И я ушёл в просмотр докладов и презентаций на YouTube и это именно тот момент когда я открыл для себя PlanetScale. Хочу поделиться своим открытием с вами.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 2.7K
Комментарии 7

Нюансы работы с PostgreSQL в 3 кейсах от DBA

Блог компании Southbridge PostgreSQL *SQL *Восстановление данных *Администрирование баз данных *

Иван Чувашов, DBA Okko и Southbridge, поделился жизненными кейсами с PostgreSQL, которые помогут решить ваши проблемы.

Разберем случаи из PostgreSQL: запросы в статусе idle in transaction, выключенные контрольные суммы данных, переполнение int4, убивающие базу временные файлы и загрузку CPU.

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 5.5K
Комментарии 9

Запросы в PostgreSQL: 1. Этапы выполнения

Блог компании Postgres Professional PostgreSQL *SQL *

Привет, Хабр! Начинаю еще один цикл статей об устройстве PostgreSQL, на этот раз о том, как планируются и выполняются запросы.

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

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

Материал перекликается с нашим учебным курсом QPT «Оптимизация запросов», но ограничивается только подробностями внутреннего устройства и не затрагивает оптимизацию как таковую. Кроме того, я ориентируюсь на еще не вышедшую версию PostgreSQL 14. А курс мы тоже скоро обновим (правда, на версию 13; приходится бежать со всех ног, чтобы только оставаться на месте).

Поехали
Всего голосов 31: ↑31 и ↓0 +31
Просмотры 12K
Комментарии 9

Как избавиться от дублей в базе данных (на примере MS SQL)

Блог компании Ozon Tech Программирование *SQL *Microsoft SQL Server *Администрирование баз данных *
Tutorial

Всем привет! Меня зовут Евгений, я занимаюсь разработкой и проектированием в Ozon. Больше всего работаю с MS SQL и C#, но попадаются и другие СУБД и языки программирования.

Ozon как продукт быстро растёт: во втором квартале этого года мы доставляли больше миллиона посылок в день. Для обработки такого объёма заказов мы используем разные языки и платформы: .NET (C#), Go, MS SQL Server и PostgreSQL.

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

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

Но сначала позвольте погрузить вас немного в предметную область — объясню, на примере чего будет демонстрироваться проблема дублирования данных, и освещу некоторые методы её решения.

Читать далее
Всего голосов 58: ↑57 и ↓1 +56
Просмотры 4.7K
Комментарии 38

PostgreSQL Antipatterns: «где-то я тебя уже видел...»

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *

Иногда при анализе производительности запроса на предмет "куда ушло все время" возникает стойкое ощущение deja vu, что вот ровно этот же кусок плана ты уже где-то раньше видел...

Пролистываешь выше - и таки-да, вот он рядом - но почему он там оказался, и как выйти из Матрицы самому и помочь коллегам?

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 5.6K
Комментарии 21

Вместо 24 JOIN в SQL запросе — реализация в графовой базе данных

Блог компании Фактор груп Программирование *SQL *NoSQL *Администрирование баз данных *
Перевод

Многие не знают, что некоторые сложные для написания и неэффективные для выполнения SQL-запросы можно легко выразить и эффективно выполнить в графовой базе данных. Это справедливо даже для тех, кто уже знает, что графовые алгоритмы являются наиболее эффективным, а иногда и единственным решением для сложных бизнес-задач, таких как кластеризация пользователей (с использованием Лувенского алгоритма), поиск инфлюенсеров - людей или компаний (алгоритмом PageRank) или прогнозирование поведения пользователей для персональных рекомендаций (алгоритмом label propagation).

В этой статье мы опишем SQL запрос с 24 JOIN в корпоративный knowledge graph и покажем, что задачу можно решить в графовой базе данных - и это будет понятней, более легко поддерживаться и эффективно выполняться. Пример взят из проблемы, описанной в сообществе: https://community.tigergraph.com/

Читать далее
Всего голосов 11: ↑5 и ↓6 -1
Просмотры 3.5K
Комментарии 20

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

Блог компании Тензор Системное администрирование *PostgreSQL *SQL *ERP-системы *
Tutorial

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

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

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

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

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 1.6K
Комментарии 10

PostgreSQL Antipatterns: «слишком много золота»

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *

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

Поэтому сегодня рассмотрим некоторые типичные ситуации, в которых разработчики иногда принимают не самые оптимальные решения, гоняя по сети мегабайты трафика при общении с сервером PostgreSQL - а заодно посмотрим, как можно увидеть такую ситуацию в плане с помощью explain.tensor.ru и подумаем над вариантами, как сделать подобное взаимодействие более эффективным.

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Просмотры 4.9K
Комментарии 5

ФИАС с человеческим лицом

SQL **nix *

Всем привет. Некоторое время назад пришлось разбираться в ФИАСе, хочу поделиться своими наработками. Эта статья расскажет о том как базу развернуть, как её обновлять и как ей пользоваться.

К счастью мне не пришлось во всём разбираться самому, потому что на Хабре есть хорошая серия статей о ФИАС (Адреса ФИАС в среде PostgreSQL), и у этих статей не менее ценные коменты. На их основе у меня получилось написать скрипты и написать Докер образ, всё опубликовано на ГитХабе.

Как работать с образом описано в README.md, здесь я распишу всё тоже самое но более подробно.

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 2.1K
Комментарии 5

SQL на стероидах – 5 кейсов использования dbt + Jinja

Блог компании OTUS SQL *Big Data *Data Engineering *

SQL – это нескучно. С современными инструментами возможности языка кратно возросли. Мультитул для моделирования данных dbt, современные колоночные аналитические СУБД позволяют буквально творить с данными чудеса.

Меня зовут Артемий и я Analytics Engineer в компании Wheely. И сегодня я подготовил небольшой экскурс в реальные и интересные сценарии использования гибридного SQL

– Операции Pivot и Unpivot для табличных данных

– Генерирование суррогатного ключа и ключа конкатенации

– Гибкая фильтрация записей из таблиц-источников

– Автоматизация экспорта данных из Хранилища в S3

– Валютные курсы, Continuous Integration, Data Quality

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

Использование SET STATISTICS TIME ON в SQL Server

Блог компании OTUS SQL *Microsoft SQL Server *
Перевод

Инструкция SET STATISTICS TIME ON позволяет нам легко получить информацию о времени выполнения запроса. В этой статье посмотрим подробнее, какую именно, и что она означает.

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

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