自动创建列族(如果它不存在)。
代码示例
C++
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
namespace cbt = ::google::cloud::bigtable;
namespace cbta = ::google::cloud::bigtable_admin;
using ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest;
using ::google::cloud::StatusOr;
[](cbta::BigtableTableAdminClient admin, std::string const& project_id,
std::string const& instance_id, std::string const& table_id,
std::string const& family_name) {
std::string table_name = cbt::TableName(project_id, instance_id, table_id);
google::bigtable::admin::v2::GetTableRequest r;
r.set_name(table_name);
r.set_view(google::bigtable::admin::v2::Table::FULL);
StatusOr<google::bigtable::admin::v2::Table> schema =
admin.GetTable(std::move(r));
if (!schema) throw std::runtime_error(schema.status().message());
auto pos = schema->column_families().find(family_name);
if (pos == schema->column_families().end()) {
// Try to create the column family instead:
ModifyColumnFamiliesRequest::Modification mod;
mod.set_id(family_name);
mod.mutable_create()->mutable_gc_rule()->set_max_num_versions(5);
auto modified = admin.ModifyColumnFamilies(table_name, {std::move(mod)});
if (!modified) throw std::runtime_error(schema.status().message());
schema = *std::move(modified);
pos = schema->column_families().find(family_name);
}
if (pos == schema->column_families().end()) {
throw std::runtime_error("GetOrCreateFamily failed");
}
google::bigtable::admin::v2::ColumnFamily family = pos->second;
std::cout << "Column family name: " << pos->first
<< "\nColumn family details: " << family.DebugString() << "\n";
}
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。