在网站建设当中,数据库是一项很重要的内容。如今大多国外服务器都支持PostgreSQL,MySQL和Redis关系型数据库的安装,那么这三个数据的主要区别和联系都有哪些?本文就简单来介绍下。
概述
PostgreSQL
PostgreSQL是一个开放源代码的对象关系数据库,其构建考虑了可扩展性、数据完整性和读取速度。PostgreSQL数据库的并发支持使其完全兼容ACID,并支持动态加载和目录驱动操作,以使用户可以自定义其数据类型和功能。
随着MySQL数据库被Oracle公司收购之后,现在大多用户均使用PostgreSQL来代替MySQL。
MySQL
MySQL是一个开放源代码的对象关系数据库,该数据库的构建考虑了读取速度和可靠性。Redis庞大而活跃的开发人员社区创建了许多第三方应用程序、工具和库,这些扩展了MySQL的功能。
Redis
Redis是一个开放源代码的键值数据库,其内存数据库设计着重于速度。Redis支持丰富的数据类型,原子操作和Lua脚本。
主要功能
PostgreSQL,MySQL和Redis关系型数据库均具支持强大的功能,例如自动更新、故障转移,每日备份等,主要功能特点如下:
功能特点 | PostgreSQL | MySQL | Redis |
高可用性和自动故障转移 | ■ | ■ | ■ |
端到端安全机制 | ■ | ■ | ■ |
自动更新 | ■ | ■ | ■ |
日志 | ■ | ■ | ■ |
只读节点 | ■ | ■ | |
每日备份 | ■ | ■ | |
Forking | ■ | ■ | |
Metrics | ■ | ■ | |
Eviction policies (驱逐策略) | ■ | ||
Query insights | ■ | ||
VPC访问 | ■ | ■ | ■ |
集群配置
PostgreSQL,MySQL和Redis关系型数据库均支持三种类型的集群节点,分别是主节点、备用节点和只读节点。
- 主节点主要处理查询和更新数据库,将结果返回给客户端,并充当所有其他节点的单一数据源。
- 备用节点是主节点的副本,如果主节点发生故障,它们将自动接管。数据库集群可以具有零个,一个或两个备用节点,备用节点可以随时添加到现有群集中。
- 只读节点是处理查询并返回结果但不能对数据库本身进行更改的主节点的副本。它们提供了地理上不同的水平读取缩放,可以随时将只读节点添加到群集中。
注意:数据库集群由一个主节点及其备用节点组成,只读节点不被视为集群的一部分。
高可用性
据了解,所有数据库集群都具有自动故障转移功能,这意味着PostgreSQL,MySQL和Redis数据库具有自动检测并替换降级或故障的节点的功能,而高可用性除了需要自动故障转移外,还需要冗余功能。因此,数据库集群必须至少具有一个备用节点才能保持高可用性,因为备用节点为主节点提供了冗余:
- 如果没有备用节点,则主节点是单点故障,因此群集的可用性不高。如果主节点发生故障,则在重新提供主节点的替换之前,该服务将不可用。重新配置节点所花费的时间取决于所存储的数据量。较大的数据库需要更多时间。
- 如果有一个备用节点,群集便具有很高的可用性。如果主节点发生故障,该服务将保持可用。备用节点将立即升级为主节点,并开始为请求提供服务,同时在后台配置备用备用节点。
- 如果两个节点同时发生故障,则该服务将不可用,直到至少重新配置了其中一个节点为止。有了两个备用节点,群集具有很高的可用性,并且可以很好地抵御停机。即使两个节点同时发生故障,该服务仍然可用,而在后台配置了两个替换项。
不难发现,只有在这三个节点同时发生故障的极少数情况下,该服务才变得不可用。换句话说,主节点故障对服务可用性的影响取决于群集配置。设置新的替换节点需要花费时间,但是要立即故障转移到备用节点。
此外,数据库群集中的其他冗余还最大程度地降低了数据丢失的风险。如果没有正在运行的节点要从中复制数据,则数据库集群将使用最新的备份和预写日志来重新配置节点,以将数据库恢复到尽可能接近故障点的程度。因此,如果集群需要以这种方式恢复,则对数据库的最新写操作可能会丢失。
关于数据库集群
众所周知,数据库群集服务具有时间点恢复(PITR)的每日备份,具有高可用性的备用节点以及端到端SSL加密功能,而且托管数据库是多区域且具有可扩展性,这样可以为数据库基础架构增加弹性。目前包括包括Vultr、DigitalOcean在内等大多主机商均提供数据库集群服务。
总结
以上简单介绍了PostgreSQL,MySQL和Redis关系型数据库的主要区别特点,内容仅供参考。PostgreSQL,MySQL和Redis也是当下使用最为广泛的三种关系型数据库,大家在选用之前,建议对其主要功能特点进行详细的了解,从而选择适合自身网站程序的数据库类型。