public interface BatchReadOnlyTransaction extends ReadOnlyTransaction
BatchReadOnlyTransaction
can be configured to read at timestamps in the past and allows
for exporting arbitrarily large amounts of data from Cloud Spanner databases. This is a read only
transaction which additionally allows to partition a read or query request.
Read/query request can then be executed independently over each partition while observing the
same snapshot of the database. BatchReadOnlyTransaction can also be shared across multiple
processes/machines by passing around the BatchTransactionId and then recreating the transaction
using BatchClient.batchReadOnlyTransaction(BatchTransactionId)
.
Unlike locking read-write transactions, BatchReadOnlyTransaction never abort. They can fail if the chosen read timestamp is garbage collected; however any read or query activity within an hour on the transaction avoids garbage collection and most applications do not need to worry about this in practice.
To execute a BatchReadOnlyTransaction, specify a TimestampBound
, which tells Cloud
Spanner how to choose a read timestamp.
ReadContext.QueryAnalyzeMode
Modifier and Type | Method and Description |
---|---|
ResultSet |
execute(Partition partition)
Execute the partition to return
ResultSet . |
BatchTransactionId |
getBatchTransactionId()
Returns a
BatchTransactionId to be re-used across several machines/processes. |
List<Partition> |
partitionQuery(PartitionOptions partitionOptions,
Statement statement,
Options.QueryOption... options)
Returns a list of
Partition to execute a query against the database. |
List<Partition> |
partitionRead(PartitionOptions partitionOptions,
String table,
KeySet keys,
Iterable<String> columns,
Options.ReadOption... options)
Returns a list of
Partition to read zero or more rows from a database. |
List<Partition> |
partitionReadUsingIndex(PartitionOptions partitionOptions,
String table,
String index,
KeySet keys,
Iterable<String> columns,
Options.ReadOption... options)
Returns a list of
Partition to read zero or more rows from a database using an index. |
getReadTimestamp
analyzeQuery, close, executeQuery, read, readRow, readRowUsingIndex, readUsingIndex
List<Partition> partitionRead(PartitionOptions partitionOptions, String table, KeySet keys, Iterable<String> columns, Options.ReadOption... options) throws SpannerException
Partition
to read zero or more rows from a database.
These partitions can be executed across multiple processes, even across different machines.
The partition size and count hints can be configured using PartitionOptions
.
partitionOptions
- configuration for size and count of partitions returnedtable
- the name of the table to readkeys
- the keys and ranges of rows to read. Regardless of ordering in keys
, rows
are returned in their natural key order.columns
- the columns to readoptions
- the options to configure the read, supported values are
Options.prefetchChunks()
SpannerException
List<Partition> partitionReadUsingIndex(PartitionOptions partitionOptions, String table, String index, KeySet keys, Iterable<String> columns, Options.ReadOption... options) throws SpannerException
Partition
to read zero or more rows from a database using an index.
These partitions can be executed across multiple processes, even across different machines.
The partition size and count can be configured using PartitionOptions
. Though it may
not necessarily be honored depending on the parameters in the request.
partitionOptions
- configuration for size and count of partitions returnedtable
- the name of the table to readindex
- the name of the index on table
to usekeys
- the keys and ranges of index rows to read. Regardless of ordering in keys
,
rows are returned in the natural key order of the index.columns
- the columns to readoptions
- the options to configure the readSpannerException
List<Partition> partitionQuery(PartitionOptions partitionOptions, Statement statement, Options.QueryOption... options) throws SpannerException
Partition
to execute a query against the database.
These partitions can be executed across multiple processes, even across different machines.
The partition size and count can be configured using PartitionOptions
. Though it may
not necessarily be honored depending on the query and options in the request.
partitionOptions
- configuration for size and count of partitions returnedstatement
- the query statement to executeoptions
- the options to configure the querySpannerException
ResultSet execute(Partition partition) throws SpannerException
ResultSet
. The result returned could be zero or more
rows. The row metadata may be absent if no rows are returned.SpannerException
BatchTransactionId getBatchTransactionId()
BatchTransactionId
to be re-used across several machines/processes. This
BatchTransactionId guarantees the subsequent read/query to be executed at the same timestamp.Copyright © 2018 Google. All rights reserved.