hasura graphql-engine 集成zombodb

zombodb 是一个很不错的pg 扩展,可以方便的把es 与pg 集成起来,使用方便 ,目前尽管有一些docker 镜像
但是版本都比较老,所以基于centos7 做了一个新的docker 镜像,同时基于view 的方式集成hasura graphql-engine

环境准备

docker image

  • dockerfile
FROM centos/postgresql-10-centos7
LABEL mail="1141591465@qq.com"
LABEL author="dalong"
COPY zombodb_centos7_pg10-10-1.0.3_1.x86_64.rpm /app/zombodb_centos7_pg10-10-1.0.3_1.x86_64.rpm
USER root
RUN rpm -Uvh /app/zombodb_centos7_pg10-10-1.0.3_1.x86_64.rpm
RUN cp -rf /usr/pgsql-10/share/extension/* /opt/rh/rh-postgresql10/root/usr/share/pgsql/extension
RUN cp /usr/pgsql-10/lib/zombodb.so /opt/rh/rh-postgresql10/root/lib64/pgsql/
USER postgres

说明
因为rpm 包安装的问题,上边的扩展需要重新copy 目录

docker-compose 环境

  • docker-compose 文件
version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.6.0
    ports: 
    - "9200:9200"
    environment:
      - http.host=0.0.0.0
      - transport.host=0.0.0.0
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
  postgresql_db:
    build: ./
    image: dalongrong/zombodb-postgresql-10-centos7
    ports:
    - "5432:5432"
    environment: 
    - "POSTGRESQL_ADMIN_PASSWORD=dalong"
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-alpha41
    ports:
    - "8080:8080"
    environment:
    - "POSTGRES_PASSWORD:dalong"
    command: >
      /bin/sh -c "
      graphql-engine --database-url postgres://postgres:dalong@postgresql_db:5432/postgres serve --enable-console;
      "

启动&&测试

构建镜像&&启动服务

  • 构建zombodb 镜像
docker-compose build
  • 启动服务
docker-compose up -d

测试zombodb 集成es

  • 创建扩展
CREATE EXTENSION zombodb;
  • 创建测试表
CREATE TABLE products (
    id SERIAL8 NOT NULL PRIMARY KEY,
    name text NOT NULL,
    keywords varchar(64)[],
    short_summary text,
    long_description zdb.fulltext, 
    price bigint,
    inventory_count integer,
    discontinued boolean default false,
    availability_date date
);
  • 创建索引

    注意使用的es 的地址,使用容器服务的

CREATE INDEX idxproducts ON products
                  USING zombodb ((products.*))
                   WITH (url='http://elasticsearch:9200/');
  • 导入数据
COPY products FROM PROGRAM 'curl https://raw.githubusercontent.com/zombodb/zombodb/master/TUTORIAL-data.dmp';
  • 查询
SELECT * FROM products WHERE products ==> 'sports box';

效果

2 Baseball {baseball,sports,round} It's a baseball Throw it at a person with a big wooden stick and hope they don't hit it 1249 2 FALSE 2015-08-21
4 Box {wooden,box,"negative space",square} Just an empty box made of wood A wooden container that will eventually rot away. Put stuff it in (but not a cat). 17000 0 TRUE 2015-07-01
  • es 界面

集成hasura graphql-engine

具体操作就是鼠标点击,对于hasura graphql-engine 的集成,通过view 方式,也可以基于dsl 查询的方式(实际上还是view)

  • 添加view 视图
create view zombodb_hg as
SELECT * FROM products WHERE products ==> 'sports box';
  • 添加graphql 支持
  • 查询

参考资料

https://www.cnblogs.com/rongfengliang/p/10635311.html
https://github.com/rongfengliang/zombodb-hasura-graphql
https://github.com/rongfengliang/zombodb-docker-image

posted on   荣锋亮  阅读(566)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-04-01 linux 磁盘挂载操作
2017-04-01 nginx 缓存处理
2016-04-01 jQuery.retryAjax
2015-04-01 C# 通用DataTable 拆分小表

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示