嵌入式数据库介绍
摘要:我准备写个小程序,需要简单用一下数据库,不准备用 MySQL 了(一是没有多余服务器,二是懒的装了),经过一番调研后决定尝试一下嵌入式数据库。
一、常见嵌入式数据库
- SQLite 嵌入式关系数据库:https://www.sqlite.org/index.html (关系数据库)
- Apache Derby: https://db.apache.org/derby/ (关系数据库)
- H2 :https://h2database.com/html/main.html
- Embedded database**:** https://en.wikipedia.org/wiki/Embedded_database
- Berkeley DB: https://en.wikipedia.org/wiki/Berkeley_DB ;https://www.oracle.com/uk/database/technologies/related/berkeleydb.html(k-v数据库)
- 数据目录表:https://dbdb.io/ (包含很多数据库的介绍,很好的网站,可以理清众多数据库之间的关系)
- LevelDB:https://github.com/google/leveldb(嵌入式K-V数据库)
- RocksDB :https://github.com/facebook/rocksdb/ (嵌入式 K-V 数据库,基于 leveldb) https://rocksdb.org/ 技术选型为 RocksDB 用作嵌入式开发的 KV 数据库;
- TiKV:https://github.com/tikv/tikv https://tikv.org/ (国内的团队开发的,基于 rocksdb 但不是嵌入式的)
- Tokyo Cabinet:https://dbdb.io/db/tokyo-cabinet (嵌入式 K-V 数据库)
- https://db-engines.com/en/ranking (数据库引擎排行榜)
二、嵌入式数据库的优势
体积小,占用空间小,无需安装,可以很方便地应用在掌上电脑、PDA、车载设备、移动电话,而 MySQL、Oracle DB 等大中型数据库无法安装在嵌入式设备。
常见的,如 SQLite。
支持 ACID 事务;零配置一无需安装和管理配置;储存在单一磁盘文件中的一个完整的数据库;数据库文件可以在不同字节顺序的机器间自由共享;支持数据库大小至 2TB;足够小,全部源码大致 3 万行 c 代码,250KB;比目前流行的大多数数据库对数据的操作要快;提供了对事务功能和并发处理的支持,应用 Transaction 既保证了数据的完整性,也会提高运行速度,因为多条语句一起提交给数据库的速度会比一条一条的提交方式更快;独立,没有额外依赖。
三、Java 嵌入式数据库
目前,常用的是 H2、Apache Derby,如果你的项目是基于 SpringBoot 脚手架,那么可以轻易集成 H2,因为 Spring 默认的嵌入式数据库是 H2。
四、使用 H2 感受
我在我的小程序中简单实用了一下,感觉很棒,H2 支持多种模式,例如内存运行、文件模式(数据持久化磁盘),好像还有一种直接运行的,可以通过 TCP 连接,就像连接 MySQL 那样。H2 配置也很 Easy,数据源、ORM 框架对 H2 支持较完善,目前我用的是 JPA,和操作 MySQL 一样。如果是自己做测试或存储单机程序数据那么嵌入式数据库或许是个不错的选择。