Механизм отказоустойчивости MatrixGate

В этом документе описывается механизм отказоустойчивости MatrixGate.

Поскольку MatrixGate внутренне использует механизм внешних таблиц, микропакеты вставляют данные в целевую таблицу. Следовательно, любые данные при попадании в базу данных записываются пакетом вместе с другими отправленными данными. Если формат хотя бы одних данных окажется некорректным, весь пакет данных не будет сохранён.

Начиная с версии 4.3, в MatrixGate добавлен механизм отказоустойчивости. Одиночная ошибка формата данных не повлияет на ввод остальных данных, а информация об ошибочных данных будет возвращена и зафиксирована в журнале ошибок.

Примечание!
Отказоустойчивость работает только при ошибках формата. Если нарушены правила ограничений (например, уникальный индекс), запись всего пакета всё равно завершится неудачей.

1 Сообщение об ошибке

В отличие от предыдущего поведения, когда при ошибках в данных сразу возвращался HTTP-код 500, после включения отказоустойчивости возвращается HTTP-код 200. В теле ответа содержится информация об ошибках в строках, например:

At line: 2
missing data for column "c3"

2 Контроль порога

Конечно, количество допускаемых ошибок не является бесконечным. Порог отказоустойчивости связан с параметром GUC: gp_initial_bad_row_limit. Если количество строк с ошибками превысит значение 5 * gp_initial_bad_row_limit, запись пакета завершится неудачей.

Более подробную информацию об использовании см. в разделе MatrixGate.