DSEDataSourceExplorer
DSE 1.0.1

Генерация deployable и универсальные destination writer

Generate deployables создаёт переносимый runner из каталога и/или сохранённых Output Target. Runner может сохранять CSV/Excel и направлять несколько логических targets в одно физическое назначение.

DSE теперь использует Universal Destination Writer Framework. Для каждого текущего Output Target preset имеется исполняемый путь записи. Выбирается подходящий механизм: Native, ODBC, REST/OData, object-store SDK, File или Gateway.

Runtime writer означает, что сгенерированный runner умеет выполнить маршрут. Внешние требования всё равно могут быть обязательны: vendor ODBC driver, API token/credentials, cloud permissions или утверждённый gateway для VSAM/IMS/CICS.

Рекомендуемый процесс

  1. Выполните discovery и проверьте каталог.
  2. Создайте/проверьте mappings в Compose targets.
  3. Откройте Generate deployables, добавьте сохранённые targets.
  4. Настройте физическое назначение до включения записи.
  5. Проверьте writer technology, имена объектов и write mode.
  6. Включайте Route selected targets to one destination только когда нужно активировать физическую запись.
  7. Проверьте соединение, выберите платформу/RID и сгенерируйте пакет.
  8. Запустите, откройте View results и сверьте данные назначения.

Логические targets и физическое назначение

Output Target — это логический контракт данных. Его технология не обязана совпадать с физическим назначением.

Примеры:

MongoDB + Couchbase + InfluxDB -> PostgreSQL

Oracle + MongoDB + DynamoDB -> Redis

DSE сохраняет provenance и mappings для каждой строки маршрута и не смешивает данные разных logical targets вслепую.

Сначала настройка, затем активация

Preset, write mode, имена и типы destination objects редактируются даже при выключенном routing. Флажок управляет внешним выполнением, а не редактором.

Writer technologies

Technology Типичные назначения Требование
Native SQL/Azure SQL/Synapse, PostgreSQL, MySQL/MariaDB, Oracle, SQLite, MongoDB, DynamoDB, Cassandra, Redis, Neo4j Packaged provider + credentials/network
ODBC Db2, Informix, Teradata, HANA, Snowflake, Redshift, BigQuery, Spanner, Databricks, Hive, Trino, SAS Viya, Access/dBase, IBM i/zOS и др. Vendor ODBC driver + Driver=/DSN=
REST/OData CosmosDB, Couchbase/CouchDB, Elasticsearch/OpenSearch, ArangoDB, InfluxDB, Salesforce, Dynamics, SharePoint, ServiceNow, Workday, SAP OData Endpoint + auth
Object store S3, Azure Blob, ADLS Gen2, GCS Cloud credentials
File File System, SMB, NFS, Excel Writable path
Gateway VSAM, IMS, CICS, Generic Approved HTTP gateway или ODBC

Destination object routing

Поле Destination object редактируется напрямую. Имя должно быть непустым, уникальным и допустимым. Тип объекта ограничивается возможностями writer: Table, Collection, Hash, Index, Label, Measurement, Bucket и т.д.

Append и Replace

Для Salesforce, Dynamics 365 CRM, SharePoint, ServiceNow, Workday и SAP OData прямой API writer поддерживает только Append. Полный destructive Replace должен выполняться через утверждённый gateway с явной бизнес-политикой.

Соединение

Для production предпочтительно использовать:

DSX_DESTINATION_CONNECTION_STRING

ODBC требует явный Driver= или DSN= и установленный driver на машине runner.

REST/OData обычно использует Url=/Endpoint=, Token/AccessToken, Username/Password или ApiKey.

VSAM/IMS/CICS/Generic — Endpoint=https://... gateway либо разрешённый ODBC path.

Каноническая модель

Runner сначала преобразует исходные строки/документы в нейтральный DSE record с устойчивым id, provenance и mapped fields. Затем выбранный destination adapter переводит его в физический формат назначения.

AI Advisor

На вкладке Назначения выберите одну рекомендацию ИИ с помощью переключателя. Использовать выбранное назначение в Deployables передает этот выбор в следующую сессию Generate Deployables. Создать черновики целей теперь создает или обновляет только выбранное назначение, не накапливая дубликаты AI Draft.

AI Advisor может рекомендовать и передать маршрут, но не выполняет скрытую внешнюю запись. Пользователь проверяет technology, objects, write mode, connection и generated package до запуска.

Поскольку у всех текущих presets есть writer path, рекомендация AI может сохранить исходную технологию назначения при наличии нужных runtime prerequisites.

Troubleshooting

Production

Начинайте с малого row limit, используйте Append на этапе проверки, держите secrets вне package, применяйте least privilege, выделяйте отдельные objects/prefixes и сохраняйте audit artifacts до cutover.

Корпоративная надёжность, lineage и безопасный перезапуск

Generated deployables теперь могут включать слой надёжности поверх CSV/Excel и physical routing.

Каждый запуск получает Run ID и может создавать в output/audit/<run-id>/:

Lineage artifacts не содержат connection strings или credentials.

Lease и heartbeat

Включить lease запуска и heartbeat создаёт schema-scoped lease и heartbeat в state directory. Два runner с одинаковыми schema и DSX_STATE_DIR не выполняются одновременно. Для active/passive orchestration используйте общий durable state directory.

Overrides: DSX_RUN_ID/--run-id, DSX_STATE_DIR/--state-dir, --lease-timeout-seconds, --heartbeat-seconds.

Retry и checkpoints

Transient source read errors используют ограниченный exponential backoff. Destination write повторяется только если writer сообщает transactional или Upsert semantics, позволяющие безопасный replay.

Resume checkpoints сохраняют завершённые destination selections. После failure новый процесс может не повторять уже завершённые destination writes и при этом пересоздать CSV/Excel. Для Replace resume отключён.

Отличие от CDC

Checkpoint recovery повышает надёжность, но не является log-based Change Data Capture (CDC). Текущий source read mode остаётся Snapshot. Production CDC требует source-specific adapters и durable cursors: SQL Server CDC LSN, PostgreSQL WAL/logical replication, MongoDB resume token, Cosmos Change Feed continuation, DynamoDB stream shard positions и т.д.

См. Docs/Enterprise-Reliability-CDC-Governance-HA-Plan.md.

<!-- DSE_DEPLOYABLE_CERTIFICATION_HELP_V1 -->

20. Сертифицированный запуск созданных Windows- и Linux-пакетов

Используйте этот раздел после завершения Generate deployables. Здесь описана сертификация/запуск созданных пакетов win-x64 и нативного linux-x64. Это сгенерированные интеграционные раннеры, а не коммерческие установочные SKU DSE Windows/Container.

20.1 Windows-пакет (windows/win-x64)

Скопируйте созданную папку Windows на сертификационную машину (или распакуйте переданный архив) и работайте из каталога windows\win-x64.

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

Запустите локальный Runtime Manager:

cd /d C:\Path\To\deployables\windows\win-x64
manager.cmd

manager.cmd запускает DataSourceExplorer.Runner.exe --manager. Менеджер слушает только 127.0.0.1 и обычно автоматически открывает браузер. Если браузер не открылся, запустите исполняемый файл напрямую и используйте Local management URL, показанный в консоли.

DataSourceExplorer.Runner.exe --manager
  1. Убедитесь, что Runtime status показывает READY и активного выполнения нет.
  2. В Connections убедитесь, что все нужные источники и назначения имеют состояние Configured. Оставьте защищённые поля пустыми, чтобы сохранить сохранённое/встроенное значение.
  3. Для первого сертификационного запуска выберите Manual only и задайте каталог вывода output.
  4. Нажмите Run now и дождитесь возврата состояния READY.
  5. Убедитесь, что Last result и Run history показывают Success, затем независимо проверьте ожидаемые выходные файлы/данные назначения.

Для одноразового запуска без интерфейса:

run.cmd

Генератор сначала пытается создать автономную публикацию. Если пришлось перейти на framework-dependent вариант, установите на целевой машине соответствующие .NET 8 и ASP.NET Core 8 Runtime.

20.2 Linux-пакет (linux/linux-x64) — проверенный сценарий Ubuntu Hyper-V

Следующая процедура основана на предоставленном проверенном руководстве Ubuntu Server 26.04.1 LTS / Microsoft Hyper-V. Она запускает нативный Linux-пакет; Docker не требуется.

Предпочтительный безопасный доступ из браузера Windows

Вместо публикации менеджера в сети VM создайте локальный SSH-туннель из Windows PowerShell после определения порта менеджера в Linux-журнале:

ssh -L 18093:127.0.0.1:<manager-port> <linux-user>@<VM-IP>

Затем откройте http://127.0.0.1:18093/ в Windows. Не закрывайте SSH-сеанс, пока работаете с менеджером. Описанный ниже socat остаётся вариантом для изолированной/доверенной сертификационной сети.

Назначение

Эта процедура создает легкую виртуальную машину Ubuntu Server и запускает нативный Linux-пакет, созданный DSE. Процесс соответствует Windows-сценарию: скопировать созданный пакет, запустить DSE Deployable Runtime Manager, открыть менеджер с Windows-хоста, выполнить пакет и проверить результат.

Описанный пакет является нативным linux-x64 развертываемым пакетом. Docker для этого сценария не требуется.

Требования

Windows → Hyper-V → Ubuntu → DSE Runtime Manager → Browser

1. Создание виртуальной машины Hyper-V

Создайте VM поколения 2 со следующими базовыми параметрами:

Имя VM DSE-Linux-Test
Поколение Generation 2
Память Рекомендуется фиксированные 4096 МБ
Процессоры 4 виртуальных процессора
Диск Динамически расширяемый VHDX 40 ГБ
Сеть Hyper-V Default Switch
Secure Boot Включен - Microsoft UEFI Certificate Authority
ОС Ubuntu Server LTS (26.04.1 использована при проверке)

Во время установки Ubuntu выберите Install OpenSSH server. После установки извлеките ISO и загрузитесь с виртуального диска.

2. Подготовка Ubuntu

Войдите в Ubuntu и обновите систему. Затем проверьте CPU, память, диск и IP-адрес.

sudo apt update
sudo apt upgrade -y
hostname -I
nproc
free -h
df -h

Если VHDX имеет 40 ГБ, но корневой том занимает только 18-19 ГБ, расширьте корневой LVM-том на все свободное место.

sudo vgs
sudo lvextend -l +100%FREE -r /dev/ubuntu-vg/ubuntu-lv
df -h

3. Подключение из Windows по SSH

Используйте текущий IP VM, показанный hostname -I. Адрес Hyper-V Default Switch может измениться после перезагрузки.

ssh <linux-user>@<VM-IP>

4. Копирование папки Linux

Запускайте ssh/scp из Windows PowerShell, а не из оболочки Ubuntu. DSE создает папку linux, а не файл linux.zip. Замените путь, имя пользователя и IP на фактические значения.

ssh <linux-user>@<VM-IP> "rm -rf /home/<linux-user>/dse-deploy/linux && mkdir -p /home/<linux-user>/dse-deploy"
scp -r "C:\Path\To\GeneratedDeployables\...\linux" <linux-user>@<VM-IP>:/home/<linux-user>/dse-deploy/

Если появляется «Could not resolve hostname c:», команда scp была запущена в Ubuntu. Вернитесь в Windows PowerShell и выполните ее там.

5. Подготовка пакета

Установите socat, если используется relay, перейдите в скопированную папку linux-x64 и выдайте права на выполнение. Текущая версия DSE создает shell-скрипты в UTF-8 без BOM, поэтому распаковка и удаление BOM не требуются.

sudo apt update && sudo apt install -y socat
cd ~/dse-deploy/linux/linux-x64
chmod +x DataSourceExplorer.Runner manager.sh run.sh
ls -l DataSourceExplorer.Runner manager.sh run.sh

6. Проверка соединения с источником/назначением

Перед запуском DSE убедитесь, что Ubuntu VM достигает нужного хоста и порта. В примере используется MongoDB на порту 27017.

timeout 5 bash -c '</dev/tcp/<source-host>/<source-port>' \
  && echo 'Port reachable' \
  || echo 'Port NOT reachable'

# MongoDB example
timeout 5 bash -c '</dev/tcp/192.168.50.124/27017' \
  && echo 'MongoDB port reachable' \
  || echo 'MongoDB port NOT reachable'

7. Запуск DSE Deployable Runtime Manager

Запустите менеджер и просмотрите его журнал. Менеджер привязывается к 127.0.0.1 и выбирает локальный порт.

cd ~/dse-deploy/linux/linux-x64
./manager.sh
sleep 2
cat .dse-manager/manager-console.log
curl http://127.0.0.1:<manager-port>/ | head

В успешном журнале есть строка вида: Local management URL: http://127.0.0.1:51827. Порт может измениться после перезапуска.

8. Доступ к менеджеру из браузера Windows

Используйте socat в Ubuntu, чтобы перенаправить стабильный порт VM (18093) на текущий loopback-порт менеджера. Команды автоматически определяют IP VM и порт менеджера.

cd ~/dse-deploy/linux/linux-x64
VM_IP=$(hostname -I | awk '{print $1}')
MANAGER_PORT=$(grep -oE '127\.0\.0\.1:[0-9]+' .dse-manager/manager-console.log | tail -1 | cut -d: -f2)
nohup socat TCP-LISTEN:18093,bind="$VM_IP",reuseaddr,fork TCP:127.0.0.1:"$MANAGER_PORT" > ~/dse-relay.log 2>&1 &
echo "Open: http://$VM_IP:18093/"
ss -ltnp | grep 18093

Используйте перенаправление только в доверенной тестовой сети. Пока socat работает, менеджер доступен через сетевой интерфейс VM.

9. Запуск пакета из интерфейса

  1. Откройте в Edge или Chrome URL, выведенный командой перенаправления.
  2. Убедитесь, что Runtime status показывает READY и активного запуска нет.
  3. В Connections убедитесь, что источник и назначение показывают Configured. Оставьте защищенные поля пустыми, чтобы сохранить встроенные значения.
  4. Для первого теста задайте Scheduler configuration = Manual only, Output directory = output и сохраните настройки.
  5. Нажмите Run now и дождитесь возврата статуса READY.
  6. Убедитесь, что Last result и Run history показывают Success, затем проверьте выходные файлы и данные назначения.

10. Остановка, перезапуск и очистка

IP VM и порт менеджера могут измениться после перезагрузки. Снова запустите manager.sh, прочитайте новый порт и перезапустите socat. Для остановки перенаправления:

pkill -f 'socat TCP-LISTEN:18093' || true

Контрольный список

Устранение неполадок

Issue / Symptom Action
scp: Could not resolve hostname c: Запускайте scp из Windows PowerShell, а не из Ubuntu.
Permission denied / скрипт не запускается Выполните chmod +x DataSourceExplorer.Runner manager.sh run.sh.
curl -I возвращает 405 Method Not Allowed Это нормально, если поддерживается GET, но не HEAD. Используйте curl http://127.0.0.1:<port>/.
Браузер не открывает URL 127.0.0.1 Используйте socat и откройте http://<VM-IP>:18093/ из Windows.
После перезагрузки страница не работает Снова запустите manager.sh и перенаправление; IP и порт могли измениться.
Не проходит тест источника Проверьте маршрутизацию/брандмауэр и доступность хоста/порта из Ubuntu.

Для интеграции в справку используйте локализованную HTML-страницу из этого пакета. Команды не переводятся; переводится только пояснительный текст и инструкции по интерфейсу.