Генерация 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.
Рекомендуемый процесс
- Выполните discovery и проверьте каталог.
- Создайте/проверьте mappings в Compose targets.
- Откройте Generate deployables, добавьте сохранённые targets.
- Настройте физическое назначение до включения записи.
- Проверьте writer technology, имена объектов и write mode.
- Включайте Route selected targets to one destination только когда нужно активировать физическую запись.
- Проверьте соединение, выберите платформу/RID и сгенерируйте пакет.
- Запустите, откройте 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
- 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
- Preset не меняется: используйте build с dropdown fix; выключенный routing не должен блокировать editor.
- ODBC требует Driver/DSN: установите vendor driver на deployable host.
- REST 401/403: проверьте endpoint, token, tenant/site и write permissions.
- SaaS не предлагает Replace: это намеренная защита.
- VSAM/IMS/CICS требует gateway: настройте site bridge или ODBC.
- Нужен connection string: задайте
DSX_DESTINATION_CONNECTION_STRING.
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.jsonl— структурированные события с источником, полями, destination route, mapped objects, row counts, writer technology, write mode, статусом и fingerprint mapping;run-summary.json: отдельная стабильная копия итогов каждого запуска в каталоге аудита, чтобы последующие запуски не перезаписывали историю;run-manifest.json— governance summary с counts, retry, resume и SHA-256 hashes;integrity.sha256— hashes для summary, lineage, manifest и generated files.
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.
Перед первым запуском убедитесь, что присутствуют следующие созданные файлы:
DataSourceExplorer.Runner.exemanager.cmdrun.cmdschema-catalog.jsonsource-connections.jsondestination-route.json— если включена маршрутизация в назначение
Запустите локальный 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
- Убедитесь, что Runtime status показывает READY и активного выполнения нет.
- В Connections убедитесь, что все нужные источники и назначения имеют состояние Configured. Оставьте защищённые поля пустыми, чтобы сохранить сохранённое/встроенное значение.
- Для первого сертификационного запуска выберите Manual only и задайте каталог вывода
output. - Нажмите Run now и дождитесь возврата состояния READY.
- Убедитесь, что 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
- ISO Ubuntu Server LTS
- Папка
linux, созданная DSE и содержащаяlinux/linux-x64 - Не менее 4 vCPU, 4 ГБ ОЗУ и виртуальный диск 40 ГБ
- Сетевой доступ из VM к необходимым источникам/назначениям DSE
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. Запуск пакета из интерфейса
- Откройте в Edge или Chrome URL, выведенный командой перенаправления.
- Убедитесь, что Runtime status показывает READY и активного запуска нет.
- В Connections убедитесь, что источник и назначение показывают Configured. Оставьте защищенные поля пустыми, чтобы сохранить встроенные значения.
- Для первого теста задайте Scheduler configuration = Manual only, Output directory = output и сохраните настройки.
- Нажмите Run now и дождитесь возврата статуса READY.
- Убедитесь, что Last result и Run history показывают Success, затем проверьте выходные файлы и данные назначения.
10. Остановка, перезапуск и очистка
IP VM и порт менеджера могут измениться после перезагрузки. Снова запустите manager.sh, прочитайте новый порт и перезапустите socat. Для остановки перенаправления:
pkill -f 'socat TCP-LISTEN:18093' || true
Контрольный список
- Ubuntu загружается с VHDX и SSH работает
- На корневой файловой системе достаточно свободного места
- Нужный порт источника/назначения доступен из Ubuntu
- DataSourceExplorer.Runner, manager.sh и run.sh исполняемые
- manager-console.log содержит локальный URL менеджера
- Браузер Windows открывает http://<VM-IP>:18093/
- После Run now статус возвращается в READY
- Run history показывает Success и ожидаемые результаты присутствуют
Устранение неполадок
| 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-страницу из этого пакета. Команды не переводятся; переводится только пояснительный текст и инструкции по интерфейсу.