PostgreSQL 使用客户机/服务器(C/S)的模式提供服务,一个PostgreSQL会话由下列相关的进程(程序)组成:

(1)一个服务器端进程。该进程管理数据库文件,接受客户端与数据库的连接,且代表客户端对数据库进行操作。该进程的程序名叫做 postgres。

(2)前端应用,即需要进行数据库操作的客户端应用。客户端应用可能本身就是多种多样的:它们可以是一个字符界  面的工具, 也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的 web 服务器,或者是一个特殊的数据库管理工具。 一些客户端应用是和 PostgreSQL 发布一起提供的,但绝大部分是用户开发的。

和典型的客户端/服务器应用(C/S应用)一样,客户端和服务器可以在不同的主机上。此时,它们通过TCP/IP进行网络连接,你应该记住这一点,因为在客户机上可以访问的文件未必能够在数据库服务器机器上访问(或者只能用不同的文件名进行访问)。

PostgreSQL 服务器可以处理来自客户端的多个并发请求。为了能这样处理,它会为每个请求启动(“forks”)一个新的进程,然后,客户端和新服务器端进程就不再经过最初的postgres 进程而直接通信。 因此, 服务器端的主进程一直运行,等待着来自客户端的连接;而客户端和相关联的服务器端进程则在需要的时候才会运行。(当然,这些对用户来说是透明的,在这里谈这些主要是为了说明的完整性。)

PostgreSQL数据库是一种极好可以运行在各种平台上的免费的开放源码的对象关系数据库,它是一种以关系数据库和SQL为基础,扩展了抽象数据类型,从而具备面向对象特性的数据库。

                        

                                      PostgreSQL体系结构图(组成结构和关系)

PostgreSQL由连接管理系统(系统控制器),编译执行系统,存储管理系统,事务系统,系统表五大部分组成。

连接管理系统接受外部操作对系统的请求,对操作请求进行预处理和分发,起系统逻辑控制作用;

编译执行系统由查询编译器,查询执行器组成,完成操作请求在数据库中的分析处理和转化工作,最终实现物理存储介质中数据的操作;

存储管理系统由索引管理器,内存管理器,外存管理器组成,负责存储和管理物理数据,提供对编译查询系统的支持;

事务系统由事务管理器,日志管理器,并发控制,锁管理器组成,日志管理器和事务管理器完成对操作请求的事务一致性支持,锁管理器和并发控制提供对并发访问数据的一致性支持;

系统表是PostgreSQL数据库的元信息管理中心,包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息,将PostgreSQL数据库的各个模块有机地连接在一起,形成一个高效的数据管理系统。

系统表

在关系数据库中,为了实现数据库系统的控制,必须提供数据字典的功能。数据字典不仅存储各种对象的描述信息,而且存储系统管理所需的各种对象的细节信息。数据字典包含数据库系统中所有对象及其属性的描述信息,对象之间关系的描述信息,对象属性的自然语言含义以及数据字典变化的历史,数据字典是关系数据库系统管理控制信息的核心,在PostgreSQL数据库系统中系统表扮演着数据字典的角色。

系统表是PostgreSQL数据库存放结构元数据的地方,他在PostgreSQL中表现为存放有系统信息的普通表或者视图(用户可以删除,重建)。

系统表保存了数据库的所有元数据,所以系统运行时对系统表的访问是非常频繁的。为了提高系统性能,在内存中建立了共享的系统表,使用Hash表提高查询效率。

主要系统表功能

1 pg_namespace 存储命名空间

2 pg_tablespace 存储空间信息

3 pg_database 存储当前数据集簇中数据库的信息。

4 pg_class 存储表及与表类似结构的数据库对象信息,包含,索引,序列,视图,复合数据类型,TOAST表等。

5 pg_type 存储数据类型信息。

6 pg_attribute 存储表的属性信息。

7 pg_index 存储索引的具体信息。

关键系统表之间的依赖关系:未列出

PostgreSQL 系统的基本体系结构的更多相关文章

  1. PostgreSQL 系统表

    postgres=# \d pg_class      Table "pg_catalog.pg_class"     Column     |   Type    | Modif ...

  2. postgreSQL使用

    1.1. 安装     自然,在你想开始使用 PostgreSQL 之前, 你必须安装它.PostgreSQL 很有可能 已经安装到你的节点上了,因为它包含在你的操作系统的发布里, 或者是系统管理员已 ...

  3. ubuntu下postgreSQL安装配置

    一.安装并配置,并设置远程登陆的用户名和密码 1.安装postgreSQL sudo apt-get update sudo apt-get install postgresql-9.4 在Ubunt ...

  4. centos下postgresql的安装与配置[转]

    本文摘自:http://blog.chinaunix.net/uid-24846094-id-78490.html 一.安装(以root身份进行) 1.检出最新的postgresql的yum配置从ht ...

  5. PostgreSQL数据库系统的进程结构

    PostgreSQL数据库系统的主要功能都集中于Postgres程序,其入口是Main模块中的main函数,在初始化数据集簇,启动数据库服务器是,都将从这里开始执行.Main模块主要的工作时确定当前的 ...

  6. PostgreSQL在Ubuntu上安装指南

    安装环境: Ubuntu 10.04-desktop-i386 PostgreSQL 8.4 1. 安装PostgreSQL 输入如下命令 sudo apt-get install postgresq ...

  7. 跟我一起读postgresql源码(八)——Executor(查询执行模块之——可优化语句的执行)

    2.可优化语句的执行 可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理.该模块对外提供了三个接口: ExecutorStart.Executo ...

  8. 跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上))

    从前面介绍的可优化语句处理相关的背景知识.实现思想和执行流程,不难发现可优化语句执行的核心内容是对于各种计划节点的处理,由于使用了节点表示.递归调用.统一接口等设计,计划节点的功能相对独立.代码总体流 ...

  9. 免费开源ERP Odoo实施指南 连载二:POSTGRESQL概述

    PostgreSQL是Odoo支持的数据库.PostgreSQL是起源于大学的一个历史很长的开源数据库系统.包括美国航天局NASA.德国证券交易中心.中国的平安.腾讯的微信支付.阿里巴巴的阿里云都在用 ...

随机推荐

  1. JqueryMobile 跳转问题

    解决办法: 禁止ajxa跳转有两种情况: 1.禁止局部ajax跳转 2.禁止全局ajax跳转    对于#1只需要在a标签中添加下面的属性: data-ajax=“false” 有时我们要用正常的ht ...

  2. SQL_NO_CACHE

    http://dev.mysql.com/doc/refman/5.7/en/query-cache-in-select.html MySQL 5.7 Reference Manual  /  ... ...

  3. ubuntu 制作deb 包

    ubuntu下打包制作deb安装包 http://www.th7.cn/system/lin/201406/61012.shtml   2014-06-22 20:16:45CSDN-yangbing ...

  4. 20145211 《Java程序设计》实验报告三:敏捷开发与XP实践

    实验内容 使用 git上传代码 使用 git相互更改代码 实现代码的重载 XP基础 XP核心实践 相关工具 一.git上传代码 这一部分是与我的partner合作的,详见他的博客- 20145326蔡 ...

  5. [LeetCode]题解(python):098 Validate Binary Search Tree

    题目来源 https://leetcode.com/problems/validate-binary-search-tree/ Given a binary tree, determine if it ...

  6. Educational Codeforces Round 16---部分题解

    710A. King Moves 给你图中一点求出它周围有几个可达的点: 除边界之外都是8个,边界处理一下即可: #include<iostream> #include<cstdio ...

  7. The Four Stages of Recovering a Project

    If a project is in trouble, the project manager needs to work to recover it and get the schedule bac ...

  8. JavaScript基础总结三部曲之一

      JavaScript是一种基于对象的编程语言,基于对象指的是所有的对象已经由浏览器提供好了,用户直接使用就可以了. 另外,JS是嵌入在HTML语法之中的编程语言. PS:虽然是基于对象的语言,但是 ...

  9. 分享一些App常用的模块

    2016年上半年 APICloud合作云服务商提供了各种类型模块多达45个 其中最新发布的重要模块有 美洽客服模块 亲加视频直播相关模块 保利威视视频播放器模块 苹果银联支付模块 贝宝支付模块 谷歌分 ...

  10. MOGRE学习笔记(2) - MOGRE基础知识总结

    前一篇配置了MOGRE的运行环境,这里记录一些MOGRE基础知识,仅仅是最基础的一些东西.由于本人接触ogre的时间比较短,对于很多知识都是一知半解,所以理解起来不免会有一些错误,本人也希望自己在对o ...