比较3个开源数据库:PostgreSQL,MariaDB和SQLite

在现代企业技术世界里,开源软件已牢固地确立了自己作为不可忽视的,最大力量之一的地位。由于开源运动的出现,推动了几十年来的一些最著名的技术发展。
不难理解为什么:尽管基于Linux的开源网络标准可能不像专有选项那样受欢迎,但这是来自不同制造商的智能设备可以相互通信的原因。另外许多人同意,开源开发所产生的应用程序要优于专有的应用程序,这就是为什么有可能使用开源数据库开发您喜欢的工具(无论是开源软件还是专有软件)的原因之一。
像任何其他类别的软件一样,开源数据库管理系统的功能和特性可能会相差很大。简而言之,并非所有开源数据库管理系统都是平等的。如果要为公司选择一个开放源数据库,则必须选择一个用户友好,可以随组织发展并提供足够安全功能的数据库。
考虑到这一点,我们对开源数据库及其各自的优缺点进行了概述,但是很抱歉,我们不得不省略一些最常用的数据库。值得注意的是,MongoDB最近更改了其许可模式,因此它不再是真正的开源。从业务角度来看,此决定可能是合理的,因为MongoDB已成为事实上的数据库托管解决方案,已有近27,000家公司使用它,但这也意味着MongoDB不再被视为真正的开源系统。
此外,自从收购MySQL以来,Oracle几乎杀死了该项目的开源性质,可以说,几十年来,它一直是开源数据库的首选。但是,这为其他真正的开源数据库解决方案提出了挑战的空间。

PostgreSQL
没有PostgreSQL的开源数据库的清单是不完整的,PostgreSQL一直是各种规模企业的首选解决方案。甲骨文收购MySQL可能在当时具有良好的商业意义,但是云存储的兴起意味着数据库已逐渐受到开发人员的青睐。
尽管PostgreSQL已经存在了一段时间,但MySQL的相对衰落使它成为最常用的开源数据库的有力竞争者。由于它的工作原理与MySQL非常相似,因此喜欢开源软件的开发人员正在大量转换到PostgreSQL。
优点
- 到目前为止,PostgreSQL最常被提及的优势是其中央算法的效率,这意味着它的性能优于许多被宣传为更高级的数据库。如果您正在使用大型数据集,否则I / O进程可能成为瓶颈。
- 它也是周围最灵活的开源数据库之一,您可以使用多种服务器端语言编写函数:Python,Perl,Java,Ruby,C和R。
- 作为最常用的开源数据库之一,PostgreSQL的社区支持是其中最好的。
缺点
- PostgreSQL在处理大型数据集方面的效率众所周知,但是对于较小的数据库有更快的工具可用。
- 尽管它的社区支持非常好,但是PostgreSQL的核心文档仍可以改进。
- 如果您习惯于并行化和集群化之类的高级工具,请注意,这些工具需要PostgreSQL中的第三方插件。虽然已经计划逐步将这些功能添加到主版本中,但是可能要几年后才能将它们作为标准提供。

MariaDB
MariaDB是MySQL的真正开源发行版(在GNU GPLv2下发行)。它是在甲骨文收购 MySQL 之后创建的,当时一些MySQL的核心开发人员担心甲骨文会破坏其开源哲学。
MariaDB的开发目的是尽可能与MySQL兼容,同时替换几个关键组件。它使用一个存储引擎Aria,该引擎既充当事务引擎又充当非事务引擎。一些人甚至猜测,在MariaDB出现分歧之前,Aria将在将来的版本中成为MySQL的标准引擎。
优点
- 由于MariaDB 频繁发布安全性,尽管这不一定意味着MariaDB更安全,但这确实表明开发社区非常重视安全性。
- MariaDB的主要优势在于,它几乎肯定会保持开源状态并与MySQL高度兼容。这意味着从一个系统迁移到另一个系统的速度非常快。
- 由于这种兼容性,MariaDB还可以与MySQL常用的许多其他语言很好地兼容。这意味着更少的时间用于学习和调试代码。
- 您可以使用MariaDB而不是MySQL 来安装和运行 WordPress,以获得更好的性能和更丰富的功能集。按市场份额, WordPress是最受欢迎的CMS(为近一半的互联网提供动力),并且拥有活跃的开源开发者社区。将WordPress与MariaDB一起安装时,第三方主题和插件将按预期工作。
缺点
- MariaDB有点过大。长时间使用后,其中央IDX日志文件尤其会变得非常大,最终导致性能下降。
- 缓存是MariaDB可以使用工作的另一个领域,速度不如预期的快,这可能会令人沮丧。
- 尽管有最初的承诺,MariaDB不再与MySQL完全兼容。如果要从MySQL迁移,则需要重新编码。
SQLite
由于许多流行的Web浏览器,操作系统和移动电话采用了SQLite,因此SQLite可以说是世界上使用最广泛的数据库引擎。最初是作为MySQL的轻量级分支开发的,与许多其他数据库不同,它不是客户端服务器引擎,而是将完整的软件嵌入每个实现中。
这创造了SQLite的主要优势:在嵌入式或分布式系统上,每台机器都承载数据库的整个实现。因为它减少了系统间调用的需要,所以可以大大提高数据库的性能。
优点
- 如果您希望构建和实现一个小型数据库,那么SQLite 无疑是最好的选择。它非常小,因此可以在各种嵌入式系统中实现,而无需耗时的解决方法。
- 它的小尺寸使系统非常快。虽然某些更高级的数据库使用复杂的方法来节省效率,但SQLite却采用了一种更为简单的方法:通过减少数据库及其相关处理软件的大小,可以处理的数据更少。
- 它的广泛采用也意味着SQLite可能是其中最兼容的数据库。如果您需要或计划将系统与智能手机集成,则这一点尤其重要:只要存在第三方应用程序,并且该系统在各种环境中都可以完美运行,则该系统在iOS上是本机。
缺点
- SQLite的体积很小,这意味着它缺乏大型数据库中的某些功能。它缺乏内置的数据加密功能。
- 尽管SQLite的广泛采用和公开可用的代码使SQLite易于使用,但它也增加了攻击面。这是它最常被引用的缺点。在SQLite中经常发现新的严重漏洞,例如最近称为Magellan的远程攻击媒介。
- 尽管SQLite的单文件方法具有速度优势,但没有简单的方法可以使用该系统实现多用户环境。
哪个开源数据库最好?
最终,您对开源数据库的选择将取决于您的业务需求,尤其取决于系统的大小。对于小型数据库或使用量有限的数据库,请使用轻量级的解决方案:它不仅可以加快实施速度,而且系统的复杂程度较低,这意味着您将花费更少的时间进行调试。
对于大型系统,尤其是在成长中的企业中,请花一些时间来实现更复杂的数据库,例如PostgreSQL。通过消除随着业务增长而重新编码数据库的需求,最终可以节省您的时间。
比较3个开源数据库:PostgreSQL,MariaDB和SQLite的更多相关文章
- 【转】 MySQL与PostgreSQL:该选择哪个开源数据库?哪一个更好?
转载地址:http://www.infoq.com/cn/news/2013/12/mysql-vs-postgresql 如果打算为项目选择一款免费.开源的数据库,那么你可能会在MySQL与Post ...
- MySQL VS PostgreSQL:该选择哪个开源数据库?
Naresh Kumar 是一位软件工程师与热情的博主,对编程与新事物充满了激情和兴趣.近日,Naresh撰写了一篇博文,对开源世界最常见的两种数据库 MySQL 与 PostgreSQL 的特点进行 ...
- MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较
1.MySQL 5 作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO.MySQL是一个多线程.结构化查询语言(S ...
- 开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表( 附加翻译) h2数据库
开源数据库 H2, HSQLDB, DERBY, PostgreSQL, MySQL区别/对比图表 浪天涯博主翻译: referential integrity 参考完整性transactions 事 ...
- 维基逃离MySQL 力挺开源数据库 MariaDB
近日全球著名百科类网站维基百科宣布,将不会再用MySQL数据库,据国外媒体报道,很多年,MySQL一直是热门的开源数据库,不过在被甲骨文收购后,面临闭源的风险.因此维基百科将切换到另外一款开源数据库M ...
- 开源数据库中间件-MyCat
开源数据库中间件-MyCat产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求.这 ...
- 什么是分析型数据库PostgreSQL版
分析型数据库PostgreSQL版(原HybridDB for PostgreSQL)为您提供简单.快速.经济高效的 PB 级云端数据仓库解决方案.分析型数据库PostgreSQL版 兼容 Green ...
- 云栖PPT下载 | 开源界大咖集体现身,开源数据库专场重点再回眸!
阿里云开源数据库项目最新发布 阿里巴巴集团副总裁.阿里云智能数据库事业部总裁.高级研究员李飞飞(飞刀).阿里云数据库资深技术专家楼方鑫(黄忠)以及阿里云数据库技术专家傅宇(齐木)三位阿里云技术专家为大 ...
- 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践
说到“大数据”,当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外一个热门的名词也很火,那就是“云”.越来越多的企业都在搭建属于自己的云平台,也有一些 ...
随机推荐
- C#使用Consul集群进行服务注册与发现
前言 我个人觉得,中间件的部署与使用是非常难记忆的:也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用. 所以,我觉得学习中间件的文章,越详细越好:因为,这对作者而言也是一份珍贵 ...
- mac安装numpy,scipy,matplotlib
SaintKings-Mac-mini:~ saintking$ python Python ( , ::) [GCC Compatible Apple LLVM (clang-)] on dar ...
- 2019-2020-11 20199304 《Linux内核原理与分析》 第十一周作业
缓冲区溢出漏洞实验 一.简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回 ...
- DevOps on DevCloud|如何采用流水线践行CI/CD理念【华为云技术分享】
[摘要] 持续集成/持续交付(CI/CD,Continuous Integration/Continuous Deployment)在DevOps CMALS理念中具有支柱性地位,因而CI/CD流水线 ...
- Python爬虫实战之爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- Maven学习整理
1. window系统中安装Maven 2. 解决使用代理联网时无法下载jar包 3. 配置本地仓库 4. 处理本地仓库和中央仓库都没有依赖的jar包的情况
- Spring Quartz定时任务设置
这里主要记录一下定时任务的配置,偏向于记录型的一个教程,这里不阐述Quartz的原理. 首先,在Spring配置文件里配置一个自己写好的一个包含执行任务方法的一个类. <bean id=&quo ...
- MyBatis三个查询方法_selectList_selectOne_selectMap
mybatis-cfg.xml的配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE co ...
- 移动开发在路上-- IOS移动开发系列 网络交互四(1)
最近一段时间上班忙的没日没夜的,不是披星戴月,就是头天早上出门,第二天早上回家...一直没出处时间来更新博客,码农之苦,说了都是泪,废话不多说,直接本主题,经过之前三篇的讲述,ios开发的东西大家或多 ...
- 适用于Java开发人员的SOLID设计原则简介
看看这篇针对Java开发人员的SOLID设计原则简介.抽丝剥茧,细说架构那些事——[优锐课] 当你刚接触软件工程时,这些原理和设计模式不容易理解或习惯.我们都遇到了问题,很难理解SOLID + DP的 ...