Обновить
39.78

SQL *

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

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

Квиз: основы работы с базами данных

Если вы изучаете базы данных или давно не работали с ними и хотите проверить знания, приглашаем пройти наш новый квиз. Ответьте на несколько теоретических вопросов и попробуйте расшифровать SQL-запросы — в конце получите промокод на 1000 бонусов в панели Selectel.

Пройти квиз

Не забудьте поделиться результатами в комментариях!

Теги:
Всего голосов 6: ↑6 и ↓0+11
Комментарии1

Как правильно откатывать миграции? Если коротко, то никак.

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

Ролбек, в идеале, это просто переключение с одной версии кода на другую. Но ведь тогда возможны ошибки связанные с изменениями в базе? Если делать через жопу, то возможны. При правильном подходе, база всегда обратно совместима как минимум на одну версию. Только в этом случае мы можем обеспечить и бесшовный деплой (zero downtime deploy) и практически моментальный откат.

А это значит, что нельзя менять тип у колонок (если тип сужается), нельзя менять именования таблиц и полей. Если это все таки нужно, то существует немало техник, позволяющих сделать переход через создание новых сущностей и синхронизацией либо через код либо через саму базу (например с помощью триггеров). По этой теме даже написали целую книгу "Refactoring Databases: Evolutionary Database Design".

Получается, что любые ошибки в базе будут только накапливаться? Не совсем. Обратная совместимость обычно нужна только на текущую и следующую версию. Если у нас не коробка, а облачное решение, то одновременно могут работать только две версии. В таком случае, мы без проблем можем писать любые миграции, которые удаляют и меняют все что угодно, что уже не используется. Заметьте, это не откат, а новые миграции.

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

Больше про разработку в моем телеграм-канале организованное программирование

Теги:
Всего голосов 8: ↑6 и ↓2+5
Комментарии2

Нагрузочное тестирование GP6 vs GP7 vs Cloudberry

Насколько лучше производительность в GP7 и Cloudberry относительно GP6? Насколько стабильно работают GP7 и Cloudberry? Стоит ли мигрировать с GP6 в 2025? И если да, то на что? Ответы на эти вопросы — в партнерском материале по нагрузочному тестированию GreenPlum 6.X, GreenPlum 7.X и Cloudberry ведущего архитектора группы компаний GlowByte Марка Лебедева.

Материал был анонсирован в статье «Тестирование систем и движков массивно-параллельных вычислений. Часть II. TPC-DS» и продолжает серию публикаций о нагрузочных тестированиях технического руководителя решений Data Ocean Nova и Data Ocean Flex Loader Евгения Вилкова.

Теги:
Рейтинг0
Комментарии0

Представлен бесплатный обучающий курс по SQL с 10 объёмными уроками с необходимой теорией, практикой в редакторе Mode от полных новичков до продвинутых спецов SQL, включая всю базу (SELECT, WHERE, ORDER BY, LIMIT и логические операторы), а также продвинутые темы (агрегирующие функции, GROUP BY, HAVING, соединение таблиц). В проекте доступен симулятор аналитика на реальных данных, A/B тестирование и инсайты продукта.

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

Новые вакансии в SSP SOFT: расширяем команду аналитиков

https://hh.ru/employer/5648224?hhtmFrom=vacancy

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

✔️ Гарантируем интересные задачи
✔️Для каждого нового сотрудника есть наставник
✔️ Центр компетенций помогает прокачивать навыки
✔️ С нами ты можешь работать из любой точки мира
✔️ Для экстравертов у нас есть уютные офисы в Москве и Томске
✔️ Оптимальный Work Life Balance

🎁 Наши плюшки: ДМС со стоматологией, обучение от компании и бонусная программа.

📢 Мы ищем:

1️⃣Аналитика 1C (https://tomsk.hh.ru/vacancy/123248946?from=employer&hhtmFrom=employer)

2️⃣Системного аналитика (https://tomsk.hh.ru/vacancy/122192419?from=employer&hhtmFrom=employer)

3️⃣ Аналитика DWH (https://tomsk.hh.ru/vacancy/122295631?from=employer&hhtmFrom=employer)

👉 присылай резюме в ЛС нашему HR Lead https://t.me/AONikitina
Подробности о вакансиях читай на ХХ.ру (https://hh.ru/employer/5648224?hhtmFrom=vacancy)
Ждем тебя в команду SSP SOFT!

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Огромное спасибо: Поддержка ChatGPT на sqlize.online восстановлена! 🎉

Привет, сообщество!

У меня есть невероятно крутые новости!

Благодаря вашей потрясающей щедрости и пожертвованиям, которые мы получили, мы собрали средства, необходимые для восстановления и продолжения интеграции ChatGPT на нашей платформе! 🥳

Ваша поддержка значит для меня очень много. Она напрямую покрывает расходы на API OpenAI, гарантируя, что такие функции, как генерация запросов на естественном языке и умная помощь по SQL, остаются доступными для всех.

Мы запустили sqlize.online как доступный инструмент для изучения и работы с SQL, и возможности ИИ являются ключевой частью этого проекта. Знание того, что многие из вас ценят этот сервис и помогли поддерживать его работу, по-настоящему мотивирует.

Это доказательство силы сообщества! Спасибо вам за веру в sqlize.online и за помощь в поддержке ресурсов для блага всех энтузиастов и профессионалов SQL.

Мы обязуемся продолжать совершенствовать sqlize.online и расширять ваши возможности в работе с данными.

Пример вопроса и ответа GPT
Пример вопроса и ответа GPT
Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Почему мы разлюбили Isar

Isar — это NoSQL база данных, которую когда-то разработали создатели Hive. Про все плюсы этой БД мы уже писали. Однако однажды нашей Flutter-команде достался проект, который заставил их в корне изменить отношение к Isar и отказаться от этой технологии раз и навсегда.

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

Но специфика приложения накладывала на нас и вполне себе конкретные технические требования: оно должно было бесперебойно работать в офлайне — поля всё-таки бывают далековато от вышек мобильных операторов. Для реализации офлайн-режима как раз и был выбран Isar — это решение казалось удобным.

Как же мы ошибались! Так как у приложения был офлайн-режим, на старте оно загружало большие объемы данных, среди которых, например, было гигантского видео. И это создавало проблемы. В приложении добавлялись новые справочники, но документации на миграцию в Isar не было. К тому же на Android 32-ой архитектуры в базе вылезли баги.

Как исправить эти нюансы, мы не поняли. Писали письма разработчикам Isar, смотрели, что пишут об этом в сообществах. Но в итоге махнули рукой: решили всё переписать на SQL. Выбрали Drift, так как уже имели опыт работы с ним. Взяли уже готовый интерфейс и добавили его в приложение. Вскоре поняли, что Drift отвечает нашим запросам. Isar же использовать в проектах больше не планируем.

Кстати, этот проект в целом оказался судьбоносным для нашей команды Flutter. Какие еще уроки они вынесли после работы над приложением — в отдельной статье.

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

Скрипт очистки логов всех баз MSSQL

Изначально статья была выложена на своём сервере https://ast-1c.kz/almasoft/?p=1443

Ничего сверхъестественного, но может кому пригодится:)

В процессе работы с сервером 1С, который в качестве сервера баз данных использует MSSQL сервер, очень часто приходится решать задачу по очистке логов базы. Сама по себе задача достаточно тривиальная и решается исполнением скрипта (при полной модели восстановления):

USE база_данных;  
GO  
-- Изменяем модель восстановления базы данных на SIMPLE.  
ALTER DATABASE база_данных
SET RECOVERY SIMPLE;  
GO  
-- Обрезаем LOG файл до 1 мегабайта.  
DBCC SHRINKFILE (база_данных_log, 1);  
GO  
-- Возвращаем модель восстановления базы данных на FULL.  
ALTER DATABASE база_данных
SET RECOVERY FULL;  
GO

либо же для базы использующей простой тип модели восстановления:

USE база_данных;  
GO  
-- Обрезаем LOG файл до 1 мегабайта.  
DBCC SHRINKFILE (база_данных_log, 1);  
GO  

Всё, просто и хорошо, но вот если на сервере скажем 100 баз, писать такой скрипт для каждой в отдельности — это не очень приятное задание, да и времени уйдет предостаточно. А ещё есть одно неудобство — если в последствии будет добавлена очередная база, то Вы не должны забыть и для неё прописать отдельный скрипт. Очень часто базы добавляют программисты 1С, а вот слежение за состоянием сервера ложится на плечи системного администратора. Ну и тут главное не просмотреть этот момент. В общем не очень удобная штука.

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

Declare @name varchar(100)
declare @qu as varchar(1200)
declare icur cursor fast_forward for

SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')
--and recovery_model_desc = 'FULL'

open icur
 fetch next from icur into @name
 While @@Fetch_Status = 0 

Begin
  Set @qu='use [' + @name + '] Declare @logname varchar(64), @size int'
  Set @qu=@qu + ' Set @logname = (SELECT [name] FROM [sys].[database_files]  where type_desc=''LOG'')'
  Set @qu=@qu + ' Set @size = (SELECT max_size FROM [sys].[database_files]  where type_desc=''LOG'') * 0.7/128'
  Set @qu=@qu +  ' ALTER DATABASE [' + @name + ']  SET RECOVERY SIMPLE DBCC SHRINKFILE (@logname, 7)'
  Set @qu=@qu + ' ALTER DATABASE [' + @name + ']  SET RECOVERY FULL'
  Exec (@qu) 
  Set @qu = '' 
  fetch next from icur into @name
END
close icur

SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb')
--and recovery_model_desc = 'SIMPLE'

open icur
 fetch next from icur into @name
 While @@Fetch_Status = 0 

Begin
  Set @qu='use [' + @name + '] Declare @logname varchar(64), @size int'
  Set @qu=@qu + ' Set @logname = (SELECT [name] FROM [sys].[database_files]  where type_desc=''LOG'')'
  Set @qu=@qu + ' Set @size = (SELECT max_size FROM [sys].[database_files]  where type_desc=''LOG'') * 0.7/128'
  Set @qu=@qu +  ' ALTER DATABASE [' + @name + ']  SET RECOVERY SIMPLE DBCC SHRINKFILE (@logname, 7)'
  Exec (@qu) 
  Set @qu = '' 
  fetch next from icur into @name
END
close icur
deallocate icur

DBCC SHRINKDATABASE (TEMPDB);

Скачать готовый на GitHub Gist

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

GIN индексы в PostgreSQL

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

Что такое GIN индекс

GIN (Generalized Inverted Index) – это инвертированный индекс, который предназначен для ускорения поиска в структурах данных, содержащих составные типы. Он имеет встроенную оптимизацию, позволяющую искать по элементам внутри сложных структур. По своей сути, это обратный индекс, где для каждого уникального элемента хранится список указателей на записи, в которых он встречается. Это дает возможность быстро находить записи, соответствующие запросу.

Для каких типов данных используется GIN индексы

GIN-индексы особенно эффективны для следующих типов данных:

  • Массивы

    • Хранение списков значений

    • Быстрый поиск по элементам массива

    • Пример: теги, категории, списки ID

  • JSONB

    • Хранение полуструктурированных данных

    • Быстрый поиск по ключам и значениям

    • Поддержка сложных запросов к JSON-документам

  • Полнотекстовый поиск

    • Индексация текстовых полей

    • Быстрый поиск по словам и фразам

    • Поддержка различных языков

Преимущества GIN индексов

  • Эффективность поиска по структурам данных: Хорошо подходит для обработки массивов и структурированных данных типа JSONB. Позволяет быстро находить нужные строки даже среди миллионов записей. Хранит только уникальные элементы и их местоположение, вследствии этого более экономный по сравнению с полным сканированием.

  • Поддержка различных типов данных: Работает с различными типами - строки, числа, массивы, объекты JSONB и даже геопространственные данные.

  • Подходит для оптимизации полнотекстового поиска: Улучшает производительность запросов с использованием операторов @@ и функций вроде to_tsvector() и to_tsquery(). Особенно полезен там, где требуются операции пересечения (&&), включения (@>), проверки существования элементов массива (?, ?&) и другие специфические условия.

Недостатки GIN индексов

  • Обновление: Каждый раз, когда изменяется запись, содержащая поля, входящих в GIN индекс, индекс обновляется целиком. Это увеличивает нагрузку на систему при частых изменениях данных.

  • Больший размер: GIN индекс занимает больше места на диске по сравнению с традиционными B-tree индексами, так как хранит список всех значений, содержащихся в колонке.

  • Низкая производительность на малых объемах данных: При небольших объемах данных GIN индекс может быть менее эффективным.

  • Сортировка:: По умолчанию не поддерживает эффективные запросы с сортировкой. Стоит учитывать при разработке, можно использовать решения в комбинации с другими индексами.

Заключение

При работе с массивами, JSONB полями и полнотекстовым поиском стоит рассмотреть использование GIN индексов для данных полей. Это позволит повысить эффективность и производительность БД PostgreSQL. Но, в то же время, стоит учитывать особенности его обслуживания и требования к системе. Очень аккуратно применять к часто изменяемым данным.
Очень хорошая статья о GIN индексах https://habr.com/ru/companies/postgrespro/articles/340978/

Более подробно с примерами у меня в телеграмм

Спасибо за внимание!

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии3

ИЩЕМ ЗАМЕНУ КОФЕИНУ с помощью ChatGPT

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

Я попросил помощи у ChatGPT и он успешно создал очень сложную таблицу с легальными аналогами кофеина и даже с вычисляемым столбцом на основе НЕЧЁТКИХ критериев (если вы это сможете на SQL - Вы гений!), но плохо справился с сортировкой в этой таблице.

Внимание: ниже изображение, ссылки некликабельные. Я ничего не продаю.

Это изображение, ссылки некликабельные,
Это изображение, ссылки некликабельные,

В первом цифровом столбце не удалось отсортировать числа по убыванию. Пытался примерно 15-20 минут. Пробовал разные промпты и пояснения. Это странно.

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

ChatGPT смог создать СВОДНЫЙ столбец на основе ранее созданных столбцов.Это столбец со взвешенными суммами весов веществ в других столбцах и коэффициенты взвешивания ОН сам нашел и нашел весьма точно.

Причем для каждого продукта ОН смог найти состав веществ по определенным критериям и перечислил их, создав отдельный столбец. Не все вещества, а только по определенным фильтрам (только такие, которые не являются кофеином, но оказывают воздействие, сходное с действием кофеина. Попробуйте самостоятельно без ИИ запрограммировать такой запрос на SQL с учетом нечеткого критерия схожести воздействия и еще определите коэффициент похожести для создания взвешенной суммы масс веществ в порции БАД.

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

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

Топ вопросов на собеседованиях по SQL. Что вам точно нужно знать для получения оффера?

Знание SQL — мастхэв при работе с базами данных в большинстве современных компаний. У нас в Сравни дата-специалисты используют SQL, взаимодействуя с множеством технологий и инструментов, от Snowflake, Greenplum и ClickHouse до Superset. При найме стажёров в наши технические команды, тестовое задание в большинстве случаев включает в себя проверку знаний по SQL.

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

Чтобы помочь вам с этим, наш дата-инженер Владимир Шустиков подготовил цикл из 5 видео, в которых рассмотрел ключевые вопросы об SQL на собеседованиях. Материал составлен по мотивам прохождения десятков собеседований в ИТ-команды компаний. С его помощью можно не только подготовиться к интервью (как морально, так и практически), но и проверить себя: сопоставить свои знания про SQL с тем, что на самом деле ожидают от специалиста. 

Полезно будет дата-инженерам, аналитикам, а также бэкенд-разработчикам. 

Каждое видео посвящено отдельному блоку вопросов по SQL:

1. Топ вопросов на собеседовании по SQL — порядок выполнения запроса, виды команд, типы данных

2. Топ вопросов на собеседовании по SQL — логические и физические виды JOIN, оконные функции, EXPLAIN

3. Топ вопросов на собеседовании по SQL — NULL, Агрегация

4. Топ вопросов на собеседовании по SQL — задачи на JOIN, различие между TRUNCATE, DROP, DELETE

5. Топ вопросов на собеседовании по SQL — WHERE, HAVING, QUALIFY; подзапросы и CTE; сочетания запросов

Смотрите, углубляйте свои знания в SQL, получайте офферы!

ТГ-канал нашего инженерного сообщества Sravni Tech

Теги:
Всего голосов 16: ↑14 и ↓2+12
Комментарии1

Всем привет! Совсем недавно в ИТ-инфополе снова активно заговорили о супераппах и их развитии.

Что такое суперапп?

Суперапп — это мобильное приложение, объединяющее множество сервисов и функций в одном месте. 

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

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

1️⃣ Неоспоримым преимуществом является синергия и обширная база пользователей. Даже новым фичам и продуктам внутри супераппа практически не стоит беспокоиться о том, откуда взять трафик. Например, “Самокаты” были запущены сразу в рамках Яндекс Go, поскольку там уже находилась целевая аудитория этого сервиса.

2️⃣ Супераппы генерируют море данных о самых разных аспектах жизни пользователей, и для аналитика это – рай! У вас будет возможность анализировать поведение пользователей в комплексе, выявлять скрытые взаимосвязи и находить инсайты, которые невозможно получить, работая в компании, специализирующейся на одном узком направлении. Это просто кладезь для персонализации, настройки рекомендаций и CRM-коммуникаций. 

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

Но есть и другая сторона.

1️⃣ Бешеная конкуренция за ресурсы. Пиксели на экране супераппа не бесплатны. Вашей команде придется часто толкаться локтями с коллегами и доказывать, что ваш продукт достоин быть первым в выпадающем списке, не скрываться за скроллом и т.д. Аналитикам регулярно нужно доказывать эффективность каждого сервиса в рамках приложения. И порой это скатывается в бюрократию, приводящую к топтанию на месте. 

2️⃣ Сложность атрибуции эффектов. В рамках супераппа каждая команда хочет оценивать своё влияние, и здесь перед аналитиком встает логичная задача: как и к кому атрибуцировать активность пользователей. На рынке существует много практик (last/first click, position-based и т. д.), но внедрить и обосновать конкретную методологию — крайне непростая задача, а спрогнозировать и доказать долгосрочное влияние, чтобы положить его в цели/бюджеты... ну, вы поняли)

3️⃣ Всегда необходимо учитывать влияние новых решений на другие продукты и сервисы, входящие в экосистему супераппа. Например, оценивать, как размещение точки входа в ваш продукт на главной странице повлияет на остальные продукты, и в случае негативного влияния предоставить аргументы и цифры, нивелирующие его. Это требует включения “helicopter view” — понимания взаимосвязией сервисов, ключевых метрик, процессов и инструментов на уровне всей платформы.


А что вы думаете, какой опыт интереснее и ценнее: в больших мультикатегорийных сервисах или в командах, сфокусированных на одном сервисе/продукте?

Еще больше про аналитику в td data dreamen

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

В конце прошлого года Группа Arenadata выпустила обновления ряда своих продуктов.

Новые релизы:

  • Arenadata DB (ADB) — v6.27.1.59;

  • Arenadata DB Backup Manager (ADBM) — v2.3.2;

  • Arenadata DB Control (ADBC) — v4.11.0;

  • Arenadata Streaming (ADS) — v3.6.2.2.b1;

  • Arenadata Catalog (ADC) — v0.8.0;

  • Arenadata Cluster Manager (ADCM) — v2.5.0.

Обновления компонентов Arenadata Cluster Manager (ADCM):

  • Arenadata Monitoring (ADM) — v4.1.0;

  • Arenadata Enterprise Tools (ADET) — v2024121800.

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

⛓ Текст обзора и ссылки на полное описание релизов здесь.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

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

Учим SQL с помощью «Игры в кальмара». Вышел занимательный учебник, где нужно стать частью Организации Squid Game и помогать в подготовке Игр с помощью SQL.

Вы только что были приняты на работу в качестве Data Scientist в таинственную организацию Squid Game. Фронтмен, управляющий Squid Games, пообещал вам полностью удаленную работу. Но, как это обычно бывает в индустрии, вас подставили и обманули. Оказалось, что роль больше связана с аналитикой продуктов на SQL, а работа не полностью удаленная, а гибридная: 5 дней в офисе, 2 дня удаленно. Вы даже не успели пожаловаться на эту работу, как фронтмен приставил к вашей голове пистолет и начал требовать ответы на различные бизнес‑вопросы. Вы должны написать SQL‑запросы, чтобы ответить ему — иначе пуля.

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

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

Представляем YDB DWH компонент для аналитической обработки данных в СУБД Яндекса

В YDB появилась новая функциональность: теперь СУБД Яндекса поддерживает работу со сложными аналитическими запросами (OLAP). Благодаря этому компании смогут не только хранить и обрабатывать в YDB сотни терабайт транзакционных данных, но и выполнять над этими данными запросы и создавать системы для поддержки принятия решений — корпоративные хранилища данных.

Система горизонтально масштабируется за счёт шардирования — автоматического партиционирования по объёму и нагрузке, — а также обеспечивает быстрое выполнение запросов благодаря массивно‑параллельной архитектуре (МРР).

Аналитическая функциональность компонента YDB DWH включает колоночные таблицы с консистентным хранением данных и управление смешанной нагрузкой. В платформу СУБД Яндекса также входит движок выполнения запросов со спиллингом данных на диск, стоимостный оптимизатор, федеративные SQL‑запросы к внешним источникам данных (S3, PostgreSQL, Greenplum, Oracle, Microsoft SQL), что позволяет создавать корпоративные хранилища данных. В планах реализация поддержки SQL-диалекта PostgreSQL для интеграции как в OLAP‑, так и в OLTP‑сценарии.

Платформа распространяется по коммерческой лицензии. Её можно и установить в собственной инфраструктуре (on‑premise), и использовать как управляемый сервис в Yandex Cloud.

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

Подборка для аналитиков по работе с SQL

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

Типы данных SQL — что о них нужно знать начинающему аналитику. Разбираем, какими они бывают и как с ними работать.

Таблицы в SQL: типы и операции — различные типы таблиц и основные операции, которые можно выполнять над ними.

SQL-запросы — основные команды для управления базами данных.

Оконные функции в SQL — что это и как использовать.

Основные ошибки SQL — список распространённых ошибок в работе с запросами баз данных SQL и лучших практик, о которых забывают некоторые пользователи. Рассказываем, как найти ошибки и исправить их.

Потренироваться и решить 70 задач в тренажёре можно на бесплатном курсе «Основы работы с базами данных и SQL».

Теги:
Рейтинг0
Комментарии0

Зачастую бизнес‑объекты в информационных системах хранятся в классических реляционных базах данных, где каждому атрибуту объекта соответствует колонка в таблице.

Чтобы изменить такую объектную модель, например, добавить или удалить атрибут, нужно внести изменения в схему базы данных, то есть выполнить DDL‑операцию. Она сопровождается блокировками таблиц и увеличением времени простоя при работе с данными. Кроме того, при увеличении числа атрибутов можно превысить ограничение на количество колонок в таблице. Например, в Postgres их можно создать не более 1600.

Эти проблемы можно устранить, используя хранение данных в формате JSON. Основные преимущества такого подхода:

  • отказ от фиксированной структуры таблиц;

  • гибкость без необходимости изменения схемы.

Обращение к динамическим полям может осложниться при работе с Hibernate до версии 6.2. Более ранние версии не позволяют обращаться к полям внутри JSON на уровне HQL, что ограничивает возможности фильтрации и сортировки. Поэтому оптимальный вариант — использовать Native SQL. Hibernate позволяет регистрировать SQL‑функции, чтобы вызывать их из HQL‑запросов. Пример регистрации такой функции для Postgres приведен ниже:

registerFunction("jsonQuery",
    new SQLFunctionTemplate(StandardBasicTypes.STRING,
        "jsonb_path_query_first(?1, ?2)::varchar"));
  • Первый параметр — колонка в БД, внутри которой хранится JSON, выполняющий запрос.

  • Второй параметр — запрос в виде JSON Path, который позволяет добраться до определенных полей.

Пример структуры JSON и использования на ней SQL-функции в запросе:

{
  "CPU_Brand": "Intel",
  "CPU_Model": "Xeon 8380",
  "RAM_Size_GB": 64
}
SELECT obj.id
FROM userObject obj
WHERE jsonQuery(obj.json, '$.CPU_Brand') = 'Intel'

При работе с более сложными вещами, например, фильтрация объектов с вложенными данными, SQL Server требует применения конструкций CROSS APPLY и openjson.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии3

Пишем эффективные аналитические запросытретья лекция курса в МГТУ им. Баумана

Третья лекция нашего курса «Deep dive into SQL and DWH» прошла 21 ноября — делимся видеозаписью!

Дата-архитектор Павел Ковалёв рассказал о внутреннем устройстве систем Greenplum и Clickhouse и возможностях, которые они предоставляют с точки зрения оптимизации запросов.

Посмотреть запись можно здесь:

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

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

Пишем эффективные аналитические запросывторая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Вторая лекция прошла 14 ноября; предлагаем посмотреть её видеозапись.

Внутри — обзор инструментов построения DWH/Data Lake, в том числе: Hadoop, Spark, Trino, Databricks, Amazon Athena, Amazon Redshift и Google BigQuery.

Посмотреть можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса будет посвящена техникам оптимизации аналитических SQL-запросов и состоится уже в ближайший четверг, 21 ноября, с 17:25 до 19:00.

Присоединяйтесь в зуме!

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

Пишем эффективные аналитические запросы: первая лекция курса в МГТУ им. Баумана

Делимся лекциями курса «Deep dive into SQL and DWH» от Павла Ковалёва, дата-архитектора Сравни.

Первая лекция прошла 7 ноября — предлагаем посмотреть её видеозапись.

Внутри лекции:

  • Обзор основных понятий курса (OLTP и OLAP, хранилище данных, его базовые слои, архитектуры обработки данных и т.д.)

  • Устройство DWH — на примере компании Сравни

  • Основы оптимизации аналитических SQL-запросов

  • Как решать проблемы с неэффективными запросами: практические кейсы

Посмотреть запись можно здесь:

YouTube

RUTUBE

VK

Следующая лекция курса, посвященная архитектурному обзору инструментов для построения DWH, пройдёт уже в ближайший четверг, 14 ноября, с 17:25 до 19:00. Присоединяйтесь в онлайне!

***

Больше информации о наших лекциях, митапах, статьях и других полезных материалах про ИТ, в тг-канале Sravni Tech.

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

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