use of com.google.cloud.spanner.Spanner in project spanner-jdbc by olavloite.
the class CloudSpannerDriver method closeConnection.
void closeConnection(CloudSpannerConnection connection) {
List<CloudSpannerConnection> list = connections.get(connection.getSpanner());
if (list == null)
throw new IllegalStateException("Connection is not registered");
if (!list.remove(connection))
throw new IllegalStateException("Connection is not registered");
if (list.isEmpty()) {
Spanner spanner = connection.getSpanner();
connections.remove(spanner);
spanner.close();
}
}
use of com.google.cloud.spanner.Spanner in project java-docs-samples by GoogleCloudPlatform.
the class BatchSample method main.
/**
* This example showcases how to create a batch client, partition a query, and concurrently read
* from multiple partitions.
*/
public static void main(String[] args) throws InterruptedException {
if (args.length != 2) {
System.err.println("Usage: BatchSample <instance_id> <database_id>");
return;
}
/*
* CREATE TABLE Singers (
* SingerId INT64 NOT NULL,
* FirstName STRING(1024),
* LastName STRING(1024),
* SingerInfo BYTES(MAX),
* ) PRIMARY KEY (SingerId);
*/
String instanceId = args[0];
String databaseId = args[1];
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
// [START spanner_batch_client]
int numThreads = Runtime.getRuntime().availableProcessors();
ExecutorService executor = Executors.newFixedThreadPool(numThreads);
// Statistics
int totalPartitions;
AtomicInteger totalRecords = new AtomicInteger(0);
try {
BatchClient batchClient = spanner.getBatchClient(DatabaseId.of(options.getProjectId(), instanceId, databaseId));
final BatchReadOnlyTransaction txn = batchClient.batchReadOnlyTransaction(TimestampBound.strong());
// A Partition object is serializable and can be used from a different process.
List<Partition> partitions = txn.partitionQuery(PartitionOptions.getDefaultInstance(), Statement.of("SELECT SingerId, FirstName, LastName FROM Singers"));
totalPartitions = partitions.size();
for (final Partition p : partitions) {
executor.execute(() -> {
try (ResultSet results = txn.execute(p)) {
while (results.next()) {
long singerId = results.getLong(0);
String firstName = results.getString(1);
String lastName = results.getString(2);
System.out.println("[" + singerId + "] " + firstName + " " + lastName);
totalRecords.getAndIncrement();
}
}
});
}
} finally {
executor.shutdown();
executor.awaitTermination(1, TimeUnit.HOURS);
spanner.close();
}
double avgRecordsPerPartition = 0.0;
if (totalPartitions != 0) {
avgRecordsPerPartition = (double) totalRecords.get() / totalPartitions;
}
System.out.println("totalPartitions=" + totalPartitions);
System.out.println("totalRecords=" + totalRecords);
System.out.println("avgRecordsPerPartition=" + avgRecordsPerPartition);
// [END spanner_batch_client]
}
use of com.google.cloud.spanner.Spanner in project java-docs-samples by GoogleCloudPlatform.
the class SpannerSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 3) {
printUsageAndExit();
}
// [START init_client]
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
try {
String command = args[0];
DatabaseId db = DatabaseId.of(options.getProjectId(), args[1], args[2]);
// [END init_client]
// This will return the default project id based on the environment.
String clientProject = spanner.getOptions().getProjectId();
if (!db.getInstanceId().getProject().equals(clientProject)) {
System.err.println("Invalid project specified. Project in the database id should match" + "the project name set in the environment variable GCLOUD_PROJECT. Expected: " + clientProject);
printUsageAndExit();
}
// [START init_client]
DatabaseClient dbClient = spanner.getDatabaseClient(db);
DatabaseAdminClient dbAdminClient = spanner.getDatabaseAdminClient();
// [END init_client]
run(dbClient, dbAdminClient, command, db);
} finally {
spanner.close();
}
System.out.println("Closed client");
}
use of com.google.cloud.spanner.Spanner in project java-docs-samples by GoogleCloudPlatform.
the class TracingSample method main.
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("Usage: TracingSample <instance_id> <database_id>");
return;
}
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
// Installs a handler for /tracez page.
ZPageHandlers.startHttpServerAndRegisterAll(8080);
// Installs an exporter for stack driver traces.
StackdriverExporter.createAndRegister();
Tracing.getExportComponent().getSampledSpanStore().registerSpanNamesForCollection(Arrays.asList(SAMPLE_SPAN));
// Installs an exporter for stack driver stats.
StackdriverStatsExporter.createAndRegister();
RpcViews.registerAllCumulativeViews();
// Name of your instance & database.
String instanceId = args[0];
String databaseId = args[1];
try {
// Creates a database client
DatabaseClient dbClient = spanner.getDatabaseClient(DatabaseId.of(options.getProjectId(), instanceId, databaseId));
// Queries the database
try (Scope ss = Tracing.getTracer().spanBuilderWithExplicitParent(SAMPLE_SPAN, null).setSampler(Samplers.alwaysSample()).startScopedSpan()) {
ResultSet resultSet = dbClient.singleUse().executeQuery(Statement.of("SELECT 1"));
System.out.println("\n\nResults:");
// Prints the results
while (resultSet.next()) {
System.out.printf("%d\n\n", resultSet.getLong(0));
}
}
} finally {
// Closes the client which will free up the resources used
spanner.close();
}
}
use of com.google.cloud.spanner.Spanner in project java-docs-samples by GoogleCloudPlatform.
the class SpannerSampleIT method setUp.
@Before
public void setUp() throws Exception {
SpannerOptions options = SpannerOptions.newBuilder().build();
Spanner spanner = options.getService();
dbClient = spanner.getDatabaseAdminClient();
dbId = DatabaseId.of(options.getProjectId(), instanceId, databaseId);
dbClient.dropDatabase(dbId.getInstanceId().getInstance(), dbId.getDatabase());
}
Aggregations