Class: Google::Apis::SpannerV1::PartitionEventRecord

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ PartitionEventRecord

Returns a new instance of PartitionEventRecord.



5210
5211
5212
# File 'lib/google/apis/spanner_v1/classes.rb', line 5210

def initialize(**args)
   update!(**args)
end

Instance Attribute Details

#commit_timestampString

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

Returns:

  • (String)


5160
5161
5162
# File 'lib/google/apis/spanner_v1/classes.rb', line 5160

def commit_timestamp
  @commit_timestamp
end

#move_in_eventsArray<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



5176
5177
5178
# File 'lib/google/apis/spanner_v1/classes.rb', line 5176

def move_in_events
  @move_in_events
end

#move_out_eventsArray<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



5192
5193
5194
# File 'lib/google/apis/spanner_v1/classes.rb', line 5192

def move_out_events
  @move_out_events
end

#partition_tokenString

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

Returns:

  • (String)


5199
5200
5201
# File 'lib/google/apis/spanner_v1/classes.rb', line 5199

def partition_token
  @partition_token
end

#record_sequenceString

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

Returns:

  • (String)


5208
5209
5210
# File 'lib/google/apis/spanner_v1/classes.rb', line 5208

def record_sequence
  @record_sequence
end

Instance Method Details

#update!(**args) ⇒ Object

Update properties of this object



5215
5216
5217
5218
5219
5220
5221
# File 'lib/google/apis/spanner_v1/classes.rb', line 5215

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