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

了解如何为您的需求选择最佳的开源数据库。
341 位读者喜欢这篇文章。
Automated provisioning in Kubernetes

Opensource.com

在现代企业技术领域,开源软件已牢固地确立了自己作为一股不可忽视的重要力量的地位。毕竟,一些最重要的技术发展都源于 开源运动

原因不难理解:尽管基于 Linux 的开源网络标准可能不如专有选项那么流行,但它们是不同制造商的智能设备能够相互通信的原因。此外,许多人认为,开源开发产生的应用程序优于其专有同类产品。这也是您的常用工具(无论是开源还是专有)很可能都是使用开源数据库开发的原因之一。

与任何其他类别的软件一样,开源数据库管理系统的功能和特性也可能存在很大差异。更通俗地说,并非所有开源数据库管理系统都是相同的。如果您正在为您的组织选择开源数据库,那么选择一个用户友好、可以随您的组织一起成长并提供足够安全功能的数据库非常重要。

考虑到这一点,我们编写了这份开源数据库及其各自优缺点概述。遗憾的是,我们不得不遗漏一些最常用的数据库。值得注意的是,MongoDB 最近更改了其许可模式,因此它不再是真正的开源。从商业角度来看,这个决定可能是有道理的,因为 MongoDB 已成为数据库托管的事实标准解决方案,有近 27,000 家公司 使用它,但这也意味着 MongoDB 不再能被视为真正的开源系统。

此外,自从 Oracle 收购 MySQL 以来,几乎扼杀了该项目的开源性质,而 MySQL 可以说是几十年来首选的开源数据库。然而,这为其他真正的开源数据库解决方案挑战它创造了空间。以下是其中三个值得考虑的数据库。

PostgreSQL

任何开源数据库列表都不能缺少 PostgreSQL,长期以来,PostgreSQL 一直是各种规模企业的首选解决方案。Oracle 收购 MySQL 当时可能具有良好的商业意义,但云计算的兴起意味着该数据库 已逐渐失宠于开发人员

尽管 PostgreSQL 已经存在一段时间了,但 MySQL 的相对 衰落 使其成为最常用开源数据库称号的有力竞争者。由于它的工作方式与 MySQL 非常相似,因此偏爱开源软件的开发人员正大量转向 PostgreSQL。

优点

  • 到目前为止,PostgreSQL 最常被提及的优点是其中心算法的效率,这意味着它的性能优于许多被宣传为更高级的数据库。如果您正在处理大型数据集,这尤其有用,否则 I/O 进程可能会成为瓶颈。

  • 它也是最灵活的开源数据库之一;您可以使用各种服务器端语言编写函数:Python、Perl、Java、Ruby、C 和 R。

  • 作为最常用的开源数据库之一,PostgreSQL 的社区支持是最好的之一。

缺点

  • PostgreSQL 在处理大型数据集方面的效率是众所周知的,但对于较小的数据库,有更快的工具可用。

  • 虽然其社区支持非常好,但 PostgreSQL 的核心文档仍有改进空间。

  • 如果您习惯于并行化和集群等高级工具,请注意,这些工具在 PostgreSQL 中需要第三方插件。有计划逐步将这些功能添加到主要版本中,但这可能还需要几年时间才能作为标准功能提供。

MariaDB

MariaDB 是 MySQL 的真正开源发行版(根据 GNU GPLv2 发布)。它是在 Oracle 收购 MySQL 后 创建的,当时 MySQL 的一些核心开发人员担心 Oracle 会破坏其开源理念。

MariaDB 的开发目标是尽可能与 MySQL 兼容,同时替换几个关键组件。它使用存储引擎 Aria,该引擎既可用作事务引擎,也可用作非事务引擎。有些人甚至推测,在 MariaDB 分叉之前,Aria 将在未来的版本中成为 MySQL 的标准引擎。

优点

  • 许多用户选择 MariaDB 而不是 MySQL,原因是 MariaDB 频繁发布安全更新。虽然这不一定意味着 MariaDB 更安全,但它确实表明开发社区非常重视安全性。

  • 其他人说,MariaDB 的主要优势在于它几乎肯定会保持开源,并且与 MySQL 高度兼容。这意味着从一个系统迁移到另一个系统非常快。

  • 由于这种兼容性,MariaDB 也可以很好地与许多其他常用于 MySQL 的语言配合使用。这意味着花费在学习和调试代码上的时间更少。

  • 您可以安装并运行带有 MariaDB 而不是 MySQL 的 WordPress,以获得更好的性能和更丰富的功能集。WordPress 是按市场份额计算最流行的 CMS——为互联网的近一半提供支持——并且拥有活跃的开源开发人员社区。当 WordPress 与 MariaDB 一起安装时,第三方主题和插件可以按预期工作。

缺点

  • MariaDB 有些容易膨胀。特别是它的中心 IDX 日志文件,在长期使用后往往会变得非常大,最终会降低性能。

  • 缓存是 MariaDB 需要改进的另一个领域——它的速度不够快,这可能会令人沮丧。

  • 尽管有最初的所有承诺,但 MariaDB 不再与 MySQL 完全兼容。如果您要从 MySQL 迁移,则需要进行一些重新编码。

SQLite

SQLite 可以说是世界上实现最多的数据库引擎,这要归功于许多流行的 Web 浏览器、操作系统和移动电话都采用了它。最初开发为 MySQL 的轻量级分支,与许多其他数据库不同,它不是客户端-服务器引擎;相反,完整的软件嵌入到每个实现中。

这造就了 SQLite 的主要优势:在嵌入式或分布式系统上,每台机器都承载着数据库的完整实现。这可以大大提高数据库的性能,因为它减少了对系统间调用的需求。

优点

  • 如果您希望构建和实现小型数据库,那么 SQLite 可以说是最佳选择。它非常小巧,因此可以在各种嵌入式系统中实现,而无需耗时的解决方法。

  • 它的体积小巧使得系统速度极快。虽然一些更高级的数据库使用复杂的方法来提高效率,但 SQLite 采用了一种更简单的方法:通过减小数据库及其相关处理软件的体积,需要处理的数据自然就更少。

  • 它的广泛采用也意味着 SQLite 可能是最兼容的数据库。如果您需要或计划将您的系统与智能手机集成,这一点尤其重要:自从出现第三方应用程序以来,该系统一直是 iOS 的原生系统,并且可以在各种环境中完美运行。

缺点

  • SQLite 的体积小巧意味着它缺少大型数据库中的某些功能。例如,它缺少内置的数据加密功能,而数据加密功能已成为防止最常见的在线黑客攻击的标准。

  • 虽然 SQLite 的广泛采用和公开可用的代码使其易于使用,但也增加了其攻击面。这是它最常被引用的缺点。SQLite 中经常发现新的严重漏洞,例如最近的远程攻击向量 Magellan

  • 虽然 SQLite 的单文件方法带来了速度优势,但没有简单的方法可以使用该系统实现多用户环境。

哪个开源数据库最好?

最终,您对开源数据库的选择将取决于您的业务需求,尤其是您的系统规模。对于小型数据库或使用受限的数据库,请选择轻量级解决方案:这不仅可以加快实施速度,而且不太复杂的系统意味着您将花费更少的时间进行调试。

对于较大的系统,尤其是在成长型企业中,请投入时间来实施更复杂的数据库,例如 PostgreSQL。随着您的业务增长,这将最终通过消除重新编码数据库的需求来节省您的时间。

User profile image.
Sam Bocetta 是美国海军的退休国防承包商、国防分析师和自由记者。他专门研究为“不可能”的弹道学问题寻找根本性的解决方案。他关注物联网安全、加密、密码学、网络战和网络防御的趋势。

4 条评论

作为一个在 OO 世界生活后(重新)接触数据库的人,我发现明智地使用存储过程意味着您可以在不更改访问它的代码的情况下更改数据库结构,这可以使生活变得更加轻松。我真的是说轻松!SqlLite 适合存储数据,但在我看来它并不是真正的关系数据库。Postgres 更进一步,使过程可重载,而上次我接触它时,这几乎使其无法使用。
Maria(和 MySql)可以完成工作,而无需您编写自己的双保险代码。

我不同意 SQLite 因其流行而增加了攻击面的说法。我认为,它在三者中具有最小的攻击面,因为它非常小巧和简单——这就是攻击面的含义。

它的流行使其成为热门目标,这完全是另一回事。

您确定 SQLite 是 MySQL 的分支吗?现在搜索了一下,找不到任何相关参考。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.