目录
为什么要开源?
从许可软件迁移到开源
为什么选择PostgreSQL?
竞争者
SQL Server:历史记录,版本和版本
PostgreSQL:历史,版本和版本
根据您的需要选择合适的PostgreSQL版本
生产工作负载
开发,测试,登台或试点
本地与云
为什么要开源?尽管毫无疑问,许可和专有数据库的功能和优势,但其严格的定价模式以及大型安装基础的较高的总体拥有成本(TCO)使得企业和中型企业都希望采用成本更低的开源解决方案。企业之所以回避开放源代码软件,主要是因为在出现任何重大问题时没有任何支持。开源数据库以更低的成本提供了相同甚至更好的功能。从商业数据库迁移到开源数据库可为企业在许可和支持方面节省大量成本。
从许可软件迁移到开源诸如SQL Server和Oracle之类的许可软件由其各自的供应商提供支持,并根据许可模型将其作为许可的一部分或单独提供支持。当数据库由于软件错误和漏洞,繁重的负载或其他硬件和网络问题而关闭时,它们会为您提供支持(至少是在法律上)。
另一方面,如果将开源软件托管在服务器上,并且出现任何问题,则由您自己解决,则按“原样”提供开源软件。但是好消息是,有第三方公司为开源数据库提供支持。请注意,该软件本身仍可免费使用,价格仅用于支持。这样的一家公司EnterpriseDB提供了对开源PostgreSQL以及它自己的PostgreSQL分支的支持。
云解决方案提供商还提供PostgreSQL作为PaaS产品。一种这样的产品是AWS Aurora(与PostgreSQL兼容)。该模型具有高可用性,并内置了按需付费的定价模型,最适合中小型企业。请注意,AWS还以大约一半的成本提供PostgreSQL作为RDS服务,但没有内置的高可用性。您还可以通过在云上运行的Linux实例中手动托管PostgreSQL实例,从而以更低的成本在云上运行PostgreSQL。
为什么选择PostgreSQL?PostgreSQL是企业级的,功能丰富的开源数据库系统,它高度可靠且性能卓越,非常适合实时和任务关键型应用程序。直到十年前,MySQL一直是迁移到开放源数据库的企业的默认选择。自从被Oracle bin 2010收购以来,其发展路线就变得不确定,企业也开始远离它。
MariaDB是MySQL的一个开源分支,旨在延续MySQL的开源遗产,但实际上并没有在企业界起飞。必须有一种解决方案来填补空白,PostgreSQL成为可行的替代方案,并且已成为将数据库迁移到开源的企业的选择。根据2019年数据库引擎排名,PostgreSQL是第四受欢迎的数据库MariaDB是第14。
竞争者 SQL Server:历史记录,版本和版本SQL Server是Microsoft开发的关系数据库管理系统。它于1989年首次发布,此后一直在积极开发。截至2019年9月,最新的稳定版本是SQL Server2017。根据DB Engines排名,SQL Server是2019年第三大最受欢迎的数据库,也是2016年的DBMS。
它具有各种版本,例如Enterprise,Standard,Developer,Express,Azure等。SQL Server Express Edition是SQL Server的缩减版免费版本,其中包括核心数据库引擎。尽管所支持的数据库或用户数量没有限制,但仅限于使用一个处理器,1 GB内存和10 GB数据库文件。
SQL Server是一种专有的Microsoft软件,传统上仅在Windows操作系统上可用。但是从SQL Server 2017开始,它也可以在Linux上使用。还可从Amazon Web Services(AWS),Microsoft Azure和Google Cloud Platform(GCP)等云提供商的PaaS产品中获得该产品。
有关更多信息,请访问SQL Server主页或Wikipedia页面或DB Engines页面。
PostgreSQL:历史,版本和版本PostgreSQL是最先进的开源对象关系数据库系统。它已经开发了30多年,由PostgreSQL全球开发小组管理。根据DB Engines排名,PostgreSQL是2019年第四大最受欢迎的数据库,也是2017年和2018年的年度DBMS。
PostgreSQL始于1982年,是Ingres数据库的分支,并于1996年首次发布。截至2019年9月,最新版本是PostgreSQL 11.5。这是一个非常成熟和稳定的产品,具有非常丰富的功能和工具集。除非另有特别说明,否则本文将讨论迁移到PostgreSQL 11.x的问题。
PostgreSQL可以在Linux,FreeBSD,OpenBSD,macOS和Windows上使用,也可以从云服务提供商(如Amazon Web Services(AWS),Microsoft Azure和Google Cloud Platform(GCP))作为PaaS产品使用。
要开始使用PostgreSQL,请访问其网站或Wikipedia文章或DB Engines页面。
根据您的需要选择合适的PostgreSQL版本PostgreSQL是一个开放源代码数据库,并且可用范围广泛。首先要做的是确定在哪里托管PostgreSQL数据库。可用的选项有:
- Linux基础架构上的本地托管
- Windows基础结构上的本地托管
- 使用IaaS进行云托管,例如运行Linux的AWS EC2 VM
- 使用IaaS的云托管,例如运行Windows的AWS EC2 VM
- 使用PaaS解决方案(如AWS RDS或Aurora)进行云托管。由于稳定性和经济性的考虑,这些解决方案几乎总是在Linux上运行。
接下来要做的是选择您的PostgreSQL版本。对于本地托管,经验法则是始终从最新的稳定版本(在撰写本文时为PostgreSQL 11.5)开始,然后继续升级到新发布的稳定版本(牢记支持生命周期)。像AWS这样的云提供商可以让您选择最近的三个或四个稳定版本,并花一些时间进行认证并提供最新的稳定版本。它们还允许您就地升级,以进行次要版本升级以及主要版本升级,并且停机时间最少。
请查看“功能列表”页面以获取功能的版本比较。在注册之前,请查看其他云提供商的相关PostgreSQL提供页面以获取功能和限制。
生产工作负载PostgreSQL在Linux上运行效果最好,因此请始终为您的生产工作负载选择Linux,以实现最佳性能,稳定性和高可用性。SQL Server通常在Windows上运行,如果您打算重用SQL Server硬件,则可能要在Windows上运行PostgreSQL。您很可能将无法执行此操作,因为在退出SQL Server数据库之前,必须先将PostgreSQL数据库实例与SQL Server数据库一起启动并并行运行一段时间。
开发,测试,登台或试点对于开发和测试,您可以选择在本地或云基础架构上运行的Linux或Windows,这取决于最适合您组织的知识和团队的技能。
这是节省成本的提示。您可以在Cloud中运行所有非生产PostgreSQL数据库,并在不需要时将其关闭以节省费用。例如,可以停止AWS EC2,直到重新启动实例后才对它们收费。AWS RDS不允许您在启动RDS实例后停止它,您只能终止实例。
一个巧妙的技巧是对数据库进行备份,将备份移至S3存储桶,然后终止实例。以后恢复开发时,请启动新实例并从备份中还原。为避免在每次启动新数据库时更改代码中的数据库端点,可以创建一个指向当前数据库的DNS条目,并在代码和作业中使用DNS端点。启动新数据库时唯一需要更改的地方是DNS记录。
这比一年四季在您的数据中心中安装物理服务器以及在硬件,电源和维护上的花费要便宜得多。
本地与云
内部部署
云IaaS
云PaaS
托管
PostgreSQL已安装在数据中心的服务器上
您启动云虚拟机(如AWS EC2)并安装PostgreSQL
这是“数据库即服务”,无需安装。您选择启动参数并启动服务
集群
需要手动集群设置
需要手动集群设置
集群是内置的,具体取决于服务提供的类型
高可用性/自动故障转移
必须手动设置高可用性,负载平衡和复制。
必须手动设置高可用性,负载平衡和复制。
内置的高可用性取决于服务产品。例如,AWS Aurora提供高可用性,而普通的AWS RDS实例不提供。
工具
您可以控制硬件,因此应该能够在服务器上运行所有PostgreSQL工具。
您可以控制硬件,因此应该能够在服务器上运行所有PostgreSQL工具。
云平台可能会限制您运行某些工具。例如,pgAgent在AWS Aurora中不可用
调度
您可以使用pgAgent或其他第三方调度程序来调度服务器上的数据传输作业和维护作业。
您可以使用pgAgent或其他第三方调度程序来调度服务器上的数据传输作业和维护作业。
云提供商有自己的内置服务来安排作业。例如,AWS有其自己的调度服务,并且不支持RDS或Aurora中的pgAgent。
管理与监控
管理和监控应手动完成
管理和监控应手动完成
云平台会自动为您管理数据库,并提供GUI /门户以监视数据库的运行状况。例如,AWS CloudWatch
支持
对本地安装的支持通常是组织的基础结构支持团队。一些第三方公司为本地安装提供支持。
对本地安装的支持通常是组织的基础结构支持团队。一些第三方公司为Cloud IaaS安装提供支持。
云提供商通过自动支持系统提供支持。
备份与还原
备份和还原必须手动完成,或者需要设置自动作业。
备份和还原必须手动完成,或者需要设置自动作业。
大多数云提供商都提供自动备份和还原功能。例如,您可以设置自动备份,并通过AWS Console从备份中还原。
成本
仅基础设施成本。如果您已经拥有硬件,那么这可能是三者中最便宜的选择。
根据您选择的配置,像AWS EC2这样的Cloud VMs相对便宜。如果您选择使用第三方许可的软件进行监视,管理等,则可能需要花费额外的费用。
Cloud PaaS通常很昂贵,因为它们具有许多高可用性和内置的其他几个功能。
在谈论云提供商时,我总是从AWS提供示例,因为到目前为止,这只是我将数据库迁移到的云平台。这绝不是一个提供者对另一个提供者的认可。其他提供商也提供类似的产品,请访问其网站以了解有关其产品的更多信息。
下一篇: 将您的SQL Server工作负载迁移到PostgreSQL –第2部分