在关系型数据库中,数据按照表格的形式存储,并且每个表格都由固定数量的列组成,每列都有一个唯一的名称和特定的数据类型。而在BigTable中,数据是按照多维键值对的形式存储,其中一个键可以指定一个列族。
在BigTable中,一个列族实际上是一组相关的列的集合,这些列具有相同的前缀。例如,'info:age”和'info:name”就属于列族'info”。相比之下,在关系型数据库中,每个列都是独立的,并没有像列族这样的概念。
以下是一个使用BigTable Java API创建列族的示例代码:
import com.google.cloud.bigtable.admin.v2.ColumnFamily;
import com.google.cloud.bigtable.admin.v2.CreateTableRequest;
import com.google.cloud.bigtable.admin.v2.CreateTableRequest.Builder;
import com.google.cloud.bigtable.admin.v2.InstanceAdminClient;
import com.google.cloud.bigtable.admin.v2.TableAdminClient;
import com.google.cloud.bigtable.admin.v2.model.CreateInstanceRequest;
import com.google.cloud.bigtable.admin.v2.model.InstanceName;
import com.google.cloud.bigtable.admin.v2.model.TableName;
import com.google.cloud.bigtable.config.*;
import com.google.cloud.bigtable.grpc.BigtableInstanceName;
public class BigtableColumnFamilyExample {
public static void main(String[] args) {
String projectId = "my-project-id";
String instanceId = "my-instance-id";
String tableId = "my-table-id";
String columnFamilyId = "my-column-family-id";
// Setup credentials and configurations
BigtableCredential credential = ... // create your credential object
BigtableOptions options = new BigtableOptions.Builder().setProjectId(projectId).setInstanceId(instanceId).build();
// Create Bigtable instance
try (InstanceAdminClient adminClient = BigtableInstanceName.from(options.getProjectId(), options.getInstanceId()).getInstanceAdminClient(credential)) {
// Create the instance request
InstanceName instanceName = InstanceName.of(projectId, instanceId);
CreateInstanceRequest createInstanceRequest = CreateInstanceRequest.newBuilder().setParent(projectId).setInstanceId(instanceId)
.setInstance(BigtableInstanceUtil.getMinimalInstance(instanceId, instanceId, "us-central1-b", 3, 30))
.build();
// Actually create the instance
adminClient.createInstance(createInstanceRequest);
}
// Create Bigtable table with column family
try (TableAdminClient table
下一篇:BigTable中的最佳表设计