开源数据库SQLite、MySQL和PostgreSQL比较

linux是一款免费开源的操作系统,由于其自由、开放、安全、稳定等诸多特点,已被各大IT公司广泛地应用于服务器和嵌入式设备中 。
由于数据存储的需要,Linux操作系统需要搭配一套性能优良的数据库才能很好的满足业务需求,但是Linux系统下可用的数据库种类繁多,功能和性能也是各有千秋,往往我们需要根据业务场景来灵活的选择要使用的数据库 。

开源数据库SQLite、MySQL和PostgreSQL比较

文章插图
但有时因为缺乏经验,选择了不合适的数据库,导致业务运转过程中出现了许多问题和瓶颈,比如后台系统需要进行大量且频繁的并发读写操作,但选择了MySQL,导致使用过程中出现了许多不可避免的读写错误;再比如很多嵌入式系统需要支持多用户,却选择了SQLite,虽说SQLite小巧轻便,迁移性好,很适合嵌入式系统,但是他并不支持多用户管理 。所以如何选择一套适合的数据库就是我们所面临的一道难题 。
当下Linux系统中常用的数据库包括两大类,一是商业型数据库,比如Oracle、Sybase、DB2、Informix、SQL Server等;二是开源免费的数据库,比如MySQL、PostgreSQL、SQLite等 。商业数据库的功能与性能自不必多说,它们背后还有强大的技术团队的支持,此处我们要讲的是几种常用的开源免费数据库 。本文根据我们的日常开发经验,简单的对MySQL、PostgreSQL、SQLite进行比较,给大家提供一个参考 。
1、SQLite数据库
开源数据库SQLite、MySQL和PostgreSQL比较

文章插图
SQLite是一款轻量级的关系型数据库,它是用C语言实现的 。它是供嵌入式使用的,已广泛地应用到各个嵌入式系统中 。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 。
SQLite能够支持windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 C++、C#、php、JAVA等,和Mysql、PostgreSQL这两款开源的世界著名数据库管理系统相比,它的处理速度比他们都快 。
(1)SQLite的优势它的第一个特色是轻量级 。SQLite的作者很看重这个特性,连它的Logo都是用的“羽毛”,来显摆它的轻飘飘 。和客户端/服务器模式的数据库又说不同,SQLite是本地数据库,他是进程内的数据库引擎 。使用SQLite室只需要带上它的一个动态 库,就可以享受它的全部功能,并且这个动态库的尺寸也挺小 。
SQLite的另外一个特点是绿色 。它的核心引擎本身不依赖第三方的软件,使用它也不需要“安装”,只需要引入动态库即可,所以在部署的时候能够省去不少麻烦 。
跨平台/可移植性,如果光支持主流操作系统,那就没啥好吹嘘的了 。除了主流操作系统,SQLite还支持了很多冷门的操作系统 。尤其是它对很多嵌入式系统支持的非常好,比如Android、Windows Mobile、Symbin、Palm、VxWorks等 。
SQLite使用的是Public Domain协议,这是最爽一种,可以放心大胆地用,毫无限制的使用 。
(2)SQLite的缺点SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想 。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错 。
SQLite对SQL标准支持不全,在它的官方网站上,具体列举了不支持哪些SQL92标准 。特别是不支持外键的约束.
有时候需要访问其它机器上的SQLite库文件,就会把数据库文件放置到网络共享目录上 。这时候你就要小心了 。当SQLite文件放置于NFS时,在并发读写的情况下可能会出问题(比如数据损坏),原因是由于某些NFS网络文件系统的文件锁在实现上是有Bug的 。
(3)使用场景一是嵌入式应用场景,所有需要迁移性,不需要扩展的应用,例如,单用户的本地应用,移动应用和游戏 。
二是代替磁盘访问的场景,在很多情况下,需要频繁直接读/写磁盘文件的应用,都很适合转为使用 SQLite ,可以得益于 SQLite 使用 SQL 带来的功能性和简洁性 。
2、MySQL数据库
开源数据库SQLite、MySQL和PostgreSQL比较

文章插图
MySQL是最流行的关系型数据库管理系统,是最好的关系数据库管理系统应用软件之一 。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言 。MySQL由于其体积小、速度快、免费开源,被IT公司广泛的采用 。
(1)MySQL的优势它使用的核心线程是完全多线程,速度快并支持多处理器 。有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型 。


推荐阅读