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

SQL *

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

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

Как пишут SQL-запросы гуманитарии

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

Когда говорят «мы ускорили выполнение нашего запроса в N раз» это значит, что сначала сделали плохо а потом начали думать как улучшить.

Так я думал раньше.

Читать далее
Всего голосов 22: ↑17 и ↓5+15
Комментарии29

Статический анализ структуры базы данных (часть 1)

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

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

Рассмотрим подробнее статический анализ структуры базы данных — что это, какие задачи решает, как интегрировать статический анализ в CI.

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

Как мы лечили раздвоение встреч в конференциях на базе Jitsi

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

Привет! Меня зовут Дима. Я из команды бэкенда Яндекс Телемоста — сервиса для проведения видеовстреч, который входит в Яндекс 360. Перед нами стоит задача не просто предоставить сервис, а предоставить отказоустойчивый и надёжный сервис, который работает 24/7 и обслуживает весь мир.

Телемост создан на основе open source решения Jitsi meet — оно постоянно развивается благодаря вкладу комьюнити, но при этом имеет свои ограничения. В статье расскажу, как мы встретили один редкий, но интересный плавающий баг. И конечно, как его лечили.

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

Альтернативный вариант к подходу хранения SQL-кода в репозитории и его разработке

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

Приветствую, current_user()!

Хочется тебе показать, как можно хранить sql-скрипты объектов БД так, чтобы было удобно и разработчику, и ревьюеру, а так-же рассказать о плюсах и минусах такого подхода.

Так-же хотелось-бы узнать твоё мнение о таком подходе и обсудить, возможно стоит что-нибудь добавить в нём.

Ознакомиться с альтернативным подходом...
Всего голосов 5: ↑4 и ↓1+5
Комментарии43

Истории

Калькулятор Конфигураций для Firebird SQL и 5 других новостей про Firebird

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

В последние месяцы в мире FirebirdSQL происходит значительное оживление: помимо релиза Firebird 5 было опубликовано много инструментов, статей и материалов, что я решил подготовить небольшой дайждест для читателей Хабра, которые, вероятно, соскучились по новостям о любимой СУБД.

Во-первых, вышла новая версия Калькулятора Конфигураций для Firebird, с поддержкой Firebird 5. В калькулятор (полностью бесплатный, доступен без регистрации) вводятся характеристики сервера, ...

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

Дом, милый дом: нюансы работы с ClickHouse. Часть 1

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

Всем привет, меня зовут Пётр, я инженер компании Nixys. На современных проектах используется огромное разнообразие баз данных: реляционные, ключ-значение, документоориентированные. Особое место среди них занимают колоночные базы данных, ярким представителем которых является ClickHouse. Это мощный инструмент, который способен обрабатывать миллиарды строк в секунду при минимальном времени ответа. Однако, для максимальной эффективности ClickHouse необходимо понимать ряд фундаментальных моментов для того, чтобы использовать его по назначению. В этой серии статей мы разберем особенности работы ClickHouse, которые помогут в выжимании максимума из этой базы. И сегодня начнём с фундаментальных теоретических моментов, чтобы составить максимально полное общее впечатление, которое поможет нам в дальнейшем.

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

Задача двумерной упаковки интервалов

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

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

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

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

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

Перевод статьи с Medium

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

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

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

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

Разработка SQL Expert Bot: подробный гайд по использованию Vercel AI SDK и API OpenAI

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

OpenAI заложила фундамент для революции в сфере искусственного интеллекта с появлением ChatGPT, открывая новую эру в области AI, которую активно используют как отдельные люди, так и бизнес‑сообщества. OpenAI даже предоставила API для разработки персонализированных AI‑решений, включая чат‑ботов, виртуальных помощников и многого другого. Доступ к этому API можно получить через SDK, которые OpenAI выпустила для разных языков программирования, а также через оболочки, разработанные для удобства создания интерфейсов.

Компания Vercel внесла свой вклад, разработав AI SDK для создания интерактивных пользовательских интерфейсов с использованием TypeScript и JavaScript. Примечательно, что этот SDK является проектом с открытым исходным кодом и поддерживает Vercel Edge runtime.

В рамках данной статьи мы создадим SQL Expert ChatBot, применив API OpenAI и SDK от Vercel. Мы рассмотрим вопросы стриминговых ответов, настройки запросов и многое другое.

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

Охота на недостающий тип данных

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров15K
Направленный граф — это набор узлов, связанных стрелками (рёбрами). Как узлы, так и рёбра могут содержать данные. Вот несколько примеров:

Все графы созданы с помощью graphviz (источник)

В сфере разработки ПО графы используются повсеместно:

  1. Зависимости пакетов, как и импорт модулей, формируют направленные графы.
  2. Интернет — это граф, состоящий из ссылок между веб-страницами.
  3. При проверке моделей анализ выполняется путём изучения «пространства состояний» всех возможных конфигураций. Узлы — это состояния, а рёбра — это допустимые переходы между ними.
  4. Реляционные базы данных — это графы, в которых узлы являются записями, а рёбра — внешними ключами.
  5. Графы — это обобщение связанных списков, двоичных деревьев и хэш-таблиц.1

Кроме того, графы также широко используются в бизнес-логике. Научные работы со ссылками формируют графы цитат. Транспортные сети представляют графы маршрутов. Социальные сети — это графы связей. Если вы работаете в сфере разработки, то рано или поздно встретитесь с графами.

Я вижу графы повсюду и использую их для анализа всевозможных систем. В то же время я побаиваюсь использовать их в коде. Какой из популярных языков программирования ни возьми, поддержка графов в них практически отсутствует. Ни в одном её нет в виде встроенного типа, очень мало где они прописаны в стандартной библиотеке, и у многих языков нет для этой функциональности надёжного стороннего пакета. Чаще всего мне приходится создавать графы с нуля. Существует большой разрыв между тем, как часто инженерам ПО могут понадобиться графы и тем, в какой степени экосистема их поддерживает. Где все графовые типы?
Читать дальше →
Всего голосов 49: ↑47 и ↓2+69
Комментарии21

5 стадий принятия необходимости изучения «плана запроса» или почему может долго выполняться запрос

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

Всем привет! Меня зовут Виктор, я работаю в Компании БФТ-Холдинг руководителем группы разработки. В этой статье разберем подходы и рекомендации по выявлению и устранению проблем с производительностью в системе базы данных Greenplum. Материал будет особенно полезен начинающим разработчикам Greenplum, которые пока не имеют достаточного опыта «чтения» плана запроса.

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

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

SQL HowTo: один индекс на два диапазона

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

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

Но что делать, если неравенств у нас не два, а целых четыре, да еще и с разными типами участвующих полей? Например, для целей бизнеса это может быть задачей вроде "найди мне все продажи за декабрь на сумму 10-20K", что на SQL будет выглядеть примерно так:

dt >= '2023-12-01'::date AND dt <= '2023-12-31'::date AND

sum >= 10000::numeric AND sum <= 20000::numeric

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

Использование Redis почти как SQL БД: Реализация чата с кешированием сообщений

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

Допустим, мы хотим создать чат и хранить сообщения для него. Вполне возможно, мы можем добавить для этого простую базу данных (БД), такую как MySQL или даже NoSQL БД.

Обычно многие используют Redis как key‑value (dictionary) хранилище. Тем не менее, Redis — это несколько большее, чем key‑value, как многие привыкли думать.

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

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

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Бьемся с индексацией парных неравенств в PostgreSQL

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

Я уже не раз писал, что условия с несколькими неравенствами (<, <=, >=, >) обычно плохо подходят для индексирования "классическим" btree, вызывают "тормоза", и необходимо придумывать различные нетривиальные подходы в PostgreSQL, чтобы добиться хорошей производительности подобного запроса.

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

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

SQL в качестве API

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


SQL в API??? 

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

Но справедливо ли такое суждение? Время его пересмотреть!
Читать дальше →
Всего голосов 34: ↑31 и ↓3+40
Комментарии40

Что нового в планировщике / оптимизаторе запросов Postgres 16

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

PostgreSQL 16 вносит немало улучшений в планировщик запросов и позволяет выполнять многие SQL-запросы быстрее, чем в предыдущих версиях PostgreSQL.

Если вы посмотрите на PG16 release notes, то увидите некоторые из этих улучшений. Но из-за объема изменений, вносимых в каждом выпуске PostgreSQL, невозможно предоставить достаточно подробную информацию о каждом изменении.

В этом посте вы получите глубокое представление о 10 улучшениях, внесенных в планировщик запросов PostgreSQL 16. Для каждого из улучшений будет сравнения выходных данных планировщика PG15 и PG16, а также примеры того, что изменилось, в виде автономного теста, который вы можете попробовать сами.

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

Новая современная СУБД SoQoL. Посмотрим на неё внимательнее

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

Вышел первый коммерческий релиз СУБД реляционного типа — SoQoL версии 3.0.0. В русском варианте название СУБД звучит как СОКОЛ.

Что это за птица?
Всего голосов 20: ↑16 и ↓4+15
Комментарии81

Основные возможности кластеризации Patroni в PostgresSQL

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

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

Patroni может интегрироваться с различными системами распределенной конфигурации, включая etcd, ZooKeeper, Consul и Kubernetes.

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

Рекомендации при работе с PostgreSQL

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

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

Данные рекомендации получены горьким опытом, так что надеюсь, они Вам помогут :)

Читать подробнее и больше не косячить
Всего голосов 51: ↑48 и ↓3+51
Комментарии53

SQL и python для анализа цен на новостройки в СПб или ценнейший навык для маркетолога в 2024

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

«Зачем мне SQL и python?» — задают резонный вопрос маркетологи или менеджеры по продукту, особенно в сфере недвижимости, оптовой торговли, услуг для бизнеса: «У нас нет миллионов строк данных, нет логов, мы успешно работаем с несколькими таблицами в excel».

Да действительно, у вас может не быть корпоративного хранилища данных в компании, и основой автоматизации работы с данными является Power query (что сейчас в РФ делать все труднее и труднее). Но у вас точно есть данные, которые вы получаете от смежных отделов, из CRM/CDP, MES, АСУ ТП. Эти данные приходят регулярно в виде файлов, и вы сопоставляете эти данные друг с другом с помощью ВПР, фильтруете воронкой, чистите с помощью «Найти или заменить», делайте сводники с помощью функции Pivot table.

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

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