开源数据库软件中的佼佼者:前 5 名


发布日期 : 2022-01-28 01:47:09 UTC

访问量: 359 次浏览

1.MySQL

MySQL 在许多列表中都名列前茅。这里也是一样,
长期以来它是许多开发人员的默认选项。

![](https://www.osgeo.cn/static/upload/7e/7e4342f6-7fd8-11ec-89bf-00163e0533f4_m.jpg)

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

MySQL 的核心是采用旧的(但流行的)专有数据库系统,
保持大部分兼容性,并使结果开源。
因为开发人员可以在不重新学习 MySQL 的情况下过渡到它,
所以几十年来它一直是应用程序开发的主要内容;
在许多数据库中找到的大部分功能都反映了 MySQL 或衍生自它。
例如,使用结构化查询语言 (SQL) 以关系方式处理数据库,
并使用几乎任何编程语言连接到数据库本身。

不需要对 SQL 有很多了解即可使用 MySQL,
而且学习曲线并不陡峭;可以从命令行使用数据库,
且 MySQL 与使用的几乎所有操作系统 (OS) 具有高度兼容性。

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

虽然 MySQL 在大多数情况下都很高效,
但对于大型数据库来说它可能会更慢。更重要的是,
与其他(甚至专有)解决方案相比,其调试工具可以改进,
存在数据损坏的情况,尽管这不是一个严重的问题。
总体来说,MySQL 是一个适合大多数应用程序的稳固可靠的数据库,
然而,一些用户会出于我们接下来要讨论的原因而研究其他产品。

2.玛丽亚数据库

尽管甲骨文在撰写本文时拥有 MySQL,
并且仍将其作为开源解决方案提供,
但其声誉并不是开源倡导者。收购发生时,
其中一位创始人分叉 MySQL 来创建MariaDB:

![](https://www.osgeo.cn/static/upload/b9/b96655e4-7fd8-11ec-993e-00163e0533f4_m.jpg)

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

![](https://www.osgeo.cn/static/upload/60/6023f986-7fd9-11ec-993e-00163e0533f4_m.jpg)

因其是 MySQL 的一个分支,所以兼容性几乎是 1:1。
MariaDB 的开发人员也喜欢在其分支附近保持兼容性,
可使用 MariaDB 作为 MySQL 的“直接”替代品,
几乎没有任何后果,可以毫不费力地迁移。

尽管 MariaDB 是 MySQL 的一个分支,
但仍然希望开拓自己的道路。开源数据库的一些独特功能:
MariaDB 使用 Aria 存储引擎来处理复杂的 SQL 查询。
这使数据库的速度超过了 MySQL。可对表格列使用动态行,
这有助于提高灵活性和适应性。

有一些用于特定用例的专用存储引擎,在 MySQL 中是找不到的。
例如,可以实现分布式存储、分布式事务等等。
由于紧密的兼容性,可在任何使用 MySQL 的地方使用 MariaDB,
而不会受到太大影响。因此,可以将其视为“所有应用程序的所有内容”,
就像它的分叉一样。但是,值得注意的是,兼容性只是一种方式,
因此需要选择一种方式:MySQL 或 MariaDB。

3.PostgreSQL

如果您只知道 PHP 和 WordPress,
那么可能对 PostgreSQL 不太了解。但是,
它是许多开发人员在数据科学、图形和 AI 行业中
使用的关系型开源数据库,因为它非常适合Python
和 Ruby 应用程序(尽管也可以使用 PHP)。

![](https://www.osgeo.cn/static/upload/68/68cfc6da-7fdb-11ec-9f8d-00163e0533f4_m.jpg)

与 MySQL 的健壮粗斜纹布相比,PostgreSQL 更像是精致的丝绸,
它是一个深思熟虑的开源数据库,提供了许多杀手级功能:

  • 可以实现异步复制。
  • 原生支持 JSON 样式的文档存储、键值存储和 XML。
  • 可对数据库进行全文搜索。
  • 一些内置数据类型对于某些应用程序来说是非常宝贵的,
    例如地理定位、数组和范围。

即便如此,仍需小心处理 PostgreSQL,
它不像其他解决方案那样适用于读取繁重的应用程序,
一方面,如果必须定期从现有数据创建报告,
那么 PostgreSQL 的文档存储可能会受到如此大的数据集的影响。
但是,如果想在混合的基础上包含 NoSQL 风格的功能,
那么这种相同的文档存储模型是理想的。
对键值和文档存储的原生支持可以节省时间,可快速推进项目。

4.Redis

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

![](https://www.osgeo.cn/static/upload/8d/8d145236-7fdb-11ec-89bf-00163e0533f4_m.jpg)

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

![](https://www.osgeo.cn/static/upload/a4/a4f9fa54-7fdb-11ec-993e-00163e0533f4_m.jpg)

5.SQLite

“速度”是这里的关键术语,Redis 是用于缓存的首选数据库。
这有几个原因:Redis 是一种“内存”存储解决方案,
完全在 RAM 中,这意味着读写速度非常快。

可在几分钟内了解 Redis 的基础知识并立即开始存储对象;
可将过期时间设置为字符串,这是缓存的关键组成部分。
一种新颖的Pub/Sub 功能使用 Redis 作为发送方
和接收方之间消息的缓冲区。与这些端点建立直接连接不同,
发送者将发布到专用的 Redis“通道”,然后将其移动到接收者(反之亦然)。

这一切都意味着 Redis 非常适合分布式数据和实现缓存。
对于更复杂的应用程序来说,它不是最好的,
但这不在其职权范围内。相反,可将它与其他数据库
(例如 MariaDB)一起使用,以使其支持应用程序的其余部分。
对于这个关系型开源数据库,关键卖点的线索在于名称:
SQLite 是一个提供数据库引擎的小型轻量级库。

![](https://www.osgeo.cn/static/upload/be/be453adc-7fdb-11ec-89bf-00163e0533f4_m.jpg)

经常会在智能手机等小型设备中找到它,因其很轻巧。
事实上,整个数据库由一个 .sqlite 文件组成,
该文件可以存在于系统的任何位置。
无需安装任何服务器软件或连接到其他服务即可使用 SQLite。

尽管数据库是一个如此轻量级的工具,
但仍然可以拥有数百 TB 的数据库大小,最大行大小为 GB。
即使文件大小如此之大,SQLite 仍然很快。
您会发现使用 SQLite 作为数据库有很多很好的用例:

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

鉴于 SQLite 的结构,它不适用于大流量站点,
因为性能不会是最佳的。更重要的是,
这个更轻量级的开源数据库缺少一些可能很重要的功能。
例如,不能使用 MySQL 或 MariaDB 等客户端查询数据库。