Class: Google::Apis::SpannerV1::PartitionEventRecord
- Inherits:
-
Object
- Object
- Google::Apis::SpannerV1::PartitionEventRecord
- Includes:
- Core::Hashable, Core::JsonObjectSupport
- Defined in:
- lib/google/apis/spanner_v1/classes.rb,
lib/google/apis/spanner_v1/representations.rb,
lib/google/apis/spanner_v1/representations.rb
Overview
A partition event record describes key range changes for a change stream partition. The changes to a row defined by its primary key can be captured in one change stream partition for a specific time range, and then be captured in a different change stream partition for a different time range. This movement of key ranges across change stream partitions is a reflection of activities, such as Spanner's dynamic splitting and load balancing, etc. Processing this event is needed if users want to guarantee processing of the changes for any key in timestamp order. If time ordered processing of changes for a primary key is not needed, this event can be ignored. To guarantee time ordered processing for each primary key, if the event describes move-ins, the reader of this partition needs to wait until the readers of the source partitions have processed all records with timestamps <= this PartitionEventRecord. commit_timestamp, before advancing beyond this PartitionEventRecord. If the event describes move-outs, the reader can notify the readers of the destination partitions that they can continue processing.
Instance Attribute Summary collapse
-
#commit_timestamp ⇒ String
Indicates the commit timestamp at which the key range change occurred.
-
#move_in_events ⇒ Array<Google::Apis::SpannerV1::MoveInEvent>
Set when one or more key ranges are moved into the change stream partition identified by partition_token.
-
#move_out_events ⇒ Array<Google::Apis::SpannerV1::MoveOutEvent>
Set when one or more key ranges are moved out of the change stream partition identified by partition_token.
-
#partition_token ⇒ String
Unique partition identifier describing the partition this event occurred on.
-
#record_sequence ⇒ String
Record sequence numbers are unique and monotonically increasing (but not necessarily contiguous) for a specific timestamp across record types in the same partition.
Instance Method Summary collapse
-
#initialize(**args) ⇒ PartitionEventRecord
constructor
A new instance of PartitionEventRecord.
-
#update!(**args) ⇒ Object
Update properties of this object.
Constructor Details
#initialize(**args) ⇒ PartitionEventRecord
Returns a new instance of PartitionEventRecord.
5101 5102 5103 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5101 def initialize(**args) update!(**args) end |
Instance Attribute Details
#commit_timestamp ⇒ String
Indicates the commit timestamp at which the key range change occurred.
DataChangeRecord.commit_timestamps, PartitionStartRecord.start_timestamps,
PartitionEventRecord.commit_timestamps, and PartitionEndRecord.end_timestamps
can have the same value in the same partition.
Corresponds to the JSON property commitTimestamp
5051 5052 5053 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5051 def @commit_timestamp end |
#move_in_events ⇒ Array<Google::Apis::SpannerV1::MoveInEvent>
Set when one or more key ranges are moved into the change stream partition
identified by partition_token. Example: Two key ranges are moved into
partition (P1) from partition (P2) and partition (P3) in a single transaction
at timestamp T. The PartitionEventRecord returned in P1 will reflect the move
as: PartitionEventRecord commit_timestamp: T partition_token: "P1"
move_in_events source_partition_token: "P2" move_in_events
source_partition_token: "P3" The PartitionEventRecord returned in P2 will
reflect the move as: PartitionEventRecord commit_timestamp: T
partition_token: "P2" move_out_events destination_partition_token: "P1"
The PartitionEventRecord returned in P3 will reflect the move as:
PartitionEventRecord commit_timestamp: T partition_token: "P3"
move_out_events destination_partition_token: "P1"
Corresponds to the JSON property moveInEvents
5067 5068 5069 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5067 def move_in_events @move_in_events end |
#move_out_events ⇒ Array<Google::Apis::SpannerV1::MoveOutEvent>
Set when one or more key ranges are moved out of the change stream partition
identified by partition_token. Example: Two key ranges are moved out of
partition (P1) to partition (P2) and partition (P3) in a single transaction at
timestamp T. The PartitionEventRecord returned in P1 will reflect the move as:
PartitionEventRecord commit_timestamp: T partition_token: "P1"
move_out_events destination_partition_token: "P2" move_out_events
destination_partition_token: "P3" The PartitionEventRecord returned in P2
will reflect the move as: PartitionEventRecord commit_timestamp: T
partition_token: "P2" move_in_events source_partition_token: "P1" The
PartitionEventRecord returned in P3 will reflect the move as:
PartitionEventRecord commit_timestamp: T partition_token: "P3"
move_in_events source_partition_token: "P1"
Corresponds to the JSON property moveOutEvents
5083 5084 5085 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5083 def move_out_events @move_out_events end |
#partition_token ⇒ String
Unique partition identifier describing the partition this event occurred on.
partition_token is equal to the partition token of the change stream partition
currently queried to return this PartitionEventRecord.
Corresponds to the JSON property partitionToken
5090 5091 5092 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5090 def partition_token @partition_token end |
#record_sequence ⇒ String
Record sequence numbers are unique and monotonically increasing (but not
necessarily contiguous) for a specific timestamp across record types in the
same partition. To guarantee ordered processing, the reader should process
records (of potentially different types) in record_sequence order for a
specific timestamp in the same partition.
Corresponds to the JSON property recordSequence
5099 5100 5101 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5099 def record_sequence @record_sequence end |
Instance Method Details
#update!(**args) ⇒ Object
Update properties of this object
5106 5107 5108 5109 5110 5111 5112 |
# File 'lib/google/apis/spanner_v1/classes.rb', line 5106 def update!(**args) @commit_timestamp = args[:commit_timestamp] if args.key?(:commit_timestamp) @move_in_events = args[:move_in_events] if args.key?(:move_in_events) @move_out_events = args[:move_out_events] if args.key?(:move_out_events) @partition_token = args[:partition_token] if args.key?(:partition_token) @record_sequence = args[:record_sequence] if args.key?(:record_sequence) end |