PostgreSQL 与 SQL Server:16 个关键差异
已发表: 2022-05-30市场上有各种各样的数据库可供选择,用户通常可以仔细考虑 PostgreSQL 与 SQL Server,以便为他们的用例找出更好的选择。 使用 PostgreSQL 进行运营的组织可能希望切换到像 Microsoft SQL Server 这样的数据库,因为它主要迎合不同的数据仓库解决方案、电子商务和其他业务线。
从历史上看,Microsoft SQL Server 一直是依赖于其他 Microsoft 产品的组织的最爱,但 PostgreSQL 取得了迅速的进展,成为了利基市场的佼佼者,这不仅是因为开源的好处,而且还因为它的活跃社区用户和方便的功能。
这就是将我们带到这次讨论的原因。 比较 PostgreSQL 和 SQL Server 将帮助您更好地了解这两个系统的可能优势和权衡,以及哪一个更适合您的目的。
让我们深入挖掘!
什么是 PostgreSQL?

PostgreSQL 已将自己确立为支持 JSON(非关系)和 SQL(关系)查询的企业级高级开源数据库。 这个强大而稳定的数据库管理系统得到了三十多年活跃社区发展的支持,这为其在完整性、可靠性、弹性、性能和正确性方面的声誉做出了贡献。
PostgreSQL 用作各种移动、Web、分析和地理空间应用程序的主要数据仓库或数据存储。 PostgreSQL 还拥有支持高级数据类型的丰富历史,以及在其商业数据库对应物(如 Microsoft SQL Server 和 Oracle)中常见的性能优化。
除了免费和开源之外,PostgreSQL 还具有高度可扩展性。 例如,您可以生成自定义函数、定义数据类型,甚至使用各种编程语言编写代码,而无需重新编译数据库!
历史
以下是多年来对 PostgreSQL 的简要概述:
- Ingres 于 1977 年首次开发。
- Michael Stonebraker 和他的同事在 1986 年开发了 Postgres。
- 1990 年,对 PL/pgSQL 和 ACID 合规性的支持被添加到 PostgreSQL。
- NYCPUG(纽约市 PostgreSQL 用户组)早在 2013 年就加入了 PgUS(美国 PostgreSQL 协会)。
- 2014 年,PGconf 迎来了 PostgreSQL 用户的新纪元。
主要特点
现在,让我们继续看看 PostgreSQL 的一些特性,这些特性使它成为市场上不可或缺的工具:
- 标准合规性和可靠性: PostgreSQL 的预写日志记录使其成为一个高度容错的数据库。 PostgreSQL 还兼容 ACID,并以各种语言提供对视图、外键、触发器、连接和存储过程的全面支持。 它包括大多数 SQL: 2008 数据类型,包括 BOOLEAN、NUMERIC、INTEGER、DATE、VARCHAR、TIMESTAMP、INTERVAL 和 CHAR。
- 强大的扩展: PostgreSQL 拥有强大的功能集,例如时间点恢复、多版本并发 (MVCC)、表空间、粒度访问控制和在线/热备份。 PostgreSQL 还可以区分大小写、排序和格式化。 它在可以管理的数据量和可以容纳的同时用户数量方面都具有高度可扩展性。
- 开源许可:您可以在开源许可下使用 PostgreSQL 源代码,让您可以自由修改、使用和实施它,无需任何费用。 最重要的是,PostgreSQL 不会产生许可成本,从而消除了过度部署的风险。 PostgreSQL 的爱好者和贡献者社区定期发现修复和错误,有助于数据库系统的整体安全性。
用例
PostgreSQL 的多功能性使其可以在广泛的用例中得到利用,例如:
- 联合中心数据库: PostgreSQL 的 JSON 支持和外部数据包装器允许它与其他数据存储(包括 NoSQL 数据类型)链接,并充当多语言数据库系统的联合中心。
- 通用 OLTP 数据库:大型企业和初创公司都使用 PostgreSQL 作为主要数据存储来支持其互联网规模的应用程序、产品和解决方案。
- 地理空间数据库: PostgreSQL 在与 PostGIS 扩展一起使用时支持地理对象。 它还可以用作地理信息系统 (GIS) 和基于位置的服务的地理空间数据存储。
- LAPP 开源堆栈:作为 LAMP 堆栈的强大替代方案的一部分,PostgreSQL 还可以运行动态应用程序和网站。 LAPP 代表 Linux、Apache、PostgreSQL、Perl、PHP 和 Python。
什么是 SQL Server?

SQL Server 是微软开发的关系型数据库管理系统,有着悠久的历史,准确的说是三十二年。 Microsoft SQL Server 被认为是一种软件产品,其主要功能是根据其他软件应用程序的要求检索和整理数据。
这些应用程序可能在网络上的不同计算机上运行,也可能在同一台计算机上运行。 多年来,Microsoft SQL Server 经历了许多更新,成为当今市场上受支持最好和最知名的 RDBMS 之一。
SQL Server 的流行很大程度上归功于其制造商微软。 当 MS SQL Server 处于起步阶段时,微软已经确立了自己作为科技巨头的地位。
SQL Server 凭借其广泛的应用程序和简化数据处理的工具,成功地成为了数据库管理系统。 其全面的图形用户界面 (GUI) 允许直观和轻松地使用数据库,同时允许您为报告生成统计数据。
历史
以下是多年来对 Microsoft SQL Server 的简要概述:
- SQL Server 的发展始于 1988 年,当时 Microsoft 与 Sybase 和 Ashton-Tate 合作开发数据库维护和创建软件,这将为 Microsoft 的商业数据库市场提供动力。
- SQL Server 1.0 于 1989 年推出。当时,它利用系统管理员工具 (SAF) 来生成数据库。 它没有任何文档,但它仍然允许用户运行 SQL 查询和设置参数。 Microsoft SQL Server 的第一个代码片段由 Sybase 编写。
- 逐渐地,发布了具有更多改进和功能的更新版本。 SQL Server 2019 或 Aries 是综合版本万神殿的最新成员,因为它专注于使数据库功能更加直观易用。 这包括大数据集群选项,让用户可以选择使用庞大的数据集。
主要特点
足够的历史谈话。 让我们来看看使 SQL Server 如此受欢迎的几个关键特性:
- 强大的安全平台: SQL Server 允许您通过内置的数据保护、数据分类、警报和监控功能保护动态和静态数据。 使用 SQL Server,您可以轻松加密敏感数据并对加密数据执行丰富的计算,并允许自定义的基于角色的数据访问完成复杂的行过滤。
- 行业领先的性能: SQL Server 在 Linux 和 Windows 上拥有创纪录的性能,因为它在 TPC-H 数据仓库工作负载、TPC-E OLTP 工作负载和实际应用程序性能基准测试中始终处于领先地位。 您还可以使用 SQL Server 的内存数据库功能(例如内存优化 tempdb 和持久内存支持)来提高任务关键型工作负载的性能。
- 使用大数据集群跨所有数据提供智能: SQL Server 允许您通过查询整个数据资产(Azure SQL 数据库、SQL Server、Teradata、MongoDB、Azure Cosmos DB 等)中的数据,从所有数据中获得有价值的见解——无需复制或移动数据。 您甚至可以通过在 SQL Server 中组合非结构化和结构化数据并通过 Spark 或 T-SQL 访问数据来构建共享数据湖。
用例
SQL Server 的可扩展性和性能使其可用于广泛的用例,例如:
- 复制服务: SQL Server 使用 SQL Server 复制服务来协调和复制数据库对象,无论是作为现有对象的子集还是作为其整体。 复制服务遵循订阅者/发布者模型,即修改由一个数据库服务器(发布者)发送,并由其他数据库服务器(订阅者)收集。
- 通知服务:通知服务最初是作为 SQL Server 2000 的发布后附加组件发布的。它是一种创建数据驱动修改的机制,然后将其发送给通知服务订阅者。
- 机器学习服务: SQL Server 机器学习服务在 SQL Server 实例中运行,让人们无需通过网络移动数据或受到计算机内存的阻碍即可执行数据分析和机器学习。
- 分析服务: SQL Server 分析服务 (SSAS) 为 SQL Server 数据库添加了数据挖掘和 OLAP 功能。 OLAP 引擎支持数据的关系在线分析处理 (ROLAP)、多维在线分析处理 (MOLAP) 和混合在线分析处理 (HOLAP) 存储模式。 SQL Server 分析服务还支持将分析标准 XML 作为基本通信协议。
PostgreSQL 与 SQL Server:头对头比较
现在我们已经了解了 SQL Server 和 PostgreSQL 的突出方面,让我们深入研究两者之间的差异。 您可以使用下面提到的因素来确定最适合您需求的数据库管理系统。
可用性
PostgreSQL 提供了各种各样的解决方案来确保用户的高可用性,包括预写日志传送、共享磁盘故障转移、数据分区和各种复制方法。 EDB Postgres Failover Manager 等工具提供自动故障转移,通过监控和识别数据库故障来确保高可用性。
另一方面,SQL Server 包括各种高可用性工具,例如日志传送、故障转移群集和复制。 SQL Server 全天候工作的可用性组在满足特定条件时提供自动故障转移。 但是,此产品只能在 SQL Server 的企业版中访问。
数据和表结构
为简单起见,PostgreSQL 向其用户提供 PL/pgSQL 过程编程语言。 PostgreSQL 中标准 SQL 的其他功能包括用户定义类型、自定义模块、扩展、JSON 支持以及触发器和其他功能的额外选项。
SQL Server 使用与标准 SQL 相似的 T-SQL。 T-SQL 包括对数据和字符串处理、过程编程和局部变量的额外支持。
如果您想更好地了解系统如何缓存和处理请求,PostgreSQL 通过将它们视为单独的操作系统进程来隔离进程。 每个数据库都有一个单独的内存并运行它的进程。 这使得监控和管理变得非常容易,但同时也使得扩展多个数据库变得更加困难。
SQL Server 使用可以根据处理需要进行限制或增加的缓冲池。 与 PostgreSQL 不同,所有工作都在单个池中进行,没有多个页面。
PostgreSQL 和 SQL Server 都提供对临时表的支持,因为它允许您存储来自分支复杂逻辑和复杂过程的中间结果。 临时表还可以通过将中间信息与基本信息隔离开来帮助改进数据库的组织和性能。
碎片整理
当开发人员修改 SQL 数据库的不同部分时,修改发生在系统的不同点,并且很难跟踪、读取和管理。 因此,维护还应该涉及碎片整理——通过分配索引、生成新页面和重新访问结构来整理更新的数据库的过程。 然后,数据库可以释放未正确使用的磁盘空间,以便数据库可以更快的速度运行。
PostgreSQL 扫描数据层的表以查找空行并删除不必要的元素。 通过这样做,系统可以释放磁盘空间。 但是,这种方法需要大量 CPU,并且会影响应用程序的性能。
另一方面,SQL Server 提供了一个高效的垃圾收集器,不会产生超过 15-20% 的开销。 从技术上讲,开发人员还可以连续运行垃圾收集器,因为它非常有效。 总而言之,SQL Server 提供了比 PostgreSQL 更多的碎片整理方法。
索引
数据库处理索引的方式证明了它的可用性,因为索引用于查明数据而无需查找特定行。 您还可以使用索引来引用多个列或行。 您可以为文件分配相同的索引,将它们显示在数据库中的不同位置,并通过一次搜索收集所有这些片段。
PostgreSQL 支持基于索引的表组织,但早期版本没有使用自动索引更新。 它还允许您在一次搜索中查找多个索引,这意味着您可以发现很多信息。
SQL Server 为索引管理提供了丰富的自动化功能。 它们可以在集群中组织并维持正确的行顺序,而无需人工参与。 SQL Server 还支持部分索引和多索引搜索。
特征
与其他 SQL 数据库不同,PostgreSQL 不提供内置的作业调度程序。 重复性任务需要外部工具,如 Linux 上的 cron、pgAgent 或 pg_cron,以及 Windows 上的 SQLBackupAndFTP 或 Task Scheduler。
另一方面,SQL Server 中的任务可以通过 SQL Server Management Studio 轻松安排。
PostgreSQL 拥有完善的多版本并发控制 (MVCC) 来同时处理多个过程。 MVCC 提供数据库信息的快照,以避免显示由同时事务或其他数据库系统中发生的数据锁定引起的不一致。 PostgreSQL 利用可序列化快照隔离 (SSI) 来确保事务隔离。
SQL Server 具有欠发达的多版本并发控制系统,并且默认情况下依赖于数据锁定以避免同时事务中的错误。 SQL Server 还提供了乐观并发功能,它假定此类问题很少发生。 因此,与锁定一行相反,它根据缓存版本进行验证,以查找是否发生了任何更改。
分区和分片
当性能提升对于大型数据库至关重要并且您已经最大化存储过程并且您的硬件也升级时,您需要将工作分布在不同的服务器上。 这是分区和分片发挥作用的时候。
虽然分片和分区本质上都是关于将大型数据集分解为较小的子集,但分片意味着数据分布在多台计算机上,而分区则不会。
从 10.0 版开始,PostgreSQL 支持声明式分区——按范围、列表或哈希进行分区。
MS SQL Server 支持水平分区——将一个包含很多行的表拆分为几个包含较少行的表。
MS SQL Server 还支持通过联合进行分片。 “联合分区视图”是表分布在不同服务器上以平衡处理负载的视图。
要从服务器检索记录,您需要某些命令。 这些命令称为分布式分区视图。 他们使用典型的 SQL 语句以及关键字 UNION 从所有分布式服务器中提取数据。
同样,当在基础表上遵守特定规则时,可以使用 DML 语句(INSERT、UPDATE 和 DELETE)。 另请注意,仅企业版支持联合分区视图。
尽管联合分区视图可以在任何其他版本上实现,因为它们没有区分语法,但它们不会被识别为联合分区视图。 将视图识别为跨服务器分区的规则仅适用于企业版。
使用这种分区技术,大多数应用程序的性能通常会提高 20% 到 30%。 因此,如果您的企业管理大量数据,它是一个非常有用的工具。
复制
分区是将数据库拆分为较小的子集并将分区表分布到不同的节点,而复制是将数据库复制到多个数据库以提供快速查看和更短的响应时间。
PostgreSQL 提供主从复制。 这可以是异步的或同步的。 预写日志 (WAL) 允许与副本节点共享更改,从而启用异步复制。
其他类型的复制主要包括逻辑复制、流复制和物理复制。
- 逻辑复制遵循发布和订阅模型。 更改基于数据复制的身份,例如其主键,而不是其物理位置。
- 流式复制本质上是在文件创建后立即流式传输 WAL,从而使备用服务器能够快速更新,而不是等待文件被填充。
- 最后,物理复制通常是通过文件和目录实现的,而不考虑物理位置中的内容。 PostgreSQL 本身不提供多主复制,但它可以在其他第三方工具的帮助下执行。
SQL Server 复制将数据从发布服务器复制到订阅服务器。 它可以是异步的,也可以是异步的,具体取决于 SQL Server 版本。 它提供三种类型的复制,即:事务复制、快照复制和合并复制。

- 事务复制通常是为服务器到服务器的环境实现的,其中修改在发生时从发布者传递给订阅者。
- 合并复制通常在可能发生冲突的情况下实现,对于服务器到客户端的环境,或者可以在订阅者或发布者上更改和跟踪数据并随后进行同步的情况。
- 快照复制是在数据不经常更新、不需要增量更改或数据在特定时刻完全复制时实现的。 此外,企业版提供对等复制作为多主节点复制的替代解决方案。
语言和语法
PostgreSQL 是用 C 语言编写的,而 MS SQL 是用 C 和 C++ 编写的。 在语言绑定方面,PostgreSQL 非常易于使用和连接,因为它的外部 API libpq设计和文档都非常好。
但是,SQL Server 外部语言绑定可能取决于其他几个因素。 您可能需要安装额外的驱动程序或创建类来存储查询的数据; 因此,您必须知道编译时数据的样子。 您可能必须参考文档,并且跟进可能会相当耗时。
在过程语言功能方面,PostgreSQL 和 SQL Server 都提供了强大的支持。 PostgreSQL 支持 JSON 数据类型,用户可以轻松地将 Python、Java、PHP、Perl 和 R 与 SQL 一起使用,因为它们得到了过程语言特性的支持。
虽然 SQL Server 确实提供了支持,但此功能仍有待改进,因为会出现一些小错误,并且可能需要一些时间来实现,因为它很慢。 用户需要先将代码编译成.dll文件。
在 PostgreSQL 中,无需先创建.dll文件。 PostgreSQL 还提供了大量的正则表达式(regex)作为分析工作的基础。
MS SQL Server 的正则表达式相对较少,并且支持某些命令,例如子字符串和模式索引,这些命令可能不如 PostgreSQL。
表现
在性能方面,PostgreSQL 在几个方面胜过 SQL Server。 我们谈到了分区,虽然 PostgreSQL 和 SQL Server 都提供分区,但 PostgreSQL 免费提供,效率更高。
PostgreSQL 还提供了更好的并发性,这是一个重要的特性,多个进程可以同时访问和更改共享数据。 PostgreSQL 的 MVCC 特性确保了较小的死锁机会,仅当两个查询尝试同时修改同一行并序列化对该行的更新时才会阻塞。
查询数据获取的 MVCC 锁与写入数据获取的锁不冲突。 这可以最大限度地减少锁争用并在多用户环境中提供更好的性能。
另一方面,SQL Server 的并发性不够发达,有些进程甚至会死锁。 与 MVCC 功能相反,每当更新行时,都会创建该行的新版本,而不是覆盖同一行,并且两者都会得到维护。 逐渐地,旧版本移入名为tempdb的系统数据库。 但是,它的并发性还有很长的路要走。
PostgreSQL 还为几个扩展提供了索引支持,从而提高了数据库的性能。
另一方面,SQL 服务器还没有改进它们的索引实现,它们还没有包含数组——最常用的变量类型之一。
价钱
PostgreSQL 是在 PostgreSQL 许可证下发布的,这是一个自由的开源许可证。 PostgreSQL 全球开发组仍然致力于使 PostgreSQL 永远作为免费和开源软件提供。 没有计划在不同的许可证下更改或发布 PostgreSQL。
MS SQL Server 是在商业许可下作为 Microsoft 产品的一部分发布的。 2016 年初,该数据库作为免费工具提供给开发人员,但它仅支持一个处理器和 1GB 的最大内存。 虽然它是免费的,但它缺少一些企业可能需要的功能。 如果您需要更多服务器,您可能需要为每台服务器支付 899 美元。 最近,SQL Server 企业版售价 13,748 美元。
可扩展性
当数据增加以满足用户的需要而不影响其性能时,数据库系统继续良好运行的能力称为可伸缩性。
PostgreSQL 在可扩展性方面提供了许多特性,并且可以使用多个 CPU 内核来快速并行实现查询。
SQL Server 也可以使用内核,但是标准版本仅限于 24 个 CPU 内核。 企业版允许使用无限的 CPU 内核。 SQL Server 还具有超大规模功能,您可以在其中确定下限和上限,从而根据需要向下和向上扩展。
安全
随着数据盗窃、黑客攻击和盗版的兴起,安全确实成为数据库系统中最重要的要求。 但是,SQL Server 和 PostgreSQL 都提供了出色的数据加密和身份验证。
身份验证方法
在服务器端,PostgreSQL 提供了先进的身份验证方法,包括轻量级目录访问协议 (LDAP) 和可插拔身份验证模块 (PAM),这可能会减少 PostgreSQL 数据库服务器的攻击面。 PostgreSQL 的其他服务器级安全增强功能包括 PostgreSQL 服务器侦听地址、基于主机的身份验证和证书身份验证。
在 MS SQL Server 中,有两种服务器级别的安全增强功能:Windows 身份验证模式和混合模式,其中包括 Windows Server 和 MS SQL Server 的身份验证过程。 MS SQL Server 的安全模型是 Windows Server 的 Windows 身份验证模式与数据库的紧密集成。
数据加密
PostgreSQL 提供数据加密,并允许您在数据通过 Web 或公共网络高速公路传输时使用安全套接字层 (SSL) 证书。 它还允许您实施客户端证书身份验证工具作为选项。 此外,您可以使用加密函数将加密数据存储在支持对称密钥和公钥加密的 PostgreSQL 中。
在 MS SQL Server 中,可用的数据加密功能包括透明数据加密 (TDE)、始终加密和列级加密。 TDE 使用高级加密标准 (AES) 算法来加密物理文件,其中包括数据和日志文件。 始终加密的功能允许您在两种状态下加密某些列,无论是静止的还是动态的(即数据在内存中也保持加密)。
用户级权限
此外,您可以在 PostgreSQL 和 SQL Server 中管理不同的用户及其权限(读、写)。
PostgreSQL 包括作为角色分配的用户级权限、通过角色的表级权限和角色继承。 审核选项允许您查看数据库中用户和组的数据访问活动,这提供了额外的安全层。
SQL Server 通过用户组和角色来实现这一点。 资源权限直接授予用户帐户,权限从父资源继承。
您还可以通过监视和审核 SQL Server 中的活动来识别并发问题、长时间运行的查询和常规工作负载指标。
贮存
存储是任何数据库系统性能的关键因素之一。 随着服务器处理能力和大规模内存支持的提高,数据库在系统中允许更多的存储能力几乎变得至关重要。
PostgreSQL 是一个对象关系数据库,而 Microsoft SQL Server 是一个关系数据库系统。 这意味着 PostgreSQL 提供了更复杂的数据类型并允许对象继承,尽管它也使得使用 PostgreSQL 更加复杂。 它有一个单一的符合 ACID 的存储引擎,并使用它为每个客户端连接分配的内存来初始化一个新的系统进程。 因此,随着系统上客户端连接的增加,需要分配更多的内存。
SQL Server 2016 及更高版本最多可以使用一百台计算机或虚拟机,每台计算机最多运行五个实例。 但是,这也取决于其版本。 企业版允许最大带宽,因此将授予更多存储功能。 虽然最新的标准版允许使用高达 128GB 的内存,但您可以在企业版中使用无限的内存。
支持与社区
PostgreSQL 定期免费发布更新版本。 最近,PostgreSQL 全球开发组发布了对所有受支持的数据库系统版本的更新,修复了过去三个月报告的超过 55 个错误。 PostgreSQL 拥有庞大的开发人员、第三方公司和爱好者社区,他们提供支持并尝试通过修复报告的错误来开发系统。
SQL Server 每隔几年就会发布一个新版本。 支持费用取决于许可证的条款和条件。 Microsoft SQL Server 也有一个支持社区,数据库分析师、开发人员、系统管理员或任何对该平台感兴趣的人都可以在这里提问,或者通过播客和网络广播(如 Guy Glantser 和 Eitan Blumin 的 SQL Server Radio)了解更多关于 SQL Server 的信息,用户可以在这里了解很多有关 SQL Server 及其与其他 Microsoft 工具的兼容性的信息。
PostgreSQL 和 SQL Server 都可以配备插件。 定价和兼容性取决于插件。 插件有助于管理、清理、备份数据库等。
例如,Adminer 是一个数据管理工具,可用于管理 PostgreSQL 和 MS SQL Server 中的数据。 其他几个数据库插件也可用于提高数据库的效率,即:WP-Optimize、Better Search Replace、WP Database Backup 等等。 当您升级任何数据库系统时,可能会产生数据迁移成本,但这对于任何其他标准 DBMS 来说都是正常的。

触发器和事件
PostgreSQL 有各种高级触发器,您可以根据自己的用例进行选择。 支持的触发事件有 AFTER、BEFORE 和 INSTEAD OF,它们可用于 INSERT、UPDATE 和 DELETE 事件来操作数据。 如前所述,PostgreSQL 可以动态运行这些触发器,在执行之前不需要将它们编译成.dll文件。 当触发器被调用时,上述函数可用于执行复杂的查询。
SQL Server 为不同类型的数据库事件提供了各种触发器,即 DML 触发器、DDL 触发器和登录触发器:
- DML 触发器或数据操作语言触发器是用于通过插入、更新或删除记录来操作数据的触发器。
- DDL 触发器用于数据定义语言 (DDL) 事件,例如创建、删除或更改数据库。
- 登录触发器用于登录事件,例如建立用户会话时。 这些触发器在成功验证后和建立用户会话之前触发。 它们对于审核和控制登录活动很有用。
意见
视图本质上是不物理存储数据的虚拟表。 它们通常用于安全目的,以限制用户对数据的访问。 PostgreSQL 和 SQL Server 都支持可更新视图。
但是,在 PostgreSQL 中,除非满足以下先决条件,否则不会自动进行更新:
- 该视图的查询中的 FROM 子句中应该有一个部分。 该部分可以来自表或其他可更新视图。
- 选择列表中不应有窗口函数、聚合函数或集合返回函数。
- 查询不能在顶层包含命令 HAVING、LIMIT、DISTINCT、WITH、INTERSECT、EXCEPT、OFFSET 或 LIMIT。
简而言之,用简单查询创建的视图可以更新,而用复杂查询创建的视图几乎不可能更新。 另一方面,可以使用规则来更新复杂的视图。 虽然 PostgreSQL 可能不提供运行物化视图的工具,但它有一个名为matviews的模块,它可以帮助重建任何物化视图。
在 SQL Server 中,视图可以自动更新,同时支持用户定义和系统定义的视图。 此外,如果两个表视图具有不同的键并且更新语句不涉及多个表,则它们会同时更新。
此外,用户可以利用触发器来更新复杂的视图。 SQL Server 还提供了运行物化视图(也称为索引视图)的工具。 与其他关系数据库中的物化视图不同,索引视图与基础数据同步,因此会自动更新。
SQL Server 和 PostgreSQL 的缺点
While we've discussed all the details on PostgreSQL and SQL Server, both have their drawbacks.
While PostgreSQL is free, it isn't owned by a single organization. Because of that, it has struggled to find footing among the masses, despite being heavily featured. PostgreSQL also focuses on compatibility more than speed. Thus, modifications that are created for speed improvement demand more work.
On the other hand, SQL Server has often been criticized for its poor user interface. It has complex performance tuning features and no native support for source control. If you're using it for your company, the enterprise version may burn a hole in your pocket. SQL Server 2019 enterprise edition alone costs $13,748 — that's like thirteen rooms worth of Ikea furniture! Moreover, the licensing can be quite challenging to comprehend and is continuously changing.
If PostgreSQL and SQL Server aren't quite to your liking, you can try out MongoDB or MariaDB for your unique use case.
MongoDB is a document-oriented, free-to-use, cross-platform database program that can easily leverage JSON-like documents.
MariaDB, on the other hand, is a commercially-supported fork of MySQL whose pluggable and purpose-built storage engines support workloads that generally required a vast variety of different databases.
PostgreSQL vs SQL Server: Which Database Should You Choose?
Both PostgreSQL and SQL Server are widely used relational databases, but who takes the cake? From the above comparisons, PostgreSQL trumps SQL Server in several scenarios. Not only is it open-source and free, but it also has several features that are easily available and can be implemented automatically, unlike Microsoft SQL Server.
Moreover, PostgreSQL has a more suitable concurrency management system. It can brilliantly handle cases where multiple processes can access and modify shared data at the same time.
If you are running a small business, PostgreSQL could be a suitable choice for you as it's free and offers several features that are useful to manage the data. It's easy to install and can be implemented in almost all kinds of operating systems. However, for businesses with a huge investment in the Microsoft SQL Server stack, SQL Server has its benefits over PostgreSQL.
概括
All in all, both PostgreSQL and SQL Server are functional and multifaceted databases. While PostgreSQL can be used for almost any operating system and is suitable for small businesses that require maximum functionality, SQL Server is the best for huge businesses, especially those that require the use of Microsoft products.
In this article, we've covered the major differences between PostgreSQL and SQL Server, and their functions. The “right” choice will eventually come down to how you plan to run your business.
Between PostgreSQL vs SQL Server, which database would you plan on using for your next project, and why? 我们很想听听您的想法! 在下面的评论部分分享它们。