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的效益。

  • Oracle面向对象

    PostgreSQL不仅是一个关系项目数据库,它还是一个面向对象的数据库——支持嵌套等职能。

PostgreSQL的缺点
  • 性能:

    对于简易繁重的读取操作,使用PostgreSQL可能出硌小题大做,同时性能也比MySQL这样的同类产品要不等。

  • 流行水平

    尽管发生雅量底配置,但是出于该数据库的属性,它的吃欢迎程序并无赛。

  • 托管

    由地方提到的几乎点,很麻烦找到提供托管PostgreSQL实例的主机或者服务提供商。

何时应该利用PostgreSQL
  • 数据完整性

    当绝对需要可靠性以及数据完整性的上,PostgreSQL是重新好的抉择。

  • 复杂的定制程序

    如果需要数据库执行定制程序,那么可扩大的PostgreSQL是重好的选。

  • 集成:

    倘若未来或者用将满数据库迁移至其它适当的缓解方案及(例如Oracle),那么PostgreSQL可能兼容性最好吧还爱切换。

  • 复杂的统筹

    及另开源且免费之数据库相比,对于复杂的数据库设计PostgreSQL在效力点最健全,潜力无限充分,不需要您放弃任何有价之本钱。

何时无应当下PostgreSQL
  • 速度

    设您就需要快速读取操作,那么PostgreSQL并无适于。

  • 简单

    只有您要绝对的数据完整性,ACID遵从性或者计划复杂,否则PostgreSQL对于简易的面貌而言有点多余。

  • 复制

    于缺乏数据库及系统管理经验的总人口而言使用MySQL实现复制要还简明,除非您肯花时间、精力和资源。

原文: SQLite vs MySQL vs
PostgreSQL:关系项目数据库比较

相关文章