Derby 数据库介绍(1)--简介

news/2024/12/15 20:06:27/文章来源:https://www.cnblogs.com/wuyongyin/p/18362530

Apache Derby 是 Apache DB 的一个子项目,是一个完全用 Java 实现的开源关系数据库,采用 Apache License 2.0 许可;本文主要介绍其基本概念及安装。

1、Derby 特点

Derby 体积小——基础引擎和嵌入式 JDBC 驱动程序约 3.5MB。
Derby 基于 Java、JDBC 和 SQL 标准。
Derby 提供嵌入式 JDBC 驱动程序,可以将 Derby 嵌入到任何基于 Java 的解决方案中。
Derby 还支持更常见的客户端/服务器模式,通过 Derby 网络客户端 JDBC 驱动程序和 Derby 网络服务器来实现。
Derby 安装、部署和使用都很简单。

2、数据库类型

2.1.1、内存数据库

数据库的所有数据都保存在内存中,服务关闭数据丢失。

2.1.2、文件数据库

数据库数据库数据以文件的方式保存在磁盘上。

2.1.3、资源数据库

数据库数据存放在 jar 文件中,此类数据库都是只读的。

3、部署模式

3.1、嵌入模式

嵌入模式通过一个简单的单用户 Java 应用程序启动 Derby。在此模式下,Derby 与应用程序运行在同一个 Java 虚拟机(JVM)中。由于 Derby 由应用程序启动和停止,因此对最终用户几乎是不可见的,并且通常不需要管理。

JDBC 连接 Derby 根据不同的数据库类型有不同的写法。

3.1.1、内存数据库

jdbc:derby:memory:myDb

3.1.2、文件数据库

jdbc:derby:myDb

该方式会在当前目录下生成 Derby 的数据文件;还可以指定绝对目录,数据库文件将在目标目录下生成:

jdbc:derby:d:/temp/myDb

3.1.3、资源数据库

假设数据库 myDb 被打成 jar 文件 my.jar(jar cvf my.jar myDb),则访问该 jar 文件中的数据库有两种方式:

A、该 jar 文件已在 classpath 中

jdbc:derby:classpath:myDb

B、该 jar 文件不在 classpath 中

jdbc:derby:jar:(d:/temp/my.jar)myDb

3.2、服务器模式

服务器模式通过一个提供多用户连接的应用程序启动 Derby,以便通过网络访问 Derby 数据库。在此模式下,Derby 在托管服务器的 Java 虚拟机(JVM)中运行。应用程序从不同的 JVM 连接到 Derby 服务器以访问数据库。

JDBC 连接 Derby 根据不同的数据库类型有不同的写法。

3.2.1、内存数据库

jdbc:derby://localhost:1527/memory:myDb

3.2.2、文件数据库

jdbc:derby://localhost:1527/myDb

该方式会在 Derby 服务端当前目录下生成 Derby 的数据文件;还可以指定绝对目录,数据库文件将在目标目录下生成:

jdbc:derby://localhost:1527/d:/temp/myDb

3.2.3、资源数据库

A、数据库 jar 文件已在 Derby 服务的 classpath 中

jdbc:derby://localhost:1527/classpath:myDb

B、数据库 jar 文件不在 Derby 服务的 classpath 中

jdbc:derby://localhost:1527/jar:(d:/temp/my.jar)myDb

3.3、混合模式

可以在应用中通过 Java 代码来启动 HSQLDB 的服务,这样本地和远程就都可以访问数据库了。

NetworkServerControl server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"), 1527);
server.start (null);

4、部署

4.1、嵌入和混合模式

引入相关依赖即可:

<!--嵌入模式需要-->
<dependency><groupId>org.apache.derby</groupId><artifactId>derby</artifactId><version>10.14.2.0</version>
</dependency>
<!--作为客户端连接服务器需要-->
<dependency><groupId>org.apache.derby</groupId><artifactId>derbyclient</artifactId><version>10.14.2.0</version>
</dependency>
<!--应用中启动 Derby 服务需要-->
<dependency><groupId>org.apache.derby</groupId><artifactId>derbynet</artifactId><version>10.14.2.0</version>
</dependency>

4.2、服务器模式

官网(https://db.apache.org/derby/derby_downloads.html)下载部署包然后解压即可,这里下载 10.14.2.0 版本。解压后的部署包包含多个子目录:

  • demo 包含演示程序。
  • bin 包含执行工具和设置环境的脚本。
  • javadoc 包含从源代码注释生成的 API 文档。
  • docs 包含 Derby 文档。
  • lib 包含 Derby 的 jar 文件。
  • test 包含 Derby 的回归测试。

部署包中包含了一些有用的工具(命令),这些工具都快通过 /h 参数查看具体用法。

4.2.1、sysinfo

sysinfo 工具显示有关 Java 环境和 Derby 版本的信息。

D:\temp\db-derby-10.14.2.0-bin\bin>sysinfo.bat

4.2.2、ij

ij 工具是一个 JDBC 工具,你可以用它来运行脚本或对 Derby 数据库执行交互式查询。

D:\temp\db-derby-10.14.2.0-bin\bin>ij.bat
ij 版本 10.14
ij> connect 'jdbc:derby:myDb;create=true';
ij> show tables;
TABLE_SCHEM         |TABLE_NAME                    |REMARKS
------------------------------------------------------------------------
SYS                 |SYSALIASES                    |
SYS                 |SYSCHECKS                     |
SYS                 |SYSCOLPERMS                   |
SYS                 |SYSCOLUMNS                    |
SYS                 |SYSCONGLOMERATES              |
SYS                 |SYSCONSTRAINTS                |
SYS                 |SYSDEPENDS                    |
SYS                 |SYSFILES                      |
SYS                 |SYSFOREIGNKEYS                |
SYS                 |SYSKEYS                       |
SYS                 |SYSPERMS                      |
SYS                 |SYSROLES                      |
SYS                 |SYSROUTINEPERMS               |
SYS                 |SYSSCHEMAS                    |
SYS                 |SYSSEQUENCES                  |
SYS                 |SYSSTATEMENTS                 |
SYS                 |SYSSTATISTICS                 |
SYS                 |SYSTABLEPERMS                 |
SYS                 |SYSTABLES                     |
SYS                 |SYSTRIGGERS                   |
SYS                 |SYSUSERS                      |
SYS                 |SYSVIEWS                      |
SYSIBM              |SYSDUMMY1                     |已选择 23 行
ij> select * from sys.systables;

4.2.3、dblook

dblook 是一个 DDL 生成工具,可以将数据库的全部或部分 DDL 转储到控制台或文件中。

D:\temp\db-derby-10.14.2.0-bin\bin>dblook.bat -d 'jdbc:derby:d:/temp/myDb' -o d:/temp/myDb.sql

4.2.4、NetworkServerControl

NetworkServerControl 可以用来启动或关闭 Derby 服务。

A、启动 Derby 服务

D:\temp\db-derby-10.14.2.0-bin\bin>NetworkServerControl.bat start -p 1527 -noSecurityManager
Fri Aug 23 11:26:23 CST 2024 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 已启动并准备接受端口 1527 上的连接

B、关闭 Derby 服务

D:\temp\db-derby-10.14.2.0-bin\bin>NetworkServerControl.bat shutdown -p 1527
Fri Aug 23 11:28:56 CST 2024 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 关闭

 

 

参考:https://db.apache.org/derby/manuals/index.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

参数占位符 #{xx} 和 ${xx} 的区别

#{xx} :带有#{}的SQL会采用SQL预编译技术,预编译后的SQL中 #{} 被替换为 “?”,这里的 “?”叫变量占位符,在实际执行SQL时会用“xx”的实际值替换变量占位符,效率更高,可以防止SQL注入SQL预编译:MySQL执行SQL有几个步骤,“查缓存->[语法分析->优化->编译-&…

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别 前言 HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。 Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(Spee…

【原创】ARM64 实时linux操作系xenomai4(EVL)构建安装简述

本文简要记录在瑞芯微RK3588(ARM64)构建安装实时linux操作系统xenomai4的过程,以及实时性测试,希望对你有所帮助!目录0 环境说明1 内核构建2 库编译方式1 交叉编译方式2 本地编译3 测试单元测试hectic:EVL 上下文切换latmus:latency测试4 RK3588 xenomai4实时性能5 总结 本…

最新版chrome如何下载和安装?附安装包

前言 大家好,我是小徐啊。我们在Java开发应用的时候,经常是需要用到浏览器来帮助我们开发的。而浏览器中,谷歌浏览器chrome当属功能最强大的浏览器。今天小徐就来介绍下如何安装chrome。文末附获取方式。 如何安装chrome 首先,双击chrome的安装包,开始安装。然后,可以看到…

[笔记]均分纸牌问题

Index链形均分纸牌每次仅可交换\(1\)张 每次可交换多张环形均分纸牌每次仅可交换\(1\)张 每次可交换多张拓展性很强的贪心问题。或许能推广到树之类的结构上,或者拓展到方案计数问题之类,不过目前还没想好啦。 链形均分纸牌 每次仅可交换\(1\)张 最基础的例题是这样的:有\(n…

掌握PageRank算法核心!你离Google优化高手只差一步!

0 前言 98年前的搜索引擎体验不好:返回结果质量不高:搜索结果不考虑网页质量,而通过时间顺序检索易被钻空:搜索引擎基于检索词检索,页面中检索词出现的频次越高,匹配度越高,这样就会出现网页作弊的情况。有些网页为了增加搜索引擎的排名,故意增加某个检索词频率当时Goo…

ApacheDirectoryStudio如何安装和使用?附安装包

前言 大家好,我是小徐啊。ldap数据库是我们Java开发中,经常会用到的一种数据库。这种数据库是树形结构的,和平常的mysql等数据库还不太一样。但目前对应连接ldap数据库的连接工具比较少,且功能也不强大。今天,小徐就来介绍下一款比较好的连接ldap数据库的连接功能,那就是…

服务器 数据库被攻击如何处理

最近系统有点卡,查看了一下系统事件,发现有人攻击服务器数据库。 以下是我的解决方案 1、修改密码位复杂的密码 2、修改默认数据库默认端口目前已解决下面的腾讯的小哥给的建议,总体差不多一个意思 1、服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂随机密码 ,…

字符数组及应用

这两个等价 长度都为10。这两个等价 长度都为11。如果有:则:注意: 作者QQ4577105

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息

PyQt5 使用 QPlainTextEdit/QTextBrowser 与 Logging 结合后显示日志信息 本文演示 PyQt5 如何与 Python 的标准库 Logging结合,然后输出日志信息到如:QPlainTextEdit QTextBrowser上 代码结构 本文中全部代码全在test_QPlainTextEdit_Log.py这一个文件中编码,步骤中有变动的…

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结

2024-2025-1 20241314 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业这个作业的目标 复习作业正文 正文教材学习内容总结引言与文件概述在《C语…

PyQt5 使用结合Logging 在 QPlainTextEdit/QTextBrowser 上显示日志信息

PyQt5 使用结合Logging 在 QPlainTextEdit/QTextBrowser 上显示日志信息 本文演示 PyQt5 如何与 Python 的标准库 Logging结合,然后输出日志信息到如:QPlainTextEdit QTextBrowser上 代码结构 本文中全部代码全在test_QPlainTextEdit_Log.py这一个文件中编码,步骤中有变动的…