diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/FastDB 3.76 for openEuler 22.03 LTS\347\247\273\346\244\215\346\241\210\344\276\213.md" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/FastDB 3.76 for openEuler 22.03 LTS\347\247\273\346\244\215\346\241\210\344\276\213.md" deleted file mode 100644 index d8119394b68b9b33976d1a11c648de7a3ee03c87..0000000000000000000000000000000000000000 --- "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/FastDB 3.76 for openEuler 22.03 LTS\347\247\273\346\244\215\346\241\210\344\276\213.md" +++ /dev/null @@ -1,468 +0,0 @@ ---- -title: "FastDB-3.76-migrate" -date: 2023-02-08 -category: blog -tags: - - Fastdb - - porting Guide -sig: sig-Compatibility-Infra -archives: 2023-02 -author: bald -summary: "详细介绍了FastDB-3.76软件移植到openEuler操作系统的具体操作步骤" ---- - -# FastDB 3.76 for openEuler 22.03 LTS移植案例 - -## 介绍 - -FastDB 是高效的内存数据库系统,具备实时能力及便利的C++接口。FastDB不支持client-server 架构因而所有使用FastDB的应用程序必须运行在同一主机上。 - -FastDB针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一个使用数据库的应用数据库文件被 - -影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。FastDB中并发访问数据库的同步机制通过原子指令实现,几乎不增 - -加查询的开销。此外,FastDB没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。FastDB 支持事务、在线备份以及系统崩溃后的自动恢复。 - -事务提交协议依据一个影子根页面算法来自动更新数据库。恢复可以执行得非常快,为临界应用提供了高可用性。此外,取消事务日志改进了整个系统的性能,并 - -且使得可以更有效的利用系统资源。 - -**一句话描述**:分布式文件存储数据库。 - -建议使用版本为:FastDB 3.76 - -## 环境要求 - -### 硬件要求 - -| 项目 | 说明 | -| ---------- | ----------------------------- | -| 服务器名称 | TaiShan 200服务器(型号2280) | -| 处理器 | 鲲鹏920处理器 | -| 核数 | 2*48核 | -| 主频 | 2600MHz | -| 内存大小 | 128GB(4 * 32GB) | -| 网卡 | Hi1822 网卡 4*25G | - -### 操作系统和软件要求 - -| 项目 | 版本 | 说明 | 下载地址 | -| ------------ | -------------------------------------------------- | -------------------------- | --------------------------------------- | -| openEuler | OS: openEuler 22.03 LTS l Kernel: 4.19.90 | 待安装软件兼容的操作系统。 | | -| gcc gcc-c++ | - | 基础依赖项。 | 通过yum安装 | -| FastDB | 3.76 | 待安装的软件。 | http://www.garret.ru/fastdb-3.76.tar.gz | - -说明:如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。 - -## 配置yum源 - -如果环境上当前yum源已配置,则忽略本步骤。 - -本次测试环境操作系统为openEuler 22.03 (LTS),使用yum list查询默认已配置。 - -![](./media/image4.png) - - - -## 安装依赖包 - -- 执行以下命令安装基础依赖包。 - -``` -yum install -y gcc gcc-c++ wget tar -``` - - - -## 关闭防火墙 - -测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。 - -- 停止防火墙。 - -``` -systemctl stop firewalld.service -``` - -- 关闭防火墙。 - -``` -systemctl disable firewalld.service -``` - -- 查看防火墙。 - -``` -systemctl status firewalld.service -``` - -![](./media/image5.png) - - - -## 修改SELinux - -- 修改配置文件。 - -``` -sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config -``` - -- 查看SELinux状态,**disabled**即为设置成功。 - -``` -cat /etc/selinux/config -``` - -![](./media/image6.png) - - - -## 源码编译安装 - -- 获取FastDB源码。 - -- 在本地浏览器下载FastDB 3.76源码。 - -下载地址: - -- 将源码复制至服务器"/home"目录。 - -说明:若服务器可以访问网络,则可以直接在服务器上使用wget命令下载源码。 - -``` -cd /home -wget http://www.garret.ru/fastdb-3.76.tar.gz -``` - -- 进入"/home"目录。 - -``` -cd /home/ -``` - -- 解压FastDB安装包。 - -``` -tar -xvf fastdb-3.76.tar.gz -``` - -- 进入"fastdb"目录。 - -``` -cd fastdb -``` - -- 执行以下命令执行编译。 - -``` -./configure --prefix=/opt/fastdb --build=arm-linux -``` - -![](./media/image7.png) - -说明:PREFIX=PATH:指定fastdb的安装目录。 - -- 执行以下命令执行编译安装。 - -``` -make -j64 -``` - -![](./media/image8.png) - - - - -说明:如果编译安装过程中出现testtimeseries.cpp:70:53: error: call of overloaded 'fmin(float&, float&)' is ambiguous报错信息,请参考[故障排除-Make失败报错](#make失败报错)。 - -- 执行以下命令执行安装。 - -``` -make install -``` - -![](./media/image9.png) - -- 查看安装目录。 - -``` -ll /opt/fastdb -ll /opt/fastdb/bin -``` - -![](./media/image10.png) - - - -## 配置FastDB - -说明:如果操作过程中发现找不到fastdb相关库文件,需要按照以下操作配置库的路径。 - -- 添加fastdb动态库路径并使得立即生效。 - -``` -echo /opt/fastdb/lib/ >> /etc/ld.so.conf -ldconfig -``` - -![](./media/image11.png) - -- 查看是否生效。 - -``` -ldconfig -v | grep "fastdb" -``` - -![](./media/image12.png) - - - -## 验证FastDB - -- 执行以下命令初始化数据库并登录。 - -``` -cd /opt/fastdb/bin/ -./subsql -``` - -![](./media/image13.png) - -- 执行以下命令查看数据库常用操作。 - -``` -help -``` - -![](./media/image14.png) - -- 打开数据库\'testddl\'并查询当前数据库中表及其相关信息。 - -**\# 打开数据库testddl** - -```sql -open 'testddl'; -``` - -**\# 显示当前数据库的相关信息** - -```sql -show -``` - -**\# 查询表Metatable** - -```sql -select * from Metatable; -``` - -![](./media/image15.png) - -- 创建表Persons和表Animals并查看其表结构。 - -**\# 创建表Persons** - -```sql -create table Persons(identityID int4, name string, age int2); -``` - -**\# 查看表Persons结构** - -```sql -describe Persons; -``` - -**\# 创建表Animals** - -```sql -create table Animals(name string, age int2, voice string); -``` - -**\# 查看表Animals结构** - -```sql -describe Animals; -``` - -![](./media/image16.png) - -**\# 显示当前数据库的相关信息** - -```sql -show -``` - -![](./media/image17.png) - -- 插入表Persons和表Animals中相关数据。 - -**\# 插入表Persons** - -```sql -insert into Persons values(100001, 'andy', 22); - -insert into Persons values(100002, 'swen', 25); - -insert into Persons values(100003, 'tnia', 26); -``` - -**\# 插入表Animals** - -```sql -insert into Animals values( 'dog', 2, '汪汪'); - -insert into Animals values( 'sheep', 2, '咩咩'); - -insert into Animals values( 'duck', 2, '嘎嘎'); -``` - -![](./media/image18.png) - -- 查询当前表相关信息。 - -**\# 查询表Persons** - -```sql -select * from Persons; - -select * from Persons where name='andy'; -``` - -**\# 查询表Animals** - -```sql -select * from Animals; - -select * from Animals where voice='咩咩'; -``` - -![](./media/image19.png) - -- 更新当前表相关信息。 - -**\# 更新表Persons** - -```sql -update Persons set identityID=100005 where name='andy'; - -select * from Persons; -``` - -**\# 更新表Animals** - -```sql -update Animals set age=3 where name='duck'; -``` - -```sql -select * from Animals; -``` - -![](./media/image20.png) - -- 删除表相关信息并查看。 - -**\# 删除表Persons** - -```sql -drop table Persons; -``` - -**\# 删除表Animals** - -```sql -delete from Animals; -``` - -**\# 显示当前数据库的相关信息** - -```sql -show -``` - -**\# 查看表Persons结构** - -```sql -describe Persons; -``` - -**\# 查看表Animals结构** - -```sql -describe Animals; -``` - -![](./media/image21.png) - - - -drop: 主要用于删除数据结构,包括内部的数据内容。 - -delete:主要用于删除数据内容,不删除数据结构。 - -- 执行以下命令退出数据库。 - -```sql -exit -``` - -![](./media/image22.png) - - - -## 卸载 - -13. 关闭数据库进程(可选)。 - -``` -ps -ef | grep subsql - -pkill subsql -``` - -14. 源码编译安装只是生成对应的文件,所以直接删除对应的目录即可。 - -``` -rm -rf /opt/fastdb - -ll /opt/fastdb -``` - -![](./media/image23.png) - - - -## 故障排除 - -### Make失败报错 - -问题现象描述 - -fastdb执行make命令编译安装时报错。 - -![](./media/image24.png) - -关键过程、根本原因分析 - -分析原因是testtimeseries.cpp文件中的fmax函数和fmin函数与cmath中的函数名同名导致的报错,只需改变testtimeseries.cpp中函数名即可。 - -结论、解决方案及效果 - -- 执行vi命令打开examples/testtimeseries.cpp文件。 - -``` -vi examples/testtimeseries.cpp -``` - -- 在vi命令模式下,输入如下命令并保存。 - -``` -:%s/fmax/fmax_t/g -:%s/fmin/fmin_t/g -:wq -``` - -- 重新执行make编译即可。 - ------------------------------------------------------------------------ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" deleted file mode 100644 index 4ee81ee5284a311b2038b5c5cb7d23e48d834c23..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" deleted file mode 100644 index aab40421363223ae451807a9d9b60c0177a5cae4..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" deleted file mode 100644 index 70d746873031def105033d0d099572621a3f3aaf..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" deleted file mode 100644 index 97a085c183380a1f71b79b56189345863a2eef16..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" deleted file mode 100644 index a85715935d1409c1063634ac8c3e9c7d5efae243..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" deleted file mode 100644 index 343d6d88af0d40182d8f978416bf43c89aa7b618..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" deleted file mode 100644 index cd5f49be2fcf80c0772021337bab8cb2f82b1079..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" deleted file mode 100644 index 9b744e02f96bebf7beaca75ea9a57e6428563a08..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" deleted file mode 100644 index c58e15a7096bfb81daef41e66d345184a7ed6e5e..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" deleted file mode 100644 index b60f7951a6d9d0aba0f3480a62b65b45f738f3c9..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" deleted file mode 100644 index 1d9b7d14a39c4838bc60c2454051eb04c35db8ca..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" deleted file mode 100644 index d6420afa6096136f268206809c5cafd9ef9fac3c..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" deleted file mode 100644 index bcee4415d37147070d470bbad4fb6b55541d0b8e..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" deleted file mode 100644 index fa0f3517a47f6c8b884467f74dd4dab8bfbae070..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" deleted file mode 100644 index b0bec095bf510c3e3f8e3989034a5a82e9b227a6..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" deleted file mode 100644 index 48f6b563a801ba72e19ef92ed6ac6debb92697fa..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" deleted file mode 100644 index f50e9e4d1c6144ae6529842a7b31305891b257ba..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" deleted file mode 100644 index 5a2054913e88697e6798abbae7a2955fddbf08d9..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" deleted file mode 100644 index 8d7bbc260bd1b70a3adc8a084bf1f0a65ad5afa1..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" and /dev/null differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" "b/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" deleted file mode 100644 index 7a2918dce265fe3d002f128be4d94fb594c7003c..0000000000000000000000000000000000000000 Binary files "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" and /dev/null differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/Greenplum 6.12.1 for openEuler 20.03 SP1 LTS \347\247\273\346\244\215\346\214\207\345\215\227.md" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/Greenplum 6.12.1 for openEuler 20.03 SP1 LTS \347\247\273\346\244\215\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..0afe2a5b0e4782e3b78c8926378ba35b154b2105 --- /dev/null +++ "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/Greenplum 6.12.1 for openEuler 20.03 SP1 LTS \347\247\273\346\244\215\346\214\207\345\215\227.md" @@ -0,0 +1,1047 @@ +--- +title: "Greenplum 6.12.1-migrate" +date: 2023-02-16 +category: blog +tags: + - Greenplum + - porting Guide +sig: sig-Compatibility-Infra +archives: 2023-02 +author: bald +summary: "详细介绍了Greenplum 6.12.1软件移植到openEuler操作系统的具体操作步骤" +--- + +# Greenplum 6.12.1 for openEuler 20.03 SP1 LTS编译指南 + +## 介绍 + +Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。本质上讲Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。与RAC不同,这种数据库集群采取的是MPP(Massively Parallel Processing)架构。关于Greenplum的更多信息请访问Greenplum官网。 + +一句话描述:分布式关系型数据库。 + +**建议的版本** + +建议使用的版本为"Greenplum 6.12.1"。 + +![](./media/image1.png)**说明** + +本文档适用于Greenplum 6.12.1,其他版本的Greenplum编译步骤可参考本文档。 + +## 环境要求 + +### 硬件要求 + +| **项目** | **说明** | +| -------- | ------------------------------------------------------------ | +| 服务器 | TaiShan 200 服务器(型号2280) | +| CPU | 华为鲲鹏920处理器 | +| 硬盘 | 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。 非性能测试时,直接在系统盘上建数据目录即可。 具体硬盘数量根据实际需求配置。 | + +### 操作系统要求 + +| **项目** | **版本** | +| --------- | --------------------- | +| openEuler | 20.03 SP1 LTS for ARM | + +![](./media/image1.png)**说明** + +如果是全新安装操作系统,可选择"Minimal Install"安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。 + +### 软件要求 + +| **项目** | **下载地址** | **版本** | +| --------- | ------------------------------------------------------------ | -------- | +| Greenplum | https://codeload.github.com/greenplum-db/gpdb/tar.gz/refs/tags/6.12.1 | 6.12.1 | + +------------- ----------------------------------------------------------------------- ------------------ + +## 配置安装环境 + +### 关闭防火墙并取消开机自启动 + +![](./media/image1.png)**说明** + +测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。 + +**步骤1 停止防火墙。** + +``` + systemctl stop firewalld.service +``` + +**步骤2 关闭防火墙。** + +``` + systemctl disable firewalld.service +``` + +![](./media/image1.png)**说明** + +执行disable命令关闭防火墙的同时,也取消了开机自启动。 + +**步骤3 查看防火墙。** + +``` +systemctl status firewalld.service +``` + +> ![](./media/image2.png) + +### 修改SELINUX 为disabled + +**步骤1 修改配置文件。** + +``` + sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config + cat /etc/selinux/config +``` + +![](./media/image3.png) + + + +### 修改系统配置 + +**步骤1 编辑/etc/security/limits.conf配置文件,增加配置。** + +``` + vi /etc/security/limits.conf + + * soft nofile 65536 + * hard nofile 65536 + * soft nproc 131072 + * hard nproc 131072 +``` + +​ + +### 优化内核参数 + +**步骤1 编辑/etc/sysctl.conf配置文件,增加配置。** + +``` + vi /etc/sysctl.conf + kernel.shmmax = 500000000 + kernel.shmmni = 4096 + kernel.shmall = 4000000000 + kernel.sem = 250 512000 100 2048 + kernel.sysrq = 1 + kernel.core_uses_pid = 1 + kernel.msgmnb = 65536 + kernel.msgmax = 65536 + kernel.msgmni = 2048 + net.ipv4.tcp_max_syn_backlog = 4096 + net.ipv4.ip_local_port_range = 1025 65535 + net.core.netdev_max_backlog = 10000 + net.core.rmem_max = 2097152 + net.core.wmem_max = 2097152 + vm.overcommit_memory = 2 +``` + +**步骤2 配置生效。** + +``` + sysctl -p +``` + +![](./media/image4.png) + + + +### 搭建数据盘 + +**步骤1 创建分区(以/dev/sda为例,根据实际情况创建)。** + +``` +fdisk /dev/sda +``` + +1.输入字母p打印分区表,按回车可以打印出当前的分区。 + +2.输入字母n添加一个新的分区,按回车确认。 + +3.输入数字1(作为第一块主分区)创建新的分区,按回车确认。 + +4.设置选择分区start值,采用默认配置,按回车确认。 + +5.设置选择分区end值,采用默认配置,按回车确认。 + +6.输入字母p查看最新分区表,按回车可以打印出当前的分区。 + +7.输入w将最新分区表保存至磁盘中,按回车保存。 + +![](./media/image5.png) + +![](./media/image6.png) + + + +**步骤2 针对新创建的分区创建文件系统(以xfs为例,根据实际需求创建文件系统)。** + +``` + mkfs.xfs -f /dev/sda1 +``` + +![](./media/image7.png) + +**步骤3 挂载分区到"/data"。** + +``` + mkdir /data + mount /dev/sda1 /data +``` + +**步骤4 编辑"/etc/fstab"使重启后自动挂载数据盘。** + +``` + vi /etc/fstab + /dev/sda1 /data xfs defaults 1 2 +``` + +![](./media/image1.png)**说明** + +如下图中,添加最后一行内容。其中,/dev/sda1为示例,具体名称以实际情况为准。 + +![](./media/image8.png) + + + +### 创建组和用户 + +![](./media/image1.png)**说明** + +服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。创建的组和用户都是操作系统层面的,不是数据库层面的。 + +**步骤1 创建mysql用户(组)。** + +``` + groupadd gpadmin + useradd -g gpadmin gpadmin +``` + +**步骤2 设置mysql用户密码。** + +``` + passwd gpadmin +``` + +重复输入密码(根据实际需求设置密码)。 + +![](./media/image9.png) + + + +### 创建数据库目录并且授权 + +**步骤1 创建数据目录/data和进程所需的相关目录。** + +``` + mkdir -p /data/gpdb/segdata + mkdir -p /data/gpdb/master +``` + +**步骤2** 数据目录授权gpadmin用户和组。 + +``` + chown -R gpadmin:gpadmin /data/gpdb/segdata + chown -R gpadmin:gpadmin /data/gpdb/master +``` + +![](./media/image10.png) + + + +## 配置编译环境 + +**安装依赖包** + +``` +yum -y install cmake gcc gcc-c++ curl-devel bzip2-devel python python-devel openssl-devel readline-devel perl-ExtUtils-Embed libxml2-devel openldap-devel pam pam-devel perl-devel apr-devel libevent-devel libyaml libffi-devel libzstd-devel bison flex libyaml-devel libedit-devel flex-devel git autoconf automake libtool +``` + + + +## 安装python依赖包 + +### 安装 setuptools + +**步骤1 下载setuptools依赖包。** + +``` + cd /opt + wget https://codeload.github.com/pypa/setuptools/tar.gz/refs/tags/v29.0.1 +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf v29.0.1 +``` + +**步骤3 安装setuptools。** + +``` + cd setuptools-29.0.1 + python bootstrap.py + python setup.py install +``` + +![](./media/image11.png) + + + +### 安装 psutil + +**步骤1 下载psutil依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/e1/b0/7276de53321c12981717490516b7e612364f2cb372ee8901bd4a66a000d7/psutil-5.8.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf psutil-5.8.0.tar.gz +``` + +**步骤3 安装psutil。** + +``` + cd psutil-5.8.0 + python setup.py install +``` + +![](./media/image12.png) + + + +### 安装 pbr + +**步骤1 下载pbr依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/35/8c/69ed04ae31ad498c9bdea55766ed4c0c72de596e75ac0d70b58aa25e0acf/pbr-5.6.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf pbr-5.6.0.tar.gz +``` + +**步骤3 安装pbr。** + +``` + cd pbr-5.6.0 + python setup.py install +``` + +![](./media/image13.png) + + + +### 安装lockfile + +**步骤1 下载lockfile依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf lockfile-0.12.2.tar.gz +``` + +**步骤3 安装lockfile。** + +``` + cd lockfile-0.12.2 + python setup.py install +``` + +![](./media/image14.png) + + + +### 安装pycparser + +**步骤1 下载pycparser依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/0f/86/e19659527668d70be91d0369aeaa055b4eb396b0f387a4f92293a20035bd/pycparser-2.20.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf pycparser-2.20.tar.gz +``` + +**步骤3 安装pycparser。** + +``` + cd pycparser-2.20 + python setup.py install +``` + +![](./media/image15.png) + + + +### 安装cffi + +**步骤1 下载cffi依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/00/9e/92de7e1217ccc3d5f352ba21e52398372525765b2e0c4530e6eb2ba9282a/cffi-1.15.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf cffi-1.15.0.tar.gz +``` + +**步骤3 安装cffi。** + +``` + cd cffi-1.15.0 + python setup.py install +``` + +![](./media/image16.png) + + + +### 安装six + +**步骤1 下载six依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf six-1.16.0.tar.gz +``` + +**步骤3 安装six。** + +``` +cd six-1.16.0 +python setup.py install +``` + +![](./media/image17.png) + + + +### 安装bcrypt + +**步骤1 下载bcrypt依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/d8/ba/21c475ead997ee21502d30f76fd93ad8d5858d19a3fad7cd153de698c4dd/bcrypt-3.2.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` +tar -xvf bcrypt-3.2.0.tar.gz +``` + +**步骤3 安装bcrypt。** + +``` +cd bcrypt-3.2.0 +python setup.py install +``` + +![](./media/image18.png) + + + +### 安装PyNaCl + +**步骤1 下载PyNaCl依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/cf/5a/25aeb636baeceab15c8e57e66b8aa930c011ec1c035f284170cacb05025e/PyNaCl-1.4.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` +tar -xvf PyNaCl-1.4.0.tar.gz +``` + +**步骤3 安装PyNaCl。** + +``` +cd PyNaCl-1.4.0 +python setup.py install +``` + +![](./media/image19.png) + + + +### 安装ipaddress + +**步骤1 下载ipaddress依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9/ipaddress-1.0.23.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf ipaddress-1.0.23.tar.gz +``` + +**步骤3 安装ipaddress。** + +``` + cd ipaddress-1.0.23 + python setup.py install +``` + +![](./media/image20.png) + + + +### 安装enum34 + +**步骤1 下载enum34依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/11/c4/2da1f4952ba476677a42f25cd32ab8aaf0e1c0d0e00b89822b835c7e654c/enum34-1.1.10.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf enum34-1.1.10.tar.gz +``` + +**步骤3 安装enum34。** + +``` + cd enum34-1.1.10 + python setup.py install +``` + +![](./media/image21.png) + + + +### 安装cryptography + +**步骤1 下载cryptography依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/be/60/da377e1bed002716fb2d5d1d1cab720f298cb33ecff7bf7adea72788e4e4/cryptography-2.8.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` +tar -xvf cryptography-2.8.tar.gz +``` + +**步骤3 安装cryptography。** + +``` +cd cryptography-2.8 +python setup.py install +``` + +![](./media/image22.png) + + + +### 安装paramiko + +**步骤1 下载paramiko依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/dd/67/6b3a5f3d730b15b5ff77d13e6f05f9189ae44d8a8bad4967d16694eaac8b/paramiko-2.8.0.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf paramiko-2.8.0.tar.gz +``` + +**步骤3 安装paramiko。** + +``` + cd paramiko-2.8.0 + python setup.py install +``` + +![](./media/image23.png) + + + +### 安装epydoc + +**步骤1 下载epydoc依赖包。** + +``` +cd /opt +wget https://files.pythonhosted.org/packages/60/a7/666cb415b0f5d8d5c99f145e03a6005220090d7b77637871ac52c2cabcba/epydoc-3.0.1.tar.gz +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf epydoc-3.0.1.tar.gz +``` + +**步骤3 安装epydoc。** + +``` + cd epydoc-3.0.1 + python setup.py install +``` + +![](./media/image24.png) + + + +### 安装xerces + +**步骤1 下载xerces依赖包。** + +``` + cd /opt + wget https://codeload.github.com/greenplum-db/gp-xerces/tar.gz/refs/tags/v3.1.2-p1 +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` +tar -xvf v3.1.2-p1 +``` + +**步骤3 编译安装xerces。** + +``` + cd gp-xerces-3.1.2-p1 + ./configure +``` + +![](./media/image25.png) + + + +``` + make -j `nproc` +``` + +![](./media/image26.png) + + make install + +![](./media/image27.png) + +**步骤4 设置环境变量,加载动态库**。 + +``` + vi /etc/profile +``` + + #在文件末尾追加下面的内容 + +``` + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib +``` + + #使环境变量生效 + +``` + source /etc/profile +``` + + + +### 安装re2c + +**步骤1 下载re2c依赖包。** + +``` + cd /opt + wget https://codeload.github.com/skvadrik/re2c/tar.gz/refs/tags/2.0.3 +``` + +**步骤2 将软件包上传至服务器"/opt"目录中并解压。** + +``` + tar -xvf 2.0.3 +``` + +**步骤3 编译安装re2c。** + +``` + cd re2c-2.0.3 + ./autogen.sh + ./configure + make -j `nproc` +``` + +![](./media/image28.png) + +``` + make install +``` + +![](./media/image29.png) + + + +## 编译安装 + +### 源码安装 + +**步骤1 获取Greenplum源码包。** + +``` + cd /home/ + wget https://codeload.github.com/greenplum-db/gpdb/tar.gz/refs/tags/6.12.1 + tar -xvf 6.12.1 + cd gpdb-6.12.1 +``` + +![](./media/image30.png) + +![](./media/image31.png) + +**步骤2 编译安装Greenplum** + +![](./media/image1.png)**说明** + +编辑/home/gpdb-6.12.1/src/backend/gporca/libgpos/include/gpos/utils.h,修改部分内容如下: + +将23行和24行的movq指令进行替换。 + +``` +vi /home/gpdb-6.12.1/src/backend/gporca/libgpos/include/gpos/utils.h +#define GPOS_ASMFP __asm__( \ + "mov x0, xzr\n\t" \ + "mov x1, %[ARG0_64]\n\t" \ + "b .Lfunc_end_kpt_1\n\t" \ + ".Lfunc_end_kpt_1:\n\t" \ + : \ + :[ARG0_64]"r"(&ulp) \ + :"x0", "x1" \ + ); +#define GPOS_ASMSP __asm__( \ + "mov x0, xzr\n\t" \ + "mov x1,%[ARG0_64]\n\t" \ + "sub x8, sp, #1024\n\t" \ + "str x8, [x1]\n\t" \ + "b .Lfunc_end_kpt_2\n\t" \ + ".Lfunc_end_kpt_2:\n\t" \ + : \ + :[ARG0_64]"r"(&ulp) \ + :"x0", "x1" \ + ); + +``` + + + +![](./media/image32.png) + +``` +./configure --with-perl --with-python --with-libxml --prefix=/usr/local/gpdb +``` + +![](./media/image33.png) + +``` +make -j `nproc` +``` + +![](./media/image34.png) + +``` + make install +``` + +![](./media/image35.png) + + + +## 运行 + +**步骤1 进行数据库基础准备。** + +1.安装net-tools工具。 + +``` + yum install -y net-tools +``` + +2.加载动态库。 + +``` +echo /usr/local/lib >/etc/ld.so.conf +ldconfig +``` + +3.修改主机名为master,如果已修改,不需要重复修改。 + +``` +hostname master +echo master > /etc/hostname +``` + +logout退出登录,重新连接后生效。 + +![](./media/image36.png) + +4.将主机名的map写入到"/etc/hosts"中,具体IP地址和主机名以实际情况为准。 + +``` +echo 192.18.10.4 master >>/etc/hosts +``` + +5.创建集群主机配置文件。 + +``` +echo master >> /data/gpdb/hostfile +``` + +**步骤2 进行数据库初始化。** + +1.切换至gpadmin用户。 + +``` + su - gpadmin +``` + +2.配置环境变量。 + +``` +source /usr/local/gpdb/greenplum_path.sh +export PGPORT=5432 +export MASTER_DATA_DIRECTORY=/data/gpdb/master/gpseg-1 +``` + +3.配置集群节点间互信。 + +``` +gpssh-exkeys -h 'master' +``` + +![](./media/image37.png) + +4.创建初始化配置文件init.config。 + +``` +vi init.config +添加如下内容: +ARRAY_NAME="Greenplum Cluster" +SEG_PREFIX=gpseg +PORT_BASE=40000 +declare -a DATA_DIRECTORY=(/data/gpdb/segdata /data/gpdb/segdata) +MASTER_HOSTNAME=master +MASTER_DIRECTORY=/data/gpdb/master +MASTER_PORT=5432 +TRUSTED_SHELL=ssh +CHECK_POINT_SEGMENTS=8 +ENCODING=UNICODE +DATABASE_NAME=gpdb +MACHINE_LIST_FILE=/data/gpdb/hostfile +``` + +5.执行初始化命令。 + +``` +gpinitsystem -c init.config -a +``` + +![](./media/image38.png) + +![](./media/image39.png) + +6.查看postgres + +``` +ps -ef | grep postgres +``` + +![](./media/image40.png) + +7.停止postgres进程。 + +``` +pkill postgres +``` + +**步骤3 gp基本功能验证。** + +1.启动Greenplum数据库。 + +``` +gpstart -a +``` + +![](./media/image41.png) + +2.查看mirror的状态。 + +``` +gpstate -e +``` + +![](./media/image42.png) + +3.查看standby master的状态。 + +``` +gpstate -f +``` + +![](./media/image43.png) + +4.查看整个GP的版本。 + +``` +gpstate -i +``` + +![](./media/image44.png) + +5.关闭Greenplum数据库。 + +``` + gpstop -a +``` + +![](./media/image45.png) + +**步骤4 psql基本操作验证。** + +1.启动Greenplum数据库。 + +``` +gpstart -a +``` + +![](./media/image41.png) + +2.连接数据库。 + +``` +psql -d postgres +``` + +![](./media/image46.png) + +postgres是gp默认创建的数据库。 + +![](./media/image1.png)**说明** + +可以使用psql -d \<数据库\>连接已经创建好的数据库。 + +3.创建greenplum database。 + +``` +create database greenplum; +``` + +![](./media/image47.png) + +4.切换数据库greenplum。 + +``` +\c greenplum; +``` + +![](./media/image48.png) + +5.创建数据表。 + +``` +CREATE TABLE tab_gp (id integer PRIMARY KEY,name varchar,age integer,version varchar) DISTRIBUTED BY (id); +``` + +![](./media/image49.png) + +6.插入数据。 + +``` +insert into tab_gp (id,name,age,version) values (1,'gp',5,'6.12.1'); +``` + +![](./media/image50.png) + +7.查看tab_gp表。 + +``` +select * from tab_gp; +``` + +![](./media/image51.png) + +8.删除数据。 + +``` +delete from tab_gp where name='gp'; +``` + +![](./media/image52.png) + +9.查看tab_gp表。 + +``` +select * from tab_gp; +``` + +![](./media/image53.png) + +10.删除表格。 + +``` +drop table tab_gp; +``` + +![](./media/image54.png) + +11.退出数据库。 + +``` +\q +``` + +![](./media/image55.png) + +12.关闭数据库。 + +``` +gpstop -a +``` + +![](./media/image56.png) + diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image1.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image1.png" new file mode 100644 index 0000000000000000000000000000000000000000..04523ba8d653c89d1a2afa33286ff1d867a98ccd Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image1.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" new file mode 100644 index 0000000000000000000000000000000000000000..37c3441a58b7888670a50aba189fbfb335eef206 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image10.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" new file mode 100644 index 0000000000000000000000000000000000000000..7778cada86b13b9f5fb369788118ba16019d7663 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image11.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" new file mode 100644 index 0000000000000000000000000000000000000000..a6c35c3528cc4654c689bdb31d68babac37e7d2d Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image12.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" new file mode 100644 index 0000000000000000000000000000000000000000..5afeb0a172458c87b5d5416c17ac7c1fe06029bb Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image13.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" new file mode 100644 index 0000000000000000000000000000000000000000..b61fb55c131bf5ada940853988d588c86358fe85 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image14.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" new file mode 100644 index 0000000000000000000000000000000000000000..713742a7c0cecee362e1016062cf539c907338e5 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image15.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" new file mode 100644 index 0000000000000000000000000000000000000000..a3454a1ba896c853b6fc7f9da8cfa4d46eb6db51 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image16.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" new file mode 100644 index 0000000000000000000000000000000000000000..b3e54e9e29d713d2e5ebeea015ea452c6249914f Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image17.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" new file mode 100644 index 0000000000000000000000000000000000000000..25e808296d617162a516b50072fdd8c4e8b7fc4c Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image18.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" new file mode 100644 index 0000000000000000000000000000000000000000..4f78a24bc47029d8e40663deb7a90e96ad2de377 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image19.png" differ diff --git "a/app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image5.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image2.png" similarity index 100% rename from "app/zh/blog/20230207-fastdb-openEuler\347\247\273\346\244\215\346\241\210\344\276\213/media/image5.png" rename to "app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image2.png" diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" new file mode 100644 index 0000000000000000000000000000000000000000..ecd23cab48310a1dc277d2a7979b9c2e5e4bcf1c Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image20.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" new file mode 100644 index 0000000000000000000000000000000000000000..cd312e038b259338948d5de27fa6dfa57697f25c Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image21.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" new file mode 100644 index 0000000000000000000000000000000000000000..325a5c015d1e3c2126ac54521b3a192e0665d071 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image22.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" new file mode 100644 index 0000000000000000000000000000000000000000..b63677bd3602768f4b669767898903ae10630d0e Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image23.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" new file mode 100644 index 0000000000000000000000000000000000000000..71efe273388e9b2913cee53fa61ff227717847ac Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image24.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image25.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image25.png" new file mode 100644 index 0000000000000000000000000000000000000000..d10741ce4830547f7aa38f79ab0bb869c0f76721 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image25.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image26.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image26.png" new file mode 100644 index 0000000000000000000000000000000000000000..151e5b92d51190fd12398cd314fb954238689fed Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image26.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image27.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image27.png" new file mode 100644 index 0000000000000000000000000000000000000000..8a119d7867d8f1e89b1abe514e8518173936b633 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image27.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image28.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image28.png" new file mode 100644 index 0000000000000000000000000000000000000000..de1c7e48635c1a23ea19245a9f0bbaf3730615bd Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image28.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image29.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image29.png" new file mode 100644 index 0000000000000000000000000000000000000000..c0b447cd15de902047cfd8397f2af0a622300d16 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image29.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image3.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image3.png" new file mode 100644 index 0000000000000000000000000000000000000000..37b67369570fb63d7bb3ee076f2f2b7e18bcb2e7 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image3.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image30.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image30.png" new file mode 100644 index 0000000000000000000000000000000000000000..3c56257eacb4d8cad1f42bbd0c8b3dea5d5cf47f Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image30.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image31.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image31.png" new file mode 100644 index 0000000000000000000000000000000000000000..39b7e291354c56816d37b31bbbf7e08314b0a542 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image31.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image32.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image32.png" new file mode 100644 index 0000000000000000000000000000000000000000..9ca938475e98e4d0f6c9617e811c9a1923c2086b Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image32.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image33.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image33.png" new file mode 100644 index 0000000000000000000000000000000000000000..e23ce70855d24e7a55647616864e9ff622906800 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image33.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image34.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image34.png" new file mode 100644 index 0000000000000000000000000000000000000000..ac9e734b50628dfcecf1024e66e55ac0ac8c60d5 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image34.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image35.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image35.png" new file mode 100644 index 0000000000000000000000000000000000000000..4167a7ffb46fa292b6c8cafc06a354d79067fb0a Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image35.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image36.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image36.png" new file mode 100644 index 0000000000000000000000000000000000000000..8af82b79038433416be24afd36c69d370576621f Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image36.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image37.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image37.png" new file mode 100644 index 0000000000000000000000000000000000000000..d789a5fd47b7729be6cdcd312dedb41852a40ffc Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image37.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image38.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image38.png" new file mode 100644 index 0000000000000000000000000000000000000000..3354391d825033405ac9345bae2656e666e4bac9 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image38.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image39.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image39.png" new file mode 100644 index 0000000000000000000000000000000000000000..2d21a5ba9080e4b05a3cc0a5e1290b7f8258b3d2 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image39.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" new file mode 100644 index 0000000000000000000000000000000000000000..c97b4f2f179a9f3cbfe667ff5092e0b39f564799 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image4.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image40.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image40.png" new file mode 100644 index 0000000000000000000000000000000000000000..993fee7350d35ffee1158671fcfd684bb5ba9ee7 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image40.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image41.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image41.png" new file mode 100644 index 0000000000000000000000000000000000000000..ceefa4cdc9ee61a07f0fca2783fc616fe55b984b Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image41.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image42.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image42.png" new file mode 100644 index 0000000000000000000000000000000000000000..5f891919cd490f11b10a863eee21d01698628e56 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image42.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image43.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image43.png" new file mode 100644 index 0000000000000000000000000000000000000000..7e8731c6a0630dd0d5da0b8aa233909433dffcce Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image43.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image44.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image44.png" new file mode 100644 index 0000000000000000000000000000000000000000..cfa842a74306158fdc0a2bc519dd4314f97fd1f9 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image44.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image45.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image45.png" new file mode 100644 index 0000000000000000000000000000000000000000..5281d4b19de4e30d6370afe7aa7abe956ce0de35 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image45.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image46.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image46.png" new file mode 100644 index 0000000000000000000000000000000000000000..139bf42d38cadc8c28f5ed604bb539218f61c54c Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image46.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image47.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image47.png" new file mode 100644 index 0000000000000000000000000000000000000000..4251d678c840c019eaa627ed9ea06f236ea91100 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image47.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image48.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image48.png" new file mode 100644 index 0000000000000000000000000000000000000000..a16fbaf5f6ebaa3a63f65a95f5c95abea89257a8 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image48.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image49.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image49.png" new file mode 100644 index 0000000000000000000000000000000000000000..6288a132a238ef1091a22da7eb044dd289efc449 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image49.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image5.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image5.png" new file mode 100644 index 0000000000000000000000000000000000000000..f488c36443adbefd6a93f556688b66d539c36ace Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image5.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image50.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image50.png" new file mode 100644 index 0000000000000000000000000000000000000000..67b183d15ed8529b43dbccd46fcf0d4fc5d7cfe8 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image50.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image51.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image51.png" new file mode 100644 index 0000000000000000000000000000000000000000..f6e06f0c6931e39775174341b58b5a6ecf08a393 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image51.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image52.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image52.png" new file mode 100644 index 0000000000000000000000000000000000000000..acb309298919f3bc207d9539139a6c12847f9c0e Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image52.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image53.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image53.png" new file mode 100644 index 0000000000000000000000000000000000000000..54449009e174d5cfe3cce0e61731fcf4c002629a Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image53.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image54.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image54.png" new file mode 100644 index 0000000000000000000000000000000000000000..261d1cf05868c1e07f9f91c0ed32a0ff0a36957b Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image54.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image55.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image55.png" new file mode 100644 index 0000000000000000000000000000000000000000..fff20cafe7c1d7c516436f6a42814f575b1e8db9 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image55.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image56.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image56.png" new file mode 100644 index 0000000000000000000000000000000000000000..23b6af3c413f9d2bb5e83b371f8b59af5d74cbb6 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image56.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" new file mode 100644 index 0000000000000000000000000000000000000000..43e9fd8dbe60ba45bcbadd73bd85255543242057 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image6.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" new file mode 100644 index 0000000000000000000000000000000000000000..6a2363c63f0d02228978a804ffde4bedf35743e3 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image7.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" new file mode 100644 index 0000000000000000000000000000000000000000..8f396ad9a2e61dba1f506ea4a0eb4f62072064a0 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image8.png" differ diff --git "a/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" new file mode 100644 index 0000000000000000000000000000000000000000..cef60f2f3e52a1aac5bc64a14ebc4cc758cfa155 Binary files /dev/null and "b/app/zh/blog/20230216-Greenplum\347\247\273\346\244\215\346\241\210\344\276\213/media/image9.png" differ