Переведено и отредактировано Деброй Чен

Спустя два месяца Apache SeaTunnel вернулся с крупным обновлением! Версия 2.3.3 содержит значительные улучшения как в функциональности, так и в производительности. Основные моменты включают такие долгожданные функции, как эволюция схемы CDC (синхронизация изменений DDL), разделение первичного ключа, автоматическое создание таблиц JDBC Sink, поддержка SeaTunnel Zeta Engine, подстановка переменных и многое другое. Эти обновления расширяют возможности Apache SeaTunnel по синхронизации данных, что значительно повышает производительность. Давайте углубимся в детали этого обновления.

Обновления Центра по контролю и профилактике заболеваний (CDC)

Поддержка эволюции схемы CDC:

В рамках ключевого обновления архитектуры SeaTunnel теперь абстрагирует события изменения DDL на уровне архитектуры, добавляя интерфейсы как в источнике, так и в приемнике. Кроме того, механизм Zeta включает обработку событий и контрольных точек изменения DDL. Эта архитектура теперь закладывает основу для синхронизации изменений DDL, при этом различные соединители адаптируют интерфейсы для обеспечения совместимости.

Оптимизация разделения первичного ключа:

Раньше разделение CDC Source ограничивалось числовыми столбцами первичного ключа. В этом обновлении представлены две важные функции:

  • Поддержка уникальных индексов в виде разделенных полей.
  • Поддержка разделения по полям строкового типа.

Это означает, что, пока исходная таблица имеет столбец первичного ключа или столбец уникального индекса, а тип столбца является числовым или строковым, для эффективного чтения CDC будет выполняться автоматическое разделение. Кроме того, в новой версии оптимизирован алгоритм разделения по столбцам строкового типа. Благодаря тестированию для таблицы MySQL с 400 миллионами строк и 60 полями время разделения для первичных ключей строкового типа было сокращено с 3 часов до 20 минут. Тот же алгоритм был включен в разделение разделов JDBC Source, что оптимизирует JDBC Source и для операций разделения строкового типа.

Коннектор MongoDB CDC:

В версии 2.3.3 представлен новый соединитель MongoDB CDC, расширяющий возможности синхронизации CDC.

Преобразование обновлений

SQL Transform теперь поддерживает «выбрать *» и «нравится» для нечеткого сопоставления.

Запрос «select *» извлекает все поля из источника и позволяет добавлять после него дополнительные поля, чтобы добиться эффекта добавления пользовательских столбцов в процессе синхронизации. Например, рассмотрим следующий пример:

transform {
  Sql {
    source_table_name = "fake"
    result_table_name = "fake1"
    query = "select *, current_timestamp as sync_timestamp from fake"
  }
}

В результате обработки этого преобразования столбец «sync_timestamp» будет добавлен к первой строке входных данных из источника. Значением этого столбца будет системная временная метка, когда строка данных проходит через преобразование.

Нечеткое сопоставление «похоже» используется для фильтрации данных в рамках преобразования. Рассмотрим пример ниже:

transform {
  Sql {
    source_table_name = "fake"
    result_table_name = "fake1"
    query = "select *, current_timestamp as sync_timestamp from fake where name like '%Demo_'"
  }
}

После обработки с помощью этого преобразования, помимо достижения эффекта добавления столбцов из предыдущего примера, возможна фильтрация данных. Только строки со значениями поля «имя», начинающимися с «Demo_», будут выводиться на последующие узлы обработки (другие узлы преобразования или узлы приемника).

Расширенные базовые возможности

Для сценариев синхронизации нескольких таблиц CDC JDBC Sink теперь предлагает автоматическое создание таблиц. JDBC Sink генерирует операторы DDL на основе таблицы восходящего каталога, упрощая создание таблиц в целевых базах данных.

  • Обратите внимание, что многие базы данных могут использовать соединитель JDBC Sink, но не во всех базах данных реализовано автоматическое создание таблиц. В этом обновлении целевыми базами данных, поддерживающими автоматическое создание таблиц, являются MySQL, Oracle, Postgres и SQLServer. Более того, использование автоматического создания таблиц также требует наличия соединителя источника. В исходном соединителе должен быть реализован каталог. В этом обновлении только CDC Source реализовал Каталог. Таким образом, функция автоматического создания таблиц применима только при синхронизации источника CDC с MySQL/Oracle/Postgres/SQLServer и в режиме синхронизации нескольких таблиц.

Обновления Zeta Engine

  1. Поддержка эволюции схемы.
  2. Rest API включает в себя API отправки заданий, позволяющий отправлять задания через Rest API без установки клиента SeaTunnel.

Например:

network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost
    port:
      auto-increment: true
      port-count: 100
      port: 5801

Для получения более подробной информации см. https://seatunel.apache.org/docs/seatunel-engine/rest-api/#submit-job.

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

Дополнительные улучшения, оптимизации и исправления ошибок

Новая версия включает в себя важные обновления и оптимизации SeaTunnel Connector, Zeta Engine, Transform и CI. Исправлены серьезные ошибки и обновлено около 30 проектных документов, включая подробные руководства по использованию Connector.

Спасибо авторам

Большое спасибо @Liu Li за руководство и помощь в этом выпуске, а также участникам за поддержку!

Идентификаторы участников GitHub

Посетите наш сайт для получения дополнительной информации: https://seaunnel.apache.org

Об Apache SeaTunnel

Apache SeaTunnel — это простая в использовании, сверхвысокопроизводительная платформа интеграции распределенных данных, которая поддерживает синхронизацию огромных объемов данных в реальном времени и может стабильно и эффективно синхронизировать сотни миллиардов данных в день.

Добро пожаловать, заполните эту форму и станьте спикером Apache SeaTunnel: https://forms.gle/vtpQS6ZuxqXMt6DT6 :)

Зачем нам нужен Apache SeaTunnel?

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

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

Сценарии использования Apache SeaTunnel

  • Массивная синхронизация данных
  • Массивная интеграция данных
  • ETL больших объемов данных
  • Массивная агрегация данных
  • Обработка данных из нескольких источников

Функции Apache SeaTunnel

  • Богатые компоненты
  • Высокая масштабируемость
  • Легко использовать
  • Зрелый и стабильный

Как быстро начать работу с Apache SeaTunnel?

Хотите быстро опробовать Apache SeaTunnel? SeaTunnel 2.1.0 позволяет вам приступить к работе за 10 секунд.

https://seatunnel.apache.org/docs/2.1.0/developement/setup

Как я могу внести свой вклад?

Мы приглашаем всех партнеров, которые заинтересованы в том, чтобы сделать местный открытый исходный код глобальным, присоединиться к семье участников Apache SeaTunnel и вместе продвигать открытый исходный код!

Отправить задачу:

https://github.com/apache/seaunnel/issues

Добавьте код в:

https://github.com/apache/seaтуннель/pulls

Подпишитесь на список рассылки по развитию сообщества:

[email protected]

Список рассылки разработчиков:

dev@seaтуннель.apache.org

Присоединяйтесь к Slack:

https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1kcxzyrxz-lKcF3BAyzHEmpcc4OSaCjQ

Следите за Твиттером:

https://twitter.com/ASFSeaTunnel

Присоединяйтесь к нам сейчас!❤️❤️

Источник изображения: Pixabay

Источник изображения: собственная фотография автора.