Column binding

Serwis pozwala walidować przed rozpoczęciem porównania, czy tabele można do siebie porównać. Służy do tego endpoint: POST /compare/bind

Przykład i opis body dla POST /compare/bind:

  • source/targetDatabaseConnectionInfo-> informacje o źródłowej i docelowej bazie danych, opcje databaseType: POSTGRES, ORACLE, SQLSERVER

  • source/targetTables-> lista tabel do sprawdzenia z bazy źródłowej i docelowej z informacją o nazwie schema, tabeli, kluczu głównym oraz porównywanych kolumnach poza kluczem w tabeli źródłowej i docelowej. serwis pobiera informację z bazy danych o kluczu głównym i indeksach. serwis pobiera pełną listę kolumn i sortuje ją alfanumerycznie.

{
    "sourceDatabaseConnectionInfo": {
        "databaseType": "POSTGRES",
        "url": "jdbc:postgresql://localhost:5432/postgres",
        "username": "postgres",
        "password": "postgres"
    },
    "targetDatabaseConnectionInfo": {
        "databaseType": "ORACLE",
        "url": "jdbc:oracle:thin:@localhost:1521:ORCLCDB",
        "username": "system",
        "password": "Oracle_123"
    },
    "sourceTables": [
        {
            "schema": "test_data",
            "name": "cat"
        },
        {
            "schema": "test_data",
            "name": "cat2"
        },
    ],
    "targetTables": [
        {
            "schema": "SYSTEM",
            "name": "CAT"
        },
        {
            "schema": "SYSTEM",
            "name": "CAT2"
        },
    ]
}

Przykład i opis response dla POST /compare/bind:

result -> określa, czy w trakcie walidacji wystąpił jakiś ogólny błąd

message -> w przypadku błędu określa jego powód

boundTablesList -> lista wyników walidacji. Dla każdej tabeli z pary zwracane jest:

  • lista informacji o indeksach - dla każdego indeksu nazwa, czy jest unikalny oraz lista indeksów kolumn w indeksie (indeksy odnoszą się do listy wszystkich kolumn)

  • informacja o kluczu głównym - nazwa, oraz lista indeksów kolumn w kluczu (indeksy odnoszą się do listy wszystkich kolumn)

  • lista kolumn wraz z ich typami, posortowane po nazwach kolumn

  • nazwa schematu i tabeli

  • szacowany rozmiar tabeli w bajtach

W polu result zwracana jest informacja o walidacji dopasowania klucza głównego (primaryKey) i pozostałych kolumn (columns).

  • SUCCESS - dopasowanie się udało

  • WARNING - dopasowanie jest możliwe, ale wymaga ustawienia odpowiednich flag. Lista warnings może zawierać następujące wartości:

    • BOOLEAN_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę mapBooleanTypes na true

    • POSTGRES_MONEY_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę mapPostgresMoneyTypeToDouble na true

    • ORACLE_DATE_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę treatOracleDateAsTimestamp na true

  • ERROR - dopasowanie niemożliwe, opis błędu w polu message

{
    "boundTablesList": [
        {
            "sourceTable": {
                "schema": "test_data",
                "name": "cat",
                "columns": {
                    "names": [
                        "color",
                        "id",
                        "name",
                        "owner_id"
                    ],
                    "types": [
                        "STRING",
                        "BIGINT",
                        "STRING",
                        "BIGINT"
                    ]
                },
                "primaryKey": {
                    "columns": [
                        1
                    ],
                    "name": "cat_pkey",
                    "unique": true
                },
                "indexes": [{
                    "columns": [
                        1,3
                    ],
                    "name": "cat_idx_name_color",
                    "unique": false
                },],
                "size": 90112
            },
            "targetTable": {
                "schema": "SYSTEM",
                "name": "CAT",
                "columns": {
                    "names": [
                        "COLOR",
                        "ID",
                        "NAME",
                        "OWNER_ID"
                    ],
                    "types": [
                        "STRING",
                        "BIGINT",
                        "STRING",
                        "BIGINT"
                    ]
                },
                "primaryKey": {
                    "columns": [
                        1
                    ],
                    "name": "SYS_C008315",
                    "unique": true
                },
                "indexes": [],
                "size": 0
            },
            "result": {
                "primaryKey": {
                    "result": "SUCCESS",
                    "warnings": null,
                    "message": null
                },
                "columns": {
                    "result": "SUCCESS",
                    "warnings": null,
                    "message": null
                }
            }
        },
        {
            "sourceTable": {
                "schema": "test_data",
                "name": "cat2",
                "columns": {
                    "names": [
                        "color",
                        "name",
                        "owner_id"
                    ],
                    "types": [
                        "STRING",
                        "STRING",
                        "BIGINT"
                    ]
                },
                "primaryKey": {
                    "columns": [
                        1,
                        0
                    ],
                    "name": "cat2_pkey",
                    "unique": true
                },
                "indexes": [],
                "size": 65536
            },
            "targetTable": {
                "schema": "SYSTEM",
                "name": "CAT2",
                "columns": {
                    "names": [
                        "COLOR",
                        "NAME",
                        "OWNER_ID"
                    ],
                    "types": [
                        "STRING",
                        "STRING",
                        "BIGINT"
                    ]
                },
                "primaryKey": {
                    "columns": [
                        1,
                        0
                    ],
                    "name": "SYS_C008319",
                    "unique": true
                },
                "indexes": [],
                "size": 0
            },
            "result": {
                "primaryKey": {
                    "result": "SUCCESS",
                    "warnings": null,
                    "message": null
                },
                "columns": {
                    "result": "SUCCESS",
                    "warnings": null,
                    "message": null
                }
            }
        }
    ],
    "result": "SUCCESS",
    "message": null
}

Last updated