Chapter 17. Google Cloud Bigtable

Cloud-Bigtable

 

Cloud Bigtable is Google’s NoSQL Big Data database service. It’s the same database that powers many core Google services, including Search, Analytics, Maps, and Gmail.

Bigtable is designed to handle massive workloads at consistent low latency and high throughput, so it’s a great choice for both operational and analytical applications, including IoT, user analytics, and financial data analysis.

 
 -- Google Cloud Bigtable Homepage

17.1. Bigtable Setup

Bigtable implements the HBase interface for all data access operations, and requires some extra binary dependencies and some specific configuration options to connect.

17.1.1. Dependencies

Bigtable connectivity relies on the cloud-bigtable-client library. This library is open-source and is hosted on GitHub. JanusGraph uses the HBase 1.0 API, so we require the lastest version of the bigtable-hbase-1.0 artifact.

This library also uses the netty-tcnative-boringssl-static library to make secure connections to Bigtable. Use the version recommended by the cloud-bigtable-client library.

These two dependencies must be on the classpath of the Java binary that connects to Bigtable. Maven dependencies could be defined as:

<dependency>
    <groupId>com.google.cloud.bigtable</groupId>
    <artifactId>bigtable-hbase-1.0</artifactId>
    <version>0.9.5.1</version>
</dependency>

<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-tcnative-boringssl-static</artifactId>
   <version>1.1.33.Fork19</version>
</dependency>

It is recommended to check the documentation on the cloud-bigtable-client github homepage for updated documentation on dependencies and version numbers.

17.1.2. Connecting to Bigtable

Configuring JanusGraph to connect to Bigtable is achieved by using the hbase backend, along with a custom connection implementation, the project id of the Google Cloud Platform project containing the Bigtable instance, and the Cloud Bigtable instance id you are connecting to.

Example:

storage.backend=hbase
storage.hbase.ext.hbase.client.connection.impl=com.google.cloud.bigtable.hbase1_0.BigtableConnection
storage.hbase.ext.google.bigtable.project.id=<Google Cloud Platform project id>
storage.hbase.ext.google.bigtable.instance.id=<Bigtable instance id>