久趣下载站

当前位置: 首页 » 游戏攻略 » SQLite vs MySQL vs PostgreSQL对比总结

SQLite vs MySQL vs PostgreSQL对比总结

开发业务系统时,是绕不开

RDBMS

(关系型数据库)的。

虽然现在诞生了各种

NoSQL

的数据库,

RDBMS

在业务系统中的严谨和优势依然无法取代。

近几年大大小小的项目中,常用的三种

RDBMS



SQLite



MySQL



Postgres

)都有多次接触过,

一些使用心得记录如下,供大家参考。

1. SQLite


SQLite

是一个独立的、基于文件的、完全开源的

RDBMS



它以可移植性、可靠性和强大的性能而闻名,即使在低内存环境中也能很好的发挥作用。


SQLite

被描述为“

无服务器

”数据库。

大多数关系数据库引擎是作为服务器进程实现的,应用程序通过进程间通信的方式与数据库服务器进行通信。



SQLite

允许任何访问数据库的进程直接读写数据库磁盘文件。

这大大简化了

SQLite

的使用,你可以像访问文件一样使用

SQLite

,几乎不需要任何配置。

1.1. 优势

它的优势总结起来有3点:占用空间小;用户友好;便携式。


占用空间小

:顾名思义,

SQLite

库非常轻量级。它占用的空间不到

600KiB

。此外,它是完全自包含的,这意味着你不必在系统上安装任何外部依赖项就可以使用

SQLite


用户友好



SQLite

开箱即用,被描述为“零配置”数据库。而且

SQLite

不作为服务器进程运行,这意味着它永远不需要停止、启动或重新启动,也不需要管理任何配置文件。

这些特性有助于简化

SQLite

与应用程序集成的过程。


便携式

:与其他数据库管理系统(通常将数据存储为大量单独的文件)不同,整个

SQLite

数据库存储在单个文件中。

此文件可以位于目录层次结构中的任何位置,并且可以通过可移动媒体或文件传输协议共享。

1.2. 劣势

虽然轻巧好用,但是与传统数据库相比,

SQLite

的劣势也很明显。


有限并发

:虽然多个进程可以同时访问和查询

SQLite

数据库,但在任何给定时间只有一个进程可以对数据库进行更改。


无用户管理

:数据库系统通常支持用户,或具有预定义的数据库和表访问权限的托管连接。由于

SQLite

直接读写普通磁盘文件,因此唯一适用的访问权限是底层操作系统的典型访问权限。


安全

:使用服务器的数据库引擎比

SQLite

这类无服务器数据库有更好的应用程序漏洞保护。

此外,由于服务器是单个持久进程,因此客户端-服务器的数据库可以比无服务器数据库更精确地控制数据访问,允许更细粒度的锁定和更好的并发性。

1.3. 适用的场景


SQLite

适用于以下的场景:


嵌入式应用程序



SQLite

对于需要可移植性且不需要未来扩展的应用程序来说是绝佳选择。比如单用户本地应用、移动的应用或游戏。


替代直接用文件保存的数据

:如果你的应用程序用文件来保存数据,可以尝试用SQLite来替换,可以获得使用

SQL

所带来的额外功能和简单性。


测试

:对于许多应用程序来说,可将

SQLite

用于快速运行测试的数据库,这样就不需要实际数据库操作的开销,使其成为测试的理想选择。

1.4. 不适用的场景

对于以下场景,请谨慎使用

SQLite




处理大量数据



SQLite

虽然在技术上可以支持高达

140 TB

的数据库,只要磁盘驱动器和文件系统也支持数据库的大小要求。

然而,

SQLite

建议任何接近

1 TB

的数据库都放在客户端-服务器的数据库上。


高写入量



SQLite

在任何给定时间只允许发生一次写入操作,这大大限制了其吞吐量。如果您的应用程序需要大量的写操作或多个并发编写器,

SQLite

可能无法满足您的需求。


需要网络访问

:因为

SQLite

是一个无服务器数据库,它不提供对其数据的直接网络访问。

如果SQLite中的数据位于与应用程序不同的机器上,建议使用客户端-服务器的

DBMS

2. MySQL


MySQL

是为了速度和可靠性而设计的,完全遵守标准SQL。

与使用

SQLite

的应用程序不同,使用

MySQL

数据库的应用程序通过单独的守护进程访问它。

由于服务器进程位于数据库和其他应用程序之间,因此可以更好地控制谁可以访问数据库。

2.1. 优势


MySQL

的优势主要有:


普及性和易用性

:作为世界上最流行的数据库系统之一,很容易找到有

MySQL

工作经验的数据库管理员。

同样,有大量关于如何安装和管理

MySQL

数据库的在线文档。

还有许多第三方管理工具-比如

phpMyAdmin


安全



MySQL

安装时附带了一个脚本,可以帮助您通过设置安装的密码安全级别、定义root用户的密码、删除匿名帐户以及删除默认情况下所有用户都可以访问的测试数据库来提高数据库的安全性。

另外,与

SQLite

不同,

MySQL

支持用户管理,并允许逐个用户授予不同的访问权限。


速度

:MySQL开发人员优先考虑速度。虽然最近的基准测试表明,其他

RDBMS

(如

Postgres

)在速度方面可以匹配或至少接近

MySQL

,但

MySQL

仍然是一个非常快速的数据库解决方案。


复制



MySQL

支持许多不同类型的复制,这是在两个或多个主机上共享信息的做法,以帮助提高可靠性,可用性和容错性。

这有助于设置数据库备份解决方案或水平扩展数据库。

2.2. 劣势

MySQL的劣势主要有:


已知限制

:由于

MySQL

是为了速度和易用性而设计的,而不是完全符合SQL,因此它具有某些功能限制。


许可和专有功能



MySQL

是双重许可的软件,其中一个免费和开源社区版本在GPL v2下许可,还有几个付费商业版本在专有许可下发布。


发展缓慢

:自从MySQL项目在2008年被Sun Microsystems收购,后来又在2009年被Oracle公司收购以来,用户一直抱怨DBMS的开发过程显着放缓。

2.3. 适用的场景


MySQL

适用于以下的场景:


分布式操作



MySQL

的复制支持使其成为分布式数据库设置的绝佳选择,如主次或主主架构。


各种应用程序



MySQL

为互联网上的许多网站和应用程序提供支持。

这在很大程度上要归功于安装和设置

MySQL

数据库的简单性,以及从长远来看它的整体速度和可扩展性。


未来增长比较快



MySQL

的复制支持可以帮助促进水平扩展。此外,升级到商业

MySQL

产品也比较简单。

2.4. 不适用的场景

以下场景,需谨慎使用

MySQL




SQL兼容性要求高

:由于

MySQL

不尝试实现完整的SQL标准,因此该工具并不完全符合SQL标准。如果您的用例必须完全甚至接近完全的SQL兼容性,那么您可能希望使用更完全兼容的DBMS。


并发性和大数据量

:虽然

MySQL

通常在读操作方面表现良好,但并发读写可能会有问题。如果您的应用程序将有许多用户同时向其写入数据,那么像

Postgres

这样的其他

RDBMS

可能是更好的数据库选择。

3. Postgres


PostgreSQL

,也被称为

Postgres

,自称为“最先进的开源关系数据库”,它的创建目标是高度可扩展和符合标准。


Postgres

能够同时有效地处理多个任务,它在没有读锁的情况下实现了这一点。

3.1. 优势


Postgres

的优势主要有:


SQL合规性

:与

SQLite



MySQL

相比,

PostgreSQL

旨在严格遵守SQL标准。


开源和社区驱动

:一个完全开源的项目,PostgreSQL的源代码是由一个大型的社区开发的。


Postgres

社区维护并贡献了许多描述如何使用DBMS的在线资源,包括官方文档,

PostgreSQL wiki

和各种在线论坛。


可扩展性

:用户可以通过编程方式扩展

PostgreSQL

,并通过其目录驱动操作和动态加载的使用进行动态扩展。

3.2. 劣势


Postgres

的劣势主要有:


内存性能

:对于每个新的客户端连接,

PostgreSQL

都会派生一个新的进程。每个新进程都分配了大约10MB的内存,这对于具有大量连接的数据库来说可以快速增加。

因此,对于简单的读重操作,

PostgreSQL

通常比其他

RDBMS

(如

MySQL

)性能差。


流行度

:尽管近年来使用越来越广泛,但

PostgreSQL

在流行度方面一直落后于

MySQL



所以,帮助管理PostgreSQL数据库的第三方工具仍然很少。类似地,具有管理

Postgres

数据库经验的数据库管理员并不多。

3.3. 适用的场景


Postgres

适用于以下的场景:


数据完整性要求高



PostgreSQL

自2001年以来一直完全符合ACID,以确保数据保持一致,使其成为数据完整性至关重要的

RDBMS

的强有力选择。


与其他工具的集成



PostgreSQL

与各种编程语言和平台兼容。

如果您需要将数据库迁移到另一个操作系统或将其与特定工具集成,使用

PostgreSQL

数据库可能比使用其他

DBMS

更容易。


复杂操作



Postgres

可以利用多个CPU以更快的速度查询。

再加上它对多个并发编写器的强大支持,使其成为数据仓库和在线事务处理等复杂操作的绝佳选择。

3.4. 不适用的场景

以下场景,需谨慎使用

Postgres




速度要求高

:以速度为代价,

PostgreSQL

在设计时考虑了可扩展性和兼容性。如果您的项目需要尽可能快的读取操作,

PostgreSQL

可能不是最佳选择。


简单的设置

:由于其庞大的功能集和对标准SQL的严格遵守,

Postgres

对于简单的数据库设置来说可能是矫枉过正的。对于需要速度的读取繁重操作,MySQL通常是更实用的选择。


复杂的复制

:尽管

PostgreSQL

确实为复制提供了强大的支持,但它仍然是一个相对较新的特性,某些配置(如主—主架构)只能使用扩展。

复制是

MySQL

上一个更成熟的功能,许多用户认为

MySQL

的复制更容易实现,特别是对于那些缺乏必要的数据库和系统管理经验的用户。

猜你喜欢
本类排行