Module: Google::Cloud::Bigtable::MutationOperations
- Included in:
- Table
- Defined in:
- lib/google/cloud/bigtable/mutation_operations.rb
Overview
MutationOperations
Collection of mutations apis.
- Mutate single row
- Mutate multiple rows
- Read modify and write row atomically on the server
- Check and mutate row
Instance Method Summary collapse
-
#check_and_mutate_row(key, predicate, on_match: nil, otherwise: nil) ⇒ Boolean
Mutates a row atomically based on the output of a predicate Reader filter.
-
#mutate_row(entry) ⇒ Boolean
Mutate row.
-
#mutate_rows(entries) ⇒ Array<Google::Bigtable::V2::MutateRowsResponse::Entry>
Mutates multiple rows in a batch.
-
#new_mutation_entry(row_key = nil) ⇒ Google::Cloud::Bigtable::MutationEntry
Create instance of mutation_entry.
-
#new_read_modify_write_rule(family, qualifier) ⇒ Google::Cloud::Bigtable::ReadModifyWriteRule
Create instance of ReadModifyWriteRule to append or increment value of the cell qualifier.
-
#read_modify_write_row(key, rules) ⇒ Google::Cloud::Bigtable::Row
Modifies a row atomically on the server.
-
#sample_row_keys ⇒ :yields: sample_row_key
Read sample row keys.
Instance Method Details
#check_and_mutate_row(key, predicate, on_match: nil, otherwise: nil) ⇒ Boolean
Mutates a row atomically based on the output of a predicate Reader filter.
NOTE: Condition predicate filter is not supported.
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 234 def check_and_mutate_row \ key, predicate, on_match: nil, otherwise: nil true_mutations = on_match.mutations if on_match false_mutations = otherwise.mutations if otherwise response = client.check_and_mutate_row( path, key, predicate_filter: predicate.to_grpc, true_mutations: true_mutations, false_mutations: false_mutations, app_profile_id: @app_profile_id ) response.predicate_matched end |
#mutate_row(entry) ⇒ Boolean
Mutate row.
Mutates a row atomically. Cells already present in the row are left unchanged unless explicitly changed by +mutation+. Changes to be atomically applied to the specified row. Entries are applied in order, meaning that earlier mutations can be masked by later ones. Must contain at least one mutation entry and at most 100000.
75 76 77 78 79 80 81 82 83 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 75 def mutate_row entry client.mutate_row( path, entry.row_key, entry.mutations, app_profile_id: @app_profile_id ) true end |
#mutate_rows(entries) ⇒ Array<Google::Bigtable::V2::MutateRowsResponse::Entry>
Mutates multiple rows in a batch. Each individual row is mutated atomically as in MutateRow, but the entire batch is not executed atomically.
109 110 111 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 109 def mutate_rows entries RowsMutator.new(self, entries).apply_mutations end |
#new_mutation_entry(row_key = nil) ⇒ Google::Cloud::Bigtable::MutationEntry
Create instance of mutation_entry
303 304 305 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 303 def new_mutation_entry row_key = nil Google::Cloud::Bigtable::MutationEntry.new(row_key) end |
#new_read_modify_write_rule(family, qualifier) ⇒ Google::Cloud::Bigtable::ReadModifyWriteRule
Create instance of ReadModifyWriteRule to append or increment value of the cell qualifier.
332 333 334 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 332 def new_read_modify_write_rule family, qualifier Google::Cloud::Bigtable::ReadModifyWriteRule.new(family, qualifier) end |
#read_modify_write_row(key, rules) ⇒ Google::Cloud::Bigtable::Row
Modifies a row atomically on the server. The method reads the latest existing timestamp and value from the specified columns and writes a new entry based on pre-defined read/modify/write rules. The new value for the timestamp is the greater of the existing timestamp or the current server time. The method returns the new contents of all modified cells.
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 154 def read_modify_write_row key, rules res_row = client.read_modify_write_row( path, key, Array(rules).map(&:to_grpc), app_profile_id: @app_profile_id ).row row = Row.new(res_row.key) res_row.families.each do |family| family.columns.each do |column| column.cells.each do |cell| row_cell = Row::Cell.new( family.name, column.qualifier, cell., cell.value, cell.labels ) row.cells[family.name] << row_cell end end end row end |
#sample_row_keys ⇒ :yields: sample_row_key
Read sample row keys.
Returns a sample of row keys in the table. The returned row keys will delimit contiguous sections of the table of approximately equal size, which can be used to break up the data for distributed tasks like mapreduces.
274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/google/cloud/bigtable/mutation_operations.rb', line 274 def sample_row_keys return enum_for(:sample_row_keys) unless block_given? response = client.sample_row_keys( path, app_profile_id: @app_profile_id ) response.each do |grpc| yield SampleRowKey.from_grpc(grpc) end end |