【PostgreSQL】PostgreSQL详细介绍

PostgreSQL详细介绍

  • 一、什么是PostgreSQL?
  • 二、为什么要使用PostgreSQL?
  • 三、PostgreSQL功能列表
    • 3.1 数据类型
    • 3.2 数据完整性
    • 3.3 并发,性能
    • 3.4 可靠性、灾难恢复
    • 3.5 安全
    • 3.6 可扩展性
    • 3.7 国际化,文本搜索
  • 四、参考资料

关于PostgreSQL安装详细步骤请参考:【PostgreSQL】Windows安装PostgreSQL数据库图文详细教程

一、什么是PostgreSQL?

PostgreSQL是一个强大的开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL的起源可以追溯到1986年,是加州大学伯克利分校POSTGRES项目的一部分,在核心平台上有超过35年的积极开发。

PostgreSQL以其经验证的体系结构、可靠性、数据完整性、强大的功能集、可扩展性以及软件背后的开源社区致力于始终如一地提供高性能和创新的解决方案而赢得了良好的声誉。PostgreSQL运行在所有主要的操作系统上,自2001年以来一直与ACID兼容,并具有强大的附加组件,如流行的PostGIS地理空间数据库扩展程序。毫不奇怪,PostgreSQL已经成为许多人和组织选择的开源关系数据库。

开始使用PostgreSQL从来没有这么容易过——选择一个你想要构建的项目,让PostgreSQL安全可靠地存储你的数据。

二、为什么要使用PostgreSQL?

PostgreSQL提供了许多功能,旨在帮助开发人员构建应用程序,管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集大小。除了免费和开源之外,PostgreSQL还具有高度的可扩展性。例如,您可以定义自己的数据类型,构建自定义函数,甚至不用重新编译数据库就可以用不同的编程语言编写代码!

PostgreSQL试图遵循SQL标准,在这种标准中,这种一致性不会与传统功能相矛盾,也不会导致糟糕的体系结构决策。支持SQL标准所需的许多功能,尽管有时语法或功能略有不同。随着时间的推移,可能会朝着一致性的方向进一步发展。截至2023年9月发布的第16版,PostgreSQL至少符合SQL的179个强制性特性中的170个:2023核心一致性。截至本文撰写之时,没有一个关系数据库完全符合此标准。

三、PostgreSQL功能列表

以下是PostgreSQL中各种功能的详尽列表,每个主要版本都会添加更多功能:

3.1 数据类型

  • 基本类型: Integer, Numeric, String, Boolean
  • 结构化: Date/Time, Array, Range / Multirange, UUID
  • 文档: JSON/JSONB, XML, Key-value (Hstore)
  • 几何体:Point, Line, Circle, Polygon
  • 自定义:Composite, Custom Types

3.2 数据完整性

  • 唯一,不为NULL
  • 主键
  • 外键
  • 排除限制
  • 显式锁、咨询锁

3.3 并发,性能

  • 索引:B-树、多列、表达式、分部
  • 高级索引:GiST,SP GiST,KNN GiST,GIN,BRIN,覆盖索引,Bloom过滤器
  • 复杂的查询规划器/优化器、仅索引扫描、多列统计信息
  • 事务,嵌套事务(通过保存点)
  • 多版本并发控制(MVCC)
  • 读取查询的并行化与B树索引的构建
  • 表分割
  • SQL标准中定义的所有事务隔离级别,包括Serializable
  • 表达式的实时(JIT)编译

3.4 可靠性、灾难恢复

  • 预写日志记录(WAL)
  • 复制:异步、同步、逻辑
  • 时间点恢复(PITR),活动备用
  • 表空间

3.5 安全

  • 身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
  • 坚固访问控制系统
  • 列和行级别的安全性
  • 使用证书的多因素身份验证和一种附加方法

3.6 可扩展性

  • 存储的函数和过程
  • 过程语言:PL/pgSQL、Perl、Python和Tcl。通过扩展还可以使用其他语言,例如Java、JavaScript(V8)、R、Lua和Rust
  • SQL/JON-构造函数和路径表达式
  • 外部数据包装器:使用标准SQL接口连接到其他数据库或流
  • 可自定义的表格存储界面
  • 许多提供附加功能的扩展,包括PostGIS

3.7 国际化,文本搜索

  • 支持国际字符集,例如通过ICU排序
  • 不区分大小写和不区分重音的排序规则
  • 全文搜索

当然你也可以在PostgreSQL文档中发现更多功能。此外,PostgreSQL具有高度的可扩展性:许多功能,如索引,都定义了API,因此您可以使用PostgreSQL进行构建以解决您的挑战。

PostgreSQL已经被证明是高度可扩展的,无论是在它可以管理的数据数量上,还是在它可以容纳的并发用户数量上。生产环境中有活动的PostgreSQL集群,可以管理许多TB的数据,也有专门的系统,可以管理PB的数据。

四、参考资料

PostgreSQL官网:https://www.postgresql.org/

本文完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用MongoDB数据库和Mongoose库在Node.js中进行数据存储

在Node.js中使用MongoDB数据库和Mongoose库进行数据存储是前端开发中常用的技术之一。MongoDB是一种非关系型数据库,具有高性能、易扩展等优点;而Mongoose是在Node.js中对MongoDB进行操作的框架,简化了数据库操作,并提供了丰富的功…

音视频技术-双声道立体声与卡侬平衡线的“纠葛”

目录 一、新问题 二、问题排查 三、故障总结 四、原理分析 五、解决方案 1、救急 2、转接线1 3、转接线2

Js的 Promise的 then catch 笔记240222

Js的 Promise的 then catch 笔记240222 基本用法 new Promise(f>{setTimeout(ev>{f("一秒后输出控制台");},1000); }).then(f的参数>{console.log(f的参数); }); // 控制台输出: 一秒后输出控制台上面代码中, f 的标准名叫做 resolve , 所以应该写成 new …

知识图谱数据处理流程是什么

在当今信息时代,数据已经成为企业决策和业务发展的重要驱动力。然而,随着数据量的不断增加,传统的数据处理方法已经难以满足需求。知识图谱作为一种新兴的技术,正逐渐成为处理大规模数据的关键工具。本文将深入探讨知识图谱的数据…

写代码中的一些“小技巧”

目录 前言 1.不注重代码格式 1.1 空格 1.2 换行 2.随意的命名 2.1 有意义的参数名 2.2 见名知意 2.3 参数名风格一致 3.出现大量重复代码 4.从不写注释 5.方法过长 6.参数过多 7.代码层级太深 8.判断条件太多 9.硬编码 10.事务过大 11.在循环中远程调用 11.1 …

CSS 面试题汇总

CSS 面试题汇总 1. 介绍下 BFC 及其应 参考答案: 参考答案: 所谓 BFC,指的是一个独立的布局环境,BFC 内部的元素布局与外部互不影响。 触发 BFC 的方式有很多,常见的有: 设置浮动overflow 设置为 auto、scr…

Swift基础知识:20.Swift方法

在 Swift 中,方法是与特定类型相关联的函数。方法可以用于实例类型(实例方法)或类型本身(类型方法)。方法允许类型的实例执行特定的任务,也可以修改实例本身或实例的属性。 实例方法(Instance …

【力扣hot100】刷题笔记Day10

前言 一鼓作气把链表给刷完!!中等题困难题冲冲冲啊啊啊! 25. K 个一组翻转链表 - 力扣(LeetCode) 模拟 class Solution:def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:# 翻转…

题记(46)--两个多项式的和

目录 一、题目内容 二、输入描述 三、输出描述 四、输入输出示例 五、完整C语言代码 一、题目内容 输入两个多项式,计算它们的和。 每个多项式有若干对整数表示,每组整数中,第一个整数表示系数(非0),第…

#LLM入门|Prompt#1.7_文本拓展_Expanding

输入简短文本,生成更加丰富的长文。 “温度”(temperature):控制文本生成的多样性。 一、定制客户邮件 根据客户的评价和其中的情感倾向,使用大语言模型针对性地生成回复邮件。将大大提升客户满意度。 # 我们可以在…

云原生 - K8s命令合集

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…

两种动态代理(可以看到代理类的样子,方便理解)

这里写目录标题 jdk动态代理例子CGlib动态代理例子手写spring中的事务部分自定义注解版aop实现方式 Spring的两大重点,IOC和AOP,今天我们就来学AOP,众所周知AOP的底层是动态代理,让我们看一下这两种动态代理的区别。 例子&#x…

tvm交叉编译android可执行参考资料整理

主要参考这个: TVM部署神经网络模型到android端_tvm android-CSDN博客 其他相关链接: TVM部署神经网络模型到android端 - 代码先锋网 Ubuntu交叉编译 arm板子上的TVM_tvm arm-CSDN博客 TVM部署神经网络模型到android端 - 代码先锋网 tvm部署c神经网…

【Spring连载】使用Spring Data访问 MongoDB(五)----生命周期事件

【Spring连载】使用Spring Data访问 MongoDB(五)----生命周期事件Lifecycle Events 一、实体回调Entity Callbacks1.1 实现实体回调1.2 注册实体回调 二、特定存储的实体回调 一、实体回调Entity Callbacks 1.1 实现实体回调 1.2 注册实体回调 二、特…

【结合OpenAI官方文档】解决Chatgpt的API接口请求速率限制

OpenAI API接口请求速率限制 速率限制以五种方式衡量:RPM(每分钟请求数)、RPD(每天请求数)、TPM(每分钟令牌数)、TPD(每天令牌数)和IPM(每分钟图像数&#x…

BUUCTF第二十四、二十五题解题思路

目录 第二十四题CrackRTF 第二十五题[2019红帽杯]easyRE1 第二十四题CrackRTF 查壳 无壳,32位,用32位IDA打开,打开后的main函数很短,可以找到一句“jmz _main_0”——跳转到 _main_0,说明真正的主函数是_main_0&am…

React 模态框的设计(二)

自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求,比如关于弹窗,每个应用都会用到,但是有时我们使用的框架中提供的弹窗功能也是功能有限,无法满足我们的应用需求,今天…

【linux】使用 acme.sh 实现了 acme 协议生成免费的SSL 证书

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书. 主要步骤: 安装 acme.sh生成证书copy 证书到 nginx/apache 或者其他服务更新证书更新 acme.sh出错怎么办, 如何调试 下面详细介绍. 1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh…

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框 问题: 由于el-select组件的el-select-dropdown部分是自动插入在最外层Body上的,所以在当前组件的scoped中让el-select-dropdown组件display:none不会生效所以需要: :popper-…

Java架构师之路六、高并发与性能优化:高并发编程、性能调优、线程池、NIO、Netty、高性能数据库等。

目录 高并发编程: 性能调优: 线程池: NIO: Netty: 高性能数据库: 上篇:Java架构师之路五、微服务:微服务架构、服务注册与发现、服务治理、服务监控、容器化等。-CSDN博客 下篇…