ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一. 内存数据库介绍 内存数据库也即是我们常说的嵌入式数据库,常用的开源嵌入式数据库有:H2,Derby,HSQLDB,Sqlite,MySQL Embedded。其中H2和HSQLDB相似,使用比较简单,而其它的数据库大部分都须要安装独立的客户端和服务器端。所以平台集成H2作为内存数据库使用。 ![](https://img.kancloud.cn/75/d4/75d4dd82622e2174694f64df755f22ec_818x333.jpg) ## 二. H2简介 1、h2采用纯Java编写,因此不受平台的限制。 2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。 3、h2提供了一个十分方便的web控制台用于操作和管理数据库内容。 4、功能完整,支持标准SQL和JDBC,支持基本的全文搜索,与mysql 数据库兼容性最强。 5、支持内嵌模式、服务器模式和集群。 ## 三. 常见使用场景: 1、用于单元测试,采用内存模式启动速度快,每一个用例执行完数据随即还原到初始状态。 2、作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当redis使用,存储少量结构化数据,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。 3、H2适合百万条记录以下的存储,大数据量不是它有强项。 4、生产环境慎重使用,稳定性和oracle、mysql等有差距。 ## 四. POM.XML引用 ~~~ <dependency> <groupId>com.sca4cloud</groupId> <artifactId>sca-common-memdb</artifactId> <version>${last.version}</version> </dependency> ~~~ ## 五. application.yml配置 ### 1、内存模式 ![](https://img.kancloud.cn/ba/fe/bafe7659e58e037bd301d7ecbe6c4579_836x165.jpg) ![](https://img.kancloud.cn/cc/30/cc30b51492a76ae5108e514677a9360d_573x442.jpg) ### 2、本地文件模式 ![](https://img.kancloud.cn/37/86/378611fdc625bbe590b32843588b420f_632x160.jpg) ![](https://img.kancloud.cn/41/7f/417f469f3e0609e645d77f807df67607_585x456.jpg) ### 3、控制台配置 ![](https://img.kancloud.cn/b2/6b/b26bff79c1d995616b7aa323ec1e0e0b_682x311.jpg) ![](https://img.kancloud.cn/ec/0d/ec0db770f4e0ede7b399b914f3c87649_1358x475.jpg) ### 4、多数据源配置 建议采用`Druid + Mybatisplus + dynamic-datasource-spring-boot-starter`实现: * `pom.xml`配置 ~~~ <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> </dependency> ~~~ * `application.yml`配置 ~~~ spring: datasource: dynamic: primary: db1 # 配置默认数据库 datasource: db1: # 数据源1配置 url: jdbc:mysql://localhost:3306/db1?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver db2: # 数据源2配置 url: jdbc:mysql://localhost:3306/db2?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8 username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver durid: initial-size: 1 max-active: 20 min-idle: 1 max-wait: 60000 autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid配置 ~~~ DruidDataSourceAutoConfigure需要排除,否则会报错。排除方式有两种,一种是上述配置文件排除,还有一种可以在项目启动类排除: ~~~ @SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ~~~ * 多数据源使用,请参考官方文档,[链接](https://dynamic-datasource.com/) ## 六. H2单独运行 H2也可以像Mysql一样单独部署运行,程序通过tcp协议远程访问。 1、H2数据库下载地址:http://www.h2database.com/html/download.html 2、解压运行 ![](https://img.kancloud.cn/01/fa/01fa0c5bedfabe0cbee84afe2bcb1527_826x240.png) ~~~ h2   |---bin   |    |---h2-1.1.116.jar //H2数据库的jar包(驱动也在里面)   |    |---h2.bat //Windows控制台启动脚本   |    |---h2.sh                  //Linux控制台启动脚本   |    |---h2w.bat              //Windows控制台启动脚本(不带黑屏窗口)   |---docs                       //H2数据库的帮助文档(内有H2数据库的使用手册)   |---service //通过wrapper包装成服务。   |---src //H2数据库的源代码   |---build.bat //windows构建脚本   |---build.sh //linux构建脚本 ~~~ 3、连接语法 ~~~ 连接语法:jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName> 范例:jdbc:h2:tcp://localhost/~/testDB ~~~