SQLiteMySQL与PostgreSQL三个关系数据库的比较
Posted 21CTO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLiteMySQL与PostgreSQL三个关系数据库的比较相关的知识,希望对你有一定的参考价值。
本文对比了SQLite、mysql和PostgreSQL这三个常用的、流行的关系型数据库管理系统(RDBMS),希望能对大家有价值。
关系数据库管理系统(RDBMS)是世界上使用最广泛的数据库管理系统之一。基于Edgar F. Codd发明的关系模型,这些数据库以表格的形式存储数据,并允许通过建立表格之间的关系来链接数据。这导致了一种有效的数据存储机制,其中数据可以从数据库中的其他地方引用。
在本文中,我们比较 了市场上 最流行的三种开源RDBMS。该比较深入研究了体系结构,业务连续性,用例和支持方面的差异,这些差异可帮助您在为应用程序执行数据库系统时做出明智的决策。
SQLite
SQLite是一个基于文件的嵌入式关系数据库系统,不需要任何安装或配置。这意味着应用程序不在需要启动,停止或配置成单独的服务器进程运行,这样的无服务器架构使数据库能够跨平台兼容。
完整的SQL数据库包含在单个磁盘文件中,所有读取和写入都直接在此磁盘上进行。数据直接写回磁盘文件,SQLite遵守ACID属性,使用事务保护因意外系统崩溃或电源故障导致的内存分配故障和磁盘I/O错误。
优点和用例
SQLite是三个数据库中最精巧的RDMS,其数据库的大小小于600 KB。由于体积小,且具备RDBMS的特性,它的移植性非常好,尤其适合物联网和嵌入式设备。
还有其他一些用例比如中小流量网站(每天约100K请求),用于测试和内部开发目的,使用Tcl或Python进行数据分析以及教学目的(这很容易设置并可用于教SQL对学生的概念)。
SQLite的一个主要优点是它作为客户端/服务器企业RDBMS的补充解决方案。比如,它可以在本地缓存来自客户端/服务器RDBMS的数据,从而减少查询延迟,并在企业RDBMS中断时保持最终应用程序的活动。
SQLite支持的数据类型
SQLite支持的数据类型包括:NULL、INTEGER、REAL、TEXT、BLOB。
缺点
SQLite的一个主要缺点是缺少多用户功能,这些能够在MySQL和PostgreSQL等成熟的RDBMS中找到,但SQLite缺少细粒度访问控制、友好的用户管理以及加密数据库文件本身的安全功能。如果设计CRM和SaaS应用程序等多用户应用程序时,这是SQLite一个主要缺点,在构建多用户或多租户应用程序时,通常不应使用SQLite。
SQLite的另一大缺点是它处理序列化的写操作,这可能是大并发应用程序的主要瓶颈。由于SQLite是基于文件的DBMS,由于文件系统本身的限制,可能会导致较大数据集的性能问题。在这些实例中选择客户端/服务器数据库(如MySQL和PostgreSQL)是适合的,尤其是在处理大数据等大型数据集时。
另外说明的是,任何主要云计算提供商都缺乏任何数据库即服务(DBaaS)产品。随着公共云的出现,开发人员和DevOps团队使用PaaS服务(如DBaaS)变得是常事。顶级公共云提供商缺乏托管服务意味着共同管理任务必须由数据库管理员负责,从而增加运营成本。
所有权,支持和主要客户
SQLite是由一组开发人员维护的开源数据库。对于社区支持,它提供公共邮件列表,并提供付费专业支持。SQLite的一些主要客户有Facebook,谷歌和苹果等公司。
MySQL
概述和功能
MySQL是最流行的开源和大规模RDBMS系统之一。它与SQLite不同,它采用多线程SQL服务器组成的服务器/客户端体系结构。这种多线程特性有更高的性能,内核线程可以轻松利用多个CPU。该数据库使用C和C++编写,支持各种操作系统,如Windows Server操作系统和其它Linux发行版,如RHEL 7和Ubuntu。它还遵循ACID系统以实现事务一致性,并提供各种连接器和API,如C,C++,Java,php等语言。
可伸缩性,安全性和复制是使MySQL成为企业应用程序中最受欢迎的选择之一。以下是MySQL的一些关键功能:
MySQL安全功能包括MySQL Access Privilege System,它提供用户身份验证,用户帐户管理系统 和使用SSL加密连接。
MySQL提供从主服务器到从服务器/主服务器到主服务器的复制功能,这在扩展读取时非常有用,可用作备份解决方案,甚至可以在发生停机时进行故障转移。MySQL还有具有更多功能的企业级商用产品。
例如,MySQL企业版具有MySQL透明数据加密(TDE),MySQL企业备份和MySQL文档存储等附加功能。
MySQL还提供嵌入式多线程库,为嵌入式和物联网系统提供更小的占用空间。
MySQL支持的数据类型
MySQL支持的数据类型包括TINYINT、SMALLINT、MEDIUMINT、INT或INTEGER、BIGINT、FLOAT、DOUBLE、DOUBLE PRECISION、REAL、DECIMAL、NUMERIC、DATE、DATETIME、TIMESTAMP、TIME、YEAR、CHAR、VARCHAR、TINYBLOB, TINYTEXT、BLOB, TEXT、MEDIUMBLOB、MEDIUMTEXT、LONGBLOB, LONGTEXT、ENUM、SET。
优点与用例
除了具有多个企业级功能外,MySQL和SQLite之间的另一主要区别是MySQL对多用户功能的支持,企业功能和可扩展性一起使MySQL成为分布式应用程序的理想选择。
在吞吐量和性能方面,MySQL比PostgreSQL具备优势,可用于简单的读取操作。与PostgreSQL相比,它的安装和使用也更加简单,拥有更广泛的开发者社区。
缺点
当MySQL将旧数据移动到称为回滚段的单独区域时,批量INSERT会对性能产生负影响。在此方面是PostgreSQL的亮点。对于长时间运行的SELECT,它也不能很好地工作,最适合较小的SELECT,尤其是覆盖聚簇索引的SELECT。其他一些缺点包括缺乏全文搜索和慢速并发读写。
所有者,支持与主要客户
MySQL由Oracle拥有和维护。通过论坛维护社区支持,并通过 购买 商业产品获得重要支持。MySQL的一些主要客户是Facebook,GitHub和YouTube等。
PostgreSQL
PostgreSQL是一个开源对象RDBMS,特别强调可扩展性和标准兼容性。与MySQL一样,PostgreSQL使用客户端/服务器数据库模型和处理客户端通信,管理数据库文件和操作的服务器进程,它被称为进程。
PostgreSQL通过为每个连接创建(“分叉”)新进程来处理并发客户端会话。此进程与主进程分开,并在客户端连接的生命周期内创建和销毁。Postgres用C编写,符合ACID标准,支持函数和存储过程。与MySQL不同,PostgreSQL支持物化视图(缓存视图),从而支持更快地频繁访问大型和活动表。
与MySQL一样,PostgreSQL也有一些高级功能,如安全性和复制。PostgreSQL依赖于主数据库和从数据库之间的同步复制。除了提供用户访问控制,基于主机的访问控制和用户身份验证之外,PostgreSQL本身还提供使用SSL加密客户端/服务器通信的功能。完全ACID合规性是PostgreSQL的原生,而它存在于InnoDB和MySQL的NDB Cluster程序中。
PostgreSQL使用称为多版本并发控制或MVCC的技术来维护数据并发访问期间的数据一致性。此技术优于仅使用锁定进行并发,因为它最大限度地减少了多用户环境中的锁争用,从而显着提高了性能。对于向后兼容性或需要经典锁技术的应用程序,PostgreSQL还允许表和行锁定技术提供并发性。相反,MySQL仅支持InnoDB实例中的MVCC。
PostgreSQL支持的数据类型
PostgreSQL支持的数据类型包括:bigint、bigserial、bit [(n)]、bit varying [(n)]、boolean、box、bytea、character varying [(n)]、character [(n)]、cidr、circle、date、double precision、inet、integer、interval [fields] [(p)]、line、lseg、macaddr、money、numeric [(p,s)]、path、point、polygon、real、smallint、serial、text、time、timestamp、tsquery、tsvector、txid_snapshot、uuid、xml
优点和用例
缺点
在频繁的UPDATE期间可以看到PostgreSQL很大的缺点,它不支持聚簇索引,与MySQL数据库相比,PostgreSQL会对性能产生较大负面影响。
所有者,支持与主要客户
PostgreSQL是开源的,源代码发布在PostgreSQL全球开发组上,并由其维护。PostgreSQL有社区和商业支持两种选择。社区支持采用邮件列表的形式,同时开发者也可以找到商业支持提供商列表。尽管与MySQL相比,PostgreSQL的市场份额较小,但它拥有令人印象深刻的客户名单,如AWS RedShift,Instagram,ViaSat和Cloudera。
小结
在流行度方面,MySQL远远领先于PostgreSQL和SQLite,但在将其作为事实上的选择之前需要考虑应用程序用例和具体功能。
强大的ACID规范性和高并发等特性使PostgreSQL成为MySQL强有力的竞争者。另一方面,SQLite在嵌入式和物联网应用程序方面表现优异,其中SQLite库的极小占用空间使其比竞争对手更有优势。如果你正在开发一个多用户应用程序,那么SQLite将是一个糟糕的选择,你必须从PostgreSQL和MySQL的优缺点。
为了让您更容易做出这一选择,我们编制了一份SQLite,MySQL和PostgreSQL之间的比较列表,可帮助您做出决定。
编译:洛逸
来源:https://dzone.com/articles/sqlite-vs-mysql-vs-postgresql-a-comparison-of-rela
以上是关于SQLiteMySQL与PostgreSQL三个关系数据库的比较的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL编码格式:客户端服务器客户端服务器端相关影响