tablestore列式存储原理_表格存储(Tablestore)入门指南-阿里云开发者社区

本文介绍了如何使用阿里云表格存储Tablestore的Java SDK,包括创建表格、添加、查询、更新和删除学生成绩数据,以及使用二级索引和多元索引进行高效查询。示例涵盖了学生成绩管理系统的基本操作,展示了Tablestore在NoSQL数据库中的应用。
摘要由CSDN通过智能技术生成

表格存储(Tablestore)入门指南

内容简介

表格存储(Tablestore)是阿里云自研的 NoSQL 多模型数据库,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够提供 PB 级存储、千万 TPS 以及毫秒级延迟的服务能力。

本文将以一个简单的学生成绩查询demo为例,向大家演示如何使用Tablestore提供的Java SDK实现一个表格数据的导入、查询(主键索引、二级索引和多元索引)和导出。

demo中表格(table)的存储信息格式如下:

ID(主键)

班级(主键)

姓名(主键)

语文

数学

英语

0

初三1班

云知

99

99

99

主要实现的功能如下:

创建学生成绩的数据表格;

添加学生成绩信息;

查询学生成绩信息;

更新学生成绩信息;

删除学生成绩信息;

查询特定班级的学生成绩信息(二级索引);

查询多科目特定分段的学生成绩信息(多元索引);

导出新增学生成绩信息(通道服务)。

一、配置开发环境

Tablestore的Java SDK开发环境非常简单,主要包括:

* 了解并开通阿里云表格存储服务

* 创建AccessKey

* 配置Java环境(建议:JDK 6及以上版本)

* 使用Maven项目加入依赖项

com.aliyun.openservices

tablestore

4.12.1

二、表格的一般操作

1、获取实例的控制权限

首先创建实例,实例是表格存储资源管理的基础单元,表格存储对应用程序的访问控制和资源计量都在实例级别完成。

实例创建成功后,可以通过“SyncClient client”获取实例控制权柄,然后通过client实现对实例的各种控制。

/**

* 以下信息可由阿里云控制台获取,依次为:

* endPoint(实例访问地址)

* accessId(AccessKey ID)

* accessKey(Access Key Secret)

* instanceName(实例名称,用户创建实例时指定)

*/

private static final String endPoint = "https://xxxx.cn-hangzhou.ots.aliyuncs.com";

private static final String accessId = "LTAIxxxebxxxKIxx";

private static final String accessKey = "5P7xxxMm1xxxhHPxxxXnNxxxXscxxx";

private static final String instanceName = "instance-1";

SyncClient client = new SyncClient(endPoint, accessId, accessKey, instanceName);

2、创建学生成绩的数据表格

在创建学生成绩的数据表格时需要描述表的结构信息(TableMeta)和配置信息(TableOptions)。

public static void creatTable(){

System.out.println("开始创建表格。");

//描述表的结构信息

TableMeta tableMeta = new TableMeta(tableName);

//添加主键列

tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("ID", PrimaryKeyType.INTEGER));

tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("班级", PrimaryKeyType.INTEGER));

tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("姓名", PrimaryKeyType.STRING));

//添加属性列

tableMeta.addDefinedColumn(new DefinedColumnSchema("语文", DefinedColumnType.INTEGER));

tableMeta.addDefinedColumn(new DefinedColumnSchema("数学", DefinedColumnType.INTEGER));

tableMeta.addDefinedColumn(new DefinedColumnSchema("英语", DefinedColumnType.INTEGER));

int timeToLive = -1; // 数据的过期时间, 单位秒, -1代表永不过期. 假如设置过期时间为一年, 即为 365 * 24 * 3600.

int maxVersions = 1; // 最大保存版本数, maxVersions大于1时, 无法使用二级索引和多元索引功能.

//描述表的配置信息

TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);

//将表的结构信息和配置信息封装到一个request里

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);

//创建表格

try {

client.createTable(request);

System.out.println("创建表格成功。");

} catch (TableStoreException e) {

System.err.println("操作失败,详情:" + e.getMessage());

System.err.println("Request ID:" + e.getRequestId());

} catch (ClientException e) {

System.err.println("请求失败,详情:" + e.getMessage());

}

}

3、添加学生成绩信息

PutRow 接口用于插入一行数据,如果原来该行已经存在,会覆盖原来的一行。

明确主键信息和属性信息,我们便可以使用PutRow接口将该信息添加入表中。

public static void creatRow(){

//描述主键信息

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();

primaryKeyBuilder.addPrimaryKeyColumn("ID", PrimaryKeyValue.fromLong(3));

primaryKeyBuilder.addPrimaryKeyColumn("班级", PrimaryKeyValue.fromLong("初三2班"));

primaryKeyBuilder.addPrimaryKeyColumn("姓名", PrimaryKeyValue.fromLong("云知"));

PrimaryKey primaryKey = primaryKeyBuilder.bui

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值