首页
学习
活动
专区
工具
TVP
发布

王硕

专栏作者
45
文章
76401
阅读量
25
订阅数
PostgreSQL数据库透明数据加密概述
最近一段时间,一直在和PostgreSQL社区合作开发TDE(Transparent data encryption,透明数据加密)。研究了一些密码学相关的知识,并利用这些知识和数据库相结合。本文将会以数据库内核开发角度,从以下3个维度和大家讲述TDE。
王果壳
2019-09-30
2.6K0
PostgreSQL窗口函数分析
今天看了一下PostgreSQL row_number的实现过程。之前一直好奇窗口函数是什么,原理是什么,今天稍稍解惑。下面就以row_number为例进行介绍: 窗口函数:
王果壳
2019-09-06
1.3K0
PostgreSQL 10 流复制问题记录
参数设置为: listen_addresses = '*' max_connections = 110 wal_level = hot_standby max_wal_senders = 2 wal_
王果壳
2019-03-12
5770
PostgreSQL text类型短数据存储说明
发现text类型中的abc和def在数据文件表示为 09616263和09646566,查看代码可知text类型其实为varlena,他的结构为:
王果壳
2019-03-12
1.9K0
PostgreSQL的Page分析记录
14155641_oBuI.png        因为工作原因,最近看了一下数据库的存储相关代码,并且对《PostgreSQL数据库内核分析》、Bean_lee的帖子进行了学习。现在记录一下,以备后用。其中后半部分基本是Bean_lee原文修改的。        首先要知道的是,数据库存储是以数据文件的方式进行存储,在data/base/子目录内能看到一些以数字命名的文件,诸如:16948、16948_fsm、16948_vm等,其中16948一般是对应表的oid,但当表的数据文件被完全重写等情况时
王果壳
2018-07-06
9300
原 PostgreSQL的系统函数分析记录
PostgreSQL数据库中有许多内部函数,这次对系统表pg_proc以及函数代码进行分析记录(这里是针对9.3进行介绍的)。  一、数据库系统表pg_proc         数据库中所有内部函数信息都存储在系统表pg_proc.         内部函数都是在编译之前写好并存储在pg_proc.h文件中。         下面来看一下pg_proc的表结构,首先是看源码中的结构体: CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81
王果壳
2018-07-06
1.7K0
原 memmove 和 memcpy的区别
memcpy 和 memmove 都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const void *src, size_t count); void *memmove(void *dst, const void *src, size_t count);  他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。
王果壳
2018-07-06
1.1K0
原 PostgreSQL的基础数据类型分析记录
    前期,我参与了公司开发的数据库数据迁移工具的工作,以及之前的对Page的分析记录,在此进一步将数据库的数据类型做一下分析记录。     一、数据库系统表pg_type     PostgreSQL的所有数据类型都存储在系统表pg_type中。     pg_type的表结构如下(这里是从源码中进行介绍的,源码可以点击pg_type.h): CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO {
王果壳
2018-07-06
3.2K1
原 PostgreSQL的FSM分析记录
   近来由于工作原因对PG的FSM(Free Space Map,空闲空间映射表)源码进行了学习。下面给大家简单讲述一下。         什么是FSM呢,这不得不说一下PG的存储机制了。PG的更新(更新是删除和插入的结合)和删除都是将元组(数据库对我们插入的每一行数据封装后称为元组)标记为无效,而后通过VACUUM进行物理删除。无效的元组被删除后,若是不利用那么会造成存储的浪费,但是如果遍历一遍数据库文件块(Page),以此来找到合适的空闲空间,则会造成比较大的开销。所以,空闲空间映射表FSM就应运而
王果壳
2018-07-06
1K0
原 利用pgpool实现PostgreSQL的高可用
基于流复制的方式,两节点自动切换:     1、单pgpool         a.环境: pgpool:192.168.238.129 data1:192.168.238.130 data2:192.168.238.131         b.图例         c.配置互信 ssh-copy-id ha@node1 ssh-copy-id ha@node2         d.数据库节点配置,请参照《 使用pg_basebackup搭建PostgreSQL流复制环境 》。
王果壳
2018-06-21
2.2K0
原 PostgreSQL知识树
PostgreSQL使用并学习了7-8年了,最近在梳理PostgreSQL相关知识树,个人认为数据库由关系型存储关系以及事务两大基石构成的。其次为了易用性添加了通用工具以及管理功能。 在此将数据库分为四个部分。后续还会对数据库知识进行添加,上述图片有任何问题,欢迎随时提问,谢谢。 其次希望大家关注我的码云:https://gitee.com/wangguoke/PostgreSQL/wikis/PostgreSQL%20Knowledge%20Tree github:https://github.com/w
王果壳
2018-06-13
4980
原 Postgres-X2 MPP部署试验
MPP结构: 129 GTM节点, 130 coordinator、gtm_proxy、datanode(1、2、3)节点,131 coordinator、gtm_proxy、datanode(4、5、6) 配置文件: #parse mode MPP. #129 gtm, 130 coord1, gtmproxy1 and 3 datanodes, 131 coord2, gtmproxy2, 3 datanodes #user and path pgxcOwner=postgres pgxcU
王果壳
2018-05-17
1.1K0
原 Postgres-X2部署步骤
Postgre2015大象会,大家都很关注PostgreSQL的集群,目前,开发人员已经转向Postgres-X2,近期根据自己和同事部署xl的过程部署了一下Postgres-X2。本次部署试验是利用pgxc_ctl部署的,更加灵活的部署集群。 1、整体概括:     一共四个节点,一个gtm,一个coordinator,两个datanode。 a. GTM节点 IP:192.168.238.129 nodename:gtm port:6666 b.c
王果壳
2018-05-17
1.3K0
原 argc argv
通过以下例子来作说明: [root@localhost arg]# cat argtest.c  #include <stdio.h>//#包含<stdio.h> /* 整数类型主函数(整数类型统计参数个数,字符类型*数组指针至字符[]) */ int main(int argc,char* argv[]) { printf("%d\n",argc);//格式化输出 while(argc)//当(统计参数个数) printf("%s\n",argv[--argc]);//格式化输出 ret
王果壳
2018-05-17
9800
原 如何在联想Y430P安装Fedora24
1、制作U盘安装盘       问题:在Bios里有UEFI启动模式,这是微软针对市场的一种限制策略,幸好现在linux的发行版基本都支持UEFI了。我在尝试使用Universal-USB-Installe以及UltraISO均不能有效引导安装,使用UltraISO,甚至在bios里都看不到U盘;使用Universal-USB-Installe一直会提示Problem loading in-kernel x.509 certification,无法安装成功。       解决方法:使用Fedora官方
王果壳
2018-05-17
1.1K0
原 对于PostgreSQL中Datum的解释
Datum类型是PG系统函数大量引用的类型,其定义为: typedef uintptr_t Datum; typedef unsigned long long uintptr; 这里举一个比较简单的例子进行解释: Datum cstring_in(PG_FUNCTION_ARGS) { char   *str = PG_GETARG_CSTRING(0); PG_RETURN_CSTRING(pstrdup(str)); } /*  * cstring_out - output rout
王果壳
2018-05-17
2.1K0
原 PostgreSQL备份加密方法
本文加密方式是在利用pg_dump备份出文件后直接利用openssl进行文件加密。 1、生产密钥:      利用各种参数进行建立公私密钥,这里利用输入参数作为密钥生成的一部分,其他的可以手动添加,脚本如下: [sure@localhost bin]$ cat createpem.sh #!/bin/bash data="$1" openssl req -x509 -nodes -days 1000000 -newkey rsa:4096 -keyout backup_key.pem \ -
王果壳
2018-05-17
1.6K0
原 预处理符的粘合剂:##运算符
    ##运算符可以用于类函数宏的替换部分。另外,##还可以用于类型对象宏的替换部分。这个运算符把两个语言符号组合成单个语言符号。例如,可以定义如下的宏:     #define XNAME(n) x##n     这样,下面的宏调用:     XNAME(4)     会展开成下列形式:     x4     同样在PG中很多宏就利用了##。 #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_t
王果壳
2018-05-17
8290
原 手动搭建mediawiki平台以及迁移方法
1、环境介绍     虚拟机,OS:Centos6.4, 1G内存, 40G存储。 2、安装软件 yum install -y libxml2* apache* httpd* mysql mysql-server mysql-devel php*         选用mysql的原因是这个mediawiki在说明使用数据库时,有一个提示:对于PostgreSQL数据库有一些明显的小bug。 3、启动httpd、mysql service mysql start service http
王果壳
2018-05-17
1.8K0
原 在PostgreSQL中秒级完成大表添加带有not null属性并带有default值的实验
近期同事在讨论如何在PostgreSQL中一张大表,添加一个带有not null属性的,且具有缺省值的字段,并且要求在秒级完成。 因为此,有了以下的实验记录: 首先我们是在PostgreSQL 10下做的实验: postgres=# select version(); version ---------------
王果壳
2018-05-17
8.1K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档