Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Движок потоковых вычислений Domino — это модуль потоковой обработки, введённый в YMatrix 6.0. Он инкрементально поддерживает результаты вычислений, повышая эффективность анализа данных и производительность запросов.
В текущей версии базы данных по умолчанию используется Domino v1. Для использования Domino v2 выполните следующие шаги.
Domino v2 доступен в качестве экспериментального компонента в YMatrix 6.3.X. Требуется создание дополнительных плагинов и настройка GUC-параметров.
-- For version 6.3, manually enable Domino v2 support; restart required for changes to take effect
gpconfig -c domino.enabled -v on
gpstop -ar
-- Create the extension
CREATE EXTENSION domino;
-- 1. Set stream version at session level; streams created in this session will be v2
SET mx_stream_default_version TO 2;
-- Verify version
SELECT version FROM mx_stream WHERE streamrelid = 'your_stream_name'::regclass::oid;
-- 2. Alternatively, enable globally
gpconfig -c mx_stream_default_version -v 2
gpstop -u
Подробнее о GUC-параметрах см. в разделе Технические параметры.
Архитектура Domino состоит из двух основных компонентов: фреймворка выполнения и движка вычислений.
Domino v2 призван поддерживать большее количество потоковых задач при сохранении той же задержки запросов, решая проблемы конкуренции за ресурсы и высокой нагрузки в v1 при увеличении числа потоков.
Основные различия связаны с управлением ресурсами и моделью выполнения. v2 повышает масштабируемость и стабильность благодаря оптимизированной архитектуре:
Общий декодер
Общие рабочие процессы
Инкрементальное выполнение
Функциональность: Между v1 и v2 нет существенных функциональных различий.
Совместимость: v1 и v2 могут сосуществовать. Однако при понижении версии базы данных потоки v2 становятся недоступными, в то время как потоки v1 остаются работоспособными.
Domino v2 оптимизирует фреймворк выполнения с помощью следующих ключевых модулей:
Ticker
Разбивает XLog на управляемые фрагменты. Ограничивает область вычислений каждого потока (минимальная единица: один Tick), предотвращая большие транзакции, которые могут замедлить систему. Примечание: Большие транзакции для обработки исторических данных с WITH DATA не подпадают под это ограничение.
Scheduler
Управляет планированием потоков. Повторно использует рабочие процессы, чтобы ограничить общее использование CPU и повысить эффективность отдельных рабочих процессов.
Decoder
Анализирует XLog и генерирует кортежи и снимки (TLog) для потребления потоками.
TLog
Хранит декодированные записи изменений. Выступает в качестве промежуточного хранилища между Decoder и потоковой обработкой, позволяя потокам читать и обрабатывать изменения.
| Возможность | Поддерживается | Примечания |
|---|---|---|
| Движок хранения исходной таблицы | HEAP / MARS3 | |
| Тип распределения исходной таблицы | Hash / Random / Segment Set | Не поддерживает таблицы только на мастере или реплицированные таблицы в качестве источника |
| Партитционирование исходной таблицы | Поддерживается | |
| Движок хранения потоковой таблицы | HEAP / MARS3 / AO | |
| Ключ распределения потоковой таблицы | Настраиваемый, может отличаться от исходного | Лучшая практика: использовать тот же ключ распределения. Для агрегационных потоков совпадение ключей позволяет выполнять локализованные вычисления |
| Атрибуты хранения потоковой таблицы | Независимый выбор движка, партитционирования и ключа распределения | |
| Исходные таблицы с несколькими столбцами | Поддерживается | Поддерживает ≥ 300 столбцов |
| Несколько потоков на одну таблицу | Поддерживается | Несколько потоков могут использовать одну и ту же исходную таблицу |
| Обогащение измерениями | Поддерживается | Поддерживает соединение с ≥ 10 измерительными таблицами |
| Агрегация | Поддерживается | Поддерживает ≥ 32 поля группировки. Внутренне объединяет несколько типов полей в составной тип для агрегации |
| DDL исходной таблицы | Не поддерживается | Создание индексов на исходных таблицах не влияет на потоки. Удаление индексов может нарушить выполнение потока |
| DDL потоковой таблицы | Не поддерживается | Операции DDL над столбцами потоковой таблицы не поддерживаются. При необходимости изменений пересоздайте поток. Примечание: Если исходная таблица также подвергается DDL, рекомендуется пересоздать поток |
| Индексы потоковой таблицы | Поддерживается | Индексы могут быть независимо созданы и поддерживаемы на потоковых таблицах |
| Фильтрация измерений | Поддерживается | Поддерживает условия фильтрации на измерительных таблицах при операциях JOIN |
| Поддержка отказоустойчивости | Поддерживается | Потоки продолжают работу после отказа сегмента; однако небольшое количество транзакций в момент переключения может быть потеряно |
| Накладные расходы по производительности | Минимальное влияние на производительность записи в источник; результаты потока обновляются в течение нескольких секунд | |
| Обработка больших транзакций | Поддерживается | Оптимизированная пакетная обработка и использование памяти при декодировании журнала транзакций. Более стабильна при больших транзакциях. Однако используйте потоковую обработку с осторожностью на таблицах с частыми большими транзакциями |
| Обработка исторических данных | Поддерживается | Используйте WITH DATA при создании потока для обработки существующих данных источника. Если исходная таблица очень большая, это создаёт большую транзакцию, блокирующую создание других потоков до завершения |
| JOIN двух потоков | Поддерживается | Поддерживает неравенства; исходные таблицы могут иметь разные ключи распределения; ключи распределения потока и исходной таблицы могут отличаться |
Объекты потоковых таблиц нельзя получить через JDBC-метаданные. Используйте специальные SQL-запросы для запросов.
Создавать объекты потоков могут только суперпользователи.
В предложении SELECT определения потока не допускаются дублирующиеся имена столбцов. После использования агрегационных функций (особенно в агрегационных потоках) присвойте уникальные псевдонимы, например, select avg(col1) as avg_col1, avg(col2) as avg_col2. Альтернативно используйте проекцию столбцов в CREATE STREAM.
Избегайте прямых операций DML над потоковыми таблицами (контролируется GUC mx_stream_internal_modify).
В определениях потоков не допускаются предложения WITH.
Ограничения агрегационных потоков:
FROM STREAMING.GROUP BY должны включать все ключи распределения соответствующей потоковой таблицы.GROUP BY не разрешена.HAVING не поддерживается. В качестве обходного решения используйте вложенные подзапросы с внешним WHERE.avg(col1)+1 недопустимо, но avg(col+1) поддерживается.Ограничения JOIN двух потоков:
GROUP BY не допускается в вычислениях JOIN двух потоков.INNER JOIN между двумя исходными таблицами. UNION, LEFT JOIN или JOIN с не-потоковыми таблицами не поддерживаются.DISTINCT, SUM, MAX.ORDER BY не поддерживается.В многоуровневой потоковой обработке промежуточные потоки не могут быть агрегационными.