8. Приложение 3 Описание топиков
8.1. blob.err
blob.err - Топик c ошибками получения бинарных данных по ссылке.
Структура сообщения
datamartBlobErrorResponseMessage:
description: Ошибка получения бинарных данных по ссылке
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobErrorResponse:0.1
payload:
$ref: '#/components/schemas/datamartBlobErrorResponse'
examples:
- name: blobError
summary: Пример ошибки получения бинарных данных по ссылке
headers:
AGENT_CONSUMER_ID: agent-fias
MESSAGE_TYPE: DatamartBlobErrorResponse:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
queryRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
errorCode: DATAMART-001
errorMessage: Непредвиденная ошибка обработки
Avro-схема сообщения
datamartBlobErrorResponse:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobError
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки
type: string
- name: errorMessage
description: Сообщение с ошибкой
type: string
8.2. blob.rq
blob.rq - Топик запросов на получение бинарных данных по полученной ранее ссылке.
Структура сообщения
datamartBlobRequestMessage:
description: Запрос бинарных данных по ссылке
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobRequest:0.1
payload:
$ref: '#/components/schemas/datamartBlobRequest'
examples:
- name: getBlobDataRequest
summary: Запрос бинарных данных по ссылке
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
AGENT_CONSUMER_ID: agent-fias
MESSAGE_TYPE: DatamartBlobRequest:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
queryRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
reference:
subRequestId: 4cbb11d6-47de-4928-953f-47dfa6c6b310
path: reference
Avro-схема сообщения
datamartBlobRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobRequest
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: reference
description: Ссылка на данные
type:
type: record
name: BinaryReference
namespace: query.result
fields:
- name: subRequestId
description: Идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: path
description: Ссылка
type: string
8.3. blob.rs
blob.rs - Топик с бинарными данным блобов
Структура сообщения
datamartBlobChunkMessage:
description: Чанки бинарных данных
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/datamartBlobChunkInfo'
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobChunkInfo:0.1
payload:
description: Бинарные данные
examples:
- name: base64
headers:
MESSAGE_TYPE: DatamartBlobChunkInfo:0.1
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема сообщения
datamartBlobChunkInfo:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobChunk
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: chunkNum
description: Номер чанка
type: int
minimum: 1
- name: isLast
description: Признак последнего чанка
type: boolean
examples:
- requestId: 3546e40b-47fe-41b6-9c06-a2e915eb4181
queryRequestId: a8e9f47b-38cd-4db6-a245-0fbd6e78c195
chunkNum: 1
isLast: true
8.4. cancel.err
cancel.err - Топик с ошибками по отмене запроса
Структура сообщения
datamartCancelQueryErrorMessage:
description: Ответ об успешной отмене запроса
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/datamartCancelQueryError'
examples:
- name: success
summary: Пример запроса на отмену
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
errorCode: DATAMART-001
message: Непредвиденная ошибка
Avro-схема сообщения
datamartCancelQueryError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartCancelQueryError
namespace: datamart.query.cancel
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки выполнения
type: string
- name: message
description: Сообщение об ошибке
type: string
8.5. cancel.rq
cancel.rq - Топик с сообщениями об отмене исполнения запроса
Структура сообщения
datamartQueryCancellationRequestMessage:
description: Запрос на отмену исполнения
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/datamartQueryCancellationRequest'
examples:
- name: request
summary: Пример запроса на отмену
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
Avro-схема сообщения
datamartQueryCancellationRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: AgentQueryCancellationRequest
namespace: ru.rtlabs.common.query.cancel
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
8.6. cancel.rs
cancel.rs - Топик с ответами на отмену запроса
Структура сообщения
datamartCancelQuerySuccessMessage:
description: Ответ об успешной отмене запроса
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/datamartCancelQuerySuccess'
examples:
- name: success
summary: Пример запроса на отмену
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
isSuccess: true
Avro-схема сообщения
datamartCancelQuerySuccess:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartCancelQuerySuccess
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: isSuccess
description: Признак успешного выполнения операции
type: boolean
8.7. delta.err
delta.err - Топик c ошибками получения дельт у поставщика.
Структура сообщения
deltaErrorMessage:
description: Ответ с ошибкой получения дельты у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/deltaError'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
errorCode: DATAMART-001
message: Непредвиденная ошибка
Avro-схема сообщения
deltaError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaError
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки выполнения
type: string
- name: message
description: Сообщение об ошибке
type: string
8.8. delta.in.err
delta.in.err - Ответ с ошибкой применения дельты. Один ответ на дельту с множеством чанков.
Структура сообщения
deltaApplyErrorMessage:
description: Ответ с ошибкой применения дельты у потребителя
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/deltaApplyError'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
synId: 1
errorCode: DATAMART-001
message: Непредвиденная ошибка применения дельты
Avro-схема сообщения
deltaApplyError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaApplyError
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: synId
description: \use in replicator version 1.1\Номер дельты, на которой возникла ошибка
default: null
type:
- 'null'
- int
- name: errorCode
description: Код ошибки выполнения
type: string
- name: message
description: Сообщение об ошибке
type: string
8.9. delta.in.rq
delta.in - Топик чанков дельт репликации на применение у поставщика.
Структура сообщения
deltaResultChunkMessage:
description: Чанк с данными дельты репликации
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/deltaResultChunkKey'
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
description: Бинарные данные чанка
examples:
- name: base64
headers:
AGENT_CONSUMER_ID: agent_fias
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема сообщения
deltaResultChunkKey:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaResultChunk
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор распределенного
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: sourceDatamart
description: Наименование датамарта источника
default: null
type:
- 'null'
- string
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: synId
description: Идентификатор синхронизации витрины
type: int
- name: sql
description:sql, для которого возвращается дельта
default: null
type:
- 'null'
- string
- name: minSynId
description: Номер первой передаваемой в этом пакете дельты
default: null
type:
- 'null'
- int
- name: maxSynId
description: Номер последней передаваемой в этом пакете дельты
default: null
type:
- 'null'
- int
- name: synTime
description:Время дельты
default: 0
type: long
- name: streamNumber
description: Номер стрима данных
type:
- int
- 'null'
- name: streamTotal
description: Общее количество стримов
default: 1
type:
- int
- 'null'
- name: chunkNumber
description: Номер порции по порядку
type: int
- name: isLastChunk
description: Признак последнего сообщения
type: boolean
- name: replicaHash
description: Чек-сумма реплики после применения дельты с данным
default: null
type:
- 'null'
- string
examples:
- requestId: 00000000-0000-0000-0000-000000000000
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: 00000000-0000-0000-0000-000000000000
sourceDatamart:
string: dm
sql:
string: 'select * from v1_addrobj'
minSynId:
int: 10
maxSynId:
int: 10
synTime: 1000
streamNumber:
int: 1
streamTotal:
int: 1
chunkNumber: 1
isLastChunk: true
replicaHash:
string: '123456789'
8.10. delta.in.rs
delta.in.rs - Топик c ответами с подтверждением применения дельты у потребителя.
Структура сообщения
deltaApplyResultMessage:
description: Ответ с подтверждением применения дельты
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/deltaApplyResult'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
synId: 100
Avro-схема сообщения
deltaApplyResult:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaApplyResult
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор распределенного запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: synId
description: Id дельты витрины-потребителя
type: int
8.11. delta.notification
delta.notification - Топик нотификаций ядра о наличии новых дельт.
Структура сообщения
deltaNotificationMessage:
description: Ответ с ошибкой получения дельты
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/deltaNotification'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
datamartMnemonic:
string: dm
synId:
int: 1
subscriptions:
- subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
fromId: 100
deltaKeySize: 1024
snapshotKeySize: 1024
Avro-схема сообщения
deltaNotification:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaNotificationEvent
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: datamartMnemonic
description: Мнемоника витрины-источника, в которой обновились данные
default: null
type:
- 'null'
- string
- name: synId
description: ДЛЯ РАСПРЕДПОДПИСОК. Id новой дельты
default: null
type:
- 'null'
- int
- name: subscriptions
description: Список всех подписок, для которых есть новые данные
type:
type: array
items:
type: record
name: DeltaNotificationSubscription
fields:
- name: subscriptionId
description: Идентификатор подписки, для которой есть новые данные
type:
type: string
logicalType: uuid
- name: fromId
description: \use in replicator version 1.1\ Id новой дельты
default: null
type:
- 'null'
- int
- name: deltaKeySize
description: размер ключей дельты в байтах
default: 0
type: long
- name: snapshotKeySize
description: Размер ключей снапшота в байтах
default: 0
type: long
8.12. delta.rq
delta.rq - Топик запросов на получение дельты у поставщика.
Структура сообщения
deltaRequestMessage:
description: Запрос из ПОДД на получение дельты у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/deltaRequest'
examples:
- name: snapshot
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
fromId: null
- name: delta
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
fromId:
int: 100
Avro-схема сообщения
deltaRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaRequest
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор операции, все запрос-ответы в рамках одной операции
type:
type: string
logicalType: uuid
- name: subRequestId
description: Идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: fromId
description: Идентификатор запрашиваемой дельты.
default: null
type:
- int
- 'null'
8.13. delta.rs
delta.rs - Топик чанков данных дельт репликации от поставщика.
Структура сообщения
deltaResultChunkMessage:
description: Чанк с данными дельты репликации
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/deltaResultChunkKey'
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
description: Бинарные данные чанка
examples:
- name: base64
headers:
AGENT_CONSUMER_ID: agent_fias
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема сообщения
deltaResultChunkKey:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DeltaResultChunk
namespace: ru.rtlabs.common.replication.delta
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: sql
description: sql, для которого возвращается дельта
type: string
- name: synId
description: Идентификатор синхронизации витрины
type: int
- name: minSynId
description: Номер первой передаваемой в этом пакете дельты
type: int
- name: maxSynId
description: Номер последней передаваемой в этом пакете дельты
type: int
- name: synTime
description: Время дельты
type: long
- name: streamNumber
description: Номер стрима дланных
type:
- int
- 'null'
- name: streamTotal
description: Общее количество стримов
type:
- int
- 'null'
- name: chunkNumber
description: Номер порции по порядку
type: int
- name: isLastChunk
description: Признак последнего сообщения
type: boolean
- name: replicaHash
description: Чек-сумма реплики после применения дельты с данным
type:
- string
- 'null'
examples:
- requestId: 74e43a84-c6c6-4e25-bac4-9d39c59b3da5
subscriptionId: a1ba39be-962b-4ac0-b3f3-893151883e59
sql: 'select * from v1_addrobj'
synId: 10
minSynId: 10
maxSynId: 10
synTime: 1000
streamNumber:
int: 1
streamTotal:
int: 1
chunkNumber: 1
isLastChunk: true
replicaHash:
string: '123456789'
- requestId: 74e43a84-c6c6-4e25-bac4-9d39c59b3da5
subscriptionId: a1ba39be-962b-4ac0-b3f3-893151883e59
sql: 'select * from v1_addrobj'
synId: 10
minSynId: 10
maxSynId: 10
synTime: 1000
streamNumber:
int: 1
streamTotal:
int: 1
chunkNumber: 1
isLastChunk: false
replicaHash: null
8.14. procedure.query.rq
procedure.query.rq - Топик регламентированных запросов на исполнение
Структура сообщения
examples:
- name: simple
summary: Простой запрос на исполнение без параметров
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId: aaa
customerOgrn: ""
queryMnemonic: fias.selectAllAddrobj.1.0
- name: estimation
summary: Запрос на оценку
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 403eada5-05f6-480c-bca9-03328091efeb
subRequestId: 451000b8-dff2-4a1b-ab1b-42500a70d232
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: true
rowCountThreshold: 1000
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAllAddrobj.1.0
- name: complex
summary: Запрос с параметрами и табличными параметрами
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 68758a92-0027-4258-bf17-aa3d24f85094
subRequestId: 96e6eb99-7ff1-4efa-abae-ef1c5744b723
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj where oktmo = ? and name = @tbl.fullname
parameters:
- type: STRING
value:
string: asdasdasd
- type: LONG
value: null
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAddrobjWithParams.1.0
- name: complex_named
summary: Запрос с именованными параметрами
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 12358a92-0027-4258-bf17-aa3d24f85094
subRequestId: 56e6eb99-7ff1-4efa-abae-ef1c5744b723
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from @tbl.fullname el LEFT JOIN v1_addrobj where oktmo = @p1 and kod = @p2
parameters: [ ]
namedParams:
- name: p1
type: STRING
value:
string: asdasdasd
- name: p2
type: LONG
value: null
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAddrobjWithParams.1.0
- name: deadline
summary: Простой запрос на исполнение без параметров
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
QUERY_DEADLINE: 1629289006904
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId: agent-fias
customerOgrn: "1053600591197"
queryMnemonic: fias.selectAllWithDeadline.1.0
Avro-схема сообщения
datamartExecuteQueryRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryRequest
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Ответ, формируемый витриной, обязан содержать переданное значение без каких либо искажений
type: string
- name: datamartMnemonic
description: Мнемоника витрины, к которой выполняется запрос
type: string
- name: sql
description: SQL запрос на исполнение, либо имя хранимой процедуры для регламентированных запросов
type: string
- name: parameters
description: Параметры к SQL запросу
default: [ ]
type:
type: array
items:
type: record
name: QueryParameter
description: Описание параметра
fields:
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: namedParams
description: Именованные параметры запроса
default: [ ]
type:
type: array
items:
type: record
name: NamedParam
description: Описание именованного параметра
fields:
- name: name
description: Имя (мнемоника) параметра
type: string
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: tableParams
description: \use only Datamart\ Табличные параметры запроса
default: [ ]
type:
type: array
items:
type: record
name: TableParam
fields:
- name: id
description: Уникальный идентификатор
type:
type: string
logicalType: uuid
- name: name
description: Имя параметра
type: string
- name: columns
description: Описание колонок таблицы
type:
type: array
items:
type: record
description: Описание колонки
name: TableParamColumnInfo
fields:
- name: name
type: string
description: Имя колонки
- name: type
type: string
description: Тип атрибута
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: isForEstimation
description: Признак необходимости вернуть статистику по запросу в качестве результата. В случае, если оценка по результату исполнения sql запроса не превышает rowCountThreshold записей, должен сразу отдаваться результат без отправки оценки в ядро
type: boolean
default: false
- name: rowCountThreshold
description: Максимальное оценочное количество строк результата, при превышении которого возвращается статистика по запросу. Если оценка по запросу не превышет данный параметр, витрина сразу возвращает ответ с результатом. Заполняется в случае isForEstimation = true
type: long
default: -1
- name: customerId
description: Мнемоника ИС Потребителя
type:
- 'null'
- string
default: null
- name: customerOgrn
description: ОГРН ИС Потребителя
type:
- 'null'
- string
default: null
- name: queryMnemonic
description: 'Мнемоника РЗ, сформированная по правилу: <мнемоника витрины>.<мнемоника РЗ>.<версия РЗ> Если запрос распределенный, то формируется по правилу: podd.<мнемоника РЗ>.<версия РЗ>'
type:
- 'null'
- string
default: null
8.15. procedure.query.rs
procedure.query.rs - Топик c чанками данных исполнения запросов
Структура сообщения
datamartExecuteQueryResultChunk:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryResultChunk
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Заполняется соответсвующим значением из запроса
type: string
- name: chunkNumber
description: Номер порции по порядку
type: int
minimum: 1
- name: isLastChunk
description: Признак последнего сообщения
type: boolean
- name: streamNumber
description: Номер стрима данных
minimum: 1
type:
- int
- "null"
- name: streamTotal
description: Общее количество стримов
minimum: 1
type:
- int
- "null"
- name: isFragmented
description: Признак присутствия в чанке неполных строк (строк, которые были разбиты на несколько чанков)
type: boolean
- name: uncompressedSize
description: Оригинальный размер чанка в байтах
type: int
minimum: 0
Пример key query.rs
examples:
- requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
chunkNumber: 1
isLastChunk: true
streamNumber:
int: 1
streamTotal:
int: 1
isFragmented: false
uncompressedSize: 10
8.16. procedure.query.err
procedure.query.err - Топик c ошибками исполнения sql запросов на витрине
Структура сообщения
datamartExecuteQueryError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryError
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Заполняется соответсвующим значением из запроса
type: string
- name: errorCode
description: Код возникшей ошибки
type: string
- name: message
description: Сообщение с ошибкой исполнения
type: string
Пример query.err
examples:
- name: error
summary: Сообщение с ошибкой исполнения запроса на витрине без header
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
errorCode: DATAMART-001
message: Непредвиденная ошибка
- name: errorWithHeader
summary: Сообщение с ошибкой исполнения запроса на витрине
headers:
MESSAGE_TYPE: DatamartExecuteQueryError:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
errorCode: DATAMART-001
message: Непредвиденная ошибка
8.17. query.err
query.err - Топик c ошибками исполнения sql запросов на витрине
Структура сообщения
datamartExecuteQueryErrorMessage:
description: Ошибка исполнения запроса
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartExecuteQueryError:0.1
payload:
$ref: '#/components/schemas/datamartExecuteQueryError'
examples:
- name: error
summary: Сообщение с ошибкой исполенния запроса на витрине без header
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
errorCode: DATAMART-001
message: Непредвиденная ошибка
- name: errorWithHeader
summary: Сообщение с ошибкой исполенния запроса на витрине
headers:
MESSAGE_TYPE: DatamartExecuteQueryError:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
errorCode: DATAMART-001
message: Непредвиденная ошибка
Avro-схема сообщения
datamartExecuteQueryError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryError
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Заполняется соответсвующим значением из запроса
type: string
- name: errorCode
description: Код возникшей ошибки
type: string
- name: message
description: Сообщение с ошибкой исполнения
type: string
examples:
- requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
errorCode: DATAMART-001
message: Непредвиденная ошибка
8.18. query.estimation.rs
Топик QUERY.ESTIMATION.RS предоставляет возможность произвести предварительную оценку объема получаемых данных при выполнении запроса к Витрине данных, а также, ограничить выгрузку данных в случае, если количество получаемых данных превысит заданное количество строк (параметр rowCountThreshold). В этом случае, ответом на запрос будет предварительная оценка объема.
Например, если вам нужна информация из какой-либо таблицы контактов, то, возможно, следует предварительно узнать, какой объем данных вы можете получить на такой запрос т.к ответ может содержать несколько гигабайт информации и выполнение запроса может занять много времени. Вы сможете установить ограничение на получение данных, например, не более 10 контактов из таблицы. В этом случае, если ответом на запрос будет 5 контактов, то Витрина предоставит ответ полностью. Если ответом будет 1000 контактов, то в качестве ответа будет сформирована предварительная оценка такого ответа, а именно, что данный ответ будет содержать 1000 строк и содержать информацию, например, на 15000 байт. Используя топик query.estimation.rs можно прогнозировать объем получаемых данных, в соответствии с которыми оптимизировать запросы к Витрине.
В случае использования топика query.estimation.rs запрашивается не конечный ответ на запрос, а приблизительная оценка объема (байт) и количество строк в ответе.
Примечание
Данное требование не распространяется на механизм подписок Потребителей данных ПОДД.
Алгоритм работы query.estimation.rs
Витрина получает запрос query.rq с признаком
isForEstimationоценивает объем результата по этому запросу (в байтах и количестве строк).Витрина сравнивает результаты оценки объема запроса со значением предельного числа строк в параметре
rowCountThreshold(топик query.rq).Если значение в оценке меньше, чем предельное значение в
rowCountThreshold, то Витрина возвращает результат запроса в качестве ответа в топик query.rs.Если значение оценки превышает предельное значение, возвращает предварительную оценку объема в качестве ответа.
Структура сообщения
datamartQueryEstimationMessage:
description: Оценка по запросу
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
payload:
$ref: '#/components/schemas/datamartQueryEstimation'
examples:
- name: estimation
summary: Сообщение с оценкой по исполнению запроса
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
estimatedRowCount: 100
estimatedSize: 1000
estimatedTime: 50
Avro-схема сообщения
datamartQueryEstimation:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: Estimation
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: estimatedRowCount
description: Оценка количества строк результата выполнения запроса
type: long
- name: estimatedSize
description: Оценка объема результата выполнения запроса, в байтах
type: long
- name: estimatedTime
description: Оценка времени выполнения запроса в миллисекундах
type: long
examples:
- requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
estimatedRowCount: 100
estimatedSize: 1000
estimatedTime: 50
8.19. query.rq
query.rq - Топик sql запросов на исполнение
Структура сообщения
datamartExecuteQueryRequestMessage:
description: Исполнение sql запроса на витрине
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartExecuteQueryRequest:0.1
REQUEST_ID:
description: Идентификатор запроса
type: string
QUERY_DEADLINE:
description: Время в миллисекундах от эпохи, до которого запрос должен быть выполнен
type: string
format: int64
AGENT_CONSUMER_ID:
description: Мнемоника потребителя (мнемоника агента)
type: string
QUERY_MNEMONIC:
description: '<Полная мнемоника РЗ>.<версия РЗ>'
type: string
payload:
$ref: '#/components/schemas/datamartExecuteQueryRequest'
examples:
- name: simple
summary: Простой запрос на исполнение без параметров
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId: aaa
customerOgrn: ""
queryMnemonic: fias.selectAllAddrobj.1.0
- name: estimation
summary: Запрос на оценку
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 403eada5-05f6-480c-bca9-03328091efeb
subRequestId: 451000b8-dff2-4a1b-ab1b-42500a70d232
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: true
rowCountThreshold: 1000
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAllAddrobj.1.0
- name: complex
summary: Запрос с параметрами
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 68758a92-0027-4258-bf17-aa3d24f85094
subRequestId: 96e6eb99-7ff1-4efa-abae-ef1c5744b723
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj where oktmo = ? and name = @tbl.fullname
parameters:
- type: STRING
value:
string: asdasdasd
- type: LONG
value: null
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAddrobjWithParams.1.0
- name: complex_named
summary: Запрос с именованными параметрами
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
payload:
requestId: 12358a92-0027-4258-bf17-aa3d24f85094
subRequestId: 56e6eb99-7ff1-4efa-abae-ef1c5744b723
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from @tbl.fullname el LEFT JOIN v1_addrobj where oktmo = @p1 and kod = @p2
parameters: [ ]
namedParams:
- name: p1
type: STRING
value:
string: asdasdasd
- name: p2
type: LONG
value: null
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAddrobjWithParams.1.0
- name: deadline
summary: Простой запрос на исполнение без параметров
headers:
MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
QUERY_DEADLINE: 1629289006904
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
datamartMnemonic: fias
sql: select * from v1_addrobj
parameters: [ ]
namedParams: [ ]
tableParams: [ ]
isForEstimation: false
rowCountThreshold: -1
customerId: agent-fias
customerOgrn: "1053600591197"
queryMnemonic: fias.selectAllWithDeadline.1.0
Avro-схема сообщения
datamartExecuteQueryRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryRequest
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Ответ, формируемый витриной, обязан содержать переданное значение без каких либо искажений
type: string
- name: datamartMnemonic
description: Мнемоника витрины, к которой выполняется запрос
type: string
- name: sql
description: SQL запрос на исполнение, либо имя хранимой процедуры для регламентированных запросов
type: string
- name: parameters
description: Параметры к SQL запросу
default: [ ]
type:
type: array
items:
type: record
name: QueryParameter
description: Описание параметра
fields:
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: namedParams
description: Именованные параметры запроса
default: [ ]
type:
type: array
items:
type: record
name: NamedParam
description: Описание именованного параметра
fields:
- name: name
description: Имя (мнемоника) параметра
type: string
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: tableParams
description: Табличные параметры запроса
default: [ ]
type:
type: array
items:
type: record
name: TableParam
fields:
- name: id
description: Уникальный идентификатор
type:
type: string
logicalType: uuid
- name: name
description: Имя параметра
type: string
- name: columns
description: Описание колонок таблицы
type:
type: array
items:
type: record
description: Описание колонки
name: TableParamColumnInfo
fields:
- name: name
type: string
description: Имя колонки
- name: type
type: string
description: Тип атрибута
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: isForEstimation
description: Признак необходимости вернуть статистику по запросу в качестве результата. В случае, если оценка по результату исполнения sql запроса не превышает rowCountThreshold записей, должен сразу отдаваться результат без отправки оценки в ядро
type: boolean
default: false
- name: rowCountThreshold
description: Максимальное оценочное количество строк результата, при превышении которого возвращается статистика по запросу. Если оценка по запросу не превышет данный параметр, витрина сразу возвращает ответ с результатом. Заполняется в случае isForEstimation = true
type: long
default: -1
- name: customerId
description: Мнемоника ИС Потребителя
type:
- 'null'
- string
default: null
- name: customerOgrn
description: ОГРН ИС Потребителя
type:
- 'null'
- string
default: null
- name: queryMnemonic
description: 'Мнемоника РЗ, сформированная по правилу: <мнемоника витрины>.<мнемоника РЗ>.<версия РЗ> Если запрос распределенный, то формируется по правилу: podd.<мнемоника РЗ>.<версия РЗ>'
type:
- 'null'
- string
default: null
8.20. query.rs
query.rs - Топик c чанками данных исполнения запросов
Структура сообщения
datamartExecuteQueryResultChunkMessage:
description: Чанк с данными по исполнению запроса
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/datamartExecuteQueryResultChunk'
headers:
type: object
properties:
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartExecuteQueryResultChunk:0.1
payload:
description: Бинарные данные чанка
examples:
- name: base64
headers:
MESSAGE_TYPE: DatamartExecuteQueryResultChunk:0.1
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема сообщения
datamartExecuteQueryResultChunk:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: QueryResultChunk
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: replyTo
description: Служебная информация маршрутизации сообщения. Заполняется соответсвующим значением из запроса
type: string
- name: chunkNumber
description: Номер порции по порядку
type: int
minimum: 1
- name: isLastChunk
description: Признак последнего сообщения
type: boolean
- name: streamNumber
description: Номер стрима дланных
minimum: 1
type:
- int
- "null"
- name: streamTotal
description: Общее количество стримов
minimum: 1
type:
- int
- "null"
- name: isFragmented
description: Признак присутствия в чанке неполных строк (строк, которые были разбиты на несколько чанков)
type: boolean
- name: uncompressedSize
description: Признак присутствия в чанке неполных строк (строк, которые были разбиты на несколько чанков)
type: int
minimum: 0
examples:
- requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
replyTo: agent-fias
chunkNumber: 1
isLastChunk: true
streamNumber:
int: 1
streamTotal:
int: 1
isFragmented: false
uncompressedSize: 10
8.21. query.tp
query.tp - Топик чанков табличных параметров
Структура сообщения
datamartTableParamChunkMessage:
description: Чанк с данными табличных параметров
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/datamartTableParamChunkKey'
headers:
type: object
properties:
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartTableParamChunkKey:0.1
REQUEST_ID:
description: Идентификатор запроса
type: string
QUERY_DEADLINE:
description: Время в миллисекундах от эпохи, до которого запрос должен быть выполнен
type: string
format: int64
AGENT_CONSUMER_ID:
description: Мнемоника потребителя (мнемоника агента)
type: string
QUERY_MNEMONIC:
description: '<Полная мнемоника РЗ>.<версия РЗ>'
type: string
payload:
description: Бинарные данные чанка
examples:
- name: base64
headers:
MESSAGE_TYPE: DatamartTableParamChunkKey:0.1
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема Key сообщения
datamartTableParamChunkKey:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartTableParamChunkKey
namespace: datamart.query
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: tableParamId
description: Идентификатор табличного параметра
type:
type: string
logicalType: uuid
- name: datamartMnemonic
description: Мнемоника витрины, к которой выполняется запрос
type: string
- name: chunkNum
description: Номер порции по порядку
type: int
minimum: 1
- name: isLast
description: Признак последнего сообщения
type: boolean
- name: streamNum
description: Номер стрима данных
type: int
minimum: 1
- name: streamTotal
description: Общее количество стримов
type: int
minimum: 1
- name: customerId
description: Мнемоника ИС Потребителя
type:
- 'null'
- string
default: null
- name: customerOgrn
description: ОГРН ИС Потребителя
type:
- 'null'
- string
default: null
- name: queryMnemonic
description: 'Мнемоника РЗ, сформированная по правилу: <мнемоника витрины>.<мнемоника РЗ>.<версия РЗ> Если запрос распределенный, то формируется по правилу: podd.<мнемоника РЗ>.<версия РЗ>'
type:
- 'null'
- string
default: null
- name: queryParams
description: Информация о запросе
type:
type: record
name: QueryParams
namespace: datamart.query
fields:
- name: sql
description: Текст SQL-запроса
type: string
- name: replyTo
description: Служебная информация маршрутизации сообщения. Ответ, формируемый витриной, обязан содержать переданное значение без каких либо искажений
type: string
- name: parameters
default: [ ]
description: Параметры к SQL запросу
type:
type: array
items:
type: record
name: QueryParameter
description: Описание параметра
fields:
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: namedParams
description: Именованные параметры запроса
default: [ ]
type:
type: array
items:
type: record
name: NamedParam
description: Описание именованного параметра
fields:
- name: name
description: Имя (мнемоника) параметра
type: string
- name: type
type: string
description: Тип параметра
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
- name: value
description: Значение параметра
type:
- string
- 'null'
- name: tableParams
description: Табличные параметры запроса
type:
type: array
items:
type: record
name: TableParam
fields:
- name: id
description: Уникальный идентификатор
type:
type: string
logicalType: uuid
- name: name
description: Имя параметра
type: string
- name: columns
description: Описание колонок таблицы
type:
type: array
items:
type: record
description: Описание колонки
name: TableParamColumnInfo
fields:
- name: name
type: string
description: Имя колонки
- name: type
type: string
description: Тип атрибута
enum:
- BIG_DECIMAL
- BINARY
- BOOLEAN
- DATE
- DOUBLE
- FLOAT
- INTEGER
- LONG
- SHORT
- STRING
- TIME
- TIMESTAMP
examples:
- queryParams:
summary: Пример запроса с параметрами
sql: select * from v1_addrobj where oktmo = ? and name = @tbl.fullname
replyTo: agent-fias
parameters:
- type: STRING
value:
string: asdasdasd
namedParams: []
tableParams:
- id: 6bba1b55-031c-4931-94ef-daccdc203f8d
name: tbl
columns:
- name: fullname
type: STRING
requestId: 114a6659-4b7b-4a2a-8c22-d2177f91091a
subRequestId: 8c1e7130-989a-4943-b23b-75e242e9d77e
tableParamId: f3ff5c24-5039-4a00-8212-063114d6411b
datamartMnemonic: fias
chunkNum: 1
isLast: true
streamNum: 1
streamTotal: 1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAllAddrobj.1.0
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAllAddrobj.1.0
- queryParams:
summary: Пример запроса с именованными параметрами
sql: select * from v1_addrobj where oktmo = p1 and name = @tbl.fullname
replyTo: agent-fias
parameters: []
namedParams:
- name: p1
type: STRING
value:
string: asdasdasd
tableParams:
- id: 6bba1b55-031c-4931-94ef-daccdc203f8d
name: tbl
columns:
- name: fullname
type: STRING
requestId: 114a6659-4b7b-4a2a-8c22-d2177f91091a
subRequestId: 8c1e7130-989a-4943-b23b-75e242e9d77e
tableParamId: f3ff5c24-5039-4a00-8212-063114d6411b
datamartMnemonic: fias
chunkNum: 1
isLast: true
streamNum: 1
streamTotal: 1
customerId:
string: agent-fias
customerOgrn:
string: "1053600591197"
queryMnemonic:
string: fias.selectAllAddrobj.1.0
8.22. replication.cancel.rq
replication.cancel.rq - Топик запросов на отмену подписки у поставщика
Структура сообщения
subscriptionCancelRequestMessage:
description: Запрос на отмену подписки у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/subsriptionCancelRequest'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
Avro-схема сообщения
subsriptionCancelRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: SubscriptionAgentCancelRequest
namespace: ru.rtlabs.common.replication.subscription
fields:
- name: requestId
description: Уникальный идентификатор операции
type:
type: string
logicalType: uuid
- name: subRequestId
description: Идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
8.23. replication.cancel.rs
replication.cancel.rs Топик с ответами на регистрацию подписки у поставщика.
Успешный ответ с результатом регистрации подписки у поставщика. Содержит сведения о структуре таблиц, необходимой для хранения реплик.
Структура сообщения
subscriptionCancelResultMessage:
description: Ответ с результатом отмены подписки у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/subscriptionCancelResult'
examples:
- name: success
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
success: true
message: Подписка успешно отменена
- name: error
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
success: false
message: Непредвиденная ошибка отмены подписки
Avro-схема сообщения
subscriptionCancelResult:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: SubscriptionAgentCancelResult
namespace: ru.rtlabs.common.replication.subscription
fields:
- name: requestId
description: Уникальный идентификатор операции
type:
type: string
logicalType: uuid
- name: subRequestId
description: Идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: success
description: Успешность выполнения отмены подписки
type: boolean
- name: message
description: Сообщения с результатом выполнения операции
default: null
type:
- 'null'
- string
8.24. replication.err
replication.err - Топик c ошибками регистрации подписки у поставщика
Получение Агентом ПОДД ошибки при обработке подписки на репликацию от Витрины.
Негативный ответ на запрос подписки на репликацию - описание причины ошибки, передается только в случае невозможности выполнения запроса. Один запрос - один ответ (об ошибке). Один ответ - одно сообщение.
Структура сообщения
subscriptionRegistrationErrorMessage:
description: Неуспешный результат регистрации подписки у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/subscriptionRegistrationError'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
errorCode: DATAMART-001
message: Непредвиденная ошибка
Avro-схема сообщения
subscriptionRegistrationError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: SubscriptionRegistrationError
namespace: ru.rtlabs.common.replication.subscription
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки выполнения
type: string
- name: message
description: Сообщение об ошибке
type: string
8.25. replication.in.err
replication.in.err - Топик c ошибками обработки запросов на формирование структуры хранения реплик.
Структура сообщения
createReplicationStorageErrorMessage:
description: Ответ с ошибкой обработки запроса на формирование структуры хранения реплик
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/createReplicationStorageError'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
errorCode: DATAMART-001
message: Непредвиденная ошибка создания структуры хранения реплик
Avro-схема сообщения
createReplicationStorageError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: CreateReplicationStorageError
namespace: ru.rtlabs.common.replication.storage
fields:
- name: requestId
description: Уникальный идентификатор операции
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки выполнения
type: string
- name: message
description: Сообщение об ошибке
type: string
8.26. replication.in.rq
replication.in - Топик запросов к витрине потребителя на формирование хранилищ реплик.
Структура сообщения
createReplicationStorageRequestMessage:
description: Запрос к витрине потребителя на формирование хранилища реплик
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/createReplicationStorageRequest'
examples:
- name: replication
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
datamartMnemonic: oktmo
lastSynId: 10
table:
tableId:
string: 00000000-0000-0000-0000-000000000000
tableName:
string: tab
sql:
string: select * from v1_addrobj
fields:
- name: oktmo
type: VARCHAR
length: null
precision: null
scale: null
primaryKey: null
shardingKey: null
Avro-схема сообщения
createReplicationStorageRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: CreateReplicationStorageRequest
namespace: ru.rtlabs.common.replication.storage
fields:
- name: requestId
description: Уникальный идентификатор запроса регистрации
type:
type: string
logicalType: uuid
- name: subRequestId
description: Идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: datamartMnemonic
description: Наименование целевого датамарта, приходит в ПОДД в момент регистрации подписки через ЕИП
type: string
- name: lastSynId
description: Последний id синхронизации в витрине
type: int
default: 0
- tables:
description: Структура таблиц хранения реплик
default: []
type:
type: array
items:
type: record
name: ReplicationTableInfo
namespace: ru.rtlabs.common.replication.storage
fields:
- name: tableId
description: Идентификатор таблицы
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: tableName
description: Наименование таблицы
type:
- 'null'
- type: string
- name: sql
description: sql, для которого должна быть создана таблица
default: null
type:
- 'null'
- type: string
- name: fields
description: Поля таблицы
type:
type: array
items:
type: record
name: ReplicationFieldInfo
namespace: ru.rtlabs.common.replication.storage
description: Описание поля таблицы
fields:
- name: name
description: Имя поля
type: string
- name: type
description: Тип поля
type: string
- name: length
description: Максимальная длина строки, если пусто, то нет ограничений
type:
- int
- 'null'
- name: precision
description: Количество значимых цифр у decimal и numeric. Т.е. количество в целой части + количество в дробной части. Если пусто, то без размера
type:
- int
- 'null'
- name: scale
description: \use only PODD\ Масштаб decimal и numeric. Т.е. количество значимых цифр в дробной части. Если пусто, то нет дробной части
default: null
type:
- 'null'
- int
- name: primaryKey
description: Порядковый номер поля (начиная с 0) в составе первичного ключа. null - если не входит в состав первичного ключа
type:
- int
- 'null'
- name: shardingKey
description: Порядковый номер поля (начиная с 0) в составе ключа шардирования. null - если не входит в состав ключа шардирования
type:
- int
- 'null'
8.27. replication.in.rs
replication.in.rs - Топик ответов с успешными результатами обработки запроса на формирование структуры хранения реплик.
Структура сообщения
createReplicationStorageResultMessage:
description: Ответ с успешным результатом обработки запроса на формирование структуры хранения реплик
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/createReplicationStorageResult'
examples:
- name: replication
headers:
AGENT_CONSUMER_ID: agent-oktmo
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
Avro-схема сообщения
createReplicationStorageResult:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: CreateReplicationStorageResult
namespace: ru.rtlabs.common.replication.storage
fields:
- name: requestId
description: Уникальный идентификатор операции
type:
type: string
logicalType: uuid
- name: subRequestId
description: Идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
8.28. replication.rq
replication.rq - Топик запросов регистрации подписки репликации у поставщика
Структура сообщения
subscriptionRegistrationRequestMessage:
description: Запрос регистрации подписки репликации у поставщика
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/subscriptionRegistrationRequest'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 00000000-0000-0000-0000-000000000000
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: 00000000-0000-0000-0000-000000000000
datamartMnemonic: fias
sql:
string: select * from v1_addrobj
queries:
- id: 00000000-0000-0000-0000-000000000000
sql: select 1
type: DATA
isReplication:
boolean: true
- name: multiple
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 00000000-0000-0000-0000-000000000000
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: 00000000-0000-0000-0000-000000000000
datamartMnemonic: fias
sql:
string: select * from v1_addrobj; select * from v1_house
isReplication:
boolean: true
Avro-схема сообщения
subscriptionRegistrationRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: SubscriptionRegistrationRequest
namespace: ru.rtlabs.common.replication.subscription
fields:
- name: requestId
description: Уникальный идентификатор запроса регистрации
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса, идентифицирует одно взаимодействие типа запрос-ответ
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: datamartMnemonic
description: Мнемоника витрины, к которой выполняется запрос
type: string
- name: sql
description: sql запрос текущей подписки для старых витрин тут может приходить массив.
default: null
type:
- 'null'
- string
- name: isReplication
description: \version 1.1\ Признак типа подписки true - подписка на репликацию, false - подписка на уведомления
default: null
type:
- 'null'
- boolean
8.29. replication.rs
replication.rs - Топик с ответами на регистрацию подписки у поставщика
Позитивный ответ на запрос подписки на репликацию передается только в случае, если Витрина успешного обработала все выражения из параметра sql запроса. Один запрос - один ответ. Один ответ - одно сообщение.
Структура сообщения
subscriptionRegistrationResultMessage:
description: Успешный ответ с результатом регистрации подписки у поставщика. Содержит сведения о структуре таблиц, необходимой для хранения реплик
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
payload:
$ref: '#/components/schemas/subscriptionRegistrationResult'
examples:
- name: simple
headers:
AGENT_CONSUMER_ID: agent-fias
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
subRequestId:
string: 00000000-0000-0000-0000-000000000000
subscriptionId: dcf43fc7-e152-459b-8af5-48d91d4b6a21
datamartMnemonic: fias
lastSynId: 10
snapshotKeySize: 1024
deltaUuid: 79a928f5-eab5-49ea-a947-2c99fbf39b6e
tables:
- tableId: 90722850-b1c7-42eb-836c-b2f88849e22c
tableName:
string: tab
sql: select * from v1_addrobj
fields:
- name: oktmo
type: VARCHAR
length: null
precision: null
scale: null
primaryKey: null
shardingKey: null
tables:
ru.rtlabs.common.replication.storage.ReplicationTableInfo:
tableId:
string: 00000000-0000-0000-0000-000000000000
tableName:
string: tab
sql:
string: select * from v1_addrobj
fields:
- name: oktmo
type: VARCHAR
length: null
precision: null
primaryKey: null
scale: null
shardingKey: null
Avro-схема сообщения
subscriptionRegistrationResult:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: SubscriptionRegistrationResult
namespace: ru.rtlabs.common.replication.subscription
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: subRequestId
description: Уникальный идентификатор подзапроса,
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: subscriptionId
description: Уникальный идентификатор подписки
type:
type: string
logicalType: uuid
- name: datamartMnemonic
description: Мнемоника витрины-источника
type: string
- name: lastSynId
description: Последний id дельты примененной в витрине на момент подписки (если дельт нет, то придет -1)
type: int
- name: tables
description: Структура таблиц хранения реплик
default: []
type:
type: array
items:
type: record
name: ReplicationTableInfo
namespace: ru.rtlabs.common.replication.storage
fields:
- name: tableId
description: Идентификатор таблицы
default: null
type:
- 'null'
- type: string
logicalType: uuid
- name: tableName
description: Наименование таблицы
type:
- 'null'
- type: string
- name: sql
description: sql, для которого должна быть создана таблица
default: null
type:
- 'null'
- type: string
- name: fields
description: Поля таблицы
type:
type: array
items:
type: record
name: ReplicationFieldInfo
namespace: ru.rtlabs.common.replication.storage
description: Описание поля таблицы
fields:
- name: name
description: Имя поля
type: string
- name: type
description: Тип поля
type: string
- name: length
description: Максимальная длина строки, если пусто, то нет ограничений
type:
- int
- 'null'
- name: precision
description: Количество значимых цифр у decimal и numeric. Т.е. количество в целой части + количество в дробной части. Если пусто, то без размера
type:
- int
- 'null'
- name: scale
description: Масштаб decimal и numeric. Т.е. количество значимых цифр в дробной части. Если пусто, то нет дробной части
default: null
type:
- 'null'
- int
- name: primaryKey
description: Порядковый номер поля (начиная с 0) в составе первичного ключа. null - если не входит в состав первичного ключа
type:
- int
- 'null'
- name: shardingKey
description: Порядковый номер поля (начиная с 0) в составе ключа шардирования. null - если не входит в состав ключа шардирования
type:
- int
- 'null'
8.30. statistics.err
statistics.err - Топик c ошибками получения статистики витрины
Структура сообщения
datamartStatisticErrorMessage:
description: Неуспешный результат обработки запроса на получение статистики
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор запроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
payload:
$ref: '#/components/schemas/datamartStatisticError'
examples:
- name: simple
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
payload:
protocol: read.statistic.protocol.v.1
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
errorCode: DATAMART-001
message: Непредвиденная ошибка
Avro-схема сообщения
datamartStatisticError:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartStatisticError
namespace: ru.rtlabs.common.statistic
fields:
- name: protocol
type: string
description: Версия протокола. Указывается константа read.statistic.protocol.v.1
conts: read.statistic.protocol.v.1
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки
type: string
- name: message
description: Сообщение об ошибке
type: string
8.31. statistics.rq
statistics.rq - Топик запросов статистики витрины
Структура сообщения
datamartStatisticRequestMessage:
description: Запрос статистики витрины
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
$ref: '#/components/schemas/datamartStatisticRequestKey'
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
payload:
$ref: '#/components/schemas/datamartStatisticRequest'
examples:
- name: simple
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
payload:
protocol: read.statistic.protocol.v.1
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
datamart:
mnemonic: fias
version:
major: 1
minor: 0
Avro-схема сообщения
datamartStatisticRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartStatisticRequest
namespace: ru.rtlabs.common.statistic
fields:
- name: protocol
description: Версия протокола. Указывается константа read.statistic.protocol.v.1
type: string
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: datamart
description: Витрина
type:
type: record
name: DatamartInfo
fields:
- name: mnemonic
description: Мнемоника витрины
type: string
- name: version
description: Версия
type:
type: record
name: SemanticVersion
namespace: ru.rtlabs.common.model.metadata
fields:
- name: major
type: int
minimum: 1
- name: minor
type: int
minimum: 0
8.32. statistics.rs
statistics.rs - Топик со статистикой витрины
Структура сообщения
datamartStatisticResponseMessage:
description: Статистика витрины
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор запроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
payload:
$ref: '#/components/schemas/datamartStatisticResponse'
examples:
- name: simple
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
payload:
protocol: read.statistic.protocol.v.1
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
datamart:
mnemonic: fias
version:
major: 1
minor: 0
tables:
- mnemonic: addrobj
columns:
- mnemonic: oktmo
notGreater10: 10.0
inRange11And100: 50.0
inRange101And1000: 30.0
moreThan1000: 10.0
Avro-схема сообщения
datamartStatisticResponse:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: DatamartStatisticResponse
namespace: ru.rtlabs.common.datamart.profile
fields:
- name: protocol
description: Версия протокола. Указывается константа read.statistic.protocol.v.1
type: string
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: datamart
description: Статистика по витрине
type:
type: record
name: DatamartStatistic
fields:
- name: mnemonic
description: Мнемоника витрины
type: string
- name: version
description: Версия
type:
type: record
name: SemanticVersion
namespace: ru.rtlabs.common.model.metadata
fields:
- name: major
type: int
minimum: 1
- name: minor
type: int
minimum: 0
- name: tables
type:
type: array
items:
type: record
name: TableStatistic
fields:
- name: mnemonic
description: Мнемоника витрины
type: string
- name: columns
description: Колонки
type:
type: array
items:
type: record
name: ColumnStatistic
description: Статистика по колонке
fields:
- name: mnemonic
type: string
- name: notGreater10
type: double
- name: inRange11And100
type: double
- name: inRange101And1000
type: double
- name: moreThan1000
type: double