Search docs.molo17.com

    SAP SQL Anywhere Agent for Gluesync: Features Overview

    SAP SQL Anywhere logo

    Core principles

    This agent connects to SAP SQL Anywhere through the SAP JDBC driver (sajdbc4) and, as a source, reads changes with the dbtran log translation utility of the SQL Anywhere client.

    SAP does not allow Gluesync to redistribute the SQL Anywhere client, so neither the driver nor dbtran ships with Gluesync. You install the SQL Anywhere 17 client on the machine that runs Core Hub, or mount it into the Core Hub container at /opt/sqlanywhere17. See The SAP SQL Anywhere client for what to install and how to mount it.

    Change data capture

    The source agent reads committed transactions from the transaction log of the database. It creates no triggers, no shadow tables and no objects of its own in your database, so the tables keep their own triggers and the write path of your application is untouched.

    Core Hub runs dbtran against the database, parses what it writes and delivers each committed transaction, in commit order, to the target. Changes made by triggers are captured, transactions that roll back are not delivered, and an update that the log records only in part is completed to the full row by key before it is sent.

    Supported version

    Gluesync works on SAP SQL Anywhere 17. The integration tests run against SQL Anywhere 17.0.11 with the SQL Anywhere 17 client.

    Requirements

    • Core Hub on Linux x86_64: SAP ships the SQL Anywhere client for Linux x86_64 only. On any other operating system or architecture the agent stops during its setup with a message that says so;

    • The SAP SQL Anywhere 17 client, available to Core Hub at /opt/sqlanywhere17, in the folder named by the SQLANY17 environment variable, or in the folder set in the agent as SQL Anywhere client folder;

    • For a source, a database user with the BACKUP DATABASE system privilege and SELECT on the tracked tables.

    Platform supported features

    Feature Support Notes

    Target role

    ✅

    Writes to SAP SQL Anywhere through the SAP JDBC driver, with pooling and an optional bulk path.

    Source role

    ✅

    Captures changes from the transaction log with dbtran.

    Snapshots

    ✅

    Snapshot jobs seed the target tables before CDC resumes. A table with a primary key is read in key order.

    CDC

    ✅

    Committed INSERT, UPDATE and DELETE operations, including the ones that triggers make.

    CDC type

    Transaction log

    The log is translated with dbtran on every poll that finds a new commit. No triggers or tables are created in the database.

    User defined data types

    ✅

    A column of a user-defined domain is read and written as its base type.

    Bulk load

    ✅

    Rows are loaded in text batches read by OPENSTRING, for snapshots and for CDC, in the transaction of the write. See Bulk operations.

    Database pooling

    ✅

    Supports connection pooling for efficient resource utilization across multiple pipelines.

    Source persisted internal cache

    ✅

    The changes read from the log are kept in a persisted cache of Core Hub until each entity has consumed them.

    Target persisted internal cache

    N/A

    Writes go straight to SQL Anywhere.

    Driver / connector

    SAP JDBC driver (sajdbc4), dbtran

    Provided by the SQL Anywhere 17 client that you install; not shipped with Gluesync.

    Chains

    N/A

    Not supported.

    Truncate operation support (reading)

    ❌

    TRUNCATE TABLE is not replicated; the agent warns that the table must be snapshotted again.

    Truncate operation support (writing)

    ✅

    Honors the Core Hub “TRUNCATE before snapshot” option when enabled.

    Q&A

    I have got Sybase ASE, is it supported? Sybase ASE has its own agents. See Sybase ASE.

    Are SQL Anywhere 16 or 12 supported? The agent is built and tested for SQL Anywhere 17: it loads the version 17 libraries of the client (libdbjdbc17) and looks for the client in SQLANY17.

    Does the agent change my database? As a source, no: it only reads the catalog, the tables and the transaction log. As a target it creates the target tables when they do not exist, as it does for any SQL target.