专栏
天翼云开发者社区

Apache Derby数据库介绍与实践(二)

2023-12-15 09:50:30 16阅读

一,前文回顾

前文《Derby数据库简介及其在Nacos中的应用》介绍了Derby数据库的基本信息、优缺点、运行模式、使用方法及其在Nacos中的应用场景。其中,运行模式包含内嵌模式和网络模式,文章通过数据库自带的ij工具演示了如何访问数据库并执行SQL语句。一般而言,Derby是一种嵌入式的Java关系型数据库管理系统(RDBMS),通常用于本地应用程序。但是,通过一些额外的配置和操作,我们可以实现Derby数据库的远程访问。

二,网络架构对比

内嵌模式下,我们需要运行一个java进程来管理内嵌Derby数据库,同一个JVM进程内部,通过Derby Driver连接Derby数据库;自带的ij工具,本质上就是一个java进程,使用内嵌模式用来管理指定的Derby数据库;

网络模式下,Derby Server不需要用户启用独立的Java程序进行管理,通过脚本启动server模式,开启端口监听,可以接收来自多个用户的数据库访问 请求;

 

三,Derby网络模式特点:

  1. 多用户支持: Derby网络模式支持多个客户端同时连接到同一个数据库,每个客户端都可以执行读写操作。
  2. 跨平台: 由于Derby是Java编写的,因此它可以在支持Java的各种平台上运行。
  3. 独立性: Derby网络服务器独立于客户端,客户端可以运行在与服务器不同的Java虚拟机上。

四,Derby网络模式的使用实践

数据库自带工具

Derby数据库的安装目录中有一个bin子目录,其中包含多种自带工具(本文基于10.14系列版本),可以利用这些工具快速启动网络模式Derby。

名称 功能
ij 交互式的JDBC脚本工具,可用于创建或者查询数据库
sysinfo 显示java和derby环境变量
startNetworkServer 以网络模式启动derby
stopNetworkServer 停止网络模式derby
setNetworkServerCP 配置Derby Network Server运行时所需的Java类路径
setNetworkClientCP 配置Derby Network Client运行时所需的Java类路径
setEmbeddedCP 配置内嵌式Derby运行时所需的Java类路径
NetworkServerControl Derby Server控制工具,用于管理和控制 Apache Derby Network Server,如启停 ,获取sysinfo
dblock 查看指定数据库的DDL

使用脚本启动Derby server

1,使用ij创建数据库

在Apache Derby官网下载文档版本,由于我们使用的是JDK8,选择最新的稳定版本10.14.2.0; 解压到任意路径$DERBY_HOME,使用下面命令创建数据库test-db,创建PERSON表,随便插入一条数据,然后退出;

${DERBY_HOME}/bin/ij
connect 'jdbc:derby:test-db;create=true';
CREATE TABLE APP.PERSON(id int,name varchar(8));
INSERT INTO APP.PERSON (ID,NAME) VALUES (1,'Jackson');
exit;

2,使用脚本启动Derby Server

${DERBY_HOME}/bin/startNetworkServer

可以看到日志显示,默认打开了1527端口,监听客户端连接;

Thu Dec 14 19:52:03 CST 2023 : 已使用基本服务器安全策略安装了 Security Manager。
Thu Dec 14 19:52:04 CST 2023 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 已启动并准备接受端口 1527 上的连接

3,使用Java语言编写Derby client访问Derby Server

public class DerbyClient {

    static {
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
        } catch (Exception e) {
            System.err.println("failed to load derby client driver.");
        }
    }

    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:derby://127.0.0.1:1527/derby-data;");
        PreparedStatement ps = conn.prepareStatement("SELECT * from APP.PERSON");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            int id = rs.getInt("ID");
            String name = rs.getString("NAME");
            System.out.println(String.format("table record: ID:%d:,Name:%s" ,id,name));
        }
    }
}

至此,我们通过一个demo试验了客户端通过网络访问Derby Server的场景;

五,网络传输协议

Derby Client与Derby Server之间是通过DRDA协议传输;

DRDA(Distributed Relational Database Architecture)是一种用于分布式数据库通信的协议。它最初由IBM开发,用于支持其关系数据库管理系统(RDBMS)产品,如DB2。DRDA允许不同计算机上的数据库系统进行通信和协作,支持跨平台的分布式数据库环境。

1. 目标与用途:

  • 跨平台通信: DRDA允许不同类型和品牌的数据库系统在网络上进行通信,使得分布式数据库系统能够在多个计算机和操作系统之间协同工作。

  • 支持多种数据库系统: DRDA不仅用于IBM的DB2,还支持其他厂商的数据库系统,包括Oracle、Microsoft SQL Server等。

  • 标准化: DRDA是一个开放的、标准化的协议,它定义了通信的规范和数据格式,确保了不同数据库系统之间的互操作性。

2. 组成要素:

DRDA协议由多个组成要素组成,其中一些关键的要素包括:

  • 网络层: 定义了数据的传输方式,可以通过TCP/IP等协议进行通信。

  • 传输层: 负责数据的打包、解包和传递,定义了消息格式和编码规范。

  • 数据库请求层: 包括查询请求、更新请求等,定义了客户端与服务器之间的数据库操作。

  • 数据定义层: 包括数据库模式、表、视图等的定义,确保在分布式环境中对数据的一致性和准确性。

3. DRDA协议通信流程:

DRDA通信的一般流程包括以下步骤:

  1. 连接建立: 客户端通过网络连接到数据库服务器。

  2. 身份验证: 客户端和服务器相互验证身份。

  3. 请求传递: 客户端发送数据库请求,请求可以是查询、更新、事务管理等。

  4. 数据传递: 服务器执行请求,将结果或响应传递回客户端。

  5. 连接关闭: 客户端和服务器之间的连接关闭。

六,总结

本文介绍了Derby Server的特点,以及与内嵌模式下Derby的架构差异,并通过一个简单的案例介绍了DerbyServer的一般使用方法。

  • 0
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
廖****锋

廖****锋

10 篇文章 0 粉丝
关注

Apache Derby数据库介绍与实践(二)

2023-12-15 09:50:30 16阅读

一,前文回顾

前文《Derby数据库简介及其在Nacos中的应用》介绍了Derby数据库的基本信息、优缺点、运行模式、使用方法及其在Nacos中的应用场景。其中,运行模式包含内嵌模式和网络模式,文章通过数据库自带的ij工具演示了如何访问数据库并执行SQL语句。一般而言,Derby是一种嵌入式的Java关系型数据库管理系统(RDBMS),通常用于本地应用程序。但是,通过一些额外的配置和操作,我们可以实现Derby数据库的远程访问。

二,网络架构对比

内嵌模式下,我们需要运行一个java进程来管理内嵌Derby数据库,同一个JVM进程内部,通过Derby Driver连接Derby数据库;自带的ij工具,本质上就是一个java进程,使用内嵌模式用来管理指定的Derby数据库;

网络模式下,Derby Server不需要用户启用独立的Java程序进行管理,通过脚本启动server模式,开启端口监听,可以接收来自多个用户的数据库访问 请求;

 

三,Derby网络模式特点:

  1. 多用户支持: Derby网络模式支持多个客户端同时连接到同一个数据库,每个客户端都可以执行读写操作。
  2. 跨平台: 由于Derby是Java编写的,因此它可以在支持Java的各种平台上运行。
  3. 独立性: Derby网络服务器独立于客户端,客户端可以运行在与服务器不同的Java虚拟机上。

四,Derby网络模式的使用实践

数据库自带工具

Derby数据库的安装目录中有一个bin子目录,其中包含多种自带工具(本文基于10.14系列版本),可以利用这些工具快速启动网络模式Derby。

名称 功能
ij 交互式的JDBC脚本工具,可用于创建或者查询数据库
sysinfo 显示java和derby环境变量
startNetworkServer 以网络模式启动derby
stopNetworkServer 停止网络模式derby
setNetworkServerCP 配置Derby Network Server运行时所需的Java类路径
setNetworkClientCP 配置Derby Network Client运行时所需的Java类路径
setEmbeddedCP 配置内嵌式Derby运行时所需的Java类路径
NetworkServerControl Derby Server控制工具,用于管理和控制 Apache Derby Network Server,如启停 ,获取sysinfo
dblock 查看指定数据库的DDL

使用脚本启动Derby server

1,使用ij创建数据库

在Apache Derby官网下载文档版本,由于我们使用的是JDK8,选择最新的稳定版本10.14.2.0; 解压到任意路径$DERBY_HOME,使用下面命令创建数据库test-db,创建PERSON表,随便插入一条数据,然后退出;

${DERBY_HOME}/bin/ij
connect 'jdbc:derby:test-db;create=true';
CREATE TABLE APP.PERSON(id int,name varchar(8));
INSERT INTO APP.PERSON (ID,NAME) VALUES (1,'Jackson');
exit;

2,使用脚本启动Derby Server

${DERBY_HOME}/bin/startNetworkServer

可以看到日志显示,默认打开了1527端口,监听客户端连接;

Thu Dec 14 19:52:03 CST 2023 : 已使用基本服务器安全策略安装了 Security Manager。
Thu Dec 14 19:52:04 CST 2023 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 已启动并准备接受端口 1527 上的连接

3,使用Java语言编写Derby client访问Derby Server

public class DerbyClient {

    static {
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
        } catch (Exception e) {
            System.err.println("failed to load derby client driver.");
        }
    }

    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:derby://127.0.0.1:1527/derby-data;");
        PreparedStatement ps = conn.prepareStatement("SELECT * from APP.PERSON");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            int id = rs.getInt("ID");
            String name = rs.getString("NAME");
            System.out.println(String.format("table record: ID:%d:,Name:%s" ,id,name));
        }
    }
}

至此,我们通过一个demo试验了客户端通过网络访问Derby Server的场景;

五,网络传输协议

Derby Client与Derby Server之间是通过DRDA协议传输;

DRDA(Distributed Relational Database Architecture)是一种用于分布式数据库通信的协议。它最初由IBM开发,用于支持其关系数据库管理系统(RDBMS)产品,如DB2。DRDA允许不同计算机上的数据库系统进行通信和协作,支持跨平台的分布式数据库环境。

1. 目标与用途:

  • 跨平台通信: DRDA允许不同类型和品牌的数据库系统在网络上进行通信,使得分布式数据库系统能够在多个计算机和操作系统之间协同工作。

  • 支持多种数据库系统: DRDA不仅用于IBM的DB2,还支持其他厂商的数据库系统,包括Oracle、Microsoft SQL Server等。

  • 标准化: DRDA是一个开放的、标准化的协议,它定义了通信的规范和数据格式,确保了不同数据库系统之间的互操作性。

2. 组成要素:

DRDA协议由多个组成要素组成,其中一些关键的要素包括:

  • 网络层: 定义了数据的传输方式,可以通过TCP/IP等协议进行通信。

  • 传输层: 负责数据的打包、解包和传递,定义了消息格式和编码规范。

  • 数据库请求层: 包括查询请求、更新请求等,定义了客户端与服务器之间的数据库操作。

  • 数据定义层: 包括数据库模式、表、视图等的定义,确保在分布式环境中对数据的一致性和准确性。

3. DRDA协议通信流程:

DRDA通信的一般流程包括以下步骤:

  1. 连接建立: 客户端通过网络连接到数据库服务器。

  2. 身份验证: 客户端和服务器相互验证身份。

  3. 请求传递: 客户端发送数据库请求,请求可以是查询、更新、事务管理等。

  4. 数据传递: 服务器执行请求,将结果或响应传递回客户端。

  5. 连接关闭: 客户端和服务器之间的连接关闭。

六,总结

本文介绍了Derby Server的特点,以及与内嵌模式下Derby的架构差异,并通过一个简单的案例介绍了DerbyServer的一般使用方法。

文章来自专栏

微服务&中间件

10 篇文章 2 订阅
0 评论
0/1000
评论(0) 发表评论
  • 0
    点赞
  • 0
    收藏
  • 0
    评论