fcbc19075fb1d9c3fc8f24d43de824e6.gif

当今,大多数应用程序都需要在某个地方存储数据。对于 Web 应用程序,数据库是关键的“齿轮”。

很多企业和开发者在选择数据库时,会主要考虑的几个因素——一是它的成本,二是托管服务提供商的灵活性和支持力度。

出于多种原因,开源数据库是您的最佳选择。例如,一个开源数据库不会超出你的预算,不会限制你如何使用它。开源工具可以提供强大的功能。更好的是,一些最流行(和受支持)的数据库正是开源的解决方案。

让我们看看几款较为主流的开源数据库,以及几种不同的“风格”。

PART ONE

如何(以及在何处)使用开源数据库

值得注意的是,许可证类型并不一定会限制您使用它的应用程序。尽管如此,开源数据库还是有一些不同的用例与许可证很好地吻合:

  • 键值存储:键值存储是一项耗费大量资源的任务,有时需要专家开发人员的灵巧操作来优化。开源数据库解决方案将让开发人员深入研究代码并将这些调整完善。

  • Niche Technologies(小生境技术):许多技术应用程序受益于其他开源工具,例如数据库。人工智能 (AI)、图形和不同的领域可以像 WordPress 一样(不受限制)与开源数据库一起工作,并利用数据库本身的灵活性。

  • 数据科学:数据科学是开源数据库运作良好的另一个领域。同样,该领域的流行语言,如 Python 和 R,最适合 MySQL、MariaDB 和 MongoDB,但在专有解决方案中效果较差。

  • 数据存储:开源数据库比专有数据库更安全(由于代码库可见),因此它也非常适合以隐私为中心的数据存储。当您将数据库与其他以隐私为重点的解决方案结合使用时,这一点会得到增强,从而以低成本实现非常安全的设置。

通过上述的例子我们可以看出开源数据库几乎是没有限制的。因此,您可以利用数据库软件的强大功能并使其适应你的需求。

PART TWO

开源数据库中的佼佼者:TOP 10

以下为大家列举了一些开源数据库,大家较为突出的选择(并不详尽),仅供参考:

1. MySQL

如果您花一分钟时间查找应用程序的数据库,MySQL 将在许多列表中名列前茅。长期以来它是许多开发人员的默认选项。

3c9e836145c230731e94447fe88cd602.png

Oracle 将其开发为关系数据库管理系统 (RDMS)。这意味着可以使用表来存储数据,并且可以以某种方式链接这些存储的数据类型。

MySQL 的核心是采用旧的但流行的专有数据库系统,保持大部分兼容性,并将其结果开源。因为开发人员可以在不重新学习 MySQL 的情况下过渡到它,所以几十年来,MySQL一直是应用程序开发的主要基础组件。

你会发现,在许多数据库中大部分功能都是 MySQL 的镜像或衍生自它。例如,在使用 SQL 与数据库一起工作,可使用几乎任何编程语言连接到数据库本身。您不需要对 SQL 有很多了解即可使用 MySQL,而且学习曲线并不陡峭。您可以从命令行使用数据库,并且 MySQL 与您将使用的几乎所有操作系统都具有高度兼容性。

总体而言,MySQL 非常适合大多数用例,因为它是一个可靠、快速且可靠的基础软件。由于这一点及其多年来相对于其他解决方案的定位,大多数主机将支持 MySQL 数据库。但是,也有一些缺点需要考虑:

  • 虽然 MySQL 在大多数情况下都很高效,但对于大型数据库来说它可能会更慢

  • 与其他(甚至专有)解决方案相比,它的调试工具还有待改进

  • 也存在数据损坏的情况,尽管这不算特别严重的问题

但总的来说,MySQL 是一个适合大多数应用程序的、稳定可靠的数据库。

2、MariaDB

MariaDB是 Kinsta 支持的开源数据库,它也是DevKinsta 中的一个选项:

fc55bed59b24d037aca679a0b4260cac.png

6d45c2833246cbeba887353daaa8a50d.png

因为它是 MySQL 的一个分支,所以兼容性几乎是 1:1。因此,您可以使用 MariaDB 作为 MySQL 的替代品,并且可以毫不费力地迁移到它。

尽管 MariaDB 是 MySQL 的一个分支,但它仍然希望开拓自己的道路。他具备以下功能:

MariaDB 使用 Aria 存储引擎来处理复杂的 SQL 查询。这使数据库的速度超过了 MySQL。

您可以对表格列使用动态行,这有助于提高灵活性和适应性。

有一些用于特定用例的专用存储引擎,在 MySQL 中是找不到的。例如,您可以实现分布式存储、分布式事务等等。

由于紧密的兼容性,您可以在任何使用 MySQL 的地方使用 MariaDB,而不会受到太大影响。

3、PostgreSQL

PostgreSQL 是许多开发人员在数据科学、图形和 AI 行业中使用的关系型开源数据库,因为它非常适合 Python 和 Ruby 应用程序。

d5e105c76872843fb1392069074bed91.png

如果把 MySQL 比喻为“粗斜纹布”,那 PostgreSQL 更像是“精致丝绸”,因为它是一个更远虑的开源数据库,提供了许多“杀手级”功能:

  • 可以实现异步复制

  • 原生支持 JSON 格式的文档存储、键值存储和 XML,可以节省时间,让您快速推进项目

  • 可以对数据库进行全文搜索

  • 提供了一些对部分应用程序来说宝贵的内置数据类型,例如地理定位、数组和范围

但 PostgreSQL 不像其他解决方案,适于读取繁重的应用程序,所以在使用时也需要小心处理。

4、Redis

Redis 与本文中其他开源数据库不同,因为您几乎不会将它用于任何相同的应用程序。

cf8e7c869bfdbca2c60ab129a071ed86.png

它是一个数据库,能够将数据构造为键值对。有点类似于 PHP 中的关联数组或 Python 中的字典——链接数据以便稍后快速引用它的方法:

<?php$type = array("Charmander"=>"fiery", "Squirtle"=>"soggy", "Snorlax"=>"sleepy");echo "Snorlax is " . $type['Snorlax'] . " all the time.";?>br

Redis 是一种“内存”存储解决方案——完全在 RAM 中——这意味着它的读写速度非常快。

例如,你可以在几分钟内了解 Redis 的基础知识并立即开始存储对象;也可以将过期时间设置为字符串,这是缓存的关键组成部分。

一种新颖的Pub/Sub 功能使用 Redis 作为发送方和接收方之间消息的缓冲区。与这些端点建立直接连接不同的是,发送者将发布到专用的 Redis“通道”,然后将其移动到接收者(反之亦然)。

这一切都意味着, Redis 非常适合分布式数据和实现缓存。对于更复杂的应用程序来说,它不是最好的选择,但它可以与其他数据库(例如 MariaDB)一起使用,来支持应用程序的其余部分。

5、SQLite

SQLite 是一个提供数据库引擎的小型轻量级库,是关系型开源数据库。

35baa248b4c6a1c8cc0b8afac6f419a8.png

因为它的轻巧性,所以经常被用于智能手机等小型设备中。SQLite 数据库由一个 <code>.sqlite</code> 文件组成,该文件可以存在于系统的任何位置。您无需安装任何服务器软件或连接到其他服务即可使用 SQLite。

虽然SQLite是一个如此轻量级的工具,但仍然可以拥有数百 TB 的数据库大小,最大行大小为 GB,而且运行速度仍然很快。

简单应用程序的开发人员会喜欢 SQLite,因为它是一个严肃的、直接的解决方案。它非常适合没有系统管理员或开发人员在场的物联网 (IoT) 应用程序。虽然本文主要讨论的是 Web 应用程序,但桌面应用程序也可以使用 SQLite 来保持高性能。

但也因为其轻量化,因此它在性能上的表现并不佳,所以 SQLite 并不适用于大流量站点。另外 SQLite不能使用 MySQL 或 MariaDB 等客户端查询数据库。

6. Neo4j

Neo4j 是基于图形的开源数据库。Neo4j 几乎是实现基于图形的数据库的唯一解决方案(到目前为止)。

e756cdf871d84d810511f461ec016def.png

数据通常不会以表、行和列的有序数组形式出现。我们通常使用关系数据库来呈现。

Neo4j 是一个独特的数据库,几乎适用于它可以处理的任何应用程序,它具有以下优势:

  • 将表格数据转换为图表并支持结果分析

  • Neo4j 对于事务应用程序也很出色

  • 有一种专用的查询语言 (Cypher) 可帮助您获取数据并以最佳方式使用它

但是,由于Neo4j 数据库的结构,会有一些性能问题。例如,只能使用“哈希索引”对数据进行排序,这与其他解决方案的范围索引不同,会占用系统资源并影响性能。

7、OrientDB

OrientDB 也是为数不多的基于图形的开源数据库,是Web 应用程序实现基于图形的数据库的绝佳方式。

24377f901b1f8c6b2655f970f932c9da.png

OrientDB 适用于多种模型,例如对象、图形、文档和键值。尽管如此,它仍被归类为 NoSQL 解决方案,并且与记录有直接连接,因此其核心是基于图形的数据库。

OrientDB 的主要好处是它的灵活性和可扩展性。与 Neo4j 非常相似,它速度很快,但对性能有一些警告。但是,OrientDB 更加灵活,并且正在开发其他索引机制来帮助用户。

您会发现 OrientDB 在相同的应用范围内与 Neo4j 一样强大——例如,社交网络、银行和金融、交通管理等。

8、CouchDB

CouchDB就像 SQLite 一样,是一个小型、不显眼的开源数据库,是无数项目的工作室解决方案。

e26e0495ee4c6df220072d2b706bc365.png

CouchDB开源数据库的重点是可靠性。当数据位于多个分布式节点的集群中时,其中一些节点将处于脱机状态,它们将“持有”数据,直到它们再次联机,然后将整个数据馈送到集群并分发到网络中的其他节点。

因此,CouchDB 是一个久经沙场且可靠的数据库,如果用户需要分区容忍,那么它就是一个关键的考虑产品,但这也是CouchDB 最显著优点和缺点。它必须存储数据的冗余副本,这会使文件不断“膨胀”。此外,您会发现写入速度并不快,因此它不适合需要快速响应的用例。

然而,作为一个为可靠性而设计的离线优先开源数据库,CouchDB 是符合要求的应用程序的领先者。

9、 FirebirdSQL

FirebirdSQL 不像本文中列举出的其他数据库那样广为人知,但它可以在特定场景中发挥重要作用。

247c2647c3259f3fbc88e7fc99820f15.png

FirebirdSQL 具有与其他基于 SQL 的数据库几乎所有相同的特性和功能,并且它与 MySQL 完全兼容。它可以通过多种方式独立存在:

  • 它占用空间小

  • 可以将 FirebirdSQL 用作需要扩展的桌面应用程序的数据库,例如 LibreOffice

  • FirebirdSQL数据库是跨平台的,对硬件的要求不高。当您需要运行大型数据库时,FirebirdSQL将是一个可靠的解决方案

FirebirdSQL也有一些知名用户,例如英国的 National Rail。尽管其他解决方案很流行,但 FirebirdSQL 可以作为轻量化的但功能强大的开源数据库。

10、 BigchainDB

BigchainDB开源解决方案采用分布式数据库并融合了区块链技术。

就像区块链的关键元素一样,BigchainDB 使用去中心化和“多资产”来帮助用户管理数据。

21bc7913b68a277163d6f08acdb17b98.png

您可以根据丰富的权限设置、自定义资产等来自定义网络。该数据库也可以与分散设置一起使用。例如,它是保护知识产权和验证用户凭据的重要盟友。

相比之下, BigchainDB 不适合更典型的应用程序,并且对于许多 Web 应用程序来说确实可能有点矫枉过正了。

BigchainDB在以隐私为中心的 Web 应用程序有许多独特的地方,因此它可以与用户的中央开源数据库一起工作以便增强配置。

PART THREE

概述

如果您想创建任何类型的应用程序,则需要数据库。Web 应用程序至少需要一个数据库——您可能需要多个数据库来包含您在各种用例中处理的所有数据。

虽然有许多具有各种许可证类型的数据库,但在大多数情况下,开源数据库将是您的最佳选择。


英文链接:

https://kinsta.com/blog/open-source-database-software/

e297e46dd750da4a5f677b8cc0771dec.png

腾源会(WeOpen)是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

2b068179f8eebe50887a4cfcd65c7abd.png

欢迎关注「腾源会」公众号,期待你的「在看」哦~👇

Logo

秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

更多推荐