This directory contains an idiomatic C++ client library for interacting with Google Cloud Bigtable, which 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.
Please note that the Google Cloud C++ client libraries do not follow Semantic Versioning.
- Windows, macOS, Linux
- C++11 (and higher) compilers (we test with GCC >= 4.9, Clang >= 3.8, and MSVC >= 2019)
- Environments with or without exceptions
- Bazel and CMake builds
- Official documentation about the Cloud Bigtable service
- Reference doxygen documentation for each release of this client library
- Detailed header comments in our public
.h
files
The quickstart/ directory contains a minimal environment to help you quickly get started using this client library. The following is the "Hello World" program you'll be running, which should give you a taste of this library.
#include "google/cloud/bigtable/table.h"
int main(int argc, char* argv[]) try {
if (argc != 4) {
std::string const cmd = argv[0];
auto last_slash = std::string(cmd).find_last_of('/');
std::cerr << "Usage: " << cmd.substr(last_slash + 1)
<< " <project_id> <instance_id> <table_id>\n";
return 1;
}
std::string const project_id = argv[1];
std::string const instance_id = argv[2];
std::string const table_id = argv[3];
// Create a namespace alias to make the code easier to read.
namespace cbt = google::cloud::bigtable;
cbt::Table table(cbt::CreateDefaultDataClient(project_id, instance_id,
cbt::ClientOptions()),
table_id);
std::string row_key = "r1";
std::string column_family = "cf1";
std::cout << "Getting a single row by row key:" << std::flush;
google::cloud::StatusOr<std::pair<bool, cbt::Row>> result =
table.ReadRow(row_key, cbt::Filter::FamilyRegex(column_family));
if (!result) throw std::runtime_error(result.status().message());
if (!result->first) {
std::cout << "Cannot find row " << row_key << " in the table: " << table_id
<< "\n";
return 0;
}
cbt::Cell const& cell = result->second.cells().front();
std::cout << cell.family_name() << ":" << cell.column_qualifier() << " @ "
<< cell.timestamp().count() << "us\n"
<< '"' << cell.value() << '"' << "\n";
return 0;
} catch (std::exception const& ex) {
std::cerr << "Standard C++ exception raised: " << ex.what() << "\n";
return 1;
}
See CONTRIBUTING.md
for details on how to
contribute to this project, including how to build and test your changes
as well as how to properly format your code.
Apache 2.0; see LICENSE
for details.