package v1
- Alphabetic
- Public
- Protected
Type Members
- sealed abstract class CDCOperation extends GeneratedEnum
Type of operation performed on vertices in this state entry.
Type of operation performed on vertices in this state entry. Ordered by application precedence: DELETE → SPLIT → UNION → APPEND → ALIVE.
- final case class CDCSequence(state: Seq[CDCState] = _root_.scala.Seq.empty, commitId: ByteString = _root_.com.google.protobuf.ByteString.EMPTY, commitTimestamp: Long = 0L, unknownFields: UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty) extends GeneratedMessage with Updatable[CDCSequence] with Product with Serializable
A grouped set of all operations that affect a cluster of related vector_ids in a single processing run.
A grouped set of all operations that affect a cluster of related vector_ids in a single processing run.
Operations within
stateare ordered by type: DELETE → SPLIT → UNION → APPEND → ALIVE. All entries share connected vector_ids — if operation A references vector_id X and operation B references vector_id X (as either vector_id or prev_vector_id), they belong to the same CDCSequence.Example — Ultimate scenario (one Kafka message): state = [ { operation: DELETE, prev_vector_id: a, user_id: [ifv_dead] }, { operation: SPLIT, vector_id: d, prev_vector_id: a, user_id: [ifv1] }, { operation: SPLIT, vector_id: e, prev_vector_id: b, user_id: [ifv3] }, { operation: UNION, vector_id: c, prev_vector_id: a, user_id: [ifv2] }, { operation: UNION, vector_id: c, prev_vector_id: b, user_id: [ifv4] }, { operation: APPEND, vector_id: c, user_id: [ifv_new] }, ]
Example — ALIVE heartbeat (separate message, no structural changes): state = [ { operation: ALIVE, vector_id: a }, ]
- state
Chronologically ordered state changes (DELETE → SPLIT → UNION → APPEND → ALIVE)
- commitId
Meta information for debugging and metrics, shows which run the changes were pulled from
- commitTimestamp
Run batch processing completion time
- Annotations
- @SerialVersionUID()
- final case class CDCState(vectorId: Option[ByteString] = _root_.scala.None, prevVectorId: Option[ByteString] = _root_.scala.None, userId: Seq[ByteString] = _root_.scala.Seq.empty, operation: CDCOperation = io.bidmachine.protobuf.vectorid.cdc.v1.CDCOperation.CDC_OPERATION_UNSPECIFIED, unknownFields: UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty) extends GeneratedMessage with Updatable[CDCState] with Product with Serializable
A single state change entry within a CDC message.
A single state change entry within a CDC message. Represents one operation affecting a set of IFA/IFV vertices.
Field presence by operation: DELETE: prev_vector_id + user_id SPLIT: vector_id + prev_vector_id + user_id UNION: vector_id + prev_vector_id + user_id APPEND: vector_id + user_id ALIVE: vector_id only (TTL heartbeat, no user_id changes)
- vectorId
Vector UUID after the operation. Present for APPEND, UNION, SPLIT, ALIVE. Absent for DELETE.
- prevVectorId
Previous vector UUID before the operation. Present for DELETE, UNION, SPLIT. Absent for APPEND, ALIVE.
- userId
List of IFA/IFV source IDs affected by this state change. Present for DELETE, SPLIT, UNION, APPEND. Empty for ALIVE (no mapping changes).
- operation
The operation that produced this state change
- Annotations
- @SerialVersionUID()
- final case class VectorIdStateSnapshot(vectorId: ByteString = _root_.com.google.protobuf.ByteString.EMPTY, prevVectorId: Seq[ByteString] = _root_.scala.Seq.empty, userId: Seq[ByteString] = _root_.scala.Seq.empty, unknownFields: UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty) extends GeneratedMessage with Updatable[VectorIdStateSnapshot] with Product with Serializable
The state we broadcast for streaming API Examples: Split: prev run: vector_id = 1; prev_vector_id = [ ]; user_id = [a, b, c, d, e] - original entity curr run: vector_id = 11; prev_vector_id = [1]; user_id = [a, b, c] - a message of split curr run: vector_id = 12; prev_vector_id = [1]; user_id = [d, e] - another message of split
The state we broadcast for streaming API Examples: Split: prev run: vector_id = 1; prev_vector_id = [ ]; user_id = [a, b, c, d, e] - original entity curr run: vector_id = 11; prev_vector_id = [1]; user_id = [a, b, c] - a message of split curr run: vector_id = 12; prev_vector_id = [1]; user_id = [d, e] - another message of split
Merge: prev run: vector_id = 11; prev_vector_id = [1]; user_id = [a, b] - original entity prev run: vector_id = 39; prev_vector_id = [3]; user_id = [e, f] - original entity curr run: vector_id = 45; prev_vector_id = [11, 39]; user_id = [a, b, e, f] - a message of merge
Append: prev run: vector_id = 15; prev_vector_id = [1]; user_id = [a, b] - original entity curr run: vector_id = 15; prev_vector_id = [15]; user_id = [a, b, h] - a message of append
Create: curr run: vector_id = 99; prev_vector_id = [ ]; user_id = [e, i, o] - a message of create
- vectorId
An actual vector id
- prevVectorId
List of previous vector ids, can be empty
- userId
List of source ids (ifa/ifv/...), can't be empty
- Annotations
- @SerialVersionUID()
Value Members
- object CDCOperation extends GeneratedEnumCompanion[CDCOperation]
- object CDCSequence extends GeneratedMessageCompanion[CDCSequence]
- object CDCState extends GeneratedMessageCompanion[CDCState]
- object CdcProto extends GeneratedFileObject
- object VectorIdStateSnapshot extends GeneratedMessageCompanion[VectorIdStateSnapshot]