Compare

Endpointy

MethodEndpoint

POST

compare

Uruchom porównywanie

GET

compare/config

Opcje konfiguracyjne dla tworzonych porównań

GET

compare/status?page=1&size=10&sort=createDate,asc

Sprawdź statusy porównywań. Obsługuje pełny paging

GET

compare/status/{uuid}

Sprawdź status porównywania

GET

compare/result/{uuid}/no_sql?page=1&size=10&sort=createDate,asc

Pobierz wyniki porównywania dla każdej z tabel. Obsługuje pełny paging

GET

compare/result/{uuid}/no_sql?ids=1,2,3

Pobierz wyniki porównywania dla wybrancyh z tabel z instrukcjami SQL

GET

compare/result/{uuid}/with_sql?page=1&size=10&sort=createDate,asc

Pobierz wyniki porównywania dla każdej z tabel z instrukcjami SQL. Obsługuje pełny paging

GET

compare/result/{uuid}/no_sql/{tableCompareId}

Pobierz wyniki porównywania dla wybranej tabeli

GET

compare/result/{uuid}/with_sql/{tableCompareId}

Pobierz wyniki porównywania dla wybranej tabeli z instrukcjami SQL

GET

compare/result/{uuid}/sql/{tableCompareId}/{queryType}?page=1&size=100

Pobierz instrukcje SQL konkretnego typu (UPDATE,DELETE,INSERT). Obsługuje paging bez sort

POST

compare/apply/{uuid}?ids=1,2,3

Zastosuj na bazie docelowej wyniki porównania dla wybranych tabel (kolejność tabel zgodna z tą podaną przy uruchomieniu)

uuid jest zwracane po poprawnym uruchomieniu porównania, które jest uruchamiane asynchronicznie.

Przykłady użycia endpointów można znaleźć w Postmanie (GOLDENORE CDC -> Compare2.0 -> Compare backend)

Przykład i opis body dla POST /compare:

  • maxErrorsCount -> maksymalna ilość błędów per tabela, zanim porównanie zostanie przerwane

  • maxDBConnectionsCount -> maksymalna ilość połączeń do bazy danych (dotyczy źródłowej i docelowej)

  • compareType -> patrz Rodzaje analizy

  • recheckKeys -> flaga sterująca ponownym sprwdzaniem kluczy wykrytych w pierwszej fazie analizy

  • keyRecheckWaitDurationMillis -> czas oczekiwania między zakończeniem pierwszej fazy, a ponownym sprawdzeniem kluczy

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

  • tablesBindings -> lista tabel do porównania z informacją o nazwie schema, tabeli oraz kluczu głównym w tabeli źródłowej i docelowej. Do tego per para tabel można ustawić opcje mapowania typów danych.

    • W polu primaryKeyColumnNames należy podać klucz główny, lub listę kolumn, które gwarantują unikalność, tak żeby nie było dwóch rzędów z taką samą wartością tych kolumn. W trakcie porównywania tabela jest sortowana po tych kolumnach, więc zalecane jest podawanie kolumn z indeksami (w poprawnej kolejności!). W przeciwnym wypadku porównanie będzie trwało bardzo długo i bardziej obciążało bazę.

    • W polu includeColumnNames można podać listę kolumn, których wartości będą porównywane (w podanej kolejności). W polu excludeColumnNames można podać listę kolumn, które będą pomijane przy porównywaniu wartości. Tylko jedna z tych opcji może być podana jednocześnie. Gdy żadna nie jest podana wszystkie kolumny są brane pod uwagę w kolejności alfabetycznej. Podane w nich nazwy dotyczą tylko kolumn poza kluczem głównym, nie wpływają na kolumny podane w primaryKeyColumnNames.

    • w polu dataTypesOptions można ustawić opcje mapowania typów danych. Jeśli pole nie jest podane to wszystkie opcje są ustawione na false. patrz Mapowanie typów danych

{
    "maxErrorsCount": 1000,
    "maxDBConnectionsCount": 1,
    "compareType": "DETAILED",
    "recheckKeys": true,
    "keyRecheckWaitDurationMillis": 1000,
    "sourceDatabaseConfiguration": {
        "databaseType": "POSTGRES",
        "url": "jdbc:postgresql://localhost:5433/go_source",
        "username": "admin",
        "password": "admin"
    },
    "targetDatabaseConfiguration": {
        "databaseType": "POSTGRES",
        "url": "jdbc:postgresql://localhost:5434/go_target",
        "username": "admin",
        "password": "admin"
    },
    "tablesBindings": [
        {
            "sourceTable": {
                "schema": "test_data",
                "tableName": "dog",
                "primaryKeyColumnNames": ["id"]
                //,"includeColumnNames": ["name","color"]
                //,"excludeColumnNames": ["owner_id"]
            },
            "targetTable": {
                "schema": "test_data_rep",
                "tableName": "rep_dog",
                "primaryKeyColumnNames": ["id"]
                //,"includeColumnNames": ["name","color"]
                //,"excludeColumnNames": ["owner_id"]
            },
            "dataTypesOptions": {
                "mapBooleanTypes": true
                "mapPostgresMoneyTypeToDouble": true,
                "treatOracleDateAsTimestamp": true
            }
        },
        {
            "sourceTable": {
                "schema": "test_data",
                "tableName": "cat",
                "primaryKeyColumnNames": ["name", "color"]
            },
            "targetTable": {
                "schema": "test_data_rep",
                "tableName": "rep_cat",
                "primaryKeyColumnNames": ["name", "color"]
            }
        }
    ]
}

Last updated