为了账号安全,请及时绑定邮箱和手机立即绑定

docker已老, 函数式运维即未

标签:
Docker

ostgres-xl是个好东西?为什么呢?

postgres-xl基于postgresql数据库, postgres可以吊打很多数据库.

  1. 它可以搞oltp, 抗衡mysql, mysql没有分析函数功能

  2. 它可以搞oltp, 抗衡oracle, oracle生态弱, 没法实时

  3. 它对json支持好, 抗衡mongodb, mongodb用得人越来越少了。。。

  4. 它还恐怖地支持各种语言扩展, java, javascript, r, python, haskell。。。

  5. 并且开源免费,简单强大的没朋友。。。

postgres-xl是postgresql MPP集群版, 继续吊打大数据数据库...

  1. 它比greenpulm版本新: 它跟greenpulm本是一家人,都是MPP架构的postgresql集群
    但是原生改造, 版本基本上与postgresql一致, greenpulm的版本升不动啊。。。

  2. 它比oracle RAC/Teradata便宜,免费使用

  3. 它比hadoop省资源,没有GC,基于C语言资源利用率高,并且生态圈丰富,可视化方便

  4. 它出道早,版本稳定性强。

既然这么优秀,那么我们简单介绍一下。。。

postgres-xl分为以下组件:
a. gtm 负责全局事务
b. coordinator 处理分发执行
c. datanode 负责底层处理

datanode跟coordinator都 连接到gtm,
客户端连接到coordinator运行sql,
coordinator使用gtm进行一些事务功能分发给datanode执行

大致如此,了解得不深入,后续会深入学习,再做补充

一切就绪,现在我们开始正题,一键搭建postgres-xl集群。

项目源码:https://github.com/clojurians-org/my-env
部署脚本: run.sh.d/postgres-xl-example/{createvm.sh, package.sh, deploy.sh, start.sh}

  1. 创建虚拟机-createvm.sh

  2. 打包依赖-package.sh(打包依赖后即可离线拷贝部署)

  3. 部署集群-deploy.sh

  4. 启动集群-start.sh

  5. 测试集群

过程很简单,依次运行createvm.sh, package.sh, deploy.sh, start.sh即可

下面详细解解释一下发生了什么。

第0步, 创建虚拟机

[larluo@larluo-nixos:~/my-env]$ cat run.sh.d/postgres-xl-example/createvm.sh 
set -e
my=$(cd -P -- "$(dirname -- "${BASH_SOURCE-$0}")" > /dev/null && pwd -P) && cd $my/../..echo -e "\n==== bash nix.sh create-vm nixos-postgres-xl-001" && bash nix.sh create-vm nixos-postgres-xl-001echo -e "\n==== bash nix.sh create-vm nixos-postgres-xl-002" && bash nix.sh create-vm nixos-postgres-xl-002echo -e "\n==== bash nix.sh create-vm nixos-postgres-xl-003" && bash nix.sh create-vm nixos-postgres-xl-003

webp

image.png

第1步,打包依赖

[larluo@larluo-nixos:~/my-env]$ cat run.sh.d/postgres-xl-example/package.shset -e
my=$(cd -P -- "$(dirname -- "${BASH_SOURCE-$0}")" > /dev/null && pwd -P) && cd $my/../..echo -e "\n==== bash nix.sh build nix.postgres-xl-10.0" && bash nix.sh build nix.postgres-xl-10.0echo -e "\n==== bash nix.sh export tgz.nix-2.0.4" && bash nix.sh export tgz.nix-2.0.4echo -e "\n==== bash nix.sh export nix.rsync-3.1.3" && bash nix.sh export nix.rsync-3.1.3echo -e "\n==== bash nix.sh export nix.gettext-0.19.8.1" && bash nix.sh export nix.gettext-0.19.8.1

rsync是可选的(避免脚本多次运行scp多次),
这里的gettext依赖是为了启动脚本中使用envsubst命令替换环境变量

这里由于nix官方还没有支持postgres-xl,并且postgres-xl对系统底层库有依赖,我们不想使用root权限安装污染系统,所以自己编写nix构建脚本自动打包依赖

[larluo@larluo-nixos:~/my-env]$ cat nix.conf/postgres-xl-10.0/default.nix
{ fetchgit, stdenv, readline, zlib, perl, bison, flex, ... }:
stdenv.mkDerivation rec {
  name = "postgres-xl-${version}" ;
  version = "10.0" ;
  rev = "0e7174157b7762959089ab0dd508237679a301c8" ;

  buildInputs = [ readline zlib perl bison flex ];

  src = fetchgit {
    url= "git://git.postgresql.org/git/postgres-xl.git" ;
    rev = rev ;
    sha256 = "0nv8s4wyswfikb6pbmj9mq6qr8j7vc1d9nhkr6jmnymfkx4rwjxk" ;
  } ;
}

webp



作者:larluo
链接:https://www.jianshu.com/p/9d9642dce575


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消