轻量级数据库⽐较:SQLite、H2和MySQLEmbedded
对 PHP程序员来说,SQLite可以快速的搭建数据库开发环境,提供轻松、⾃容器、⽆配置、⽆
独⽴服务的数据库环境,所有数据保存在⼀个⽂件⾥。当使⽤ MySQL 作为最终⽣产平台
时,SQLite 是不可替代的开发环境解决⽅案。但真的没有其他兼容性更好的选择了吗?好吧,
仅举⼏个原因:MySQL的兼容性和⽀持哈希索引,还不⽌这些!
当我们寻 SQLite 的替代⽅案时,有两个可选,分别是 H2 和 MySQL Embeded 版本。我关注
的是可像 SQLite ⼀样⽅便使⽤,但⼜必须兼容 MySQL。
下⾯我们对三个数据库进⾏简单的⽐较:
⽐较项
SQLite H2 database engine MySQL Embedded
Footprint350KiB~1MB<2MB
授权协议Public
domain
Dual: Modified MPL 1.1 / EPL 1.0
(commercial friendly)
GPL 2.0 (only commercial
friendly if not redistributed)
⾃容器
单⽂件
⽆服务器
服务器模式
零配置
事物处理数据库简单吗
索引(B-tree, R-
tree, full-text)
(B-tree, tree, hash, full-text)(B-tree, R-tree, hash, full-text)
MySQL
兼容性
(but not 100%)
兼容其他数据库MySQL, PostgreSQL, Oracle, MSSQL, DB2, HSQLDB and Derby
加密
内存中
数据库
(MEMORY storage engine)
看似 H2 管理最简单,因此我在PHP 下体验了 H2后发现的⼀些限制:Quercus 的 MySQL 驱动⽆法和 H2 的 MySQL 兼容模式良好的⼯作,我必须使⽤ Quercus 的 PDO 驱动来替代。MySQL Embedded 则是 100% 兼容 MySQL,我还没有开始测试。但也有⼀些不确定的问题,我不清楚是否可以分发包含 MySQL Embedded 的应⽤程序,这可能需要购买商业授权。