Coursera 笔记

Module 01 · Relational Database Concepts

PostgreSQLPostgreSQL 数据库概览

Coursera ↗

欢迎了解 PostgreSQL!观看本视频后,您将能够:

  • 描述 PostgreSQL。
  • 解释如何使用 PostgreSQL。
  • 描述 PostgreSQL 中的复制功能。

PostgreSQL 的历史背景与名称演变

PostgreSQL 起源于 30 多年前加州大学(University of California)的 POSTGRES 项目。

  • POSTGRES 项目:曾被用于金融服务、航空和医疗等多个行业的一系列研究和生产应用。
  • 1994 年:发布了开源版本 Postgres95,其中包含了 SQL 语言解释器。
  • 名称演变:不久后,它被更名为 PostgreSQL,现在通常简称为 Postgres。

生态系统集成

PostgreSQL 可以作为以下堆栈的一部分用于 Web 应用程序和网站:

  • LAPP 堆栈: Linux、Apache、PostgreSQL 和 PHP。

此外,您还可以使用独立开发的扩展来实现附加功能,例如用于处理地理和空间数据的 PostGIS。


PostgreSQL 的核心特性

PostgreSQL 是一款免费、开源的对象关系型数据库管理系统(Object-Relational Database Management System)。

开源与兼容性

特性 描述
开源 您可以使用、修改和分发 Postgres 源代码,以满足您的业务需求。
兼容性 兼容当今大多数常用的操作系统。
易于实施 低维护门槛使其易于在组织中实施。
编程语言支持 支持多种编程语言,使您能够将其与 Web 应用程序集成。
SQL 标准 支持 ANSI-SQL 标准。

对象特性

“对象”部分描述了它支持类似面向对象编程语言的特性:

  • 支持继承(Inheritance)和重载(Overloading)。
  • 您可以使用这些技术来简化设计和重用数据库对象。

数据类型支持

在使用 Postgres 时,您可以使用所有标准的关系型数据库结构:

  • 键(Keys)
  • 事务(Transactions)
  • 视图(Views)
  • 函数(Functions)
  • 存储过程(Stored Procedures)

同时,它还支持一些 NoSQL 功能:

  • 使用 JSON 处理结构化数据。
  • 使用 HSTORE 处理非层次结构数据。

PostgreSQL 中的复制功能

Postgres 支持复制(Replication)以实现高可用性(High Availability)。

1. 双节点同步复制(Two-Node Synchronous Replication)

特性 描述 优势
数据同步 将数据副本存储在第二个服务器(节点 2)上,并将对节点 1 所做的每个更改同时应用于节点 2。 高可用性: 如果节点 1 发生故障,可以启用节点 2 来为所有客户端提供服务,直到节点 1 恢复运行。
读负载分担 您可以在两个服务器之间分担读取负载。 可扩展性: 提高读取性能。

2. 多节点异步复制(Multi-Node Asynchronous Replication)

  • 架构: 一个主节点(Master Node)将其更改分发给多个只读副本(Read-Only Replicas),主要用于实现可扩展性。
  • 故障转移: 如果读写节点(主节点)发生故障,您可以快速用其中一个只读副本替换它。

3. 多主读写复制(Multi-Master Read/Write Replication)

为了获得更大的应用扩展灵活性,可以使用商业附加组件(如 EDB PostgreSQL Replication Server),它提供多主读写复制:

  • 架构: 允许多个读写数据库同时运行并彼此之间复制更改。
  • 故障转移: 如果其中一个实例发生故障,用户可以轻松地被重定向到另一个实例,直到故障实例再次可用。

增强可扩展性的其他技术

PostgreSQL 在最近的版本中增加了以下技术,以增强可扩展性和处理更大的数据集:

技术 描述 目的
分区(Partitioning) 将一个大型表拆分为多个较小的部分或分区。 提高查询性能。
分片(Sharding) 将水平分区存储在多个远程服务器上。 提高扩展性,分布式处理数据。

总结回顾

在本视频中,您了解到:

  • PostgreSQL 是一个开源的对象关系型数据库。
  • 它支持一系列语言用于客户端应用程序开发。
  • 它支持关系型、结构化和非结构化数据。
  • 它支持复制和分区功能,以实现高可用性和可扩展性。