Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Движок потоковых вычислений Domino — это модуль потоковых вычислений, введённый в YMatrix 6.0. Он инкрементально поддерживает результаты вычислений для повышения эффективности анализа данных и производительности запросов.
Domino v2 включён по умолчанию начиная с YMatrix 6.4.X и не требует дополнительной настройки.
Для получения дополнительной информации о параметрах GUC см. Технические параметры.
Архитектура Domino состоит из двух основных компонентов: фреймворка выполнения и движка вычислений.
Основная цель Domino v2 — поддерживать большее количество потоковых задач при сохранении той же задержки запросов, решая проблемы конкуренции за ресурсы и высокой нагрузки в v1 при увеличении числа потоков.
Основные различия заключаются в управлении ресурсами и механизмах выполнения. Domino v2 повышает масштабируемость и стабильность благодаря оптимизированной архитектуре.
Общий декодер
Общие рабочие процессы
Инкрементальное выполнение (малые шаги)
Функциональность
Совместимость
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 над столбцами потоковой таблицы (например, ADD/DROP COLUMN) не поддерживаются. При необходимости изменений пересоздайте поток. Примечание: Если исходная таблица также подвергается DDL, рекомендуется пересоздать поток |
| Индексы потоковой таблицы | Поддерживается | Индексы можно независимо создавать и поддерживать на потоковых таблицах |
| Фильтрация измерений | Поддерживается | Поддерживает условия фильтрации на таблицах измерений при обогащении |
| Поддержка отказоустойчивости | Поддерживается | Потоки продолжают работу после отказа сегмента. Однако небольшое количество транзакций в точке переключения может быть потеряно |
| Накладные расходы на производительность | Минимальное влияние на производительность записи в исходной таблице; результаты потока обновляются в течение нескольких секунд | |
| Обработка больших транзакций | Поддерживается | Оптимизированная пакетная обработка и использование памяти при декодировании журнала транзакций повышают стабильность при больших транзакциях. Однако используйте потоки осторожно на таблицах с частыми большими транзакциями |
| Обработка исторических данных | Поддерживается | Используйте 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 не могут имитировать HAVING.avg(col1)+1 недопустимо, но avg(col+1) разрешено.Ограничения JOIN между потоками:
GROUP BY не допускается в вычислениях JOIN между потоками.INNER JOIN между двумя исходными таблицами. UNION, LEFT JOIN или JOIN с не-потоковыми таблицами не поддерживаются.DISTINCT, SUM, MAX.ORDER BY не поддерживается.В многоуровневых потоковых конвейерах промежуточные потоки не могут быть агрегационными.