IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> postgreSQL源码分析综述 -> 正文阅读

[大数据]postgreSQL源码分析综述

2021SC@SDUSC

综合分析

经过小组讨论和分析,大家一致认为postgreSQL的核心部分在于对SQL功能的实现。而postgreSQL的核心代码则在于其后端的完成实现。
在这里插入图片描述
由上图,可以看出postgresql处理查询请求(核心功能)都是依托postgres这个进程完成的。而查询请求处理的流程为:解析SQL语句->分析处理->语句重写->查询优化->执行计划。所以,源码的核心部分也就在这个流程中。

安装过程

在官网上下载源码,并利用虚拟机在linux上进行安装调试,具体步骤与链接: 网页链接.调试过程安装了readline,zlib等多个库才完成。
在这里插入图片描述

在这里插入图片描述
(进行了数据库的创建并查看进程状态可知安装成功)

主要源码

经过小组分析我们认为核心代码在于src的backend文件夹中。因此接下来的工作都是对它来展开分析。
在这里插入图片描述
backend文件夹包含了所有的后端源码
在这里插入图片描述

  1. access文件夹包含各种存储访问方法、索引的实现。(重要)
  2. bootstrap文件夹为数据库初始化时调用方法。
  3. catalog文件夹为系统目录。
  4. commands文件夹为SQL命令。(重要)
  5. executor文件夹为执行器相关代码。(重要)
  6. foreign文件夹为FDW相关代码,使得用户可以通过SQL访问没有存储在数据库中的数据。(扩展)
  7. jit文件夹为Just-In-Time Compilation,为即时编译的相关代码,用于提高查询语句性能。(扩展)
  8. lib文件夹为通用函数。
  9. libpq文件夹为c/cpp的库函数,处理与客户端的通信。
  10. main文件夹为主程序。
  11. nodes文件夹为链表、节点等数据结构,以及相关的方法。(重要)
  12. optimizer文件夹为优化器相关代码。(重要)
  13. parser文件夹为编译器相关代码。(重要)
  14. partitioning文件夹为分片相关代码。(重要)
  15. po文件夹为语言文件配置。
  16. port文件夹为平台兼容性处理相关代码。
  17. postmaster文件夹为postmaster进程,以及相关辅助进程的代码。
  18. regex文件夹为正则处理相关代码。(重要)
  19. replication文件夹为有关流复制的相关代码。(重要)
  20. rewrite文件夹为规则与视图相关的重写处理。
  21. snowball文件夹为全文检索相关(语干处理)代码。
  22. statisics文件夹为收集统计信息相关代码,与估算相关。
  23. storage文件夹为管理各种类型存储系统相关代码。(重要)
  24. tcop文件夹为postgres服务进程的主要处理部分,即查询流程调用的相关代码。(重要)
  25. tsearch文件夹为全文检索。(扩展)
  26. utils文件夹为各种支持函数,如错误报告、各种初始化操作、内存管理等。

分工情况

根据查询处理的流程以及关系型数据库的核心功能,将任务分为四个部分。

  1. 查询的编译与执行
  2. 索引的建立与使用
  3. 事务和并发控制
  4. 存储管理

我的任务

我负责索引的建立与使用这一步部分的内容
首先来说PostgreSQL提供了多种索引类型,B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN。每一种索引类型使用了 一种不同的算法来适应不同类型的查询。默认情况下, CREATE INDEX命令创建适合于大部分情况的B-tree 索引。
PostgreSQL关于索引的建立和使用主要在backend的access文件夹中因此我的重点主要聚焦在该部分
在这里插入图片描述
其中各种存储访问方法(在各个子目录下)
common(共同函数)、gin (Generalized Inverted Index通用逆向索引)、gist (Generalized Search Tree通用索引)、 hash (哈希索引)、heap (heap的访问方法)、index (通用索引函数)、 nbtree (Btree函数)、transam (事务处理)
可见这几个文件下的源码是我研究的重点。我也初步确定根据索引的类型来进行分析源码,比较异同点。

分析方式

通过gdb调试了解函数调用过程,然后再深入阅读源码。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:59:57  更:2021-09-30 12:00:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:35:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码