OracleSQLite 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之上附加了别的价值,例如玛丽亚DB。

哪一天应该利用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:关系型数据库比较

相关文章