SQLite vs MySQL vs PostgreSQL:关系型数据库相比

自1970年埃德加·科德提出关系模型之后,关系型数据库便起先现出,经过了40多年的嬗变,如今的关系型数据库系列繁多,功能强大,使用大规模。面对这么之多的关系型数据库,大家应有如何权衡找出符合自己行使场景的数据库系统啊?O.S.
Tezer
近年来在DigitalOcean上刊出了一篇博文,对比了SQLite、MySQL和PostgreSQL那三个常用的、流行的关系型数据库管理体系(RDBMS),希望能对你有着帮忙。

O.S.
Tezer
个别从数据库协理的数据类型、优势、逆风局、哪天应该拔取以及什么时候不应当使用该数据库那5个方面对SQLite、MySQL和PostgreSQL做了比较。

SQLite

SQLite是一款轻型数据库,它遵守ACID,能够嵌入到应用它的应用程序中。作为一个自包罗的、基于文件的数据库,SQLite提供了丰裕优良的工具集可以处理所有类型的多寡,与托管在服务器上根据进程的关系型数据库相比较它的自律更少,也更易用。

当应用程序使用SQLite时,SQLite并非作为一个独自进度经过某种通讯协议(例如socket)与应用程序通讯,而是作为应用程序的一有些,应用程序通过调用SQLite的接口直接访问数据文件。感谢类库的尾部技术,它让SQLite变得格外便捷、高效并且越发精锐。

SQLite援助的数据类型

SQLite援救的数据类型包涵:NULL、INTEGER、REAL、TEXT、BLOB。

注意:要是您想驾驭与SQLite数据类型相关的更加多内容,可以参见法定文档

SQLite的优点
  • 依据文件

    全部数据库完全由磁盘上的一个文本构成,那使得它的可移植性分外好。

  • 标准化

    尽管它看起来像一个“简化版”的数据库完结,可是SQLite确实支撑SQL。它大约了一些意义(RIGHT
    OUTER JOIN和FOR EACH STATEMENT),但同时也增多了部分非凡的功用。

  • 万分适合开发仍然是测试

    在多数应用程序的开发阶段,大多数开发人士可能都相当须求一个力所能及支持并发伸张的缓解方案。SQLite
    包罗丰富的机能,所能提供的表征超乎开发所需,使用起来也相当简洁——只须要一个文本和一个C链接库。

SQLite的缺点
  • 不曾用户管理

    高档数据库都援救用户系统,例如管理总是对数据库和表的拜会权限。鉴于SQLite的目标和性能(没有多客户端并发的高层设计),它并不带有这一个职能。

  • 缺少通过优化得到额外性能的长空

    或者由于规划方面的缘由,无法透过优化SQLite获得多量的额外品质。那几个类库非凡不难调整、也分外不难使用。它并不复杂,所以从技术上不能让它变得更快,因为它已经飞快了。

曾几何时应该接纳SQLite
  • 嵌入式应用程序

    负有须求可移植性、不需要增添的应用程序,例如单用户的本土使用、移动拔取或者游戏。

  • 取代磁盘访问

    在广大景况下,必要一直读写磁盘文件的应用程序可以切换来SQLite从而收益于SQLite提供的附加功能以及接纳结构化查询语言(SQL)所牵动的简便性。

  • 测试

    对绝一大半应用程序而言没必要运用额外的进程测试工作逻辑(例如应用程序的最紧要目标:效能)。

几时不应有选取SQLite
  • 多用户应用程序

    假使有多少个客户端要求拜访并使用同一个数据库,那么最好应用效用一体化的关系型数据库(例如MySQL),而不是选择SQLite。

  • 亟需高写入量的应用程序

    写操作是SQLite的一个受制。该DBMS在一如既往时刻仅同意一个写操作,由此也限制了其吞吐量。

MySQL

MySQL是最受欢迎的一个广泛数据库服务器。它是一款功效丰硕的开源产品,许多网站和在线应用程序都使用该数据库。MySQL的入门相对相比较不难,开发者能够从Internet上得到到大方与该数据库相关的信息。

注意:是因为该产品的受欢迎程度,使用该数据库可以让大家受益于大批量第三方应用程序、工具以及集成类库。

固然MySQL并从未尝试落成全体的SQL标准,可是它仍然为用户提供了大气效应。作为一个独自的数据库服务器,应用程序需求与MySQL守护进度通讯才能访问数据库——不相同于SQLite。

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的优点
  • 易用

    很简单安装。第三方工具,包括可视化工具,让用户可以很不难入门。

  • 成效丰裕

    MySQL辅助关系型数据库应该有些一大半效果——或者直接扶助、或者直接扶助。

  • 安全

    扶助广大安全特点,有些尤其高档,并且是内停放MySQL中。

  • 可增加也充足强大

    MySQL可以处理多量数量,并且在须求的时候可以规模化使用。

  • 快速

    舍弃某些标准让MySQL可以足够便捷、简捷地劳作,因此速度更快。

MySQL的缺点
  • 已知限制

    MySQL从一早先就从未打算做有所业务,由此它在效益方面有早晚的局限性,并不可能满足一些产业革命应用程序的渴求。

  • 可看重性难点

    MySQL对少数成效(例如引用、事务、审计等)的兑现格局使得它与其余的关系型数据库比较紧缺了有的可靠性。

  • 支付停滞

    纵然MySQL依然是一款开源产品,可是自从它被收购之后芸芸众生就对其开发进展有众多抱怨。必要小心的是有部分按照MySQL的、完整集成的数据库在专业的MySQL之上附加了别样价值,例如MariaDB。

哪一天应该运用MySQL
  • 分布式操作

    若是SQLite不可以满意你的急需,那么将MySQL引入到支付栈中,如同其余其他独立的数据库服务器一样,它亦可给您带来大气的操作自由度以及部分红旗的机能。

  • 高安全性

    MySQL的平安机制通过一种简易的点子为数据的造访和运用提供了有限支撑的保安。

  • 网站和Web应用

    固然有一部分约束,不过绝半数以上网站和Web应用都得以大致地运作在MySQL上。相关的灵敏可增添的工具极度便于使用和治本——事实评释那几个工具在遥远运行时丰硕管用。

  • 定制解决方案

    MySQL有丰裕的配置项和运作方式,如若你要求一个中度量身定制的缓解方案,那么MySQL可以格外简单地跟随并进行你的平整。

什么时候不该选择MySQL
  • SQL遵从性

    因为MySQL并没有打算已毕一体化的SQL标准,所以它并不完全符合SQL。如若你也许要求与那样的关系型数据库集成,那么从MySQL切换过去可能并不不难。

  • 并发性

    即使MySQL和局地别的的贮存引擎可以分外好地履行读操作,不过并发读写可能会有难点。

  • 缺乏成效

    MySQL紧缺某些作用,例如全文本搜索。

PostgreSQL

PostgreSQL是一款先进的、开源的目的关系型数据库管理连串,它的要害目标是依照标准和可扩展。PostgreSQL,或者说Postgres,试图将ANSI/ISO
SQL标准及其核对结合起来。

与其他关系型数据库比较,PostgreSQL独特的地点是它协助高度须要的、完整的面向对象以及关系型数据库的作用,例如完全帮助可信性事务。

是因为其无所畏惧的平底技术,PostgreSQL可以分外飞速地拍卖很多任务。得益于多版本出现控制(MVCC),它亦可在尚未读锁的景观下落成产出并保险ACID。

PostgreSQL是惊人可编程的,由此伸张性格外好,它支持称为“存储进程”的自定义程序。用户可以创造那种函数简化重复的、复杂的以及平日索要的数据库操作的实践。

即使该数据库万分强劲,可是它却从未像MySQL那么流行,固然如此依旧有为数不少良好的第三方工具和类库可以让大家更易于地使用它。

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

PostgreSQL的优点
  • 开源且听从SQL标准

    PostgreSQL是一款开源的、免费的、作用格外强劲的关系型数据库。

  • 强劲的社区

    由一个忠于的、经验丰裕的社区辅助,用户可以透过知识库和Q&A网站获得全天候的免费服务。

  • 强劲的第三方接济

    除外那么些上进的特色之外,PostgreSQL还有许多上佳的、开源的第三方工具得以协理系统的宏图、管理和动用。

  • 可扩展

    可以通过存储进度伸张PostgreSQL的作用。

  • 面向对象

    PostgreSQL不仅是一个关系型数据库,它如故一个面向对象的数据库——扶助嵌套等职能。

PostgreSQL的缺点
  • 性能:

    对此简易繁重的读取操作,使用PostgreSQL可能有点小题大做,同时质量也比MySQL那样的同类产品要差。

  • 流行水平

    固然有大气的部署,然而由于该数据库的质量,它的受欢迎程序并不高。

  • 托管

    鉴于地点提到的几点,很难找到提供托管PostgreSQL实例的主机或者服务提供商。

什么时候应该利用PostgreSQL
  • 数据完整性

    当相对要求可依赖性和数据完整性的时候,PostgreSQL是更好的选料。

  • 复杂的定制程序

    设若急需数据库执行定制程序,那么可扩张的PostgreSQL是更好的选拔。

  • 集成:

    假定前几日或许必要将全方位数据库迁移到其它适当的缓解方案上(例如Oracle),那么PostgreSQL可能包容性最好也更易于切换。

  • 复杂的设计

    与其余开源且免费的数据库相比较,对于复杂的数据库设计PostgreSQL在职能方面最健全,潜力最大,不须求您抛弃任何有价值的血本。

曾几何时不该利用PostgreSQL
  • 速度

    倘诺您只要求飞快读取操作,那么PostgreSQL并不恰当。

  • 简单

    只有您须求相对的数据完整性,ACID遵循性或者部署复杂,否则PostgreSQL对于简易的景色而言有点多余。

  • 复制

    对于缺乏数据库和系统管理经验的人而言使用MySQL完成复制要更简短,除非你愿意花费时间、精力和资源。

原文: SQLite vs MySQL vs
PostgreSQL:关系型数据库相比较

网站地图xml地图