Обновить
64K+

SQL *

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

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

Как применить одну функцию к нескольким колонкам, не перечисляя их в SELECT

В прошлом посте я рассказывал про модификатор REPLACE, с помощью которого можно менять значения «на лету», не перечисляя все колонки в SELECT. Сегодня расскажу про еще один полезный модификатор — APPLY.

Иногда бывают ситуации, когда нам нужно применить одну и ту же функцию сразу к нескольким колонкам (например, посчитать сумму).

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

В ClickHouse это делается проще.

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

В качестве примера рассмотрим таблицу metrics, в которой хранится количество кликов, просмотров и затрат:

┌─clicks─┬─views─┬─spend─┐
│     10 │   100 │    50 │
│     15 │   150 │    70 │
└────────┴───────┴───────┘

Чтобы посчитать сумму по каждому полю обычно мы привыкли писать так:

SELECT
  sum(clicks),
  sum(views),
  sum(spend)
FROM metrics

┌─sum(clicks)┬─sum(views)─┬─sum(spend)─┐
│         25 │        250 │        120 │
└────────────┴────────────┴────────────┘

С использованием APPLY можно написать короче:

SELECT * APPLY(sum) 
FROM metrics

┌─sum(clicks)┬─sum(views)─┬─sum(spend)─┐
│         25 │        250 │        120 │
└────────────┴────────────┴────────────┘

Несколько нюансов:

  1. Правила вызова пишутся в круглых скобках. Синтаксис такой: APPLY(имя_функции) без аргументов.

  2. Передаваемая функция в APPLY должна уметь работать со всеми полями выборки и их типами данных. Например, для sum все поля должны быть числовыми.

  3. Если мы хотим применить sum, но в таблице есть нечисловые типы данных, мы можем исключить их через EXCEPT или выбрать только нужные через модификатор COLUMNS, о котором я расскажу в следующем посте.

  4. APPLY можно использовать не только для агрегации, но и для изменения типов данных. Например, APPLY(toString) быстро переведет все выбранные колонки в строковый формат.

Ссылка на доку.

Мои статьи по ClickHouse на Хабре.

P.S. Систематизировать знания и получить крепкую базу можно на моем бесплатном курсе «ClickHouse с нуля». А закрепить пройденный материал на его практическом продолжении «ClickHouse с нуля: практика».

Теги:
+5
Комментарии0

Как менять значения «на лету», не перечисляя все колонки в SELECT

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

Возьмем все тот же пример: широкую таблицу, в которой 50 или более колонок. Часто бывают ситуации, когда нам нужно модифицировать значения только в одном-двух полях (например, привести email к нижнему регистру, округлить цену или захешировать данные), а все остальные поля вывести как есть.

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

В ClickHouse это делается проще.

Чтобы не писать десятки колонок руками, можно использовать модификатор REPLACE. Он работает в связке со звездочкой * и позволяет вывести все поля, заменив значения только в конкретных.

Обычно мы пишем так:

SELECT
  id,
  category,
  user_id,
  -- ... перечисляем десятки остальных колонок руками ...
  LOWER(email) AS email
FROM table

С использованием REPLACE запрос становится короче:

SELECT * REPLACE (LOWER(email) AS email)
FROM table

А если нам надо и исключить колонки, и заменить значения, можно писать EXCEPT и REPLACE вместе:

SELECT * 
    EXCEPT (updated_at) 
    REPLACE (LOWER(email) AS email)
FROM table

Несколько нюансов:

  1. Правила замены пишутся в круглых скобках. Синтаксис такой: (выражение AS имя_существующей_колонки).

  2. Можно изменять сразу несколько колонок, перечислив их через запятую: REPLACE (LOWER(email) AS email, price * 0.85 AS price).

  3. Тип данных колонки в итоговой выборке поменяется, если ваше выражение возвращает новый тип (например, вы заменили число на строку).

Про еще один модификатор расскажу в следующем посте.

Ссылка на доку.

Мои статьи по ClickHouse на Хабре.

P.S. Систематизировать знания и получить крепкую базу можно на моем бесплатном курсе «ClickHouse с нуля». А закрепить пройденный материал на его практическом продолжении «ClickHouse с нуля: практика».

Теги:
+4
Комментарии0

Центр управления СУБД Digital Q.DataBase.
Продолжаю делиться выступлениями с первого сезона ДНЯ СУБД 2026.

Я рассказывал, как мы воспроизводим функциональность MS SQL Server в нашей СУБД Digital Q.DataBase (без переписывания бизнес логики), а мой коллега Илья Лебедев - как воспроизводим возможности Oracle.

Теперь - о том, как всем этим управлять.
Сразу говорю: Инструмент бесплатный.
А серверная часть нашей СУБД тоже бесплатная - до 4 ядер.
По секрету: можем легко дать и больше ядер.

Выкладываю полное видео выступления Андрея Акимова, руководителя команды «Центр управления Digital Q.DataBase». Андрей рассказывает и показывает, как объединить мониторинг, администрирование и диагностику баз данных в одном веб-интерфейсе.

В докладе - возможности продукта, поддержка Digital Q.DataBase и практические задачи администратора БД: проверить состояние баз, отследить рост таблиц и разобраться, почему тормозит запрос, с помощью трассировки сессий.

Видео с тайм-кодамина:
VK
Rutube
Dzen
YouTube

Кстати, второй сезон ДНЯ СУБД уже близко - встречаемся 27 октября. Приходите!

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm_source=andrei
🔹 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹 MAX: https://max.ru/channel_dqdatabase

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

СУБД, которая понимает диалекты Oracle, MS SQL и PostgreSQL,– без переписывания кода приложений.

Теги:
+10
Комментарии1

Как исключить ненужные колонки из SELECT *

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

В ClickHouse можно исключать ненужные колонки проще.

Чтобы не перечислять десятки полей руками, можно использовать модификатор EXCEPT. Он работает в связке со звездочкой и позволяет вывести все колонки, исключив ненужные.

Обычно мы пишем так:

SELECT
  id,
  category,
  user_id,
  -- ... перечисляем остальные колонки руками ...
FROM table

С использованием EXCEPT запрос становится короче:

SELECT * EXCEPT (updated_at)
FROM table

Несколько нюансов:

  1. Исключаемые колонки пишутся в круглых скобках через запятую.

  2. Не путайте модификатор EXCEPT с оператором вычитания множеств.

  3. Модификатор отлично комбинируется с другими модификаторами, например с REPLACE или APPLY (напишу про них в следующих постах).

Ссылка на доку.

Мои статьи по ClickHouse на Хабре.

P.S. Систематизировать знания и получить крепкую базу можно на моем бесплатном курсе «ClickHouse с нуля». А закрепить пройденный материал на его практическом продолжении «ClickHouse с нуля: практика».

Теги:
+4
Комментарии0

Как перенести приложение с Oracle Forms в веб, сохранив бизнес-логику и привычное поведение экранных форм?

Ранее я уже показывал, как наша СУБД исполняет PL/SQL-код на лету.

Сегодня продолжаем тему: в новом видео разбираем технологию автоматизированного переноса приложений Oracle Forms на Go и демонстрируем её работу на примере тестового приложения.

► Рассказываем, почему замены СУБД недостаточно и что усложняет ручной перенос. Показываем, как из файлов .fmb извлекаются метаданные, SQL и PL/SQL-код, как преобразуются триггеры и как связаны JSON, сервер на Go и браузерный интерфейс.

В представленном решении около 70% работ выполняется автоматически. Оставшаяся часть - адаптация интерфейса и разработка Go-компонентов для конкретных форм.

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

Видео также доступно на (в них есть также и таймкоды):
VK
Rutube
Dzen
YouTube

► С 1 сентября 2026 года компания «Диасофт» переходит на новую лицензионную политику СУБД Digital Q.DataBase (до 4-х ядер бесплатно). 

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm_source=andrei
🔹
 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹
 MAX: https://max.ru/channel_dqdatabase
🔹
 RuDB : https://database.ru

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

СУБД, которая понимает диалекты Oracle, MS SQL и PostgreSQL,– без переписывания кода приложений.

Теги:
+12
Комментарии0

В этом небольшом видео показываю работу службы отчётности Digital Q.DataBase и поддержку RDL (Report Definition Language) — формата описания отчётов, используемого в Microsoft SQL Server Reporting Services (SSRS).

► При миграции с Microsoft SQL Server одной из сложных задач становится сохранение существующей отчётности. В корпоративных системах могут годами накапливаться сотни и тысячи RDL-отчётов, а их перенос на другой стек способен превратиться в отдельный большой проект.

В СУБД Digital Q.DataBase (которая понимает PL/pgSQL, PL/SQL, T-SQL) реализована совместимость с RDL и привычными механизмами SSRS, чтобы существующие отчёты и интеграции можно было переносить с минимальными изменениями.

🔹 Служба отчётов Digital Q.DataBase
Аналог SQL Server Reporting Services (SSRS).
Поддержка RDL-отчётов.
Формирование отчётов в HTML и PDF.

Видео также доступно на:
VK
RuTube  
Dzen 
YouTube

► С 1 сентября 2026 года компания «Диасофт» переходит на новую лицензионную политику СУБД Digital Q.DataBase (до 4-х ядер бесплатно). 

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm_source=andrei
🔹
 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹
 MAX: https://max.ru/channel_dqdatabase
🔹
 RuDB : https://database.ru

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

СУБД, которая понимает диалекты Oracle, MS SQL и PostgreSQL,– без переписывания кода приложений.

Теги:
+11
Комментарии2

Digital Q.DataBase 18.2 | Выполняем Oracle-скрипты в DBeaver и qclient

В этом коротком видео я демонстрирую работу модуля Onyx в Digital Q.DataBase и выполнение PL/SQL-скриптов, написанных для Oracle Database.

► В основном примере (через qclient) выполняется полноценный PL/SQL-сценарий: создаётся таблица, объявляются PACKAGE и PACKAGE BODY с процедурами, используется отдельная функция и анонимный PL/SQL-блок.

В скрипте используются характерные для Oracle механизмы: NUMBER, VARCHAR2, CLOB, SYSDATE, DUAL, ADD_MONTHS, а также пакеты DBMS_LOB и DBMS_OUTPUT. Скрипт компилируется и выполняется непосредственно в модуле Onyx.

► Также показываю, что работать с Onyx можно привычным способом через DBeaver. 

Подключаемся к Digital Q.DataBase по характерному для Oracle порту 1521 и прямо из SQL-редактора выполняем обычный PL/SQL-скрипт: создаём таблицу employees_1, хранимую процедуру add_employee_1, вызываем её через CALL и проверяем результат обычным SELECT.

То есть для разработчика работа выглядит привычно: DBeaver, PL/SQL, процедуры, Oracle-типы и Oracle-синтаксис - но исполняется всё в Digital Q.DataBase Onyx.

Это позволяет переносить существующие Oracle-приложения и PL/SQL-код с минимальным объёмом изменений.

При этом для работы с Digital Q.DataBase можно использовать и привычные специалистам по Oracle инструменты: существующие средства администрирования, разработки и подключения могут работать с модулем Onyx через Oracle-совместимый интерфейс и порт 1521.

Видео также доступно на:
VK 
RuTube  
Dzen 
YouTube

► С 1 сентября 2026 года компания «Диасофт» переходит на новую лицензионную политику СУБД Digital Q.DataBase (до 4-х ядер бесплатно). 

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm_source=andrei
🔹 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹 MAX: https://max.ru/channel_dqdatabase
🔹 RuDB : https://database.ru

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

СУБД, которая понимает диалекты Oracle, MS SQL и PostgreSQL,– без переписывания кода приложений.

Теги:
+8
Комментарии2

Digital Q.DataBase 18.2 | Выполняем MS SQL скрипты в DBeaver и Python

В этом коротком видео я демонстрирую, как Digital Q.DataBase 18.2 исполняет нативный T-SQL скрипт через DBeaver (в SSMS тоже делает), а также как те же объекты доступны из Python через библиотеку pymssql по протоколу TDS.

► В примере используются GO, SET DATEFORMAT, OBJECT_ID, sys.objects, INFORMATION_SCHEMA, вычисляемые столбцы, хранимые процедуры GetSalesReport и CalculateManagerBonus, а также их вызов из Python с обработкой нескольких наборов результатов.

Видео также доступно на:
VK 
RuTube  
Dzen 
YouTube

► С 1 сентября 2026 года компания «Диасофт» переходит на новую лицензионную политику СУБД Digital Q.DataBase (до 4-х ядер). 

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm\_source=andrei
🔹
 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹
 MAX: https://max.ru/channel_dqdatabase
🔹
 RuDB : https://database.ru

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

СУБД, которая понимает диалекты Oracle, MS SQL и PostgreSQL,– без переписывания кода приложений.

#DigitalQDataBase #Diasoft #MSSQL

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

Привет!
Заметка о правильности названий ETL процессов.Расставим точки над i.
Всегда было же нормально, коротко и звучно ETL. Теперь все чаще мелькает ELT, ETLT, EtLT.

Традиционный паттерн ETL, применяет бизнес-логику во время преобразования, до загрузки в хранилище. Выбрал данные, преобразовал, положил в хранилище. ELT меняет эту последовательность, сначала загружая сырые данные в хранилище, а преобразование выполняет уже внутри. ELT подход сокращает нагрузку на систему источник, позволяет итеративно совершенствовать логику преобразования.

Имеем два противоположных метода.

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

Например, в потоке выполняется экстракция из базы данных, непосредственно при выборке происходят предварительные преобразования (очистка, изменение типов), далее загрузка в цель - выполнился процесс ETL. Вторым этапом идут бизнес преобразования - процесс T, а вместе ETLT.

Таким образом и получается, что в большинстве случаев используется процесс ETLT, но исторически так сложилось называть все подобные процесcы просто и звучно ETL.
В аббревиатуре первая трансформация обозначается маленькой первой буквой t, и это не случайно. На данном шаге выполняются только предварительные преобразования данных: очистка, приведение типов. А вот уже вторая - это полноценная трансформация: бизнес преобразования, обогащения, расчеты и тд. Еще я встречал проставление индексов к буквам трансформаций ET1LT2.

Так же есть такое понятие как ETL++, но об этом в другой раз :-)

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

В Steam анонсирован к скорому выходу игровой квест Ghost in the SQL Data, где нужно распутывать дела через SQL-запросы и копания в базах данных с уликами. Игра проверяет результаты запросов, а не просто ключевые слова. В ходе выполнения заданий в Ghost in the SQL Data игра сама постепенно учит языку, так что начинать можно вообще без знаний SQL. Дела будут разные: поджоги, смерти, пропавшие деньги и другие преступления.

Визуально Ghost in the SQL Data выполнена в стилистике физической доски с уликами: газетные вырезки, бумажные заметки, малярный скотч, кнопки, красные нити, маркерные пометки и фотографии на клетчатой бумаге. При этом разработчики подчёркивают, что это не просто стилизация — основная механика действительно построена вокруг работы с базами данных и написания SQL-кода.

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

10 августа я провёл вебинар, посвящённый новым возможностям Digital Q.DataBase 18.2 - СУБД + AI в Digital Q.DataBase

В программе:

🔹 Развитие полиглотной платформы единая платформа для PostgreSQL, Microsoft SQL Server и Oracle; новые возможности совместимости;
🔹 Новые возможности RuDB новые пакеты; развитие функциональности;
🔹 ИИ и векторный поиск поддержка векторных операций;
🔹 KV-хранилище DGrid развитие встроенного KV-хранилища; архитектура решения;

► Бесплатная полнофункциональная версия дистрибутива (до 8 ядер) с возможностью использования в том числе в коммерческих целях.

► С 1 сентября 2026 года компания «Диасофт» переходит на новую лицензионную политику СУБД Digital Q.DataBase (до 4-х ядер). 

🔹 Бесплатное получение дистрибутива: 
https://database.diasoft.ru/?utm\_source=andrei
🔹 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹 MAX: https://max.ru/channel_dqdatabase
🔹 RuDB : https://database.ru

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

Запись вебинара доступна на следующих площадках:

RuTube
Dzen
YouTube
VK

#DigitalQDataBase #Diasoft #PostgreSQL #AI #Импортозамещение

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

Как redb хранит сложные объекты: не бесхемная свалка, а RTTI

Про redb (RedBase) есть два зеркальных заблуждения. Первое: раз объект пишется «как документ», внутри лежит сериализованный JSON или блоб. Второе, противоположное: раз всё падает в общую таблицу значений — значит это плоский мешок пар «ключ-значение» без схемы.

Оба мимо. То, что внутри — это RTTI, полноценная система типов, живущая в самой базе. И устроена она заметно сложнее, чем и блоб, и «атрибут-значение». Разбор архитектуры я подробно давал в отдельной статье на Хабре: «redb: реляционное хранилище объектов» — ниже сжатая суть.

Слой типов: база знает настоящий тип каждого поля

redb хранит не только данные, но и их описание типов — три связанных уровня:

  • types — реальные дескрипторы типов (db_type и соответствие .NET-типу);

  • _schemes — сами типы (классы), с поддержкой наследования через self-reference;

  • structures — типизированные поля схемы: имя (name), тип (_id_type, FK на types), признак коллекции (collection_type) и вложенность (_id_parent).

Значения в values всегда привязаны к конкретной структуре (id_structure, FK на structures). Поэтому строка values — это не безымянная пара «атрибут-значение»: это значение известного, именованного, типизированного, возможно вложенного поля известного класса. База в рантайме знает, что перед ней — decimal Salary в схеме Employee, а не абстрактный «атрибут №42». Это и есть RTTI.

Хранение коллекций: построчно, реляционно

Вложенные массивы, словари и глубокие иерархии redb раскладывает в _values построчно, а не строкой:

  • Никаких JSON-блобов на диске. Каждый элемент коллекции — отдельная строка с типизированными колонками (_value_long, valuestring, valuedatetime, valueguid, …), внешними ключами и обычными индексами.

  • Связь и порядок — реляционные. Вложенность собирается self-reference колонкой arrayparent_id (FK на values.id, ON DELETE CASCADE). Порядок массива и ключи словаря — в arrayindex (text: '0','1','2' для массивов, строковый ключ — для словарей).

  • Один элемент — одна строка. List<OrderItem> внутри класса не превращается ни в JSON-поле, ни в десяток физических таблиц, которые вы заводите руками.

Что это даёт на практике

  1. Честный LINQ на уровне СУБД. Данные лежат в типизированных колонках, а метаданные структур позволяют движку собрать нативный SQL: Where / OrderBy / GroupBy / оконные функции идут по реальным индексам базы, а не перебором JSON в памяти бэкенда.

  2. Загрузка за один запрос без каскада JOIN-ов. Чтобы поднять объект со всей глубиной вложенности (пусть там 20–30 списков), не нужен каскад JOIN, как у EF с .Include(). Плоская структура забирается из _values одним запросом и собирается в объект в памяти.

  3. Точечный Change Tracking (Pro). При сохранении Pro-версия строит деревья ValueTreeNode (память против БД), сравнивает их (ValueTreeBuilder / ValueTreeDiff) и шлёт UPDATE только по изменившимся узлам — граф целиком не перезаписывается.

Итог: redb совмещает удобство работы с объектами «как с документами» и фундамент реляционной СУБД — типизацию, индексы, FK и запросы, которые исполняет база, а не бэкенд. Ключ к этому — не блоб и не плоский мешок атрибутов, а persisted-RTTI: types → schemes → structures → values.

Ссылки

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

Информационные технологии. Проблемы и решения – IT'DAYS

Сегодня всё чаще говорят: импортозамещение заканчивается там, где начинается переписывание миллионов строк бизнес-логики.

Именно поэтому всё больший интерес вызывают полиглотные СУБД, которые позволяют заменить СУБД, а не приложение, сохранив привычные языки программирования и существующую бизнес-логику.

Digital Q.DataBase — именно такая СУБД. Она воспроизводит функциональные возможности Microsoft SQL Server и Oracle Database, позволяя существенно сократить объём доработок существующих информационных систем при миграции.

Отличный повод вспомнить моё выступление на международной конференции «Информационные технологии. Проблемы и решения – IT'DAYS» в Уфе.

► Бесплатная полнофункциональная версия дистрибутива (до 8 ядер) с возможностью использования в том числе в коммерческих целях.

🔹 Бесплатное получение дистрибутива: https://database.diasoft.ru/?utm\_source=andrei
🔹 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹 MAX: https://max.ru/channel_dqdatabase
🔹 RuDB : https://database.ru

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

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

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

Привет!

Заметка о том как работает алгоритм инкрементальной загрузки, она же дельта, в ETL процессах. Полезно будет для тех кто только погружается.
Для загрузки данных в хранилище данных мы выполняем два отдельных процесса: первоначальную загрузку исторических данных и инкрементальную загрузку. Первый процесс делается разово, а второй выполняется периодически.
Инкрементальная загрузка выбирает только новые, еще не загруженные данные из источника в цель.
Например, пользователи постоянно генерируют новые данные, бизнес работает. Система запускалась час назад и забрала новые на тот момент данные. При следующем запуске алгоритм определяет максимальную дату в цели:
max_timestamp = SELECT MAX(timestamp) FROM target_table

и выбирает все записи из источника которые новее max_timestamp

SELECT * FROM source_table WHERE timestamp > max_timestamp

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

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

1 июля мы провели вебинар, посвящённый новым возможностям Digital Q.DataBase 18.2.

В рамках вебинара я, Андрей Жуйков, амбассадор компании «Диасофт», рассказал о ключевых возможностях Digital Q.DataBase 18.2 — масштабном обновлении, направленном на развитие совместимости с корпоративными СУБД и упрощение миграции существующих систем.

Изменения коснулись Microsoft SQL Server-направления: расширена поддержка T-SQL, Service Broker, CLR-сборок, механизма CDC, а также появилась служба отчётов Digital Q.DataBase, совместимая с SQL Server Reporting Services (SSRS).

Отдельное внимание уделено Oracle-направлению: расширена поддержка Oracle-совместимых пакетов, курсоров и Bind-переменных, улучшена работа JDBC-драйвера, доработаны средства миграции Oracle-объектов, а также появилась новая технология автоматизированного перевода Oracle Forms в современные приложения.

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

В программе:

🔹 Обзор Digital Q.DataBase 18.2
Ключевые изменения релиза.
Развитие совместимости с Microsoft SQL Server и Oracle.
Новые возможности для миграции корпоративных систем.

🔹 Новая версия CDC
Обновлённый механизм Change Data Capture.
Новый веб-интерфейс управления.
Сценарии применения и преимущества.

🔹 Новые возможности миграции и совместимости
Расширение совместимости с Microsoft SQL Server.
Новые Oracle-пакеты и развитие Oracle-диалекта.
Поддержка CLR-сборок.
Развитие Service Broker.

🔹 Служба отчётов Digital Q.DataBase
Аналог SQL Server Reporting Services (SSRS).
Поддержка RDL-отчётов.
Формирование отчётов в HTML и PDF.

🔹 Новая технология перевода Oracle Forms
Автоматизированный перевод Oracle Forms в современные приложения.
Архитектура решения.
Демонстрация технологии.

► Бесплатная полнофункциональная версия дистрибутива (до 8 ядер) с возможностью использования в том числе в коммерческих целях.

🔹 Бесплатное получение дистрибутива: https://database.diasoft.ru/?utm\_source=andrei
🔹 Документация: доступна внутри дистрибутива
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase
🔹 MAX: https://max.ru/join/orlthIssLJbjj37mjlEEYARWFyuJk5yMixLlGPISIzc
🔹 RuDB : https://database.ru

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

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

Вышла бесплатная книга к курсу «SQL Введение»

Всем привет!

Недавно я публиковал здесь бесплатный курс «SQL Введение» на платформе Stepik. За это время курс уже начали проходить более 400 студентов.

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

Бесплатный курс: https://stepik.org/a/290855

Зачем появилась книга

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

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

Что представляет собой книга

Книга полностью соответствует программе курса и может использоваться параллельно с его прохождением.

Её можно использовать как:

  • офлайн-версию курса для повторения материала;

  • удобный конспект при выполнении практических заданий;

  • справочник для быстрого повторения основных конструкций SQL.

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

Для кого она будет полезна

Так же, как и сам курс, книга ориентирована на тех, кто только начинает знакомство с SQL:

  • студентов IT-специальностей;

  • начинающих разработчиков;

  • будущих аналитиков данных;

  • тестировщиков;

  • всех, кто хочет разобраться в основах работы с реляционными базами данных.

Бесплатный доступ

Книга распространяется бесплатно.

Если вы проходите курс «SQL Введение», она уже доступна внутри курса в качестве дополнительного учебного материала.

Кроме того, книга опубликована на GitHub, где всегда можно скачать последнюю актуальную версию.

https://github.com/Awilum/sql-introduction

Чтобы скачать последнюю актуальную версию, перейдите в раздел Releases, где всегда доступен самый свежий выпуск книги. 

https://github.com/Awilum/sql-introduction/releases

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

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

В предыдущих видео я рассказывал о том, как Digital Q.DataBase воспроизводит функциональность Microsoft SQL Server, позволяя переносить приложения без переписывания прикладной бизнес-логики. Мой коллега Илья Лебедев также подробно рассказал о возможностях воспроизведения функциональности Oracle и подходах к миграции Oracle-приложений.

В этом докладе Илья Виссарионов рассказывает о практическом опыте компании «Диасофт» по импортозамещению крупной автоматизированной банковской системы, которая десятилетиями работала на Microsoft SQL Server.

Главной особенностью проекта стало то, что значительная часть бизнес-логики была реализована в виде хранимых процедур. Полное переписывание миллионов строк SQL-кода оказалось бы слишком дорогим и длительным, поэтому был выбран другой путь — развитие Digital Q.DataBase с максимальной совместимостью с Microsoft SQL Server и сохранением существующих приложений.

В докладе подробно рассматриваются реальные технические проблемы, с которыми столкнулась команда при переносе банковской системы на PostgreSQL-совместимую платформу: различия в типах данных, работе процедур, оптимизаторе запросов, производительности, временных таблицах, пользовательских типах данных и других механизмах СУБД.

Отдельное внимание уделено нагрузочному тестированию. Автор показывает, как поэтапная оптимизация Digital Q.DataBase позволила добиться производительности, сравнимой с Microsoft SQL Server, а по ряду операций — превзойти её, при этом сохранив существующую бизнес-логику без масштабного переписывания.

В этом видео вы узнаете:

🔹 почему импортозамещение крупных банковских систем требует особого подхода;
🔹 с какими проблемами столкнулась команда при переносе АБС с Microsoft SQL Server;
🔹 почему стандартного PostgreSQL оказалось недостаточно;
🔹 какие механизмы совместимости были реализованы в Digital Q.DataBase;
🔹 как удалось сохранить существующий T-SQL-код без его переписывания;
🔹 какие доработки были выполнены для повышения производительности;
🔹 как проводилось нагрузочное тестирование на реальных банковских сценариях;
🔹 каких результатов удалось добиться по сравнению с Microsoft SQL Server.

Если вас интересуют вопросы импортозамещения СУБД, миграции корпоративных систем или построения PostgreSQL-совместимых платформ корпоративного уровня — этот доклад будет полезен разработчикам, архитекторам, администраторам баз данных и техническим руководителям.

Digital Q.DataBase — российская СУБД корпоративного уровня, разработанная компанией «Диасофт» для замещения Microsoft SQL Server, Oracle и других зарубежных решений.
Платформа позволяет сохранить существующие инвестиции в прикладной код и значительно сократить трудозатраты при миграции информационных систем.

🔹 Бесплатное получение дистрибутива: https://database.diasoft.ru/?utm_source=andrei
🔹 Документация: доступна внутри дистрибутива  
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase   
🔹 MAX: https://max.ru/join/orlthIssLJbjj37mjlEEYARWFyuJk5yMixLlGPISIzc

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

Как мы воспроизводим функциональность Oracle и создаем аналоги DBMS-пакетов.

В предыдущем посте я рассказывал о технологии «Полиглот» в Digital Q.DataBase — возможности исполнять T-SQL "на лету" наряду с родным PL/pgSQL, что позволяет мигрировать приложения с Microsoft SQL Server.

Но полиглотность Digital Q.DataBase этим не ограничивается.

Сегодня хочу поделиться выступлением моего коллеги Ильи Лебедева, посвящённым Oracle-направлению. В докладе он подробно рассказывает о поддержке PL/SQL и о том, как Digital Q.DataBase помогает переносить системы с Oracle, сохраняя серверную бизнес-логику и клиентские приложения без дорогостоящей переработки.

В этом выступлении обсуждаются:

🔹 Как Digital Q.DataBase реализует полноценную поддержку Oracle-диалекта, включая пакеты, DBMS-пакеты и PL/SQL-код.
🔹 Почему SQL- и PL/SQL-код может выполняться без изменений.
🔹 Как работает мастер переноса баз данных и какие скорости миграции можно получить на практике.
🔹 Каким образом обеспечивается бесшовное подключение существующих приложений через OCI и JDBC.
🔹 Почему переход с Oracle на Digital Q.DataBase может занять месяцы вместо лет.
🔹 Как накопленный опыт миграций позволяет ускорять последующие проекты и снижать объем доработок.

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

Digital Q.DataBase — российская СУБД корпоративного уровня, разработанная компанией «Диасофт» для замещения Microsoft SQL Server, Oracle и других зарубежных решений.
Платформа позволяет сохранить существующие инвестиции в прикладной код и значительно сократить трудозатраты при миграции информационных систем.

🔹 Бесплатное получение дистрибутива: https://database.diasoft.ru/?utm_source=andrei
🔹 Документация: доступна внутри дистрибутива  
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase   
🔹 MAX: https://max.ru/join/orlthIssLJbjj37mjlEEYARWFyuJk5yMixLlGPISIzc

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

В этом докладе я (Жуйков Андрей, амбассадор компании «Диасофт») рассказываю о подходе Digital Q.DataBase к импортозамещению зарубежных СУБД и миграции корпоративных систем без переписывания прикладного кода.  

В видео рассмотрены: 

🔹 архитектура и возможности Digital Q.DataBase; 
🔹 технология Polyglot и поддержка нескольких SQL-диалектов в одной СУБД; 
🔹 совместимость с Microsoft SQL Server и Oracle; 
🔹 исполнение T-SQL и PL/SQL без изменения бизнес-логики приложений; 
🔹 поддержка протокола TDS и работа со стандартными драйверами Microsoft; 
🔹 миграция 1С с Microsoft SQL Server на Digital Q.DataBase; 
🔹 демонстрация работы через DBeaver, SQL Server Management Studio и Python; 
🔹 поддержка Service Broker, Reporting Services и CLR-сборок; 
🔹 примеры реальных проектов и опыт внедрения у заказчиков.  

Digital Q.DataBase — российская СУБД корпоративного уровня, разработанная компанией «Диасофт» для замещения Microsoft SQL Server, Oracle и других зарубежных решений.

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

🔹 Бесплатное получение дистрибутива: https://database.diasoft.ru/?utm_source=andrei
🔹 Документация: доступна внутри дистрибутива  
🔹 Telegram-сообщество Digital Q.DataBase: https://t.me/dqdatabase   

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

#digitalqdatabase  #Diasoft #PostgreSQL #MicrosoftSQLServer #Oracle #Импортозамещение #СУБД #Database #TSQL #PLSQL #1С #DataBaseMigration #жуйковандрей

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

Бесплатный курс «SQL Введение» для тех, кто начинает изучать базы данных

Всем Привет!

Недавно я опубликовал новый бесплатный курс «SQL Введение» на платформе Stepik и хочу рассказать о нём сообществу.

https://stepik.org/course/290855

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

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

Курс ориентирован на тех, кто:

  • никогда раньше не работал с базами данных;

  • не писал SQL-запросы;

  • хочет понять основы SQL перед дальнейшим обучением;

  • учится на IT-специальности;

  • рассматривает карьеру разработчика, аналитика данных, тестировщика или бизнес-аналитика.

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

Что изучается в курсе

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

В процессе обучения вы разберётесь с основами SQL и научитесь:

• понимать, как устроены таблицы и данные

• писать первые SQL-запросы

• выбирать столбцы из таблицы

• фильтровать данные

• использовать операторы сравнения

• формировать простые выборки

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

Курс включает:

  • теоретические уроки;

  • тестовые задания для проверки понимания материала;

  • практические упражнения с SQL-запросами.

Главная цель курса — помочь новичку разобраться в фундаментальных принципах работы с данными и научиться уверенно писать свои первые SQL-запросы.

Почему курс бесплатный

Я хотел создать качественную точку входа в SQL, доступную каждому. Многие люди только начинают свой путь в IT и ещё не готовы покупать большие программы обучения. Бесплатный вводный курс позволяет понять основы и решить, интересно ли двигаться дальше в этом направлении.

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

Начать обучение можно здесь:

https://stepik.org/course/290855

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