google-cloud-bigtable 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +10 -0
  3. data/LICENSE +201 -0
  4. data/README.md +65 -0
  5. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_pb.rb +139 -0
  6. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_services_pb.rb +85 -0
  7. data/lib/google/bigtable/admin/v2/bigtable_table_admin_pb.rb +137 -0
  8. data/lib/google/bigtable/admin/v2/bigtable_table_admin_services_pb.rb +117 -0
  9. data/lib/google/bigtable/admin/v2/common_pb.rb +24 -0
  10. data/lib/google/bigtable/admin/v2/instance_pb.rb +72 -0
  11. data/lib/google/bigtable/admin/v2/table_pb.rb +88 -0
  12. data/lib/google/bigtable/v2/bigtable_pb.rb +109 -0
  13. data/lib/google/bigtable/v2/bigtable_services_pb.rb +67 -0
  14. data/lib/google/bigtable/v2/data_pb.rb +155 -0
  15. data/lib/google/cloud/bigtable/admin/credentials.rb +26 -0
  16. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client.rb +1417 -0
  17. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client_config.json +123 -0
  18. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client.rb +1079 -0
  19. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client_config.json +109 -0
  20. data/lib/google/cloud/bigtable/admin/v2/credentials.rb +50 -0
  21. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_instance_admin.rb +279 -0
  22. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_table_admin.rb +353 -0
  23. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/instance.rb +194 -0
  24. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/table.rb +209 -0
  25. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/iam_policy.rb +62 -0
  26. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/policy.rb +127 -0
  27. data/lib/google/cloud/bigtable/admin/v2/doc/google/longrunning/operations.rb +92 -0
  28. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/any.rb +124 -0
  29. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/duration.rb +90 -0
  30. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/empty.rb +28 -0
  31. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/field_mask.rb +223 -0
  32. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/timestamp.rb +106 -0
  33. data/lib/google/cloud/bigtable/admin/v2/doc/google/rpc/status.rb +83 -0
  34. data/lib/google/cloud/bigtable/admin/v2.rb +200 -0
  35. data/lib/google/cloud/bigtable/admin.rb +196 -0
  36. data/lib/google/cloud/bigtable/app_profile/job.rb +102 -0
  37. data/lib/google/cloud/bigtable/app_profile/list.rb +159 -0
  38. data/lib/google/cloud/bigtable/app_profile.rb +373 -0
  39. data/lib/google/cloud/bigtable/chunk_processor.rb +253 -0
  40. data/lib/google/cloud/bigtable/cluster/job.rb +92 -0
  41. data/lib/google/cloud/bigtable/cluster/list.rb +169 -0
  42. data/lib/google/cloud/bigtable/cluster.rb +264 -0
  43. data/lib/google/cloud/bigtable/column_family.rb +280 -0
  44. data/lib/google/cloud/bigtable/column_range.rb +186 -0
  45. data/lib/google/cloud/bigtable/convert.rb +75 -0
  46. data/lib/google/cloud/bigtable/credentials.rb +24 -0
  47. data/lib/google/cloud/bigtable/errors.rb +35 -0
  48. data/lib/google/cloud/bigtable/gc_rule.rb +215 -0
  49. data/lib/google/cloud/bigtable/instance/cluster_map.rb +70 -0
  50. data/lib/google/cloud/bigtable/instance/job.rb +97 -0
  51. data/lib/google/cloud/bigtable/instance/list.rb +159 -0
  52. data/lib/google/cloud/bigtable/instance.rb +921 -0
  53. data/lib/google/cloud/bigtable/longrunning_job.rb +105 -0
  54. data/lib/google/cloud/bigtable/mutation_entry.rb +244 -0
  55. data/lib/google/cloud/bigtable/mutation_operations.rb +338 -0
  56. data/lib/google/cloud/bigtable/policy.rb +163 -0
  57. data/lib/google/cloud/bigtable/project.rb +580 -0
  58. data/lib/google/cloud/bigtable/read_modify_write_rule.rb +129 -0
  59. data/lib/google/cloud/bigtable/read_operations.rb +345 -0
  60. data/lib/google/cloud/bigtable/row.rb +125 -0
  61. data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +539 -0
  62. data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +108 -0
  63. data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +570 -0
  64. data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +273 -0
  65. data/lib/google/cloud/bigtable/row_filter.rb +593 -0
  66. data/lib/google/cloud/bigtable/row_range.rb +174 -0
  67. data/lib/google/cloud/bigtable/rows_mutator.rb +120 -0
  68. data/lib/google/cloud/bigtable/rows_reader.rb +196 -0
  69. data/lib/google/cloud/bigtable/sample_row_key.rb +82 -0
  70. data/lib/google/cloud/bigtable/service.rb +817 -0
  71. data/lib/google/cloud/bigtable/table/cluster_state.rb +93 -0
  72. data/lib/google/cloud/bigtable/table/column_family_map.rb +68 -0
  73. data/lib/google/cloud/bigtable/table/list.rb +147 -0
  74. data/lib/google/cloud/bigtable/table.rb +676 -0
  75. data/lib/google/cloud/bigtable/v2/bigtable_client.rb +579 -0
  76. data/lib/google/cloud/bigtable/v2/bigtable_client_config.json +65 -0
  77. data/lib/google/cloud/bigtable/v2/credentials.rb +45 -0
  78. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/bigtable.rb +286 -0
  79. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/data.rb +492 -0
  80. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/any.rb +124 -0
  81. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/wrappers.rb +89 -0
  82. data/lib/google/cloud/bigtable/v2/doc/google/rpc/status.rb +83 -0
  83. data/lib/google/cloud/bigtable/v2.rb +132 -0
  84. data/lib/google/cloud/bigtable/value_range.rb +175 -0
  85. data/lib/google/cloud/bigtable/version.rb +22 -0
  86. data/lib/google/cloud/bigtable.rb +223 -0
  87. data/lib/google-cloud-bigtable.rb +167 -0
  88. metadata +283 -0
@@ -0,0 +1,65 @@
1
+ {
2
+ "interfaces": {
3
+ "google.bigtable.v2.Bigtable": {
4
+ "retry_codes": {
5
+ "idempotent": [
6
+ "DEADLINE_EXCEEDED",
7
+ "UNAVAILABLE"
8
+ ],
9
+ "non_idempotent": []
10
+ },
11
+ "retry_params": {
12
+ "default": {
13
+ "initial_retry_delay_millis": 100,
14
+ "retry_delay_multiplier": 1.3,
15
+ "max_retry_delay_millis": 60000,
16
+ "initial_rpc_timeout_millis": 20000,
17
+ "rpc_timeout_multiplier": 1.0,
18
+ "max_rpc_timeout_millis": 20000,
19
+ "total_timeout_millis": 600000
20
+ },
21
+ "streaming": {
22
+ "initial_retry_delay_millis": 100,
23
+ "retry_delay_multiplier": 1.3,
24
+ "max_retry_delay_millis": 60000,
25
+ "initial_rpc_timeout_millis": 20000,
26
+ "rpc_timeout_multiplier": 1.0,
27
+ "max_rpc_timeout_millis": 20000,
28
+ "total_timeout_millis": 3600000
29
+ }
30
+ },
31
+ "methods": {
32
+ "ReadRows": {
33
+ "timeout_millis": 3600000,
34
+ "retry_codes_name": "idempotent",
35
+ "retry_params_name": "streaming"
36
+ },
37
+ "SampleRowKeys": {
38
+ "timeout_millis": 60000,
39
+ "retry_codes_name": "idempotent",
40
+ "retry_params_name": "default"
41
+ },
42
+ "MutateRow": {
43
+ "timeout_millis": 60000,
44
+ "retry_codes_name": "idempotent",
45
+ "retry_params_name": "default"
46
+ },
47
+ "MutateRows": {
48
+ "timeout_millis": 60000,
49
+ "retry_codes_name": "idempotent",
50
+ "retry_params_name": "default"
51
+ },
52
+ "CheckAndMutateRow": {
53
+ "timeout_millis": 60000,
54
+ "retry_codes_name": "non_idempotent",
55
+ "retry_params_name": "default"
56
+ },
57
+ "ReadModifyWriteRow": {
58
+ "timeout_millis": 60000,
59
+ "retry_codes_name": "non_idempotent",
60
+ "retry_params_name": "default"
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,45 @@
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "googleauth"
16
+
17
+ module Google
18
+ module Cloud
19
+ module Bigtable
20
+ module V2
21
+ class Credentials < Google::Auth::Credentials
22
+ SCOPE = [
23
+ "https://www.googleapis.com/auth/bigtable.data",
24
+ "https://www.googleapis.com/auth/bigtable.data.readonly",
25
+ "https://www.googleapis.com/auth/cloud-bigtable.data",
26
+ "https://www.googleapis.com/auth/cloud-bigtable.data.readonly",
27
+ "https://www.googleapis.com/auth/cloud-platform",
28
+ "https://www.googleapis.com/auth/cloud-platform.read-only"
29
+ ].freeze
30
+ PATH_ENV_VARS = %w(BIGTABLE_CREDENTIALS
31
+ BIGTABLE_KEYFILE
32
+ GOOGLE_CLOUD_CREDENTIALS
33
+ GOOGLE_CLOUD_KEYFILE
34
+ GCLOUD_KEYFILE)
35
+ JSON_ENV_VARS = %w(BIGTABLE_CREDENTIALS_JSON
36
+ BIGTABLE_KEYFILE_JSON
37
+ GOOGLE_CLOUD_CREDENTIALS_JSON
38
+ GOOGLE_CLOUD_KEYFILE_JSON
39
+ GCLOUD_KEYFILE_JSON)
40
+ DEFAULT_PATHS = ["~/.config/gcloud/application_default_credentials.json"]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,286 @@
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Bigtable
17
+ module V2
18
+ # Request message for Bigtable.ReadRows.
19
+ # @!attribute [rw] table_name
20
+ # @return [String]
21
+ # The unique name of the table from which to read.
22
+ # Values are of the form
23
+ # +projects/<project>/instances/<instance>/tables/<table>+.
24
+ # @!attribute [rw] app_profile_id
25
+ # @return [String]
26
+ # This value specifies routing for replication. If not specified, the
27
+ # "default" application profile will be used.
28
+ # @!attribute [rw] rows
29
+ # @return [Google::Bigtable::V2::RowSet]
30
+ # The row keys and/or ranges to read. If not specified, reads from all rows.
31
+ # @!attribute [rw] filter
32
+ # @return [Google::Bigtable::V2::RowFilter]
33
+ # The filter to apply to the contents of the specified row(s). If unset,
34
+ # reads the entirety of each row.
35
+ # @!attribute [rw] rows_limit
36
+ # @return [Integer]
37
+ # The read will terminate after committing to N rows' worth of results. The
38
+ # default (zero) is to return all results.
39
+ class ReadRowsRequest; end
40
+
41
+ # Response message for Bigtable.ReadRows.
42
+ # @!attribute [rw] chunks
43
+ # @return [Array<Google::Bigtable::V2::ReadRowsResponse::CellChunk>]
44
+ # @!attribute [rw] last_scanned_row_key
45
+ # @return [String]
46
+ # Optionally the server might return the row key of the last row it
47
+ # has scanned. The client can use this to construct a more
48
+ # efficient retry request if needed: any row keys or portions of
49
+ # ranges less than this row key can be dropped from the request.
50
+ # This is primarily useful for cases where the server has read a
51
+ # lot of data that was filtered out since the last committed row
52
+ # key, allowing the client to skip that work on a retry.
53
+ class ReadRowsResponse
54
+ # Specifies a piece of a row's contents returned as part of the read
55
+ # response stream.
56
+ # @!attribute [rw] row_key
57
+ # @return [String]
58
+ # The row key for this chunk of data. If the row key is empty,
59
+ # this CellChunk is a continuation of the same row as the previous
60
+ # CellChunk in the response stream, even if that CellChunk was in a
61
+ # previous ReadRowsResponse message.
62
+ # @!attribute [rw] family_name
63
+ # @return [Google::Protobuf::StringValue]
64
+ # The column family name for this chunk of data. If this message
65
+ # is not present this CellChunk is a continuation of the same column
66
+ # family as the previous CellChunk. The empty string can occur as a
67
+ # column family name in a response so clients must check
68
+ # explicitly for the presence of this message, not just for
69
+ # +family_name.value+ being non-empty.
70
+ # @!attribute [rw] qualifier
71
+ # @return [Google::Protobuf::BytesValue]
72
+ # The column qualifier for this chunk of data. If this message
73
+ # is not present, this CellChunk is a continuation of the same column
74
+ # as the previous CellChunk. Column qualifiers may be empty so
75
+ # clients must check for the presence of this message, not just
76
+ # for +qualifier.value+ being non-empty.
77
+ # @!attribute [rw] timestamp_micros
78
+ # @return [Integer]
79
+ # The cell's stored timestamp, which also uniquely identifies it
80
+ # within its column. Values are always expressed in
81
+ # microseconds, but individual tables may set a coarser
82
+ # granularity to further restrict the allowed values. For
83
+ # example, a table which specifies millisecond granularity will
84
+ # only allow values of +timestamp_micros+ which are multiples of
85
+ # 1000. Timestamps are only set in the first CellChunk per cell
86
+ # (for cells split into multiple chunks).
87
+ # @!attribute [rw] labels
88
+ # @return [Array<String>]
89
+ # Labels applied to the cell by a
90
+ # {Google::Bigtable::V2::RowFilter RowFilter}. Labels are only set
91
+ # on the first CellChunk per cell.
92
+ # @!attribute [rw] value
93
+ # @return [String]
94
+ # The value stored in the cell. Cell values can be split across
95
+ # multiple CellChunks. In that case only the value field will be
96
+ # set in CellChunks after the first: the timestamp and labels
97
+ # will only be present in the first CellChunk, even if the first
98
+ # CellChunk came in a previous ReadRowsResponse.
99
+ # @!attribute [rw] value_size
100
+ # @return [Integer]
101
+ # If this CellChunk is part of a chunked cell value and this is
102
+ # not the final chunk of that cell, value_size will be set to the
103
+ # total length of the cell value. The client can use this size
104
+ # to pre-allocate memory to hold the full cell value.
105
+ # @!attribute [rw] reset_row
106
+ # @return [true, false]
107
+ # Indicates that the client should drop all previous chunks for
108
+ # +row_key+, as it will be re-read from the beginning.
109
+ # @!attribute [rw] commit_row
110
+ # @return [true, false]
111
+ # Indicates that the client can safely process all previous chunks for
112
+ # +row_key+, as its data has been fully read.
113
+ class CellChunk; end
114
+ end
115
+
116
+ # Request message for Bigtable.SampleRowKeys.
117
+ # @!attribute [rw] table_name
118
+ # @return [String]
119
+ # The unique name of the table from which to sample row keys.
120
+ # Values are of the form
121
+ # +projects/<project>/instances/<instance>/tables/<table>+.
122
+ # @!attribute [rw] app_profile_id
123
+ # @return [String]
124
+ # This value specifies routing for replication. If not specified, the
125
+ # "default" application profile will be used.
126
+ class SampleRowKeysRequest; end
127
+
128
+ # Response message for Bigtable.SampleRowKeys.
129
+ # @!attribute [rw] row_key
130
+ # @return [String]
131
+ # Sorted streamed sequence of sample row keys in the table. The table might
132
+ # have contents before the first row key in the list and after the last one,
133
+ # but a key containing the empty string indicates "end of table" and will be
134
+ # the last response given, if present.
135
+ # Note that row keys in this list may not have ever been written to or read
136
+ # from, and users should therefore not make any assumptions about the row key
137
+ # structure that are specific to their use case.
138
+ # @!attribute [rw] offset_bytes
139
+ # @return [Integer]
140
+ # Approximate total storage space used by all rows in the table which precede
141
+ # +row_key+. Buffering the contents of all rows between two subsequent
142
+ # samples would require space roughly equal to the difference in their
143
+ # +offset_bytes+ fields.
144
+ class SampleRowKeysResponse; end
145
+
146
+ # Request message for Bigtable.MutateRow.
147
+ # @!attribute [rw] table_name
148
+ # @return [String]
149
+ # The unique name of the table to which the mutation should be applied.
150
+ # Values are of the form
151
+ # +projects/<project>/instances/<instance>/tables/<table>+.
152
+ # @!attribute [rw] app_profile_id
153
+ # @return [String]
154
+ # This value specifies routing for replication. If not specified, the
155
+ # "default" application profile will be used.
156
+ # @!attribute [rw] row_key
157
+ # @return [String]
158
+ # The key of the row to which the mutation should be applied.
159
+ # @!attribute [rw] mutations
160
+ # @return [Array<Google::Bigtable::V2::Mutation>]
161
+ # Changes to be atomically applied to the specified row. Entries are applied
162
+ # in order, meaning that earlier mutations can be masked by later ones.
163
+ # Must contain at least one entry and at most 100000.
164
+ class MutateRowRequest; end
165
+
166
+ # Response message for Bigtable.MutateRow.
167
+ class MutateRowResponse; end
168
+
169
+ # Request message for BigtableService.MutateRows.
170
+ # @!attribute [rw] table_name
171
+ # @return [String]
172
+ # The unique name of the table to which the mutations should be applied.
173
+ # @!attribute [rw] app_profile_id
174
+ # @return [String]
175
+ # This value specifies routing for replication. If not specified, the
176
+ # "default" application profile will be used.
177
+ # @!attribute [rw] entries
178
+ # @return [Array<Google::Bigtable::V2::MutateRowsRequest::Entry>]
179
+ # The row keys and corresponding mutations to be applied in bulk.
180
+ # Each entry is applied as an atomic mutation, but the entries may be
181
+ # applied in arbitrary order (even between entries for the same row).
182
+ # At least one entry must be specified, and in total the entries can
183
+ # contain at most 100000 mutations.
184
+ class MutateRowsRequest
185
+ # @!attribute [rw] row_key
186
+ # @return [String]
187
+ # The key of the row to which the +mutations+ should be applied.
188
+ # @!attribute [rw] mutations
189
+ # @return [Array<Google::Bigtable::V2::Mutation>]
190
+ # Changes to be atomically applied to the specified row. Mutations are
191
+ # applied in order, meaning that earlier mutations can be masked by
192
+ # later ones.
193
+ # You must specify at least one mutation.
194
+ class Entry; end
195
+ end
196
+
197
+ # Response message for BigtableService.MutateRows.
198
+ # @!attribute [rw] entries
199
+ # @return [Array<Google::Bigtable::V2::MutateRowsResponse::Entry>]
200
+ # One or more results for Entries from the batch request.
201
+ class MutateRowsResponse
202
+ # @!attribute [rw] index
203
+ # @return [Integer]
204
+ # The index into the original request's +entries+ list of the Entry
205
+ # for which a result is being reported.
206
+ # @!attribute [rw] status
207
+ # @return [Google::Rpc::Status]
208
+ # The result of the request Entry identified by +index+.
209
+ # Depending on how requests are batched during execution, it is possible
210
+ # for one Entry to fail due to an error with another Entry. In the event
211
+ # that this occurs, the same error will be reported for both entries.
212
+ class Entry; end
213
+ end
214
+
215
+ # Request message for Bigtable.CheckAndMutateRow.
216
+ # @!attribute [rw] table_name
217
+ # @return [String]
218
+ # The unique name of the table to which the conditional mutation should be
219
+ # applied.
220
+ # Values are of the form
221
+ # +projects/<project>/instances/<instance>/tables/<table>+.
222
+ # @!attribute [rw] app_profile_id
223
+ # @return [String]
224
+ # This value specifies routing for replication. If not specified, the
225
+ # "default" application profile will be used.
226
+ # @!attribute [rw] row_key
227
+ # @return [String]
228
+ # The key of the row to which the conditional mutation should be applied.
229
+ # @!attribute [rw] predicate_filter
230
+ # @return [Google::Bigtable::V2::RowFilter]
231
+ # The filter to be applied to the contents of the specified row. Depending
232
+ # on whether or not any results are yielded, either +true_mutations+ or
233
+ # +false_mutations+ will be executed. If unset, checks that the row contains
234
+ # any values at all.
235
+ # @!attribute [rw] true_mutations
236
+ # @return [Array<Google::Bigtable::V2::Mutation>]
237
+ # Changes to be atomically applied to the specified row if +predicate_filter+
238
+ # yields at least one cell when applied to +row_key+. Entries are applied in
239
+ # order, meaning that earlier mutations can be masked by later ones.
240
+ # Must contain at least one entry if +false_mutations+ is empty, and at most
241
+ # 100000.
242
+ # @!attribute [rw] false_mutations
243
+ # @return [Array<Google::Bigtable::V2::Mutation>]
244
+ # Changes to be atomically applied to the specified row if +predicate_filter+
245
+ # does not yield any cells when applied to +row_key+. Entries are applied in
246
+ # order, meaning that earlier mutations can be masked by later ones.
247
+ # Must contain at least one entry if +true_mutations+ is empty, and at most
248
+ # 100000.
249
+ class CheckAndMutateRowRequest; end
250
+
251
+ # Response message for Bigtable.CheckAndMutateRow.
252
+ # @!attribute [rw] predicate_matched
253
+ # @return [true, false]
254
+ # Whether or not the request's +predicate_filter+ yielded any results for
255
+ # the specified row.
256
+ class CheckAndMutateRowResponse; end
257
+
258
+ # Request message for Bigtable.ReadModifyWriteRow.
259
+ # @!attribute [rw] table_name
260
+ # @return [String]
261
+ # The unique name of the table to which the read/modify/write rules should be
262
+ # applied.
263
+ # Values are of the form
264
+ # +projects/<project>/instances/<instance>/tables/<table>+.
265
+ # @!attribute [rw] app_profile_id
266
+ # @return [String]
267
+ # This value specifies routing for replication. If not specified, the
268
+ # "default" application profile will be used.
269
+ # @!attribute [rw] row_key
270
+ # @return [String]
271
+ # The key of the row to which the read/modify/write rules should be applied.
272
+ # @!attribute [rw] rules
273
+ # @return [Array<Google::Bigtable::V2::ReadModifyWriteRule>]
274
+ # Rules specifying how the specified row's contents are to be transformed
275
+ # into writes. Entries are applied in order, meaning that earlier rules will
276
+ # affect the results of later ones.
277
+ class ReadModifyWriteRowRequest; end
278
+
279
+ # Response message for Bigtable.ReadModifyWriteRow.
280
+ # @!attribute [rw] row
281
+ # @return [Google::Bigtable::V2::Row]
282
+ # A Row containing the new contents of all cells modified by the request.
283
+ class ReadModifyWriteRowResponse; end
284
+ end
285
+ end
286
+ end
@@ -0,0 +1,492 @@
1
+ # Copyright 2018 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Bigtable
17
+ module V2
18
+ # Specifies the complete (requested) contents of a single row of a table.
19
+ # Rows which exceed 256MiB in size cannot be read in full.
20
+ # @!attribute [rw] key
21
+ # @return [String]
22
+ # The unique key which identifies this row within its table. This is the same
23
+ # key that's used to identify the row in, for example, a MutateRowRequest.
24
+ # May contain any non-empty byte string up to 4KiB in length.
25
+ # @!attribute [rw] families
26
+ # @return [Array<Google::Bigtable::V2::Family>]
27
+ # May be empty, but only if the entire row is empty.
28
+ # The mutual ordering of column families is not specified.
29
+ class Row; end
30
+
31
+ # Specifies (some of) the contents of a single row/column family intersection
32
+ # of a table.
33
+ # @!attribute [rw] name
34
+ # @return [String]
35
+ # The unique key which identifies this family within its row. This is the
36
+ # same key that's used to identify the family in, for example, a RowFilter
37
+ # which sets its "family_name_regex_filter" field.
38
+ # Must match +[-_.a-zA-Z0-9]++, except that AggregatingRowProcessors may
39
+ # produce cells in a sentinel family with an empty name.
40
+ # Must be no greater than 64 characters in length.
41
+ # @!attribute [rw] columns
42
+ # @return [Array<Google::Bigtable::V2::Column>]
43
+ # Must not be empty. Sorted in order of increasing "qualifier".
44
+ class Family; end
45
+
46
+ # Specifies (some of) the contents of a single row/column intersection of a
47
+ # table.
48
+ # @!attribute [rw] qualifier
49
+ # @return [String]
50
+ # The unique key which identifies this column within its family. This is the
51
+ # same key that's used to identify the column in, for example, a RowFilter
52
+ # which sets its +column_qualifier_regex_filter+ field.
53
+ # May contain any byte string, including the empty string, up to 16kiB in
54
+ # length.
55
+ # @!attribute [rw] cells
56
+ # @return [Array<Google::Bigtable::V2::Cell>]
57
+ # Must not be empty. Sorted in order of decreasing "timestamp_micros".
58
+ class Column; end
59
+
60
+ # Specifies (some of) the contents of a single row/column/timestamp of a table.
61
+ # @!attribute [rw] timestamp_micros
62
+ # @return [Integer]
63
+ # The cell's stored timestamp, which also uniquely identifies it within
64
+ # its column.
65
+ # Values are always expressed in microseconds, but individual tables may set
66
+ # a coarser granularity to further restrict the allowed values. For
67
+ # example, a table which specifies millisecond granularity will only allow
68
+ # values of +timestamp_micros+ which are multiples of 1000.
69
+ # @!attribute [rw] value
70
+ # @return [String]
71
+ # The value stored in the cell.
72
+ # May contain any byte string, including the empty string, up to 100MiB in
73
+ # length.
74
+ # @!attribute [rw] labels
75
+ # @return [Array<String>]
76
+ # Labels applied to the cell by a {Google::Bigtable::V2::RowFilter RowFilter}.
77
+ class Cell; end
78
+
79
+ # Specifies a contiguous range of rows.
80
+ # @!attribute [rw] start_key_closed
81
+ # @return [String]
82
+ # Used when giving an inclusive lower bound for the range.
83
+ # @!attribute [rw] start_key_open
84
+ # @return [String]
85
+ # Used when giving an exclusive lower bound for the range.
86
+ # @!attribute [rw] end_key_open
87
+ # @return [String]
88
+ # Used when giving an exclusive upper bound for the range.
89
+ # @!attribute [rw] end_key_closed
90
+ # @return [String]
91
+ # Used when giving an inclusive upper bound for the range.
92
+ class RowRange; end
93
+
94
+ # Specifies a non-contiguous set of rows.
95
+ # @!attribute [rw] row_keys
96
+ # @return [Array<String>]
97
+ # Single rows included in the set.
98
+ # @!attribute [rw] row_ranges
99
+ # @return [Array<Google::Bigtable::V2::RowRange>]
100
+ # Contiguous row ranges included in the set.
101
+ class RowSet; end
102
+
103
+ # Specifies a contiguous range of columns within a single column family.
104
+ # The range spans from &lt;column_family&gt;:&lt;start_qualifier&gt; to
105
+ # &lt;column_family&gt;:&lt;end_qualifier&gt;, where both bounds can be either
106
+ # inclusive or exclusive.
107
+ # @!attribute [rw] family_name
108
+ # @return [String]
109
+ # The name of the column family within which this range falls.
110
+ # @!attribute [rw] start_qualifier_closed
111
+ # @return [String]
112
+ # Used when giving an inclusive lower bound for the range.
113
+ # @!attribute [rw] start_qualifier_open
114
+ # @return [String]
115
+ # Used when giving an exclusive lower bound for the range.
116
+ # @!attribute [rw] end_qualifier_closed
117
+ # @return [String]
118
+ # Used when giving an inclusive upper bound for the range.
119
+ # @!attribute [rw] end_qualifier_open
120
+ # @return [String]
121
+ # Used when giving an exclusive upper bound for the range.
122
+ class ColumnRange; end
123
+
124
+ # Specified a contiguous range of microsecond timestamps.
125
+ # @!attribute [rw] start_timestamp_micros
126
+ # @return [Integer]
127
+ # Inclusive lower bound. If left empty, interpreted as 0.
128
+ # @!attribute [rw] end_timestamp_micros
129
+ # @return [Integer]
130
+ # Exclusive upper bound. If left empty, interpreted as infinity.
131
+ class TimestampRange; end
132
+
133
+ # Specifies a contiguous range of raw byte values.
134
+ # @!attribute [rw] start_value_closed
135
+ # @return [String]
136
+ # Used when giving an inclusive lower bound for the range.
137
+ # @!attribute [rw] start_value_open
138
+ # @return [String]
139
+ # Used when giving an exclusive lower bound for the range.
140
+ # @!attribute [rw] end_value_closed
141
+ # @return [String]
142
+ # Used when giving an inclusive upper bound for the range.
143
+ # @!attribute [rw] end_value_open
144
+ # @return [String]
145
+ # Used when giving an exclusive upper bound for the range.
146
+ class ValueRange; end
147
+
148
+ # Takes a row as input and produces an alternate view of the row based on
149
+ # specified rules. For example, a RowFilter might trim down a row to include
150
+ # just the cells from columns matching a given regular expression, or might
151
+ # return all the cells of a row but not their values. More complicated filters
152
+ # can be composed out of these components to express requests such as, "within
153
+ # every column of a particular family, give just the two most recent cells
154
+ # which are older than timestamp X."
155
+ #
156
+ # There are two broad categories of RowFilters (true filters and transformers),
157
+ # as well as two ways to compose simple filters into more complex ones
158
+ # (chains and interleaves). They work as follows:
159
+ #
160
+ # * True filters alter the input row by excluding some of its cells wholesale
161
+ # from the output row. An example of a true filter is the +value_regex_filter+,
162
+ # which excludes cells whose values don't match the specified pattern. All
163
+ # regex true filters use RE2 syntax (https://github.com/google/re2/wiki/Syntax)
164
+ # in raw byte mode (RE2::Latin1), and are evaluated as full matches. An
165
+ # important point to keep in mind is that +RE2(.)+ is equivalent by default to
166
+ # +RE2([^\n])+, meaning that it does not match newlines. When attempting to
167
+ # match an arbitrary byte, you should therefore use the escape sequence +\C+,
168
+ # which may need to be further escaped as +\\C+ in your client language.
169
+ #
170
+ # * Transformers alter the input row by changing the values of some of its
171
+ # cells in the output, without excluding them completely. Currently, the only
172
+ # supported transformer is the +strip_value_transformer+, which replaces every
173
+ # cell's value with the empty string.
174
+ #
175
+ # * Chains and interleaves are described in more detail in the
176
+ # RowFilter.Chain and RowFilter.Interleave documentation.
177
+ #
178
+ # The total serialized size of a RowFilter message must not
179
+ # exceed 4096 bytes, and RowFilters may not be nested within each other
180
+ # (in Chains or Interleaves) to a depth of more than 20.
181
+ # @!attribute [rw] chain
182
+ # @return [Google::Bigtable::V2::RowFilter::Chain]
183
+ # Applies several RowFilters to the data in sequence, progressively
184
+ # narrowing the results.
185
+ # @!attribute [rw] interleave
186
+ # @return [Google::Bigtable::V2::RowFilter::Interleave]
187
+ # Applies several RowFilters to the data in parallel and combines the
188
+ # results.
189
+ # @!attribute [rw] condition
190
+ # @return [Google::Bigtable::V2::RowFilter::Condition]
191
+ # Applies one of two possible RowFilters to the data based on the output of
192
+ # a predicate RowFilter.
193
+ # @!attribute [rw] sink
194
+ # @return [true, false]
195
+ # ADVANCED USE ONLY.
196
+ # Hook for introspection into the RowFilter. Outputs all cells directly to
197
+ # the output of the read rather than to any parent filter. Consider the
198
+ # following example:
199
+ #
200
+ # Chain(
201
+ # FamilyRegex("A"),
202
+ # Interleave(
203
+ # All(),
204
+ # Chain(Label("foo"), Sink())
205
+ # ),
206
+ # QualifierRegex("B")
207
+ # )
208
+ #
209
+ # A,A,1,w
210
+ # A,B,2,x
211
+ # B,B,4,z
212
+ # |
213
+ # FamilyRegex("A")
214
+ # |
215
+ # A,A,1,w
216
+ # A,B,2,x
217
+ # |
218
+ # +------------+-------------+
219
+ # | |
220
+ # All() Label(foo)
221
+ # | |
222
+ # A,A,1,w A,A,1,w,labels:[foo]
223
+ # A,B,2,x A,B,2,x,labels:[foo]
224
+ # | |
225
+ # | Sink() --------------+
226
+ # | | |
227
+ # +------------+ x------+ A,A,1,w,labels:[foo]
228
+ # | A,B,2,x,labels:[foo]
229
+ # A,A,1,w |
230
+ # A,B,2,x |
231
+ # | |
232
+ # QualifierRegex("B") |
233
+ # | |
234
+ # A,B,2,x |
235
+ # | |
236
+ # +--------------------------------+
237
+ # |
238
+ # A,A,1,w,labels:[foo]
239
+ # A,B,2,x,labels:[foo] // could be switched
240
+ # A,B,2,x // could be switched
241
+ #
242
+ # Despite being excluded by the qualifier filter, a copy of every cell
243
+ # that reaches the sink is present in the final result.
244
+ #
245
+ # As with an {Google::Bigtable::V2::RowFilter::Interleave Interleave},
246
+ # duplicate cells are possible, and appear in an unspecified mutual order.
247
+ # In this case we have a duplicate with column "A:B" and timestamp 2,
248
+ # because one copy passed through the all filter while the other was
249
+ # passed through the label and sink. Note that one copy has label "foo",
250
+ # while the other does not.
251
+ #
252
+ # Cannot be used within the +predicate_filter+, +true_filter+, or
253
+ # +false_filter+ of a {Google::Bigtable::V2::RowFilter::Condition Condition}.
254
+ # @!attribute [rw] pass_all_filter
255
+ # @return [true, false]
256
+ # Matches all cells, regardless of input. Functionally equivalent to
257
+ # leaving +filter+ unset, but included for completeness.
258
+ # @!attribute [rw] block_all_filter
259
+ # @return [true, false]
260
+ # Does not match any cells, regardless of input. Useful for temporarily
261
+ # disabling just part of a filter.
262
+ # @!attribute [rw] row_key_regex_filter
263
+ # @return [String]
264
+ # Matches only cells from rows whose keys satisfy the given RE2 regex. In
265
+ # other words, passes through the entire row when the key matches, and
266
+ # otherwise produces an empty row.
267
+ # Note that, since row keys can contain arbitrary bytes, the +\C+ escape
268
+ # sequence must be used if a true wildcard is desired. The +.+ character
269
+ # will not match the new line character +\n+, which may be present in a
270
+ # binary key.
271
+ # @!attribute [rw] row_sample_filter
272
+ # @return [Float]
273
+ # Matches all cells from a row with probability p, and matches no cells
274
+ # from the row with probability 1-p.
275
+ # @!attribute [rw] family_name_regex_filter
276
+ # @return [String]
277
+ # Matches only cells from columns whose families satisfy the given RE2
278
+ # regex. For technical reasons, the regex must not contain the +:+
279
+ # character, even if it is not being used as a literal.
280
+ # Note that, since column families cannot contain the new line character
281
+ # +\n+, it is sufficient to use +.+ as a full wildcard when matching
282
+ # column family names.
283
+ # @!attribute [rw] column_qualifier_regex_filter
284
+ # @return [String]
285
+ # Matches only cells from columns whose qualifiers satisfy the given RE2
286
+ # regex.
287
+ # Note that, since column qualifiers can contain arbitrary bytes, the +\C+
288
+ # escape sequence must be used if a true wildcard is desired. The +.+
289
+ # character will not match the new line character +\n+, which may be
290
+ # present in a binary qualifier.
291
+ # @!attribute [rw] column_range_filter
292
+ # @return [Google::Bigtable::V2::ColumnRange]
293
+ # Matches only cells from columns within the given range.
294
+ # @!attribute [rw] timestamp_range_filter
295
+ # @return [Google::Bigtable::V2::TimestampRange]
296
+ # Matches only cells with timestamps within the given range.
297
+ # @!attribute [rw] value_regex_filter
298
+ # @return [String]
299
+ # Matches only cells with values that satisfy the given regular expression.
300
+ # Note that, since cell values can contain arbitrary bytes, the +\C+ escape
301
+ # sequence must be used if a true wildcard is desired. The +.+ character
302
+ # will not match the new line character +\n+, which may be present in a
303
+ # binary value.
304
+ # @!attribute [rw] value_range_filter
305
+ # @return [Google::Bigtable::V2::ValueRange]
306
+ # Matches only cells with values that fall within the given range.
307
+ # @!attribute [rw] cells_per_row_offset_filter
308
+ # @return [Integer]
309
+ # Skips the first N cells of each row, matching all subsequent cells.
310
+ # If duplicate cells are present, as is possible when using an Interleave,
311
+ # each copy of the cell is counted separately.
312
+ # @!attribute [rw] cells_per_row_limit_filter
313
+ # @return [Integer]
314
+ # Matches only the first N cells of each row.
315
+ # If duplicate cells are present, as is possible when using an Interleave,
316
+ # each copy of the cell is counted separately.
317
+ # @!attribute [rw] cells_per_column_limit_filter
318
+ # @return [Integer]
319
+ # Matches only the most recent N cells within each column. For example,
320
+ # if N=2, this filter would match column +foo:bar+ at timestamps 10 and 9,
321
+ # skip all earlier cells in +foo:bar+, and then begin matching again in
322
+ # column +foo:bar2+.
323
+ # If duplicate cells are present, as is possible when using an Interleave,
324
+ # each copy of the cell is counted separately.
325
+ # @!attribute [rw] strip_value_transformer
326
+ # @return [true, false]
327
+ # Replaces each cell's value with the empty string.
328
+ # @!attribute [rw] apply_label_transformer
329
+ # @return [String]
330
+ # Applies the given label to all cells in the output row. This allows
331
+ # the client to determine which results were produced from which part of
332
+ # the filter.
333
+ #
334
+ # Values must be at most 15 characters in length, and match the RE2
335
+ # pattern +[a-z0-9\\-]++
336
+ #
337
+ # Due to a technical limitation, it is not currently possible to apply
338
+ # multiple labels to a cell. As a result, a Chain may have no more than
339
+ # one sub-filter which contains a +apply_label_transformer+. It is okay for
340
+ # an Interleave to contain multiple +apply_label_transformers+, as they
341
+ # will be applied to separate copies of the input. This may be relaxed in
342
+ # the future.
343
+ class RowFilter
344
+ # A RowFilter which sends rows through several RowFilters in sequence.
345
+ # @!attribute [rw] filters
346
+ # @return [Array<Google::Bigtable::V2::RowFilter>]
347
+ # The elements of "filters" are chained together to process the input row:
348
+ # in row -> f(0) -> intermediate row -> f(1) -> ... -> f(N) -> out row
349
+ # The full chain is executed atomically.
350
+ class Chain; end
351
+
352
+ # A RowFilter which sends each row to each of several component
353
+ # RowFilters and interleaves the results.
354
+ # @!attribute [rw] filters
355
+ # @return [Array<Google::Bigtable::V2::RowFilter>]
356
+ # The elements of "filters" all process a copy of the input row, and the
357
+ # results are pooled, sorted, and combined into a single output row.
358
+ # If multiple cells are produced with the same column and timestamp,
359
+ # they will all appear in the output row in an unspecified mutual order.
360
+ # Consider the following example, with three filters:
361
+ #
362
+ # input row
363
+ # |
364
+ # -----------------------------------------------------
365
+ # | | |
366
+ # f(0) f(1) f(2)
367
+ # | | |
368
+ # 1: foo,bar,10,x foo,bar,10,z far,bar,7,a
369
+ # 2: foo,blah,11,z far,blah,5,x far,blah,5,x
370
+ # | | |
371
+ # -----------------------------------------------------
372
+ # |
373
+ # 1: foo,bar,10,z // could have switched with #2
374
+ # 2: foo,bar,10,x // could have switched with #1
375
+ # 3: foo,blah,11,z
376
+ # 4: far,bar,7,a
377
+ # 5: far,blah,5,x // identical to #6
378
+ # 6: far,blah,5,x // identical to #5
379
+ #
380
+ # All interleaved filters are executed atomically.
381
+ class Interleave; end
382
+
383
+ # A RowFilter which evaluates one of two possible RowFilters, depending on
384
+ # whether or not a predicate RowFilter outputs any cells from the input row.
385
+ #
386
+ # IMPORTANT NOTE: The predicate filter does not execute atomically with the
387
+ # true and false filters, which may lead to inconsistent or unexpected
388
+ # results. Additionally, Condition filters have poor performance, especially
389
+ # when filters are set for the false condition.
390
+ # @!attribute [rw] predicate_filter
391
+ # @return [Google::Bigtable::V2::RowFilter]
392
+ # If +predicate_filter+ outputs any cells, then +true_filter+ will be
393
+ # evaluated on the input row. Otherwise, +false_filter+ will be evaluated.
394
+ # @!attribute [rw] true_filter
395
+ # @return [Google::Bigtable::V2::RowFilter]
396
+ # The filter to apply to the input row if +predicate_filter+ returns any
397
+ # results. If not provided, no results will be returned in the true case.
398
+ # @!attribute [rw] false_filter
399
+ # @return [Google::Bigtable::V2::RowFilter]
400
+ # The filter to apply to the input row if +predicate_filter+ does not
401
+ # return any results. If not provided, no results will be returned in the
402
+ # false case.
403
+ class Condition; end
404
+ end
405
+
406
+ # Specifies a particular change to be made to the contents of a row.
407
+ # @!attribute [rw] set_cell
408
+ # @return [Google::Bigtable::V2::Mutation::SetCell]
409
+ # Set a cell's value.
410
+ # @!attribute [rw] delete_from_column
411
+ # @return [Google::Bigtable::V2::Mutation::DeleteFromColumn]
412
+ # Deletes cells from a column.
413
+ # @!attribute [rw] delete_from_family
414
+ # @return [Google::Bigtable::V2::Mutation::DeleteFromFamily]
415
+ # Deletes cells from a column family.
416
+ # @!attribute [rw] delete_from_row
417
+ # @return [Google::Bigtable::V2::Mutation::DeleteFromRow]
418
+ # Deletes cells from the entire row.
419
+ class Mutation
420
+ # A Mutation which sets the value of the specified cell.
421
+ # @!attribute [rw] family_name
422
+ # @return [String]
423
+ # The name of the family into which new data should be written.
424
+ # Must match +[-_.a-zA-Z0-9]++
425
+ # @!attribute [rw] column_qualifier
426
+ # @return [String]
427
+ # The qualifier of the column into which new data should be written.
428
+ # Can be any byte string, including the empty string.
429
+ # @!attribute [rw] timestamp_micros
430
+ # @return [Integer]
431
+ # The timestamp of the cell into which new data should be written.
432
+ # Use -1 for current Bigtable server time.
433
+ # Otherwise, the client should set this value itself, noting that the
434
+ # default value is a timestamp of zero if the field is left unspecified.
435
+ # Values must match the granularity of the table (e.g. micros, millis).
436
+ # @!attribute [rw] value
437
+ # @return [String]
438
+ # The value to be written into the specified cell.
439
+ class SetCell; end
440
+
441
+ # A Mutation which deletes cells from the specified column, optionally
442
+ # restricting the deletions to a given timestamp range.
443
+ # @!attribute [rw] family_name
444
+ # @return [String]
445
+ # The name of the family from which cells should be deleted.
446
+ # Must match +[-_.a-zA-Z0-9]++
447
+ # @!attribute [rw] column_qualifier
448
+ # @return [String]
449
+ # The qualifier of the column from which cells should be deleted.
450
+ # Can be any byte string, including the empty string.
451
+ # @!attribute [rw] time_range
452
+ # @return [Google::Bigtable::V2::TimestampRange]
453
+ # The range of timestamps within which cells should be deleted.
454
+ class DeleteFromColumn; end
455
+
456
+ # A Mutation which deletes all cells from the specified column family.
457
+ # @!attribute [rw] family_name
458
+ # @return [String]
459
+ # The name of the family from which cells should be deleted.
460
+ # Must match +[-_.a-zA-Z0-9]++
461
+ class DeleteFromFamily; end
462
+
463
+ # A Mutation which deletes all cells from the containing row.
464
+ class DeleteFromRow; end
465
+ end
466
+
467
+ # Specifies an atomic read/modify/write operation on the latest value of the
468
+ # specified column.
469
+ # @!attribute [rw] family_name
470
+ # @return [String]
471
+ # The name of the family to which the read/modify/write should be applied.
472
+ # Must match +[-_.a-zA-Z0-9]++
473
+ # @!attribute [rw] column_qualifier
474
+ # @return [String]
475
+ # The qualifier of the column to which the read/modify/write should be
476
+ # applied.
477
+ # Can be any byte string, including the empty string.
478
+ # @!attribute [rw] append_value
479
+ # @return [String]
480
+ # Rule specifying that +append_value+ be appended to the existing value.
481
+ # If the targeted cell is unset, it will be treated as containing the
482
+ # empty string.
483
+ # @!attribute [rw] increment_amount
484
+ # @return [Integer]
485
+ # Rule specifying that +increment_amount+ be added to the existing value.
486
+ # If the targeted cell is unset, it will be treated as containing a zero.
487
+ # Otherwise, the targeted cell must contain an 8-byte value (interpreted
488
+ # as a 64-bit big-endian signed integer), or the entire request will fail.
489
+ class ReadModifyWriteRule; end
490
+ end
491
+ end
492
+ end