google-apis-spanner_v1 0.24.0 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/google/apis/spanner_v1/classes.rb +413 -247
- data/lib/google/apis/spanner_v1/gem_version.rb +2 -2
- data/lib/google/apis/spanner_v1/representations.rb +52 -0
- data/lib/google/apis/spanner_v1/service.rb +209 -8
- metadata +3 -3
@@ -59,6 +59,15 @@ module Google
|
|
59
59
|
# @return [String]
|
60
60
|
attr_accessor :expire_time
|
61
61
|
|
62
|
+
# Output only. The max allowed expiration time of the backup, with microseconds
|
63
|
+
# granularity. A backup's expiration time can be configured in multiple APIs:
|
64
|
+
# CreateBackup, UpdateBackup, CopyBackup. When updating or copying an existing
|
65
|
+
# backup, the expiration time specified must be less than `Backup.
|
66
|
+
# max_expire_time`.
|
67
|
+
# Corresponds to the JSON property `maxExpireTime`
|
68
|
+
# @return [String]
|
69
|
+
attr_accessor :max_expire_time
|
70
|
+
|
62
71
|
# Output only for the CreateBackup operation. Required for the UpdateBackup
|
63
72
|
# operation. A globally unique identifier for the backup which cannot be changed.
|
64
73
|
# Values are of the form `projects//instances//backups/a-z*[a-z0-9]` The final
|
@@ -70,6 +79,16 @@ module Google
|
|
70
79
|
# @return [String]
|
71
80
|
attr_accessor :name
|
72
81
|
|
82
|
+
# Output only. The names of the destination backups being created by copying
|
83
|
+
# this source backup. The backup names are of the form `projects//instances//
|
84
|
+
# backups/`. Referencing backups may exist in different instances. The existence
|
85
|
+
# of any referencing backup prevents the backup from being deleted. When the
|
86
|
+
# copy operation is done (either successfully completed or cancelled or the
|
87
|
+
# destination backup is deleted), the reference to the backup is removed.
|
88
|
+
# Corresponds to the JSON property `referencingBackups`
|
89
|
+
# @return [Array<String>]
|
90
|
+
attr_accessor :referencing_backups
|
91
|
+
|
73
92
|
# Output only. The names of the restored databases that reference the backup.
|
74
93
|
# The database names are of the form `projects//instances//databases/`.
|
75
94
|
# Referencing databases may exist in different instances. The existence of any
|
@@ -108,7 +127,9 @@ module Google
|
|
108
127
|
@database_dialect = args[:database_dialect] if args.key?(:database_dialect)
|
109
128
|
@encryption_info = args[:encryption_info] if args.key?(:encryption_info)
|
110
129
|
@expire_time = args[:expire_time] if args.key?(:expire_time)
|
130
|
+
@max_expire_time = args[:max_expire_time] if args.key?(:max_expire_time)
|
111
131
|
@name = args[:name] if args.key?(:name)
|
132
|
+
@referencing_backups = args[:referencing_backups] if args.key?(:referencing_backups)
|
112
133
|
@referencing_databases = args[:referencing_databases] if args.key?(:referencing_databases)
|
113
134
|
@size_bytes = args[:size_bytes] if args.key?(:size_bytes)
|
114
135
|
@state = args[:state] if args.key?(:state)
|
@@ -212,7 +233,7 @@ module Google
|
|
212
233
|
# count towards the one transaction limit). After the active transaction is
|
213
234
|
# completed, the session can immediately be re-used for the next transaction. It
|
214
235
|
# is not necessary to create a new session for each transaction. Transaction
|
215
|
-
#
|
236
|
+
# modes: Cloud Spanner supports three transaction modes: 1. Locking read-write.
|
216
237
|
# This type of transaction is the only way to write data into Cloud Spanner.
|
217
238
|
# These transactions rely on pessimistic locking and, if necessary, two-phase
|
218
239
|
# commit. Locking read-write transactions may abort, requiring the application
|
@@ -228,9 +249,9 @@ module Google
|
|
228
249
|
# simpler semantics and are almost always faster. In particular, read-only
|
229
250
|
# transactions do not take locks, so they do not conflict with read-write
|
230
251
|
# transactions. As a consequence of not taking locks, they also do not abort, so
|
231
|
-
# retry loops are not needed. Transactions may only read
|
232
|
-
# database. They may, however, read
|
233
|
-
# database. Locking
|
252
|
+
# retry loops are not needed. Transactions may only read-write data in a single
|
253
|
+
# database. They may, however, read-write data in different tables within that
|
254
|
+
# database. Locking read-write transactions: Locking transactions may be used to
|
234
255
|
# atomically read-modify-write data anywhere in a database. This type of
|
235
256
|
# transaction is externally consistent. Clients should attempt to minimize the
|
236
257
|
# amount of time a transaction is active. Faster transactions commit with higher
|
@@ -249,7 +270,7 @@ module Google
|
|
249
270
|
# Cloud Spanner makes no guarantees about how long the transaction's locks were
|
250
271
|
# held for. It is an error to use Cloud Spanner locks for any sort of mutual
|
251
272
|
# exclusion other than between Cloud Spanner transactions themselves. Retrying
|
252
|
-
#
|
273
|
+
# aborted transactions: When a transaction aborts, the application can choose to
|
253
274
|
# retry the whole transaction again. To maximize the chances of successfully
|
254
275
|
# committing the retry, the client should execute the retry in the same session
|
255
276
|
# as the original attempt. The original session's lock priority increases with
|
@@ -258,14 +279,14 @@ module Google
|
|
258
279
|
# transactions attempting to modify the same row(s)), a transaction can abort
|
259
280
|
# many times in a short period before successfully committing. Thus, it is not a
|
260
281
|
# good idea to cap the number of retries a transaction can attempt; instead, it
|
261
|
-
# is better to limit the total amount of time spent retrying. Idle
|
282
|
+
# is better to limit the total amount of time spent retrying. Idle transactions:
|
262
283
|
# A transaction is considered idle if it has no outstanding reads or SQL queries
|
263
284
|
# and has not started a read or SQL query within the last 10 seconds. Idle
|
264
285
|
# transactions can be aborted by Cloud Spanner so that they don't hold on to
|
265
286
|
# locks indefinitely. If an idle transaction is aborted, the commit will fail
|
266
287
|
# with error `ABORTED`. If this behavior is undesirable, periodically executing
|
267
288
|
# a simple SQL query in the transaction (for example, `SELECT 1`) prevents the
|
268
|
-
# transaction from becoming idle. Snapshot
|
289
|
+
# transaction from becoming idle. Snapshot read-only transactions: Snapshot read-
|
269
290
|
# only transactions provides a simpler method than locking read-write
|
270
291
|
# transactions for doing several consistent reads. However, this type of
|
271
292
|
# transaction does not support writes. Snapshot transactions do not take locks.
|
@@ -281,7 +302,7 @@ module Google
|
|
281
302
|
# how to choose a read timestamp. The types of timestamp bound are: - Strong (
|
282
303
|
# the default). - Bounded staleness. - Exact staleness. If the Cloud Spanner
|
283
304
|
# database to be read is geographically distributed, stale read-only
|
284
|
-
# transactions can execute more quickly than strong or read-write
|
305
|
+
# transactions can execute more quickly than strong or read-write transactions,
|
285
306
|
# because they are able to execute far from the leader replica. Each type of
|
286
307
|
# timestamp bound is discussed in detail below. Strong: Strong reads are
|
287
308
|
# guaranteed to see the effects of all transactions that have committed before
|
@@ -291,7 +312,7 @@ module Google
|
|
291
312
|
# two consecutive strong read-only transactions might return inconsistent
|
292
313
|
# results if there are concurrent writes. If consistency across reads is
|
293
314
|
# required, the reads should be executed within a transaction or at an exact
|
294
|
-
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact
|
315
|
+
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact staleness: These
|
295
316
|
# timestamp bounds execute reads at a user-specified timestamp. Reads at a
|
296
317
|
# timestamp are guaranteed to see a consistent prefix of the global transaction
|
297
318
|
# history: they observe modifications done by all transactions with a commit
|
@@ -305,7 +326,7 @@ module Google
|
|
305
326
|
# equivalent boundedly stale concurrency modes. On the other hand, boundedly
|
306
327
|
# stale reads usually return fresher results. See TransactionOptions.ReadOnly.
|
307
328
|
# read_timestamp and TransactionOptions.ReadOnly.exact_staleness. Bounded
|
308
|
-
#
|
329
|
+
# staleness: Bounded staleness modes allow Cloud Spanner to pick the read
|
309
330
|
# timestamp, subject to a user-provided staleness bound. Cloud Spanner chooses
|
310
331
|
# the newest timestamp within the staleness bound that allows execution of the
|
311
332
|
# reads at the closest available replica without blocking. All rows yielded are
|
@@ -322,51 +343,54 @@ module Google
|
|
322
343
|
# timestamp negotiation requires up-front knowledge of which rows will be read,
|
323
344
|
# it can only be used with single-use read-only transactions. See
|
324
345
|
# TransactionOptions.ReadOnly.max_staleness and TransactionOptions.ReadOnly.
|
325
|
-
# min_read_timestamp. Old
|
346
|
+
# min_read_timestamp. Old read timestamps and garbage collection: Cloud Spanner
|
326
347
|
# continuously garbage collects deleted and overwritten data in the background
|
327
348
|
# to reclaim storage space. This process is known as "version GC". By default,
|
328
349
|
# version GC reclaims versions after they are one hour old. Because of this,
|
329
350
|
# Cloud Spanner cannot perform reads at read timestamps more than one hour in
|
330
351
|
# the past. This restriction also applies to in-progress reads and/or SQL
|
331
352
|
# queries whose timestamp become too old while executing. Reads and SQL queries
|
332
|
-
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
333
|
-
#
|
334
|
-
#
|
335
|
-
#
|
336
|
-
#
|
337
|
-
#
|
338
|
-
#
|
339
|
-
#
|
340
|
-
#
|
341
|
-
#
|
342
|
-
#
|
343
|
-
#
|
344
|
-
#
|
345
|
-
#
|
346
|
-
#
|
347
|
-
#
|
348
|
-
#
|
349
|
-
#
|
350
|
-
#
|
351
|
-
#
|
352
|
-
#
|
353
|
-
#
|
354
|
-
#
|
355
|
-
#
|
356
|
-
#
|
357
|
-
#
|
358
|
-
#
|
359
|
-
#
|
360
|
-
#
|
361
|
-
#
|
362
|
-
#
|
363
|
-
#
|
364
|
-
#
|
365
|
-
#
|
366
|
-
#
|
367
|
-
#
|
368
|
-
#
|
369
|
-
#
|
353
|
+
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`. You
|
354
|
+
# can configure and extend the `VERSION_RETENTION_PERIOD` of a database up to a
|
355
|
+
# period as long as one week, which allows Cloud Spanner to perform reads up to
|
356
|
+
# one week in the past. Partitioned DML transactions: Partitioned DML
|
357
|
+
# transactions are used to execute DML statements with a different execution
|
358
|
+
# strategy that provides different, and often better, scalability properties for
|
359
|
+
# large, table-wide operations than DML in a ReadWrite transaction. Smaller
|
360
|
+
# scoped statements, such as an OLTP workload, should prefer using ReadWrite
|
361
|
+
# transactions. Partitioned DML partitions the keyspace and runs the DML
|
362
|
+
# statement on each partition in separate, internal transactions. These
|
363
|
+
# transactions commit automatically when complete, and run independently from
|
364
|
+
# one another. To reduce lock contention, this execution strategy only acquires
|
365
|
+
# read locks on rows that match the WHERE clause of the statement. Additionally,
|
366
|
+
# the smaller per-partition transactions hold locks for less time. That said,
|
367
|
+
# Partitioned DML is not a drop-in replacement for standard DML used in
|
368
|
+
# ReadWrite transactions. - The DML statement must be fully-partitionable.
|
369
|
+
# Specifically, the statement must be expressible as the union of many
|
370
|
+
# statements which each access only a single row of the table. - The statement
|
371
|
+
# is not applied atomically to all rows of the table. Rather, the statement is
|
372
|
+
# applied atomically to partitions of the table, in independent transactions.
|
373
|
+
# Secondary index rows are updated atomically with the base table rows. -
|
374
|
+
# Partitioned DML does not guarantee exactly-once execution semantics against a
|
375
|
+
# partition. The statement will be applied at least once to each partition. It
|
376
|
+
# is strongly recommended that the DML statement should be idempotent to avoid
|
377
|
+
# unexpected results. For instance, it is potentially dangerous to run a
|
378
|
+
# statement such as `UPDATE table SET column = column + 1` as it could be run
|
379
|
+
# multiple times against some rows. - The partitions are committed automatically
|
380
|
+
# - there is no support for Commit or Rollback. If the call returns an error, or
|
381
|
+
# if the client issuing the ExecuteSql call dies, it is possible that some rows
|
382
|
+
# had the statement executed on them successfully. It is also possible that
|
383
|
+
# statement was never executed against other rows. - Partitioned DML
|
384
|
+
# transactions may only contain the execution of a single DML statement via
|
385
|
+
# ExecuteSql or ExecuteStreamingSql. - If any error is encountered during the
|
386
|
+
# execution of the partitioned DML operation (for instance, a UNIQUE INDEX
|
387
|
+
# violation, division by zero, or a value that cannot be stored due to schema
|
388
|
+
# constraints), then the operation is stopped at that point and an error is
|
389
|
+
# returned. It is possible that at this point, some partitions have been
|
390
|
+
# committed (or even committed multiple times), and other partitions have not
|
391
|
+
# been run at all. Given the above, Partitioned DML is good fit for large,
|
392
|
+
# database-wide, operations that are idempotent, such as deleting old rows from
|
393
|
+
# a very large table.
|
370
394
|
# Corresponds to the JSON property `options`
|
371
395
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
372
396
|
attr_accessor :options
|
@@ -524,7 +548,7 @@ module Google
|
|
524
548
|
# count towards the one transaction limit). After the active transaction is
|
525
549
|
# completed, the session can immediately be re-used for the next transaction. It
|
526
550
|
# is not necessary to create a new session for each transaction. Transaction
|
527
|
-
#
|
551
|
+
# modes: Cloud Spanner supports three transaction modes: 1. Locking read-write.
|
528
552
|
# This type of transaction is the only way to write data into Cloud Spanner.
|
529
553
|
# These transactions rely on pessimistic locking and, if necessary, two-phase
|
530
554
|
# commit. Locking read-write transactions may abort, requiring the application
|
@@ -540,9 +564,9 @@ module Google
|
|
540
564
|
# simpler semantics and are almost always faster. In particular, read-only
|
541
565
|
# transactions do not take locks, so they do not conflict with read-write
|
542
566
|
# transactions. As a consequence of not taking locks, they also do not abort, so
|
543
|
-
# retry loops are not needed. Transactions may only read
|
544
|
-
# database. They may, however, read
|
545
|
-
# database. Locking
|
567
|
+
# retry loops are not needed. Transactions may only read-write data in a single
|
568
|
+
# database. They may, however, read-write data in different tables within that
|
569
|
+
# database. Locking read-write transactions: Locking transactions may be used to
|
546
570
|
# atomically read-modify-write data anywhere in a database. This type of
|
547
571
|
# transaction is externally consistent. Clients should attempt to minimize the
|
548
572
|
# amount of time a transaction is active. Faster transactions commit with higher
|
@@ -561,7 +585,7 @@ module Google
|
|
561
585
|
# Cloud Spanner makes no guarantees about how long the transaction's locks were
|
562
586
|
# held for. It is an error to use Cloud Spanner locks for any sort of mutual
|
563
587
|
# exclusion other than between Cloud Spanner transactions themselves. Retrying
|
564
|
-
#
|
588
|
+
# aborted transactions: When a transaction aborts, the application can choose to
|
565
589
|
# retry the whole transaction again. To maximize the chances of successfully
|
566
590
|
# committing the retry, the client should execute the retry in the same session
|
567
591
|
# as the original attempt. The original session's lock priority increases with
|
@@ -570,14 +594,14 @@ module Google
|
|
570
594
|
# transactions attempting to modify the same row(s)), a transaction can abort
|
571
595
|
# many times in a short period before successfully committing. Thus, it is not a
|
572
596
|
# good idea to cap the number of retries a transaction can attempt; instead, it
|
573
|
-
# is better to limit the total amount of time spent retrying. Idle
|
597
|
+
# is better to limit the total amount of time spent retrying. Idle transactions:
|
574
598
|
# A transaction is considered idle if it has no outstanding reads or SQL queries
|
575
599
|
# and has not started a read or SQL query within the last 10 seconds. Idle
|
576
600
|
# transactions can be aborted by Cloud Spanner so that they don't hold on to
|
577
601
|
# locks indefinitely. If an idle transaction is aborted, the commit will fail
|
578
602
|
# with error `ABORTED`. If this behavior is undesirable, periodically executing
|
579
603
|
# a simple SQL query in the transaction (for example, `SELECT 1`) prevents the
|
580
|
-
# transaction from becoming idle. Snapshot
|
604
|
+
# transaction from becoming idle. Snapshot read-only transactions: Snapshot read-
|
581
605
|
# only transactions provides a simpler method than locking read-write
|
582
606
|
# transactions for doing several consistent reads. However, this type of
|
583
607
|
# transaction does not support writes. Snapshot transactions do not take locks.
|
@@ -593,7 +617,7 @@ module Google
|
|
593
617
|
# how to choose a read timestamp. The types of timestamp bound are: - Strong (
|
594
618
|
# the default). - Bounded staleness. - Exact staleness. If the Cloud Spanner
|
595
619
|
# database to be read is geographically distributed, stale read-only
|
596
|
-
# transactions can execute more quickly than strong or read-write
|
620
|
+
# transactions can execute more quickly than strong or read-write transactions,
|
597
621
|
# because they are able to execute far from the leader replica. Each type of
|
598
622
|
# timestamp bound is discussed in detail below. Strong: Strong reads are
|
599
623
|
# guaranteed to see the effects of all transactions that have committed before
|
@@ -603,7 +627,7 @@ module Google
|
|
603
627
|
# two consecutive strong read-only transactions might return inconsistent
|
604
628
|
# results if there are concurrent writes. If consistency across reads is
|
605
629
|
# required, the reads should be executed within a transaction or at an exact
|
606
|
-
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact
|
630
|
+
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact staleness: These
|
607
631
|
# timestamp bounds execute reads at a user-specified timestamp. Reads at a
|
608
632
|
# timestamp are guaranteed to see a consistent prefix of the global transaction
|
609
633
|
# history: they observe modifications done by all transactions with a commit
|
@@ -617,7 +641,7 @@ module Google
|
|
617
641
|
# equivalent boundedly stale concurrency modes. On the other hand, boundedly
|
618
642
|
# stale reads usually return fresher results. See TransactionOptions.ReadOnly.
|
619
643
|
# read_timestamp and TransactionOptions.ReadOnly.exact_staleness. Bounded
|
620
|
-
#
|
644
|
+
# staleness: Bounded staleness modes allow Cloud Spanner to pick the read
|
621
645
|
# timestamp, subject to a user-provided staleness bound. Cloud Spanner chooses
|
622
646
|
# the newest timestamp within the staleness bound that allows execution of the
|
623
647
|
# reads at the closest available replica without blocking. All rows yielded are
|
@@ -634,51 +658,54 @@ module Google
|
|
634
658
|
# timestamp negotiation requires up-front knowledge of which rows will be read,
|
635
659
|
# it can only be used with single-use read-only transactions. See
|
636
660
|
# TransactionOptions.ReadOnly.max_staleness and TransactionOptions.ReadOnly.
|
637
|
-
# min_read_timestamp. Old
|
661
|
+
# min_read_timestamp. Old read timestamps and garbage collection: Cloud Spanner
|
638
662
|
# continuously garbage collects deleted and overwritten data in the background
|
639
663
|
# to reclaim storage space. This process is known as "version GC". By default,
|
640
664
|
# version GC reclaims versions after they are one hour old. Because of this,
|
641
665
|
# Cloud Spanner cannot perform reads at read timestamps more than one hour in
|
642
666
|
# the past. This restriction also applies to in-progress reads and/or SQL
|
643
667
|
# queries whose timestamp become too old while executing. Reads and SQL queries
|
644
|
-
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
645
|
-
#
|
646
|
-
#
|
647
|
-
#
|
648
|
-
#
|
649
|
-
#
|
650
|
-
#
|
651
|
-
#
|
652
|
-
#
|
653
|
-
#
|
654
|
-
#
|
655
|
-
#
|
656
|
-
#
|
657
|
-
#
|
658
|
-
#
|
659
|
-
#
|
660
|
-
#
|
661
|
-
#
|
662
|
-
#
|
663
|
-
#
|
664
|
-
#
|
665
|
-
#
|
666
|
-
#
|
667
|
-
#
|
668
|
-
#
|
669
|
-
#
|
670
|
-
#
|
671
|
-
#
|
672
|
-
#
|
673
|
-
#
|
674
|
-
#
|
675
|
-
#
|
676
|
-
#
|
677
|
-
#
|
678
|
-
#
|
679
|
-
#
|
680
|
-
#
|
681
|
-
#
|
668
|
+
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`. You
|
669
|
+
# can configure and extend the `VERSION_RETENTION_PERIOD` of a database up to a
|
670
|
+
# period as long as one week, which allows Cloud Spanner to perform reads up to
|
671
|
+
# one week in the past. Partitioned DML transactions: Partitioned DML
|
672
|
+
# transactions are used to execute DML statements with a different execution
|
673
|
+
# strategy that provides different, and often better, scalability properties for
|
674
|
+
# large, table-wide operations than DML in a ReadWrite transaction. Smaller
|
675
|
+
# scoped statements, such as an OLTP workload, should prefer using ReadWrite
|
676
|
+
# transactions. Partitioned DML partitions the keyspace and runs the DML
|
677
|
+
# statement on each partition in separate, internal transactions. These
|
678
|
+
# transactions commit automatically when complete, and run independently from
|
679
|
+
# one another. To reduce lock contention, this execution strategy only acquires
|
680
|
+
# read locks on rows that match the WHERE clause of the statement. Additionally,
|
681
|
+
# the smaller per-partition transactions hold locks for less time. That said,
|
682
|
+
# Partitioned DML is not a drop-in replacement for standard DML used in
|
683
|
+
# ReadWrite transactions. - The DML statement must be fully-partitionable.
|
684
|
+
# Specifically, the statement must be expressible as the union of many
|
685
|
+
# statements which each access only a single row of the table. - The statement
|
686
|
+
# is not applied atomically to all rows of the table. Rather, the statement is
|
687
|
+
# applied atomically to partitions of the table, in independent transactions.
|
688
|
+
# Secondary index rows are updated atomically with the base table rows. -
|
689
|
+
# Partitioned DML does not guarantee exactly-once execution semantics against a
|
690
|
+
# partition. The statement will be applied at least once to each partition. It
|
691
|
+
# is strongly recommended that the DML statement should be idempotent to avoid
|
692
|
+
# unexpected results. For instance, it is potentially dangerous to run a
|
693
|
+
# statement such as `UPDATE table SET column = column + 1` as it could be run
|
694
|
+
# multiple times against some rows. - The partitions are committed automatically
|
695
|
+
# - there is no support for Commit or Rollback. If the call returns an error, or
|
696
|
+
# if the client issuing the ExecuteSql call dies, it is possible that some rows
|
697
|
+
# had the statement executed on them successfully. It is also possible that
|
698
|
+
# statement was never executed against other rows. - Partitioned DML
|
699
|
+
# transactions may only contain the execution of a single DML statement via
|
700
|
+
# ExecuteSql or ExecuteStreamingSql. - If any error is encountered during the
|
701
|
+
# execution of the partitioned DML operation (for instance, a UNIQUE INDEX
|
702
|
+
# violation, division by zero, or a value that cannot be stored due to schema
|
703
|
+
# constraints), then the operation is stopped at that point and an error is
|
704
|
+
# returned. It is possible that at this point, some partitions have been
|
705
|
+
# committed (or even committed multiple times), and other partitions have not
|
706
|
+
# been run at all. Given the above, Partitioned DML is good fit for large,
|
707
|
+
# database-wide, operations that are idempotent, such as deleting old rows from
|
708
|
+
# a very large table.
|
682
709
|
# Corresponds to the JSON property `singleUseTransaction`
|
683
710
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
684
711
|
attr_accessor :single_use_transaction
|
@@ -793,6 +820,125 @@ module Google
|
|
793
820
|
end
|
794
821
|
end
|
795
822
|
|
823
|
+
# Encryption configuration for the copied backup.
|
824
|
+
class CopyBackupEncryptionConfig
|
825
|
+
include Google::Apis::Core::Hashable
|
826
|
+
|
827
|
+
# Required. The encryption type of the backup.
|
828
|
+
# Corresponds to the JSON property `encryptionType`
|
829
|
+
# @return [String]
|
830
|
+
attr_accessor :encryption_type
|
831
|
+
|
832
|
+
# Optional. The Cloud KMS key that will be used to protect the backup. This
|
833
|
+
# field should be set only when encryption_type is `CUSTOMER_MANAGED_ENCRYPTION`.
|
834
|
+
# Values are of the form `projects//locations//keyRings//cryptoKeys/`.
|
835
|
+
# Corresponds to the JSON property `kmsKeyName`
|
836
|
+
# @return [String]
|
837
|
+
attr_accessor :kms_key_name
|
838
|
+
|
839
|
+
def initialize(**args)
|
840
|
+
update!(**args)
|
841
|
+
end
|
842
|
+
|
843
|
+
# Update properties of this object
|
844
|
+
def update!(**args)
|
845
|
+
@encryption_type = args[:encryption_type] if args.key?(:encryption_type)
|
846
|
+
@kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
|
847
|
+
end
|
848
|
+
end
|
849
|
+
|
850
|
+
# Metadata type for the operation returned by CopyBackup.
|
851
|
+
class CopyBackupMetadata
|
852
|
+
include Google::Apis::Core::Hashable
|
853
|
+
|
854
|
+
# The time at which cancellation of CopyBackup operation was received.
|
855
|
+
# Operations.CancelOperation starts asynchronous cancellation on a long-running
|
856
|
+
# operation. The server makes a best effort to cancel the operation, but success
|
857
|
+
# is not guaranteed. Clients can use Operations.GetOperation or other methods to
|
858
|
+
# check whether the cancellation succeeded or whether the operation completed
|
859
|
+
# despite cancellation. On successful cancellation, the operation is not deleted;
|
860
|
+
# instead, it becomes an operation with an Operation.error value with a google.
|
861
|
+
# rpc.Status.code of 1, corresponding to `Code.CANCELLED`.
|
862
|
+
# Corresponds to the JSON property `cancelTime`
|
863
|
+
# @return [String]
|
864
|
+
attr_accessor :cancel_time
|
865
|
+
|
866
|
+
# The name of the backup being created through the copy operation. Values are of
|
867
|
+
# the form `projects//instances//backups/`.
|
868
|
+
# Corresponds to the JSON property `name`
|
869
|
+
# @return [String]
|
870
|
+
attr_accessor :name
|
871
|
+
|
872
|
+
# Encapsulates progress related information for a Cloud Spanner long running
|
873
|
+
# operation.
|
874
|
+
# Corresponds to the JSON property `progress`
|
875
|
+
# @return [Google::Apis::SpannerV1::OperationProgress]
|
876
|
+
attr_accessor :progress
|
877
|
+
|
878
|
+
# The name of the source backup that is being copied. Values are of the form `
|
879
|
+
# projects//instances//backups/`.
|
880
|
+
# Corresponds to the JSON property `sourceBackup`
|
881
|
+
# @return [String]
|
882
|
+
attr_accessor :source_backup
|
883
|
+
|
884
|
+
def initialize(**args)
|
885
|
+
update!(**args)
|
886
|
+
end
|
887
|
+
|
888
|
+
# Update properties of this object
|
889
|
+
def update!(**args)
|
890
|
+
@cancel_time = args[:cancel_time] if args.key?(:cancel_time)
|
891
|
+
@name = args[:name] if args.key?(:name)
|
892
|
+
@progress = args[:progress] if args.key?(:progress)
|
893
|
+
@source_backup = args[:source_backup] if args.key?(:source_backup)
|
894
|
+
end
|
895
|
+
end
|
896
|
+
|
897
|
+
# The request for CopyBackup.
|
898
|
+
class CopyBackupRequest
|
899
|
+
include Google::Apis::Core::Hashable
|
900
|
+
|
901
|
+
# Required. The id of the backup copy. The `backup_id` appended to `parent`
|
902
|
+
# forms the full backup_uri of the form `projects//instances//backups/`.
|
903
|
+
# Corresponds to the JSON property `backupId`
|
904
|
+
# @return [String]
|
905
|
+
attr_accessor :backup_id
|
906
|
+
|
907
|
+
# Encryption configuration for the copied backup.
|
908
|
+
# Corresponds to the JSON property `encryptionConfig`
|
909
|
+
# @return [Google::Apis::SpannerV1::CopyBackupEncryptionConfig]
|
910
|
+
attr_accessor :encryption_config
|
911
|
+
|
912
|
+
# Required. The expiration time of the backup in microsecond granularity. The
|
913
|
+
# expiration time must be at least 6 hours and at most 366 days from the `
|
914
|
+
# create_time` of the source backup. Once the `expire_time` has passed, the
|
915
|
+
# backup is eligible to be automatically deleted by Cloud Spanner to free the
|
916
|
+
# resources used by the backup.
|
917
|
+
# Corresponds to the JSON property `expireTime`
|
918
|
+
# @return [String]
|
919
|
+
attr_accessor :expire_time
|
920
|
+
|
921
|
+
# Required. The source backup to be copied. The source backup needs to be in
|
922
|
+
# READY state for it to be copied. Once CopyBackup is in progress, the source
|
923
|
+
# backup cannot be deleted or cleaned up on expiration until CopyBackup is
|
924
|
+
# finished. Values are of the form: `projects//instances//backups/`.
|
925
|
+
# Corresponds to the JSON property `sourceBackup`
|
926
|
+
# @return [String]
|
927
|
+
attr_accessor :source_backup
|
928
|
+
|
929
|
+
def initialize(**args)
|
930
|
+
update!(**args)
|
931
|
+
end
|
932
|
+
|
933
|
+
# Update properties of this object
|
934
|
+
def update!(**args)
|
935
|
+
@backup_id = args[:backup_id] if args.key?(:backup_id)
|
936
|
+
@encryption_config = args[:encryption_config] if args.key?(:encryption_config)
|
937
|
+
@expire_time = args[:expire_time] if args.key?(:expire_time)
|
938
|
+
@source_backup = args[:source_backup] if args.key?(:source_backup)
|
939
|
+
end
|
940
|
+
end
|
941
|
+
|
796
942
|
# Metadata type for the operation returned by CreateBackup.
|
797
943
|
class CreateBackupMetadata
|
798
944
|
include Google::Apis::Core::Hashable
|
@@ -1186,8 +1332,7 @@ module Google
|
|
1186
1332
|
# A generic empty message that you can re-use to avoid defining duplicated empty
|
1187
1333
|
# messages in your APIs. A typical example is to use it as the request or the
|
1188
1334
|
# response type of an API method. For instance: service Foo ` rpc Bar(google.
|
1189
|
-
# protobuf.Empty) returns (google.protobuf.Empty); `
|
1190
|
-
# `Empty` is empty JSON object ````.
|
1335
|
+
# protobuf.Empty) returns (google.protobuf.Empty); `
|
1191
1336
|
class Empty
|
1192
1337
|
include Google::Apis::Core::Hashable
|
1193
1338
|
|
@@ -1657,6 +1802,11 @@ module Google
|
|
1657
1802
|
# @return [String]
|
1658
1803
|
attr_accessor :config
|
1659
1804
|
|
1805
|
+
# Output only. The time at which the instance was created.
|
1806
|
+
# Corresponds to the JSON property `createTime`
|
1807
|
+
# @return [String]
|
1808
|
+
attr_accessor :create_time
|
1809
|
+
|
1660
1810
|
# Required. The descriptive name for this instance as it appears in UIs. Must be
|
1661
1811
|
# unique per project and between 4 and 30 characters in length.
|
1662
1812
|
# Corresponds to the JSON property `displayName`
|
@@ -1721,6 +1871,11 @@ module Google
|
|
1721
1871
|
# @return [String]
|
1722
1872
|
attr_accessor :state
|
1723
1873
|
|
1874
|
+
# Output only. The time at which the instance was most recently updated.
|
1875
|
+
# Corresponds to the JSON property `updateTime`
|
1876
|
+
# @return [String]
|
1877
|
+
attr_accessor :update_time
|
1878
|
+
|
1724
1879
|
def initialize(**args)
|
1725
1880
|
update!(**args)
|
1726
1881
|
end
|
@@ -1728,6 +1883,7 @@ module Google
|
|
1728
1883
|
# Update properties of this object
|
1729
1884
|
def update!(**args)
|
1730
1885
|
@config = args[:config] if args.key?(:config)
|
1886
|
+
@create_time = args[:create_time] if args.key?(:create_time)
|
1731
1887
|
@display_name = args[:display_name] if args.key?(:display_name)
|
1732
1888
|
@endpoint_uris = args[:endpoint_uris] if args.key?(:endpoint_uris)
|
1733
1889
|
@labels = args[:labels] if args.key?(:labels)
|
@@ -1735,6 +1891,7 @@ module Google
|
|
1735
1891
|
@node_count = args[:node_count] if args.key?(:node_count)
|
1736
1892
|
@processing_units = args[:processing_units] if args.key?(:processing_units)
|
1737
1893
|
@state = args[:state] if args.key?(:state)
|
1894
|
+
@update_time = args[:update_time] if args.key?(:update_time)
|
1738
1895
|
end
|
1739
1896
|
end
|
1740
1897
|
|
@@ -4044,7 +4201,7 @@ module Google
|
|
4044
4201
|
# count towards the one transaction limit). After the active transaction is
|
4045
4202
|
# completed, the session can immediately be re-used for the next transaction. It
|
4046
4203
|
# is not necessary to create a new session for each transaction. Transaction
|
4047
|
-
#
|
4204
|
+
# modes: Cloud Spanner supports three transaction modes: 1. Locking read-write.
|
4048
4205
|
# This type of transaction is the only way to write data into Cloud Spanner.
|
4049
4206
|
# These transactions rely on pessimistic locking and, if necessary, two-phase
|
4050
4207
|
# commit. Locking read-write transactions may abort, requiring the application
|
@@ -4060,9 +4217,9 @@ module Google
|
|
4060
4217
|
# simpler semantics and are almost always faster. In particular, read-only
|
4061
4218
|
# transactions do not take locks, so they do not conflict with read-write
|
4062
4219
|
# transactions. As a consequence of not taking locks, they also do not abort, so
|
4063
|
-
# retry loops are not needed. Transactions may only read
|
4064
|
-
# database. They may, however, read
|
4065
|
-
# database. Locking
|
4220
|
+
# retry loops are not needed. Transactions may only read-write data in a single
|
4221
|
+
# database. They may, however, read-write data in different tables within that
|
4222
|
+
# database. Locking read-write transactions: Locking transactions may be used to
|
4066
4223
|
# atomically read-modify-write data anywhere in a database. This type of
|
4067
4224
|
# transaction is externally consistent. Clients should attempt to minimize the
|
4068
4225
|
# amount of time a transaction is active. Faster transactions commit with higher
|
@@ -4081,7 +4238,7 @@ module Google
|
|
4081
4238
|
# Cloud Spanner makes no guarantees about how long the transaction's locks were
|
4082
4239
|
# held for. It is an error to use Cloud Spanner locks for any sort of mutual
|
4083
4240
|
# exclusion other than between Cloud Spanner transactions themselves. Retrying
|
4084
|
-
#
|
4241
|
+
# aborted transactions: When a transaction aborts, the application can choose to
|
4085
4242
|
# retry the whole transaction again. To maximize the chances of successfully
|
4086
4243
|
# committing the retry, the client should execute the retry in the same session
|
4087
4244
|
# as the original attempt. The original session's lock priority increases with
|
@@ -4090,14 +4247,14 @@ module Google
|
|
4090
4247
|
# transactions attempting to modify the same row(s)), a transaction can abort
|
4091
4248
|
# many times in a short period before successfully committing. Thus, it is not a
|
4092
4249
|
# good idea to cap the number of retries a transaction can attempt; instead, it
|
4093
|
-
# is better to limit the total amount of time spent retrying. Idle
|
4250
|
+
# is better to limit the total amount of time spent retrying. Idle transactions:
|
4094
4251
|
# A transaction is considered idle if it has no outstanding reads or SQL queries
|
4095
4252
|
# and has not started a read or SQL query within the last 10 seconds. Idle
|
4096
4253
|
# transactions can be aborted by Cloud Spanner so that they don't hold on to
|
4097
4254
|
# locks indefinitely. If an idle transaction is aborted, the commit will fail
|
4098
4255
|
# with error `ABORTED`. If this behavior is undesirable, periodically executing
|
4099
4256
|
# a simple SQL query in the transaction (for example, `SELECT 1`) prevents the
|
4100
|
-
# transaction from becoming idle. Snapshot
|
4257
|
+
# transaction from becoming idle. Snapshot read-only transactions: Snapshot read-
|
4101
4258
|
# only transactions provides a simpler method than locking read-write
|
4102
4259
|
# transactions for doing several consistent reads. However, this type of
|
4103
4260
|
# transaction does not support writes. Snapshot transactions do not take locks.
|
@@ -4113,7 +4270,7 @@ module Google
|
|
4113
4270
|
# how to choose a read timestamp. The types of timestamp bound are: - Strong (
|
4114
4271
|
# the default). - Bounded staleness. - Exact staleness. If the Cloud Spanner
|
4115
4272
|
# database to be read is geographically distributed, stale read-only
|
4116
|
-
# transactions can execute more quickly than strong or read-write
|
4273
|
+
# transactions can execute more quickly than strong or read-write transactions,
|
4117
4274
|
# because they are able to execute far from the leader replica. Each type of
|
4118
4275
|
# timestamp bound is discussed in detail below. Strong: Strong reads are
|
4119
4276
|
# guaranteed to see the effects of all transactions that have committed before
|
@@ -4123,7 +4280,7 @@ module Google
|
|
4123
4280
|
# two consecutive strong read-only transactions might return inconsistent
|
4124
4281
|
# results if there are concurrent writes. If consistency across reads is
|
4125
4282
|
# required, the reads should be executed within a transaction or at an exact
|
4126
|
-
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact
|
4283
|
+
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact staleness: These
|
4127
4284
|
# timestamp bounds execute reads at a user-specified timestamp. Reads at a
|
4128
4285
|
# timestamp are guaranteed to see a consistent prefix of the global transaction
|
4129
4286
|
# history: they observe modifications done by all transactions with a commit
|
@@ -4137,7 +4294,7 @@ module Google
|
|
4137
4294
|
# equivalent boundedly stale concurrency modes. On the other hand, boundedly
|
4138
4295
|
# stale reads usually return fresher results. See TransactionOptions.ReadOnly.
|
4139
4296
|
# read_timestamp and TransactionOptions.ReadOnly.exact_staleness. Bounded
|
4140
|
-
#
|
4297
|
+
# staleness: Bounded staleness modes allow Cloud Spanner to pick the read
|
4141
4298
|
# timestamp, subject to a user-provided staleness bound. Cloud Spanner chooses
|
4142
4299
|
# the newest timestamp within the staleness bound that allows execution of the
|
4143
4300
|
# reads at the closest available replica without blocking. All rows yielded are
|
@@ -4154,51 +4311,54 @@ module Google
|
|
4154
4311
|
# timestamp negotiation requires up-front knowledge of which rows will be read,
|
4155
4312
|
# it can only be used with single-use read-only transactions. See
|
4156
4313
|
# TransactionOptions.ReadOnly.max_staleness and TransactionOptions.ReadOnly.
|
4157
|
-
# min_read_timestamp. Old
|
4314
|
+
# min_read_timestamp. Old read timestamps and garbage collection: Cloud Spanner
|
4158
4315
|
# continuously garbage collects deleted and overwritten data in the background
|
4159
4316
|
# to reclaim storage space. This process is known as "version GC". By default,
|
4160
4317
|
# version GC reclaims versions after they are one hour old. Because of this,
|
4161
4318
|
# Cloud Spanner cannot perform reads at read timestamps more than one hour in
|
4162
4319
|
# the past. This restriction also applies to in-progress reads and/or SQL
|
4163
4320
|
# queries whose timestamp become too old while executing. Reads and SQL queries
|
4164
|
-
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
4165
|
-
#
|
4166
|
-
#
|
4167
|
-
#
|
4168
|
-
#
|
4169
|
-
#
|
4170
|
-
#
|
4171
|
-
#
|
4172
|
-
#
|
4173
|
-
#
|
4174
|
-
#
|
4175
|
-
#
|
4176
|
-
#
|
4177
|
-
#
|
4178
|
-
#
|
4179
|
-
#
|
4180
|
-
#
|
4181
|
-
#
|
4182
|
-
#
|
4183
|
-
#
|
4184
|
-
#
|
4185
|
-
#
|
4186
|
-
#
|
4187
|
-
#
|
4188
|
-
#
|
4189
|
-
#
|
4190
|
-
#
|
4191
|
-
#
|
4192
|
-
#
|
4193
|
-
#
|
4194
|
-
#
|
4195
|
-
#
|
4196
|
-
#
|
4197
|
-
#
|
4198
|
-
#
|
4199
|
-
#
|
4200
|
-
#
|
4201
|
-
#
|
4321
|
+
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`. You
|
4322
|
+
# can configure and extend the `VERSION_RETENTION_PERIOD` of a database up to a
|
4323
|
+
# period as long as one week, which allows Cloud Spanner to perform reads up to
|
4324
|
+
# one week in the past. Partitioned DML transactions: Partitioned DML
|
4325
|
+
# transactions are used to execute DML statements with a different execution
|
4326
|
+
# strategy that provides different, and often better, scalability properties for
|
4327
|
+
# large, table-wide operations than DML in a ReadWrite transaction. Smaller
|
4328
|
+
# scoped statements, such as an OLTP workload, should prefer using ReadWrite
|
4329
|
+
# transactions. Partitioned DML partitions the keyspace and runs the DML
|
4330
|
+
# statement on each partition in separate, internal transactions. These
|
4331
|
+
# transactions commit automatically when complete, and run independently from
|
4332
|
+
# one another. To reduce lock contention, this execution strategy only acquires
|
4333
|
+
# read locks on rows that match the WHERE clause of the statement. Additionally,
|
4334
|
+
# the smaller per-partition transactions hold locks for less time. That said,
|
4335
|
+
# Partitioned DML is not a drop-in replacement for standard DML used in
|
4336
|
+
# ReadWrite transactions. - The DML statement must be fully-partitionable.
|
4337
|
+
# Specifically, the statement must be expressible as the union of many
|
4338
|
+
# statements which each access only a single row of the table. - The statement
|
4339
|
+
# is not applied atomically to all rows of the table. Rather, the statement is
|
4340
|
+
# applied atomically to partitions of the table, in independent transactions.
|
4341
|
+
# Secondary index rows are updated atomically with the base table rows. -
|
4342
|
+
# Partitioned DML does not guarantee exactly-once execution semantics against a
|
4343
|
+
# partition. The statement will be applied at least once to each partition. It
|
4344
|
+
# is strongly recommended that the DML statement should be idempotent to avoid
|
4345
|
+
# unexpected results. For instance, it is potentially dangerous to run a
|
4346
|
+
# statement such as `UPDATE table SET column = column + 1` as it could be run
|
4347
|
+
# multiple times against some rows. - The partitions are committed automatically
|
4348
|
+
# - there is no support for Commit or Rollback. If the call returns an error, or
|
4349
|
+
# if the client issuing the ExecuteSql call dies, it is possible that some rows
|
4350
|
+
# had the statement executed on them successfully. It is also possible that
|
4351
|
+
# statement was never executed against other rows. - Partitioned DML
|
4352
|
+
# transactions may only contain the execution of a single DML statement via
|
4353
|
+
# ExecuteSql or ExecuteStreamingSql. - If any error is encountered during the
|
4354
|
+
# execution of the partitioned DML operation (for instance, a UNIQUE INDEX
|
4355
|
+
# violation, division by zero, or a value that cannot be stored due to schema
|
4356
|
+
# constraints), then the operation is stopped at that point and an error is
|
4357
|
+
# returned. It is possible that at this point, some partitions have been
|
4358
|
+
# committed (or even committed multiple times), and other partitions have not
|
4359
|
+
# been run at all. Given the above, Partitioned DML is good fit for large,
|
4360
|
+
# database-wide, operations that are idempotent, such as deleting old rows from
|
4361
|
+
# a very large table.
|
4202
4362
|
class TransactionOptions
|
4203
4363
|
include Google::Apis::Core::Hashable
|
4204
4364
|
|
@@ -4240,7 +4400,7 @@ module Google
|
|
4240
4400
|
# count towards the one transaction limit). After the active transaction is
|
4241
4401
|
# completed, the session can immediately be re-used for the next transaction. It
|
4242
4402
|
# is not necessary to create a new session for each transaction. Transaction
|
4243
|
-
#
|
4403
|
+
# modes: Cloud Spanner supports three transaction modes: 1. Locking read-write.
|
4244
4404
|
# This type of transaction is the only way to write data into Cloud Spanner.
|
4245
4405
|
# These transactions rely on pessimistic locking and, if necessary, two-phase
|
4246
4406
|
# commit. Locking read-write transactions may abort, requiring the application
|
@@ -4256,9 +4416,9 @@ module Google
|
|
4256
4416
|
# simpler semantics and are almost always faster. In particular, read-only
|
4257
4417
|
# transactions do not take locks, so they do not conflict with read-write
|
4258
4418
|
# transactions. As a consequence of not taking locks, they also do not abort, so
|
4259
|
-
# retry loops are not needed. Transactions may only read
|
4260
|
-
# database. They may, however, read
|
4261
|
-
# database. Locking
|
4419
|
+
# retry loops are not needed. Transactions may only read-write data in a single
|
4420
|
+
# database. They may, however, read-write data in different tables within that
|
4421
|
+
# database. Locking read-write transactions: Locking transactions may be used to
|
4262
4422
|
# atomically read-modify-write data anywhere in a database. This type of
|
4263
4423
|
# transaction is externally consistent. Clients should attempt to minimize the
|
4264
4424
|
# amount of time a transaction is active. Faster transactions commit with higher
|
@@ -4277,7 +4437,7 @@ module Google
|
|
4277
4437
|
# Cloud Spanner makes no guarantees about how long the transaction's locks were
|
4278
4438
|
# held for. It is an error to use Cloud Spanner locks for any sort of mutual
|
4279
4439
|
# exclusion other than between Cloud Spanner transactions themselves. Retrying
|
4280
|
-
#
|
4440
|
+
# aborted transactions: When a transaction aborts, the application can choose to
|
4281
4441
|
# retry the whole transaction again. To maximize the chances of successfully
|
4282
4442
|
# committing the retry, the client should execute the retry in the same session
|
4283
4443
|
# as the original attempt. The original session's lock priority increases with
|
@@ -4286,14 +4446,14 @@ module Google
|
|
4286
4446
|
# transactions attempting to modify the same row(s)), a transaction can abort
|
4287
4447
|
# many times in a short period before successfully committing. Thus, it is not a
|
4288
4448
|
# good idea to cap the number of retries a transaction can attempt; instead, it
|
4289
|
-
# is better to limit the total amount of time spent retrying. Idle
|
4449
|
+
# is better to limit the total amount of time spent retrying. Idle transactions:
|
4290
4450
|
# A transaction is considered idle if it has no outstanding reads or SQL queries
|
4291
4451
|
# and has not started a read or SQL query within the last 10 seconds. Idle
|
4292
4452
|
# transactions can be aborted by Cloud Spanner so that they don't hold on to
|
4293
4453
|
# locks indefinitely. If an idle transaction is aborted, the commit will fail
|
4294
4454
|
# with error `ABORTED`. If this behavior is undesirable, periodically executing
|
4295
4455
|
# a simple SQL query in the transaction (for example, `SELECT 1`) prevents the
|
4296
|
-
# transaction from becoming idle. Snapshot
|
4456
|
+
# transaction from becoming idle. Snapshot read-only transactions: Snapshot read-
|
4297
4457
|
# only transactions provides a simpler method than locking read-write
|
4298
4458
|
# transactions for doing several consistent reads. However, this type of
|
4299
4459
|
# transaction does not support writes. Snapshot transactions do not take locks.
|
@@ -4309,7 +4469,7 @@ module Google
|
|
4309
4469
|
# how to choose a read timestamp. The types of timestamp bound are: - Strong (
|
4310
4470
|
# the default). - Bounded staleness. - Exact staleness. If the Cloud Spanner
|
4311
4471
|
# database to be read is geographically distributed, stale read-only
|
4312
|
-
# transactions can execute more quickly than strong or read-write
|
4472
|
+
# transactions can execute more quickly than strong or read-write transactions,
|
4313
4473
|
# because they are able to execute far from the leader replica. Each type of
|
4314
4474
|
# timestamp bound is discussed in detail below. Strong: Strong reads are
|
4315
4475
|
# guaranteed to see the effects of all transactions that have committed before
|
@@ -4319,7 +4479,7 @@ module Google
|
|
4319
4479
|
# two consecutive strong read-only transactions might return inconsistent
|
4320
4480
|
# results if there are concurrent writes. If consistency across reads is
|
4321
4481
|
# required, the reads should be executed within a transaction or at an exact
|
4322
|
-
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact
|
4482
|
+
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact staleness: These
|
4323
4483
|
# timestamp bounds execute reads at a user-specified timestamp. Reads at a
|
4324
4484
|
# timestamp are guaranteed to see a consistent prefix of the global transaction
|
4325
4485
|
# history: they observe modifications done by all transactions with a commit
|
@@ -4333,7 +4493,7 @@ module Google
|
|
4333
4493
|
# equivalent boundedly stale concurrency modes. On the other hand, boundedly
|
4334
4494
|
# stale reads usually return fresher results. See TransactionOptions.ReadOnly.
|
4335
4495
|
# read_timestamp and TransactionOptions.ReadOnly.exact_staleness. Bounded
|
4336
|
-
#
|
4496
|
+
# staleness: Bounded staleness modes allow Cloud Spanner to pick the read
|
4337
4497
|
# timestamp, subject to a user-provided staleness bound. Cloud Spanner chooses
|
4338
4498
|
# the newest timestamp within the staleness bound that allows execution of the
|
4339
4499
|
# reads at the closest available replica without blocking. All rows yielded are
|
@@ -4350,51 +4510,54 @@ module Google
|
|
4350
4510
|
# timestamp negotiation requires up-front knowledge of which rows will be read,
|
4351
4511
|
# it can only be used with single-use read-only transactions. See
|
4352
4512
|
# TransactionOptions.ReadOnly.max_staleness and TransactionOptions.ReadOnly.
|
4353
|
-
# min_read_timestamp. Old
|
4513
|
+
# min_read_timestamp. Old read timestamps and garbage collection: Cloud Spanner
|
4354
4514
|
# continuously garbage collects deleted and overwritten data in the background
|
4355
4515
|
# to reclaim storage space. This process is known as "version GC". By default,
|
4356
4516
|
# version GC reclaims versions after they are one hour old. Because of this,
|
4357
4517
|
# Cloud Spanner cannot perform reads at read timestamps more than one hour in
|
4358
4518
|
# the past. This restriction also applies to in-progress reads and/or SQL
|
4359
4519
|
# queries whose timestamp become too old while executing. Reads and SQL queries
|
4360
|
-
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
4361
|
-
#
|
4362
|
-
#
|
4363
|
-
#
|
4364
|
-
#
|
4365
|
-
#
|
4366
|
-
#
|
4367
|
-
#
|
4368
|
-
#
|
4369
|
-
#
|
4370
|
-
#
|
4371
|
-
#
|
4372
|
-
#
|
4373
|
-
#
|
4374
|
-
#
|
4375
|
-
#
|
4376
|
-
#
|
4377
|
-
#
|
4378
|
-
#
|
4379
|
-
#
|
4380
|
-
#
|
4381
|
-
#
|
4382
|
-
#
|
4383
|
-
#
|
4384
|
-
#
|
4385
|
-
#
|
4386
|
-
#
|
4387
|
-
#
|
4388
|
-
#
|
4389
|
-
#
|
4390
|
-
#
|
4391
|
-
#
|
4392
|
-
#
|
4393
|
-
#
|
4394
|
-
#
|
4395
|
-
#
|
4396
|
-
#
|
4397
|
-
#
|
4520
|
+
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`. You
|
4521
|
+
# can configure and extend the `VERSION_RETENTION_PERIOD` of a database up to a
|
4522
|
+
# period as long as one week, which allows Cloud Spanner to perform reads up to
|
4523
|
+
# one week in the past. Partitioned DML transactions: Partitioned DML
|
4524
|
+
# transactions are used to execute DML statements with a different execution
|
4525
|
+
# strategy that provides different, and often better, scalability properties for
|
4526
|
+
# large, table-wide operations than DML in a ReadWrite transaction. Smaller
|
4527
|
+
# scoped statements, such as an OLTP workload, should prefer using ReadWrite
|
4528
|
+
# transactions. Partitioned DML partitions the keyspace and runs the DML
|
4529
|
+
# statement on each partition in separate, internal transactions. These
|
4530
|
+
# transactions commit automatically when complete, and run independently from
|
4531
|
+
# one another. To reduce lock contention, this execution strategy only acquires
|
4532
|
+
# read locks on rows that match the WHERE clause of the statement. Additionally,
|
4533
|
+
# the smaller per-partition transactions hold locks for less time. That said,
|
4534
|
+
# Partitioned DML is not a drop-in replacement for standard DML used in
|
4535
|
+
# ReadWrite transactions. - The DML statement must be fully-partitionable.
|
4536
|
+
# Specifically, the statement must be expressible as the union of many
|
4537
|
+
# statements which each access only a single row of the table. - The statement
|
4538
|
+
# is not applied atomically to all rows of the table. Rather, the statement is
|
4539
|
+
# applied atomically to partitions of the table, in independent transactions.
|
4540
|
+
# Secondary index rows are updated atomically with the base table rows. -
|
4541
|
+
# Partitioned DML does not guarantee exactly-once execution semantics against a
|
4542
|
+
# partition. The statement will be applied at least once to each partition. It
|
4543
|
+
# is strongly recommended that the DML statement should be idempotent to avoid
|
4544
|
+
# unexpected results. For instance, it is potentially dangerous to run a
|
4545
|
+
# statement such as `UPDATE table SET column = column + 1` as it could be run
|
4546
|
+
# multiple times against some rows. - The partitions are committed automatically
|
4547
|
+
# - there is no support for Commit or Rollback. If the call returns an error, or
|
4548
|
+
# if the client issuing the ExecuteSql call dies, it is possible that some rows
|
4549
|
+
# had the statement executed on them successfully. It is also possible that
|
4550
|
+
# statement was never executed against other rows. - Partitioned DML
|
4551
|
+
# transactions may only contain the execution of a single DML statement via
|
4552
|
+
# ExecuteSql or ExecuteStreamingSql. - If any error is encountered during the
|
4553
|
+
# execution of the partitioned DML operation (for instance, a UNIQUE INDEX
|
4554
|
+
# violation, division by zero, or a value that cannot be stored due to schema
|
4555
|
+
# constraints), then the operation is stopped at that point and an error is
|
4556
|
+
# returned. It is possible that at this point, some partitions have been
|
4557
|
+
# committed (or even committed multiple times), and other partitions have not
|
4558
|
+
# been run at all. Given the above, Partitioned DML is good fit for large,
|
4559
|
+
# database-wide, operations that are idempotent, such as deleting old rows from
|
4560
|
+
# a very large table.
|
4398
4561
|
# Corresponds to the JSON property `begin`
|
4399
4562
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
4400
4563
|
attr_accessor :begin
|
@@ -4410,7 +4573,7 @@ module Google
|
|
4410
4573
|
# count towards the one transaction limit). After the active transaction is
|
4411
4574
|
# completed, the session can immediately be re-used for the next transaction. It
|
4412
4575
|
# is not necessary to create a new session for each transaction. Transaction
|
4413
|
-
#
|
4576
|
+
# modes: Cloud Spanner supports three transaction modes: 1. Locking read-write.
|
4414
4577
|
# This type of transaction is the only way to write data into Cloud Spanner.
|
4415
4578
|
# These transactions rely on pessimistic locking and, if necessary, two-phase
|
4416
4579
|
# commit. Locking read-write transactions may abort, requiring the application
|
@@ -4426,9 +4589,9 @@ module Google
|
|
4426
4589
|
# simpler semantics and are almost always faster. In particular, read-only
|
4427
4590
|
# transactions do not take locks, so they do not conflict with read-write
|
4428
4591
|
# transactions. As a consequence of not taking locks, they also do not abort, so
|
4429
|
-
# retry loops are not needed. Transactions may only read
|
4430
|
-
# database. They may, however, read
|
4431
|
-
# database. Locking
|
4592
|
+
# retry loops are not needed. Transactions may only read-write data in a single
|
4593
|
+
# database. They may, however, read-write data in different tables within that
|
4594
|
+
# database. Locking read-write transactions: Locking transactions may be used to
|
4432
4595
|
# atomically read-modify-write data anywhere in a database. This type of
|
4433
4596
|
# transaction is externally consistent. Clients should attempt to minimize the
|
4434
4597
|
# amount of time a transaction is active. Faster transactions commit with higher
|
@@ -4447,7 +4610,7 @@ module Google
|
|
4447
4610
|
# Cloud Spanner makes no guarantees about how long the transaction's locks were
|
4448
4611
|
# held for. It is an error to use Cloud Spanner locks for any sort of mutual
|
4449
4612
|
# exclusion other than between Cloud Spanner transactions themselves. Retrying
|
4450
|
-
#
|
4613
|
+
# aborted transactions: When a transaction aborts, the application can choose to
|
4451
4614
|
# retry the whole transaction again. To maximize the chances of successfully
|
4452
4615
|
# committing the retry, the client should execute the retry in the same session
|
4453
4616
|
# as the original attempt. The original session's lock priority increases with
|
@@ -4456,14 +4619,14 @@ module Google
|
|
4456
4619
|
# transactions attempting to modify the same row(s)), a transaction can abort
|
4457
4620
|
# many times in a short period before successfully committing. Thus, it is not a
|
4458
4621
|
# good idea to cap the number of retries a transaction can attempt; instead, it
|
4459
|
-
# is better to limit the total amount of time spent retrying. Idle
|
4622
|
+
# is better to limit the total amount of time spent retrying. Idle transactions:
|
4460
4623
|
# A transaction is considered idle if it has no outstanding reads or SQL queries
|
4461
4624
|
# and has not started a read or SQL query within the last 10 seconds. Idle
|
4462
4625
|
# transactions can be aborted by Cloud Spanner so that they don't hold on to
|
4463
4626
|
# locks indefinitely. If an idle transaction is aborted, the commit will fail
|
4464
4627
|
# with error `ABORTED`. If this behavior is undesirable, periodically executing
|
4465
4628
|
# a simple SQL query in the transaction (for example, `SELECT 1`) prevents the
|
4466
|
-
# transaction from becoming idle. Snapshot
|
4629
|
+
# transaction from becoming idle. Snapshot read-only transactions: Snapshot read-
|
4467
4630
|
# only transactions provides a simpler method than locking read-write
|
4468
4631
|
# transactions for doing several consistent reads. However, this type of
|
4469
4632
|
# transaction does not support writes. Snapshot transactions do not take locks.
|
@@ -4479,7 +4642,7 @@ module Google
|
|
4479
4642
|
# how to choose a read timestamp. The types of timestamp bound are: - Strong (
|
4480
4643
|
# the default). - Bounded staleness. - Exact staleness. If the Cloud Spanner
|
4481
4644
|
# database to be read is geographically distributed, stale read-only
|
4482
|
-
# transactions can execute more quickly than strong or read-write
|
4645
|
+
# transactions can execute more quickly than strong or read-write transactions,
|
4483
4646
|
# because they are able to execute far from the leader replica. Each type of
|
4484
4647
|
# timestamp bound is discussed in detail below. Strong: Strong reads are
|
4485
4648
|
# guaranteed to see the effects of all transactions that have committed before
|
@@ -4489,7 +4652,7 @@ module Google
|
|
4489
4652
|
# two consecutive strong read-only transactions might return inconsistent
|
4490
4653
|
# results if there are concurrent writes. If consistency across reads is
|
4491
4654
|
# required, the reads should be executed within a transaction or at an exact
|
4492
|
-
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact
|
4655
|
+
# read timestamp. See TransactionOptions.ReadOnly.strong. Exact staleness: These
|
4493
4656
|
# timestamp bounds execute reads at a user-specified timestamp. Reads at a
|
4494
4657
|
# timestamp are guaranteed to see a consistent prefix of the global transaction
|
4495
4658
|
# history: they observe modifications done by all transactions with a commit
|
@@ -4503,7 +4666,7 @@ module Google
|
|
4503
4666
|
# equivalent boundedly stale concurrency modes. On the other hand, boundedly
|
4504
4667
|
# stale reads usually return fresher results. See TransactionOptions.ReadOnly.
|
4505
4668
|
# read_timestamp and TransactionOptions.ReadOnly.exact_staleness. Bounded
|
4506
|
-
#
|
4669
|
+
# staleness: Bounded staleness modes allow Cloud Spanner to pick the read
|
4507
4670
|
# timestamp, subject to a user-provided staleness bound. Cloud Spanner chooses
|
4508
4671
|
# the newest timestamp within the staleness bound that allows execution of the
|
4509
4672
|
# reads at the closest available replica without blocking. All rows yielded are
|
@@ -4520,51 +4683,54 @@ module Google
|
|
4520
4683
|
# timestamp negotiation requires up-front knowledge of which rows will be read,
|
4521
4684
|
# it can only be used with single-use read-only transactions. See
|
4522
4685
|
# TransactionOptions.ReadOnly.max_staleness and TransactionOptions.ReadOnly.
|
4523
|
-
# min_read_timestamp. Old
|
4686
|
+
# min_read_timestamp. Old read timestamps and garbage collection: Cloud Spanner
|
4524
4687
|
# continuously garbage collects deleted and overwritten data in the background
|
4525
4688
|
# to reclaim storage space. This process is known as "version GC". By default,
|
4526
4689
|
# version GC reclaims versions after they are one hour old. Because of this,
|
4527
4690
|
# Cloud Spanner cannot perform reads at read timestamps more than one hour in
|
4528
4691
|
# the past. This restriction also applies to in-progress reads and/or SQL
|
4529
4692
|
# queries whose timestamp become too old while executing. Reads and SQL queries
|
4530
|
-
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
4531
|
-
#
|
4532
|
-
#
|
4533
|
-
#
|
4534
|
-
#
|
4535
|
-
#
|
4536
|
-
#
|
4537
|
-
#
|
4538
|
-
#
|
4539
|
-
#
|
4540
|
-
#
|
4541
|
-
#
|
4542
|
-
#
|
4543
|
-
#
|
4544
|
-
#
|
4545
|
-
#
|
4546
|
-
#
|
4547
|
-
#
|
4548
|
-
#
|
4549
|
-
#
|
4550
|
-
#
|
4551
|
-
#
|
4552
|
-
#
|
4553
|
-
#
|
4554
|
-
#
|
4555
|
-
#
|
4556
|
-
#
|
4557
|
-
#
|
4558
|
-
#
|
4559
|
-
#
|
4560
|
-
#
|
4561
|
-
#
|
4562
|
-
#
|
4563
|
-
#
|
4564
|
-
#
|
4565
|
-
#
|
4566
|
-
#
|
4567
|
-
#
|
4693
|
+
# with too-old read timestamps fail with the error `FAILED_PRECONDITION`. You
|
4694
|
+
# can configure and extend the `VERSION_RETENTION_PERIOD` of a database up to a
|
4695
|
+
# period as long as one week, which allows Cloud Spanner to perform reads up to
|
4696
|
+
# one week in the past. Partitioned DML transactions: Partitioned DML
|
4697
|
+
# transactions are used to execute DML statements with a different execution
|
4698
|
+
# strategy that provides different, and often better, scalability properties for
|
4699
|
+
# large, table-wide operations than DML in a ReadWrite transaction. Smaller
|
4700
|
+
# scoped statements, such as an OLTP workload, should prefer using ReadWrite
|
4701
|
+
# transactions. Partitioned DML partitions the keyspace and runs the DML
|
4702
|
+
# statement on each partition in separate, internal transactions. These
|
4703
|
+
# transactions commit automatically when complete, and run independently from
|
4704
|
+
# one another. To reduce lock contention, this execution strategy only acquires
|
4705
|
+
# read locks on rows that match the WHERE clause of the statement. Additionally,
|
4706
|
+
# the smaller per-partition transactions hold locks for less time. That said,
|
4707
|
+
# Partitioned DML is not a drop-in replacement for standard DML used in
|
4708
|
+
# ReadWrite transactions. - The DML statement must be fully-partitionable.
|
4709
|
+
# Specifically, the statement must be expressible as the union of many
|
4710
|
+
# statements which each access only a single row of the table. - The statement
|
4711
|
+
# is not applied atomically to all rows of the table. Rather, the statement is
|
4712
|
+
# applied atomically to partitions of the table, in independent transactions.
|
4713
|
+
# Secondary index rows are updated atomically with the base table rows. -
|
4714
|
+
# Partitioned DML does not guarantee exactly-once execution semantics against a
|
4715
|
+
# partition. The statement will be applied at least once to each partition. It
|
4716
|
+
# is strongly recommended that the DML statement should be idempotent to avoid
|
4717
|
+
# unexpected results. For instance, it is potentially dangerous to run a
|
4718
|
+
# statement such as `UPDATE table SET column = column + 1` as it could be run
|
4719
|
+
# multiple times against some rows. - The partitions are committed automatically
|
4720
|
+
# - there is no support for Commit or Rollback. If the call returns an error, or
|
4721
|
+
# if the client issuing the ExecuteSql call dies, it is possible that some rows
|
4722
|
+
# had the statement executed on them successfully. It is also possible that
|
4723
|
+
# statement was never executed against other rows. - Partitioned DML
|
4724
|
+
# transactions may only contain the execution of a single DML statement via
|
4725
|
+
# ExecuteSql or ExecuteStreamingSql. - If any error is encountered during the
|
4726
|
+
# execution of the partitioned DML operation (for instance, a UNIQUE INDEX
|
4727
|
+
# violation, division by zero, or a value that cannot be stored due to schema
|
4728
|
+
# constraints), then the operation is stopped at that point and an error is
|
4729
|
+
# returned. It is possible that at this point, some partitions have been
|
4730
|
+
# committed (or even committed multiple times), and other partitions have not
|
4731
|
+
# been run at all. Given the above, Partitioned DML is good fit for large,
|
4732
|
+
# database-wide, operations that are idempotent, such as deleting old rows from
|
4733
|
+
# a very large table.
|
4568
4734
|
# Corresponds to the JSON property `singleUse`
|
4569
4735
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
4570
4736
|
attr_accessor :single_use
|