《一文讲透》第3期:简易快速实现 KWDB 的高效管理

上一期我们详细讲述了如何通过 KaiwuDB 开发者中心和 JDBC 两种方式连接 KWDB 数据库。今天,我们也将分享两种方式来实现 KWDB 对时序和关系数据的高效管理:

✅ 使用 KaiwuDB 开发者中心管理 KWDB 

✅ 使用 KaiwuDB JDBC 连接 KWDB

使用 KaiwuDB 开发者中心管理 KWDB

KaiwuDB Developer Center(KaiwuDB 开发者中心)是专门为 KWDB 数据库系统量身定制的可视化管理工具,我们改变了传统命令行操作方式,为大家提供了可视化的数据库操作平台,即使你是数据库“小白”,也能轻松驾驭我们

今天将为大家详细介绍如何使用 KaiwuDB 开发者中心可视化工具连接 KWDB 数据库、创建 KWDB 数据库、管理数据库对象等操作。

KaiwuDB 开发者中心窗口包含菜单栏、工具栏、导航栏、对象窗口、结果窗口以及状态栏。

图片

一、时序数据

创建时序数据库步骤:

1、在数据库导航栏,右键单击时序数据库,然后选择【新建时序数据库】。

图片

2、在创建时序数据库窗口,填写数据库名称,设置数据库生命周期,然后单击确定。默认情况下,数据库的生命周期为 0 天,即永不过期。

图片

3、创建成功后,新建数据库将自动显示在数据库导航区内,继承 KWDB 数据库系统的角色和用户设置。

图片

创建时序数据表步骤:

1、在数据库导航栏,选择要操作的数据库和模式。

2、右键单击时序表,然后选择【新建时序表】。系统将自动创建名为 newtable 的表,并打开对象窗口。

图片

3、在属性页签,填写表名,配置表的生命周期。表名的最大长度为 128 字节。默认情况下,表的生命周期为 0 天, 即永不过期。

4、在字段页签,至少添加两个字段。字段名的最大长度为 128 字节。第一个字段的数据类型必须为 timestamp 或 timestamptz 且非空。实际上,系统会将 timestamp 数据类型处理为 timestamptz 数据类型。

图片

5、在标签页签添加标签,设置标签名称、数据类型、长度、是否为主标签以及是否非空,然后单击保存。

图片

✔️Tips:每张时序表至少需要设置一个主标签,且主标签必须为非空标签。标签名的最大长度为 128 字节。

6、在执行修改窗口,确认 SQL 语句无误,然后单击执行。

写入数据步骤:

1、在数据库导航栏,右键单击需要编辑数据的表,然后选择编辑数据。

2、在数据页面,单击页面下方的添加新行按钮,向表中加入相应的数据。

图片

3、如需查看对应的 SQL 语句,单击生成 SQL 语句,然后单击执行。

4、如果无需查看 SQL 语句,单击保存。

✔️Tips:

  • 系统支持为指定的列写入数据,对于未指定的列,如果该列支持 NULL 值,系统将自动插入默认值 NULL。如果该列不支持 NULL 值,系统将提示 Null value in column %s violates null-null constraints.。

  • 输入 TIMESTAMP 或 TIMESTAMPTZ 类型数据时,日期部分需要使用短横线(-)、空格( )或正斜杠符号(/)分割,时间部分需要使用冒号(:)分割,支持精确到微秒,例如:'2023-01-25 10:10:10.123'、'2023 01 25 10:10:10.123' 或 '2023/01/25 10:10:10.123'。

  • KWDB 支持对具有相同时间戳的数据进行去重处理。默认情况下,后写入的数据会覆盖已存在的具有相同时间戳的数据。用户可通过 SET CLUSTER SETTING ts.dedup.rule=[ merge | override | discard] 语句设置数据去重策略。有关详细信息,参见集群参数配置。 

查询数据步骤:

在数据库导航栏,双击需要查看的时序表,即可查看表的属性和数据信息。

图片

二、关系数据

创建关系数据库步骤:

1、在数据库导航栏,右键单击关系数据库,然后选择【新建关系数据库】。

图片

2、在创建数据库窗口,填写数据库名称,然后单击确定。

图片

3、创建成功后,新建数据库将自动显示在数据库导航栏内,继承 KWDB 数据库系统的角色和用户设置。

图片

创建关系表步骤:

1、在数据库导航栏,选择要操作的数据库和模式。

2、右键单击表,然后选择新建表。系统将自动创建名为 newtable 的表,并打开对象窗口。

图片

3、在对象窗口,填写表名、描述信息、添加字段,然后单击保存。

图片

4、在执行修改窗口,确认 SQL 语句无误,然后单击执行。

写入数据步骤:

1、在数据库导航栏,右键单击需要修改的表,然后选择编辑表。

图片

2、在属性页签,编辑字段、约束、外键、索引或权限,然后单击保存。

3、切换到数据页签,单击表格最下方的添加新行按钮,向表中加入相应的数据。

图片

4、如需查看相应的 SQL 语句,单击生成 SQL 语句,然后单击执行。

5、如果无需查看 SQL 语句,单击保存。

查询数据步骤:

在数据库导航栏,双击要查看的表,即可查看表的属性、数据和 ER 图信息。下表列出了属性、数据和 ER 图中的信息:

页面信息
属性表名、描述、字段、约束、外键、索引、权限和建表语句等信息。
数据以网格和文本形式查看表内数据。
ER 图以图形方式展示数据库实体、属性和关系之间的结构和链接。

使用 KaiwuDB JDBC 连接 KWDB

KaiwuDB JDBC 是 KWDB 的官方 Java 语言连接器。它基于 PgJDBC 扩展实现,符合 JDBC 4.0、JDBC 4.1 和 JDBC 4.2 规范。本章分享如何使用用 KaiwuDB JDBC 连接 KWDB 数据库,并创建数据库、管理数据库对象等。

一、时序数据

管理时序数据库步骤:

// 获取数据库连接。
Connection conn = DriverManager.getConnection("jdbc:kaiwudb://127.0.0.1:26257/defaultdb?user=root&password=123");

// 创建 statement。
Statement stmt = conn.createStatement();

// 创建 ts_db 时序数据库。
stmt.executeUpdate("create ts database ts_db");

// 使用 ts_db 时序数据库。
stmt.executeUpdate("use ts_db");

// 删除 ts_db 时序数据库。
stmt.executeUpdate("drop database ts_db");

✔️Tip:如未使用 use <db_name> 参数指定数据库,后续对表的操作都需要使用数据库名称作为前缀,例如 ts_db.record。目前,时序数据库名称不支持中文字符。

管理时序表步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 创建 record 时序表。
stmt.executeUpdate("CREATE TABLE record (RecordedTime timestamptz NOT NULL, Longitude float, Latitude float, EngineRPM int) TAGs (LicensePlate varchar(10) NOT NULL, VehicleColor varchar(10)) PRIMARY TAGS (LicensePlate)");

// 删除 record 时序表。
stmt.executeUpdate("drop table record");

✔️Tip:在创建时序表时,第一列的数据类型必须为 timestamp 或 timestamptz,且不可为空值;每张时序表设置至少一个主标签,且主标签必须为非空标签。目前,时序表名、列名和标签名不支持中文字符。

写入数据步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 按照指定的列顺序向 record 表中写入数据。
int rows1 = stmt.executeUpdate("insert into record (RecordedTime, Longitude, Latitude, EngineRPM, LicensePlate, VehicleColor) values ('2024-06-06 10:00:00', 40.2, 116.2, 3000, '京A11111', '黑')");
System.out.println("specify column name insert " + rows1 + " rows data.");

// 按照默认的列顺序向 record 表中写入数据。
int rows2 = stmt.executeUpdate("insert into record values ('2024-06-06 10:00:01', 39.3, 116.1, 0, '京A22222', '白')");
System.out.println("not specify column name insert " + rows2 + " rows data.");

查询数据步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 查询 record 表数据。
ResultSet resultSet = stmt.executeQuery("select RecordedTime as ts, LicensePlate, VehicleColor from record");

Timestamp ts = null;
String LicensePlate = null;
String VehicleColor = null;

while(resultSet.next()){
    ts = resultSet.getTimestamp(1);
    LicensePlate = resultSet.getString("LicensePlate");
    VehicleColor = resultSet.getString("VehicleColor");
    System.out.printf("%s, %s, %s\n", ts, LicensePlate, VehicleColor);
}

✔️Tip:KWDB 支持使用下标或字段名获取数据。使用下标获取数据时,返回内容从 1 开始。建议使用字段名称获取数据。

二、关系数据

管理关系数据库步骤:

// 获取数据库连接。
Connection conn = DriverManager.getConnection("jdbc:kaiwudb://127.0.0.1:26257/defaultdb?user=root&password=123");

// 创建 statement。
Statement stmt = conn.createStatement();

// 创建 rdb 关系数据库。
stmt.executeUpdate("create database rdb");

// 使用 rdb 数据库。
stmt.executeUpdate("use rdb");

// 删除 rdb 数据库。
stmt.executeUpdate("drop database rdb");

✔️ Tip:如未使用 use <db_name> 参数指定数据库,后续对表的操作都需要使用数据库名称作为前缀,例如 rdb.vehicles。

管理关系表步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 创建 vehicles 关系表。
stmt.executeUpdate("CREATE TABLE vehicles (VehicleID int4, LicensePlate varchar(10), Owner varchar(10), Model varchar(50), Year int4)");

// 删除 vehicles 关系表。
stmt.executeUpdate("drop table vehicles");

写入数据步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 按照指定的列顺序向 vehicles 表中写入数据。
int rows1 = stmt.executeUpdate("INSERT INTO vehicles (VehicleID, LicensePlate, Owner, Model, Year) VALUES (1, '京A11111', '李明', '奔驰', 2020)");
System.out.println("specify column name insert " + rows1 + " rows data.");

// 按照默认的列顺序向 vehicles 表中写入数据。
int rows2 = stmt.executeUpdate("INSERT INTO vehicles VALUES (2, '京A22222', '赵志', '别克', 2022)");
System.out.println("not specify column name insert " + rows2 + " rows data.");

查询数据步骤:

// 创建 statement。
Statement stmt = conn.createStatement();

// 查询 vehicles 表数据
ResultSet resultSet = stmt.executeQuery("select LicensePlate, Owner, Model from vehicles");

String LicensePlate = null;
String Owner = null;
String Model = null;

while(resultSet.next()){
    LicensePlate = resultSet.getString("LicensePlate");
    Owner = resultSet.getString("Owner");
    Model = resultSet.getString("Model");
    System.out.printf("%s, %s, %s\n", LicensePlate, Owner, Model);
}

✔️ Tip:KWDB 支持使用下标或字段名获取数据。使用下标获取数据时,返回内容从 1 开始。建议使用字段名称获取数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值