写点什么

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

作者:KWDB数据库
  • 2024-11-21
    上海
  • 本文字数:4271 字

    阅读完需:约 14 分钟

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

 

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

✅ 使用 KaiwuDB JDBC 管理 KWDB

 

使用 KaiwuDB 开发者中心管理 KWDB

 

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

 

今天为大家详细介绍如何使用 KaiwuDB 开发者中心可视化工具创建 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 图中的信息:

 

使用 KaiwuDB JDBC 管理 KWDB

 

KaiwuDB JDBC 是 KWDB 的官方 Java 语言连接器。它基于 PgJDBC 扩展实现,符合 JDBC 4.0、JDBC 4.1 和 JDBC 4.2 规范。如何安装可参考《一文讲透》第 2 期:两种 KWDB 的快速上手连接方式,本章分享如何使用用 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 开始。建议使用字段名称获取数据。


以上就是本期的管理 KWDB 教程,更多内容可参考往期,一起玩转 KWDB 吧!

用户头像

KWDB数据库

关注

还未添加个人签名 2024-08-20 加入

还未添加个人简介

评论

发布
暂无评论
《一文讲透》第 3 期:简易快速实现 KWDB 的高效管理_sql_KWDB数据库_InfoQ写作社区