DBZ-5413 Update the topic naming strategy doc to all connectors

This commit is contained in:
harveyyue 2022-07-17 15:37:02 +08:00 committed by Chris Cranford
parent 77c7db163d
commit daf329bc06
12 changed files with 328 additions and 92 deletions

View File

@ -15,6 +15,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.debezium.common.annotation.Incubating;
import io.debezium.config.Configuration;
import io.debezium.config.Field;
import io.debezium.relational.RelationalDatabaseConnectorConfig;
@ -24,10 +25,11 @@
import io.debezium.util.Strings;
/**
* An abstract implementation of {@link io.debezium.spi.topic.TopicNamingStrategy}
* An abstract implementation of {@link TopicNamingStrategy}.
*
* @author Harvey Yue
*/
@Incubating
public abstract class AbstractTopicNamingStrategy<I extends DataCollectionId> implements TopicNamingStrategy<I> {
protected static final String LOGIC_NAME_PLACEHOLDER = "${logical.name}";
protected static final Pattern TOPIC_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9_.\\-]+$");
@ -51,7 +53,7 @@ public abstract class AbstractTopicNamingStrategy<I extends DataCollectionId> im
.withDefault(LOGIC_NAME_PLACEHOLDER)
.withValidation(AbstractTopicNamingStrategy::validateTopicName)
.withDescription("The name of the prefix to be used for all topics, the placeholder " + LOGIC_NAME_PLACEHOLDER +
"can be used for referring to the connector's logical name as default value.");
" can be used for referring to the connector's logical name as default value.");
public static final Field TOPIC_CACHE_SIZE = Field.create("topic.cache.size")
.withDisplayName("Topic cache size")

View File

@ -13,12 +13,19 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.debezium.common.annotation.Incubating;
import io.debezium.config.Configuration;
import io.debezium.config.Field;
import io.debezium.spi.schema.DataCollectionId;
import io.debezium.util.Collect;
import io.debezium.util.Strings;
/**
* Implement a regex expression strategy to determine data event topic names using {@link DataCollectionId#databaseParts()}.
*
* @author Harvey Yue
*/
@Incubating
public class DefaultRegexTopicNamingStrategy extends AbstractTopicNamingStrategy<DataCollectionId> {
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultRegexTopicNamingStrategy.class);

View File

@ -7,10 +7,17 @@
import java.util.Properties;
import io.debezium.common.annotation.Incubating;
import io.debezium.config.CommonConnectorConfig;
import io.debezium.spi.schema.DataCollectionId;
import io.debezium.util.Collect;
/**
* Determine data event topic names using {@link DataCollectionId#databaseParts()}.
*
* @author Harvey Yue
*/
@Incubating
public class DefaultTopicNamingStrategy extends AbstractTopicNamingStrategy<DataCollectionId> {
public DefaultTopicNamingStrategy(Properties props) {

View File

@ -7,10 +7,17 @@
import java.util.Properties;
import io.debezium.common.annotation.Incubating;
import io.debezium.config.CommonConnectorConfig;
import io.debezium.spi.schema.DataCollectionId;
import io.debezium.util.Collect;
/**
* Determine data event topic names using {@link DataCollectionId#schemaParts()}.
*
* @author Harvey Yue
*/
@Incubating
public class SchemaTopicNamingStrategy extends AbstractTopicNamingStrategy<DataCollectionId> {
private final boolean multiPartitionMode;

View File

@ -155,7 +155,7 @@ By default, Cassandra connector will delete commit logs which have been processe
=== Topics names
The Cassandra connector writes events for all insert, update, and delete uperations on a single table to a single Kafka topic. The name of the Kafka topics always take the form
_clusterName_._keyspaceName_._tableName_, where _clusterName_ is the logical name of the connector as specified with the `kafka.topic.prefix` configuraiton property, _keyspaceName_ is the name of the keyspace where the operation occurred, and _tableName_ is the name of the table on which the operation occurred.
_clusterName_._keyspaceName_._tableName_, where _clusterName_ is the logical name of the connector as specified with the xref:cassandra-property-topic-prefix[`topic.prefix`] configuration property, _keyspaceName_ is the name of the keyspace where the operation occurred, and _tableName_ is the name of the table on which the operation occurred.
For example, consider a Cassandra installation with an `inventory` keyspace that contains four tables: `products`, `products_on_hand`, `customers`, and `orders`. If the connector monitoring this database were given a logical server name of `fulfillment`, then the connector would produce events on these four Kafka topics:
@ -807,7 +807,7 @@ cassandra.port=9042
kafka.producer.bootstrap.servers=127.0.0.1:9092
kafka.producer.retries=3
kafka.producer.retry.backoff.ms=1000
kafka.topic.prefix=test_prefix
topic.prefix=test_prefix
key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url: http://localhost:8081
@ -1055,6 +1055,37 @@ See xref:{link-avro-serialization}#avro-naming[Avro naming] for more details.
The operations include: `c` for inserts/create, `u` for updates, and `d` for deletes.
By default, no operations are skipped.
|[[cassandra-property-topic-naming-strategy]]<<cassandra-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[cassandra-property-topic-delimiter]]<<cassandra-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[cassandra-property-topic-prefix]]<<cassandra-property-topic-prefix, `topic.prefix`>>
|No default
|The name of the prefix to be used for all topics. +
+
[WARNING]
====
Do not change the value of this property.
If you change the name value, after a restart, instead of continuing to emit events to the original topics, the connector emits subsequent events to topics whose names are based on the new value.
The connector is also unable to recover its database history topic.
====
|[[cassandra-property-topic-cache-size]]<<cassandra-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[cassandra-property-topic-heartbeat-prefix]]<<cassandra-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|===
If the Cassandra agent use SSL to connect to Cassandra node, an SSL config file is required.

View File

@ -482,7 +482,7 @@ If the data source does not provide {prodname} with the event time, then the fie
}
----
Unless overridden via the xref:db2-property-transaction-topic[`transaction.topic`] option,
Unless overridden via the xref:db2-property-topic-transaction[`topic.transaction`] option,
the connector emits transaction events to the xref:db2-property-database-server-name[`_<database.server.name>_`]`.transaction` topic.
.Data change event enrichment
@ -2022,8 +2022,8 @@ The following configuration properties are _required_ unless a default value is
|No default
|Logical name that identifies and provides a namespace for the particular Db2 database server that hosts the database for which {prodname} is capturing changes.
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name.
The logical name should be unique across all other connectors, since it is used as a topic name prefix for all Kafka topics that receive records from this connector.
+
The logical name should be unique across all other connectors, since it is used as a topic name prefix for all Kafka topics that receive records from this connector. +
+
[WARNING]
====
Do not change the value of this property.
@ -2256,10 +2256,6 @@ Heartbeat messages are useful for monitoring whether the connector is receiving
+
Heartbeat messages are useful when there are many updates in a database that is being tracked but only a tiny number of updates are in tables that are in capture mode. In this situation, the connector reads from the database transaction log as usual but rarely emits change records to Kafka. This means that the connector has few opportunities to send the latest offset to Kafka. Sending heartbeat messages enables the connector to send the latest offset to Kafka.
|[[db2-property-heartbeat-topics-prefix]]<<db2-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Specifies the prefix for the name of the topic to which the connector sends heartbeat messages. The format for this topic name is `<heartbeat.topics.prefix>.<server.name>`.
|[[db2-property-snapshot-delay-ms]]<<db2-property-snapshot-delay-ms, `+snapshot.delay.ms+`>>
|No default
|An interval in milliseconds that the connector should wait before performing a snapshot when the connector starts. If you are starting multiple connectors in a cluster, this property is useful for avoiding snapshot interruptions, which might cause re-balancing of connectors.
@ -2315,10 +2311,6 @@ In the resulting snapshot, the connector includes only the records for which `de
|`false`
|Determines whether the connector generates events with transaction boundaries and enriches change event envelopes with transaction metadata. Specify `true` if you want the connector to do this. See xref:{link-db2-connector}#db2-transaction-metadata[Transaction metadata] for details.
|[[db2-property-transaction-topic]]<<db2-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[db2-property-skipped-operations]]<<db2-property-skipped-operations, `+skipped.operations+`>>
|No default
| comma-separated list of operation types that will be skipped during streaming.
@ -2338,6 +2330,42 @@ Increasing the chunk size provides greater efficiency, because the snapshot runs
However, larger chunk sizes also require more memory to buffer the snapshot data.
Adjust the chunk size to a value that provides the best performance in your environment.
|[[db2-property-topic-naming-strategy]]<<db2-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[db2-property-topic-delimiter]]<<db2-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[db2-property-topic-prefix]]<<db2-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:db2-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:db2-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[db2-property-topic-cache-size]]<<db2-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[db2-property-topic-heartbeat-prefix]]<<db2-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[db2-property-topic-transaction]]<<db2-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===
[id="debezium-db2-connector-database-history-configuration-properties"]

View File

@ -387,8 +387,8 @@ The following example shows a typical message:
}
----
Unless overridden via the xref:{link-mongodb-connector}#mongodb-property-transaction-topic[`transaction.topic`] option,
transaction events are written to the topic named `_database.server.name_.transaction`.
Unless overridden via the xref:{link-mongodb-connector}#mongodb-property-topic-transaction[`topic.transaction`] option,
transaction events are written to the topic named xref:mongodb-property-mongodb-name[`_<mongodb.name>_`]`.transaction`.
.Change data event enrichment
When transaction metadata is enabled, the data message `Envelope` is enriched with a new `transaction` field.
@ -1369,8 +1369,8 @@ The following configuration properties are _required_ unless a default value is
|[[mongodb-property-mongodb-hosts]]<<mongodb-property-mongodb-hosts, `+mongodb.hosts+`>>
|
|The comma-separated list of hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB servers in the replica set. The list can contain a single hostname and port pair. If `mongodb.members.auto.discover` is set to `false`, then the host and port pair should be prefixed with the replica set name (e.g., `rs0/localhost:27017`).
+
|The comma-separated list of hostname and port pairs (in the form 'host' or 'host:port') of the MongoDB servers in the replica set. The list can contain a single hostname and port pair. If `mongodb.members.auto.discover` is set to `false`, then the host and port pair should be prefixed with the replica set name (e.g., `rs0/localhost:27017`). +
+
[NOTE]
====
It is mandatory to provide the current primary address.
@ -1382,8 +1382,8 @@ This limitation will be removed in the next {prodname} release.
|A unique name that identifies the connector and/or MongoDB replica set or sharded cluster that this connector monitors.
Each server should be monitored by at most one {prodname} connector, since this server name prefixes all persisted Kafka topics emanating from the MongoDB replica set or cluster.
Use only alphanumeric characters, hyphens, dots and underscores to form the name.
The logical name should be unique across all other connectors, because the name is used as the prefix in naming the Kafka topics that receive records from this connector.
+
The logical name should be unique across all other connectors, because the name is used as the prefix in naming the Kafka topics that receive records from this connector. +
+
[WARNING]
====
Do not change the value of this property.
@ -1563,11 +1563,6 @@ This will cause the oplog files to be rotated out but connector will not notice
Set this parameter to `0` to not send heartbeat messages at all. +
Disabled by default.
|[[mongodb-property-heartbeat-topics-prefix]]<<mongodb-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Controls the naming of the topic to which heartbeat messages are sent. +
The topic is named according to the pattern `<heartbeat.topics.prefix>.<server.name>`.
|[[mongodb-property-sanitize-field-names]]<<mongodb-property-sanitize-field-names, `+sanitize.field.names+`>>
|`true` when connector configuration explicitly specifies the `key.converter` or `value.converter` parameters to use Avro, otherwise defaults to `false`.
|Whether field names are sanitized to adhere to Avro naming requirements.
@ -1594,10 +1589,6 @@ For each collection that you specify, also specify another configuration propert
See xref:{link-mongodb-connector}#mongodb-transaction-metadata[Transaction Metadata] for additional details.
|[[mongodb-property-transaction-topic]]<<mongodb-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name (see xref:mongodb-logical-connector-name[]); defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[mongodb-property-retriable-restart-connector-wait-ms]]<<mongodb-property-retriable-restart-connector-wait-ms, `+retriable.restart.connector.wait.ms+`>>
|10000 (10 seconds)
|The number of milliseconds to wait before restarting a connector after a retriable error occurs.
@ -1643,6 +1634,42 @@ ifdef::product[]
Incremental snapshots is a Technology Preview feature for the {prodname} MongoDB connector.
endif::product[]
|[[mongodb-property-topic-naming-strategy]]<<mongodb-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.DefaultTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `DefaultTopicNamingStrategy`.
|[[mongodb-property-topic-delimiter]]<<mongodb-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[mongodb-property-topic-prefix]]<<mongodb-property-topic-prefix, `topic.prefix`>>
|`${mongodb.name}`
|The name of the prefix to be used for all topics, defaults to xref:mongodb-property-mongodb-name[`${mongodb.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:mongodb-property-mongodb-name[`${mongodb.name}`] will not play the prefix role of all topics.
====
|[[mongodb-property-topic-cache-size]]<<mongodb-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[mongodb-property-topic-heartbeat-prefix]]<<mongodb-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[mongodb-property-topic-transaction]]<<mongodb-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===
// Type: assembly

View File

@ -617,7 +617,7 @@ If the data source does not provide {prodname} with the event time, then the fie
}
----
Unless overridden via the xref:mysql-property-transaction-topic[`transaction.topic`] option,
Unless overridden via the xref:mysql-property-topic-transaction[`topic.transaction`] option,
the connector emits transaction events to the xref:mysql-property-database-server-name[`_<database.server.name>_`]`.transaction` topic.
.Change data event enrichment
@ -2347,7 +2347,7 @@ The following configuration properties are _required_ unless a default value is
|No default
|Logical name that identifies and provides a namespace for the particular MySQL database server/cluster in which {prodname} is capturing changes. The logical name should be unique across all other connectors, since it is used as a prefix for all Kafka topic names that receive events emitted by this connector.
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name. +
+
+
[WARNING]
====
Do not change the value of this property.
@ -2760,14 +2760,6 @@ To skip all table size checks and always stream all results during a snapshot, s
+
Heartbeat messages are useful for monitoring whether the connector is receiving change events from the database. Heartbeat messages might help decrease the number of change events that need to be re-sent when a connector restarts. To send heartbeat messages, set this property to a positive integer, which indicates the number of milliseconds between heartbeat messages.
|[[mysql-property-heartbeat-topics-prefix]]<<mysql-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_heartbeat.topics.prefix_._server.name_ +
+
For example, if the database server name is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[mysql-property-heartbeat-action-query]]<<mysql-property-heartbeat-action-query, `+heartbeat.action.query+`>>
|No default
|Specifies a query that the connector executes on the source database when the connector sends a heartbeat message. +
@ -2845,9 +2837,42 @@ Adjust the chunk size to a value that provides the best performance in your envi
|`false`
|Determines whether the connector generates events with transaction boundaries and enriches change event envelopes with transaction metadata. Specify `true` if you want the connector to do this. See xref:{link-mysql-connector}#mysql-transaction-metadata[Transaction metadata] for details.
|[[mysql-property-transaction-topic]]<<mysql-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[mysql-property-topic-naming-strategy]]<<mysql-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.DefaultTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `DefaultTopicNamingStrategy`.
|[[mysql-property-topic-delimiter]]<<mysql-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[mysql-property-topic-prefix]]<<mysql-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:mysql-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:mysql-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[mysql-property-topic-cache-size]]<<mysql-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[mysql-property-topic-heartbeat-prefix]]<<mysql-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[mysql-property-topic-transaction]]<<mysql-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===
[id="debezium-mysql-connector-database-history-configuration-properties"]

View File

@ -470,7 +470,7 @@ The following example shows a typical transaction boundary message:
}
----
Unless overridden via the xref:oracle-property-transaction-topic[`transaction.topic`] option,
Unless overridden via the xref:oracle-property-topic-transaction[`topic.transaction`] option,
the connector emits transaction events to the xref:oracle-property-database-server-name[`_<database.server.name>_`]`.transaction` topic.
// Type: concept
@ -2519,8 +2519,8 @@ endif::product[]
|Logical name that identifies and provides a namespace for the Oracle database server from which the connector captures changes.
The value that you set is used as a prefix for all Kafka topic names that the connector emits.
Specify a logical name that is unique among all connectors in your {prodname} environment.
The following characters are valid: alphanumeric characters, hyphens, dots, and underscores.
+
The following characters are valid: alphanumeric characters, hyphens, dots, and underscores. +
+
[WARNING]
====
Do not change the value of this property.
@ -2851,11 +2851,6 @@ The connector runs the query after it emits a xref:oracle-property-heartbeat-int
Set this property and create a heartbeat table to receive the heartbeat messages to resolve situations in which xref:low-change-frequency-offset-management[{prodname} fails to synchronize offsets on low-traffic databases that are on the same host as a high-traffic database].
After the connector inserts records into the configured table, it is able to receive changes from the low-traffic database and acknowledge SCN changes in the database, so that offsets can be synchronized with the broker.
|[[oracle-property-heartbeat-topics-prefix]]<<oracle-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Specifies the string that prefixes the name of the topic to which the connector sends heartbeat messages. +
The topic is named according to the pattern `_<heartbeat.topics.prefix>.<serverName>_`.
|[[oracle-property-snapshot-delay-ms]]<<oracle-property-snapshot-delay-ms, `+snapshot.delay.ms+`>>
|No default
|Specifies an interval in milliseconds that the connector waits after it starts before it takes a snapshot. +
@ -2882,10 +2877,6 @@ For more information, see xref:{link-avro-serialization}#avro-naming[Avro naming
See xref:{link-oracle-connector}#oracle-transaction-metadata[Transaction Metadata] for additional details.
|[[oracle-property-transaction-topic]]<<oracle-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[oracle-property-log-mining-strategy]]<<oracle-property-log-mining-strategy, `+log.mining.strategy+`>>
|`redo_log_catalog`
|Specifies the mining strategy that controls how Oracle LogMiner builds and uses a given data dictionary for resolving table and column ids to names. +
@ -3108,6 +3099,42 @@ Increasing the chunk size provides greater efficiency, because the snapshot runs
However, larger chunk sizes also require more memory to buffer the snapshot data.
Adjust the chunk size to a value that provides the best performance in your environment.
|[[oracle-property-topic-naming-strategy]]<<oracle-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[oracle-property-topic-delimiter]]<<oracle-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[oracle-property-topic-prefix]]<<oracle-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:oracle-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:oracle-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[oracle-property-topic-cache-size]]<<oracle-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[oracle-property-topic-heartbeat-prefix]]<<oracle-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[oracle-property-topic-transaction]]<<oracle-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===
[id="debezium-oracle-connector-database-history-configuration-properties"]

View File

@ -445,8 +445,8 @@ If the data source does not provide {prodname} with the event time, then the fie
}
----
Unless overridden via the xref:{link-postgresql-connector}#postgresql-property-transaction-topic[`transaction.topic`] option,
transaction events are written to the topic named `_database.server.name_.transaction`.
Unless overridden via the xref:postgresql-property-topic-transaction[`topic.transaction`] option,
transaction events are written to the topic named xref:postgresql-property-database-server-name[`_<database.server.name>_`]`.transaction`.
.Change data event enrichment
@ -2566,7 +2566,7 @@ endif::product[]
// Title: Description of {prodname} PostgreSQL connector configuration properties
// ModuleID: descriptions-of-debezium-postgresql-connector-configuration-properties
[[postgresql-connector-properties]]
=== Connector configuration properties
=== Connector properties
The {prodname} PostgreSQL connector has many configuration properties that you can use to achieve the right connector behavior for your application. Many properties have default values. Information about the properties is organized as follows:
@ -2654,8 +2654,8 @@ If the publication already exists, either for all tables or configured with a su
|No default
|Logical name that identifies and provides a namespace for the particular PostgreSQL database server or cluster in which {prodname} is capturing changes.
The logical name should be unique across all other connectors, since it is used as a topic name prefix for all Kafka topics that receive records from this connector.
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name.
+
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name. +
+
[WARNING]
====
Do not change the value of this property.
@ -3060,14 +3060,6 @@ Heartbeat messages are useful for monitoring whether the connector is receiving
+
Heartbeat messages are needed when there are many updates in a database that is being tracked but only a tiny number of updates are related to the table(s) and schema(s) for which the connector is capturing changes. In this situation, the connector reads from the database transaction log as usual but rarely emits change records to Kafka. This means that no offset updates are committed to Kafka and the connector does not have an opportunity to send the latest retrieved LSN to the database. The database retains WAL files that contain events that have already been processed by the connector. Sending heartbeat messages enables the connector to send the latest retrieved LSN to the database, which allows the database to reclaim disk space being used by no longer needed WAL files.
|[[postgresql-property-heartbeat-topics-prefix]]<<postgresql-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_<heartbeat.topics.prefix>_._<server.name>_ +
+
For example, if the database server name is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[postgresql-property-heartbeat-action-query]]<<postgresql-property-heartbeat-action-query, `+heartbeat.action.query+`>>
|No default
|Specifies a query that the connector executes on the source database when the connector sends a heartbeat message. +
@ -3124,10 +3116,6 @@ If the setting of `unavailable.value.placeholder` starts with the `hex:` prefix
|`false`
|Determines whether the connector generates events with transaction boundaries and enriches change event envelopes with transaction metadata. Specify `true` if you want the connector to do this. See xref:{link-postgresql-connector}#postgresql-transaction-metadata[Transaction metadata] for details.
|[[postgresql-property-transaction-topic]]<<postgresql-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[postgresql-property-retriable-restart-connector-wait-ms]]<<postgresql-property-retriable-restart-connector-wait-ms, `+retriable.restart.connector.wait.ms+`>> +
|10000 (10 seconds)
|The number of milliseconds to wait before restarting a connector after a retriable error occurs.
@ -3157,6 +3145,42 @@ Adjust the chunk size to a value that provides the best performance in your envi
The XMIN value provides the lower bounds of where a new replication slot could start from.
The default value of `0` disables tracking XMIN tracking.
|[[postgresql-property-topic-naming-strategy]]<<postgresql-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[postgresql-property-topic-delimiter]]<<postgresql-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[postgresql-property-topic-prefix]]<<postgresql-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:postgresql-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:postgresql-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[postgresql-property-topic-cache-size]]<<postgresql-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[postgresql-property-topic-heartbeat-prefix]]<<postgresql-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[postgresql-property-topic-transaction]]<<postgresql-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===
[id="postgresql-pass-through-properties"]

View File

@ -1105,8 +1105,8 @@ The following example shows a typical transaction boundary message:
}
----
Unless overridden via the xref:{link-sqlserver-connector}#sqlserver-property-transaction-topic[`transaction.topic`] option,
transaction events are written to the topic named `_database.server.name_.transaction`.
Unless overridden via the xref:sqlserver-property-topic-transaction[`topic.transaction`] option,
transaction events are written to the topic named xref:sqlserver-property-database-server-name[`_<database.server.name>_`]`.transaction`.
//Type: concept
//ModuleID: change-data-event-enrichment
@ -2088,8 +2088,8 @@ endif::community[]
|No default
|Logical name that identifies and provides a namespace for the SQL Server database server that you want {prodname} to capture.
The logical name should be unique across all other connectors, since it is used as the prefix for all Kafka topic names that receive records from this connector.
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name.
+
Only alphanumeric characters, hyphens, dots and underscores must be used in the database server logical name. +
+
[WARNING]
====
Do not change the value of this property.
@ -2371,11 +2371,6 @@ This may result in more change events to be re-sent after a connector restart.
Set this parameter to `0` to not send heartbeat messages at all. +
Disabled by default.
|[[sqlserver-property-heartbeat-topics-prefix]]<<sqlserver-property-heartbeat-topics-prefix, `+heartbeat.topics.prefix+`>>
|`__debezium-heartbeat`
|Controls the naming of the topic to which heartbeat messages are sent. +
The topic is named according to the pattern `<heartbeat.topics.prefix>.<server.name>`.
|[[sqlserver-property-snapshot-delay-ms]]<<sqlserver-property-snapshot-delay-ms, `+snapshot.delay.ms+`>>
|No default
|An interval in milli-seconds that the connector should wait before taking a snapshot after starting up; +
@ -2444,12 +2439,6 @@ See xref:{link-avro-serialization}#avro-naming[Avro naming] for more details.
|`false`
|When set to `true` {prodname} generates events with transaction boundaries and enriches data events envelope with transaction metadata.
|[[sqlserver-property-transaction-topic]]<<sqlserver-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
For more information, see xref:sqlserver-transaction-metadata[Transaction Metadata].
|[[sqlserver-property-retriable-restart-connector-wait-ms]]<<sqlserver-property-retriable-restart-connector-wait-ms, `+retriable.restart.connector.wait.ms+`>> +
|10000 (10 seconds)
|The number of milli-seconds to wait before restarting a connector after a retriable error occurs.
@ -2488,6 +2477,45 @@ When set to a value greater than zero, the connector uses the n-th LSN specified
|[[sqlserver-property-incremental-snapshot-option-recompile]]<<sqlserver-property-incremental-snapshot-option-recompile, `+incremental.snapshot.option.recompile+`>>
|`false`
|Uses OPTION(RECOMPILE) query option to all SELECT statements used during an incremental snapshot. This can help to solve parameter sniffing issues that may occur but can cause increased CPU load on the source database, depending on the frequency of query execution.
|[[sqlserver-property-topic-naming-strategy]]<<sqlserver-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[sqlserver-property-topic-delimiter]]<<sqlserver-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[sqlserver-property-topic-prefix]]<<sqlserver-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:sqlserver-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:sqlserver-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[sqlserver-property-topic-cache-size]]<<sqlserver-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[sqlserver-property-topic-heartbeat-prefix]]<<sqlserver-property-topic-heartbeat-prefix, `+topic.heartbeat.prefix+`>>
|`__debezium-heartbeat`
|Controls the name of the topic to which the connector sends heartbeat messages. The topic name has this pattern: +
+
_topic.heartbeat.prefix_._topic.prefix_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `__debezium-heartbeat.fulfillment`.
|[[sqlserver-property-topic-transaction]]<<sqlserver-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
For more information, see xref:sqlserver-transaction-metadata[Transaction Metadata].
|===
[id="debezium-sqlserver-connector-database-history-configuration-properties"]

View File

@ -128,7 +128,7 @@ If the data source does not provide {prodname} with the event time, then the fie
}
----
Unless overridden via the xref:vitess-property-transaction-topic[`transaction.topic`] option,
Unless overridden via the xref:vitess-property-topic-transaction[`topic.transaction`] option,
the connector emits transaction events to the xref:vitess-property-database-server-name[`_<database.server.name>_`]`.transaction` topic.
.Change data event enrichment
@ -1308,10 +1308,6 @@ By default, no operations are skipped.
|`false`
|Determines whether the connector generates events with transaction boundaries and enriches change event envelopes with transaction metadata. Specify `true` if you want the connector to do this. See xref:vitess-transaction-metadata[Transaction metadata] for details.
|[[vitess-property-transaction-topic]]<<vitess-property-transaction-topic, `transaction.topic`>>
|`${database.server.name}.transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The placeholder `${database.server.name}` can be used for referring to the connector's logical name; defaults to `${database.server.name}.transaction`, for example `dbserver1.transaction`.
|[[vitess-property-keepalive-interval-ms]]<<vitess-property-keepalive-interval-ms, `+vitess.keepalive.interval.ms+`>>
|`Long.MAX_VALUE`
|Control the interval between periodic gPRC keepalive pings for VStream. Defaults to `Long.MAX_VALUE` (disabled).
@ -1354,6 +1350,33 @@ _keyspaceName_._tableName_._columnName_
See xref:vitess-data-types[how Vitess connectors map data types] for the list of Vitess-specific data type names.
|[[vitess-property-topic-naming-strategy]]<<vitess-property-topic-naming-strategy, `topic.naming.strategy`>>
|`io.debezium.schema.SchemaTopicNamingStrategy`
|The name of the TopicNamingStrategy class that should be used to determine the topic name for data change, schema change, transaction, heartbeat event etc., defaults to `SchemaTopicNamingStrategy`.
|[[vitess-property-topic-delimiter]]<<vitess-property-topic-delimiter, `topic.delimiter`>>
|`.`
|Specify the delimiter for topic name, defaults to `.`.
|[[vitess-property-topic-prefix]]<<vitess-property-topic-prefix, `topic.prefix`>>
|`${database.server.name}`
|The name of the prefix to be used for all topics, defaults to xref:vitess-property-database-server-name[`${database.server.name}`].
[NOTE]
====
Once specify the prefix value to this property, the xref:vitess-property-database-server-name[`${database.server.name}`] will not play the prefix role of all topics.
====
|[[vitess-property-topic-cache-size]]<<vitess-property-topic-cache-size, `topic.cache.size`>>
|`10000`
|The size used for holding the topic names in bounded concurrent hash map. This cache will help to determine the topic name corresponding to a given data collection.
|[[vitess-property-topic-transaction]]<<vitess-property-topic-transaction, `topic.transaction`>>
|`transaction`
|Controls the name of the topic to which the connector sends transaction metadata messages. The topic name has this pattern: +
+
_topic.prefix_._topic.transaction_ +
+
For example, if the database server name or topic prefix is `fulfillment`, the default topic name is `fulfillment.transaction`.
|===