Bigtable

Bigtable

new Bigtable(optionsopt)

Parameters:
Name Type Attributes Description
options ClientConfig <optional>

Configuration options.

See:
Examples
Create a client that uses <a href="https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application">Application Default Credentials (ADC)</a>:
```
const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable();

```
Create a client with <a href="https://cloud.google.com/docs/authentication/production#obtaining_and_providing_service_account_credentials_manually">explicit credentials</a>:
```
const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable({
  projectId: 'your-project-id',
  keyFilename: '/path/to/keyfile.json'
});

```
The Bigtable Emulator
```
// Make sure you have the gcloud SDK installed, then run:
$ gcloud beta emulators bigtable start

// Before running your Node.js app, set the environment variables that this
// library will look for to connect to the emulator:

$ $(gcloud beta emulators bigtable env-init)

```
Creating a Bigtable Instance and Cluster
```

// Before you create your table, you first need to create a Bigtable Instance
// and cluster for the table to be served from.

const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable();

const callback = (err, instance, operation) => {
  operation
    .on('error', console.log)
    .on('complete', () => {
      // `instance` is your newly created Instance object.
    });
};

const instance = bigtable.instance('my-instance');

instance.create({
  clusters: [
    {
      id: 'my-cluster',
      location: 'us-central1-b',
      nodes: 3
    }
  ]
}, callback);

// This can also be done from either the Google Cloud Platform Console or the
// `gcloud` cli tool. Please refer to the
// official Bigtable documentation
// for more information.

```
Creating Tables
```
// After creating your instance and enabling the Bigtable APIs, you are now
// ready to create your table with Instance#createTable.
instance.createTable('prezzy', function(err, table) {
  // `table` is your newly created Table object.
});

```
Creating Column Families
```
// Column families are used to group together various pieces of data within
// your table. You can think of column families as a mechanism to categorize
// all of your data.
//
// We can create a column family with Table#createFamily.
const table = instance.table('prezzy');

table.createFamily('follows', function(err, family) {
  // `family` is your newly created Family object.
});

// It is also possible to create your column families when creating a new
// table.
const options = {
  families: ['follows']
};

instance.createTable('prezzy', options, function(err, table) {});

```
Creating Rows
```
// New rows can be created within your table using
// Table#insert. You must provide a unique key for each row
// to be inserted, this key can then be used to retrieve your row at a later
// time.
//
// With Bigtable, all columns have a unique id composed of a column family
// and a column qualifier. In the example below `follows` is the column
// family and `tjefferson` is the column qualifier. Together they could be
// referred to as `follows:tjefferson`.
const rows = [
  {
    key: 'wmckinley',
    data: {
      follows: {
        tjefferson: 1
      }
    }
  }
];

table.insert(rows, err => {
  if (!err) {
    // Your rows were successfully inserted.
  }
});

```
Retrieving Rows
```
// If you're anticipating a large number of rows to be returned, we suggest
// using the Table#getRows streaming API.
table.createReadStream()
  .on('error', console.error)
  .on('data', row => {
    // `row` is a Row object.
  });

// If you're not anticpating a large number of results, a callback mode
// is also available.
const callback = (err, rows) => {
  // `rows` is an array of Row objects.
};

table.getRows(callback);

// A range of rows can be retrieved by providing `start` and `end` row keys.
const options = {
  start: 'gwashington',
  end: 'wmckinley'
};

table.getRows(options, callback);

// Retrieve an individual row with Row#get.
const row = table.row('alincoln');

row.get(err => {
  // `row.data` is now populated.
});

```
Accessing Row Data
```
// When retrieving rows, upon success the `row.data` property will be
// populated by an object. That object will contain additional objects
// for each family in your table that the row has data for.
//
// By default, when retrieving rows, each column qualifier will provide you
// with all previous versions of the data. So your `row.data` object could
// resemble the following.
{
  follows: {
    wmckinley: [
      {
        value: 1,
        timestamp: 1466017315951
      }, {
        value: 2,
        timestamp: 1458619200000
      }
    ]
  }
}

// The `timestamp` field can be used to order cells from newest to oldest.
// If you only wish to retrieve the most recent version of the data, you
// can specify the number of cells with a Filter object.
const filter = [
  {
    column: {
      cellLimit: 1
    }
  }
];

table.getRows({
  filter: filter
}, callback);

```
Deleting Row Data
```
// We can delete all of an individual row's cells using Row#delete.
const callback = err => {
  if (!err) {
    // All cells for this row were deleted successfully.
  }
};

row.delete(callback);

// To delete a specific set of cells, we can provide an array of
// column families and qualifiers.
const cells = [
  'follows:gwashington',
  'traits'
];

row.delete(cells, callback);

```
Deleting Rows
```
// If you wish to delete multiple rows entirely, we can do so with
// Table#deleteRows. You can provide this method with a
// row key prefix.
const options = {
  prefix: 'gwash'
};

table.deleteRows(options, err => {
  if (!err) {
    // Rows were deleted successfully.
  }
});

// If you omit the prefix, you can delete all rows in your table.
table.deleteRows(err => {
  if (!err) {
    // All rows were deleted successfully.
  }
});
```

Members

AppProfile

AppProfile class.

See:

Cluster

Cluster class.

See:

Instance

Instance class.

See:

Methods

close()

Close all bigtable clients. New requests will be rejected but it will not kill connections with pending requests.

createInstance(id, options, callback)

Create a Cloud Bigtable instance.

Parameters:
Name Type Description
id string

The unique id of the instance.

options object

Instance creation options.

Properties
Name Type Attributes Description
clusters Array.<object>

The clusters to be created within the instance.

displayName string <optional>

The descriptive name for this instance as it appears in UIs.

labels Object.<string, string> <optional>

Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. They can be used to filter resources and aggregate metrics.

  • Label keys must be between 1 and 63 characters long and must conform to the regular expression: [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}.
  • Label values must be between 0 and 63 characters long and must conform to the regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63}.
  • No more than 64 labels can be associated with a given resource.
  • Keys and values must both be under 128 bytes.
type string <optional>

The type of the instance. Options are 'production' or 'development'.

gaxOptions object <optional>

Request configuration options, outlined here: https://googleapis.github.io/gax-nodejs/CallSettings.html.

callback function

The callback function.

Properties
Name Type Attributes Description
err error <nullable>

An error returned while making this request.

instance Instance

The newly created instance.

operation Operation

An operation object that can be used to check the status of the request.

apiResponse object

The full API response.

See:
Example
```
const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable();

const callback = function(err, instance, operation, apiResponse) {
  if (err) {
    // Error handling omitted.
  }

  operation
    .on('error', console.log)
    .on('complete', () => {
      // The instance was created successfully.
    });
};

const options = {
  displayName: 'my-sweet-instance',
  labels: {env: 'prod'},
  clusters: [
    {
      id: 'my-sweet-cluster',
      nodes: 3,
      location: 'us-central1-b',
      storage: 'ssd'
    }
  ]
};

bigtable.createInstance('my-instance', options, callback);

//-
// If the callback is omitted, we'll return a Promise.
//-
bigtable.createInstance('my-instance', options).then(function(data) {
  const instance = data[0];
  const operation = data[1];
  const apiResponse = data[2];
});
```

getInstances(gaxOptionsopt, callbackopt) → {Promise.<GetInstancesResponse>}

Get Instance objects for all of your Cloud Bigtable instances.

Parameters:
Name Type Attributes Description
gaxOptions object <optional>

Request configuration options, outlined here: https://googleapis.github.io/gax-nodejs/classes/CallSettings.html.

callback GetInstancesCallback <optional>

The callback function.

Returns:
Type Description
Promise.<GetInstancesResponse>
Examples
```
const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable();

bigtable.getInstances(function(err, instances, response) {
  if (!err) {
    // `instances` is an array of Instance objects.
    if (response.failedLocations.length > 0) {
      // These locations contain instances which could not be retrieved.
    }
  }
});

```
If the callback is omitted, we'll return a Promise.
```
bigtable.getInstances().then(function(data) {
  const instances = data[0];
  const fullResponse = data[2];

  if (fullResponse.failedLocations.length > 0) {
    // These locations contain instances which could not be retrieved.
    const failedLocations = fullResponse.failedLocations;
  }
});
```

instance(id) → {Instance}

Get a reference to a Cloud Bigtable instance.

Parameters:
Name Type Description
id string

The id of the instance.

Returns:
Type Description
Instance

request(config, callbackopt)

Funnel all API requests through this method, to be sure we have a project ID.

Parameters:
Name Type Attributes Description
config object

Configuration object.

Properties
Name Type Description
gaxOpts object

GAX options.

method function

The gax method to call.

reqOpts object

Request options.

callback function <optional>

Callback function.