zoukankan      html  css  js  c++  java
  • zombodb 低级api 操作

    zombodb 低级api 允许直接从zombodb 索引中进行insert、delete 文档,同时保留了mvcc 的特性,但是数据没有存储在
    pg 中,但是也带来数据上的风险,我们需要注意进行es 数据的备份

    api 说明

    FUNCTION zdb.llapi_direct_insert(index_name regclass, data json) RETURNS void
    FUNCTION zdb.llapi_direct_delete(index_name regclass, _id text) RETURNS void

    参考例子

    这是一个审计日志的功能,数据直接到es 中,而不用存储在pg 中

    • 表创建
    CREATE TABLE audit (
     id serial8 NOT NULL PRIMARY KEY,
     action_type char(2),
     username varchar(64),
     when_happened timestamp DEFAULT now(),
     description text
    );
    • 索引创建
    CREATE INDEX idxaudit 
                  ON audit 
               USING zombodb ((audit.*)) 
               WITH (llapi=true,url='http://elasticsearch:9200/');
    • 创建rule
      进行数据操作的处理规则定义
          CREATE RULE audit_rule 
     AS ON INSERT TO audit 
          DO INSTEAD (
               SELECT zdb.llapi_direct_insert('idxaudit', to_json(NEW))
          );
    • 数据添加操作
    INSERT INTO audit (action_type, username, description) 
         VALUES ('aa', 'someuser', 'this is the first audit entry');
    INSERT INTO audit (action_type, username, description) 
         VALUES ('qr', 'otheruser', 'this is the second audit entry');
    INSERT INTO audit (action_type, username, description) 
         VALUES ('zy', 'anotheruser', 'this is the third audit entry');
    • 数据查询
    select * from audit;
    数据为空,说明数据没有存储在pg 中

    es 信息查看,从es 中可以看出数据都存储在es 中

    • 使用zombodb api 查询数据
      聚合查询
    SELECT zdb.count('idxaudit', dsl.match_all()); count ;
    -[ RECORD 1 ]
    count | 3

    记录查询

    SELECT _id, 
           (source->>'id')::bigint AS id, 
           source->>'username' AS username, 
           source->>'action_type' AS action_type, 
           (source->>'when_happened')::timestamp AS timestamp, 
           source->>'description' AS description 
      FROM zdb.top_hits_with_id('idxaudit', ARRAY['*'], dsl.match_all(), 100);
    [ RECORD 1 ]-------------------------------
    _id | B8DQ22kBYb7kkl7X_khC
    id | 2
    username | otheruser
    action_type | qr
    timestamp | 2019-04-02 02:11:40.731217
    description | this is the second audit entry
    -[ RECORD 2 ]-------------------------------
    _id | BsDQ22kBYb7kkl7X_khC
    id | 1
    username | someuser
    action_type | aa
    timestamp | 2019-04-02 02:11:40.731217
    description | this is the first audit entry
    -[ RECORD 3 ]-------------------------------
    _id | CMDQ22kBYb7kkl7X_khC
    id | 3
    username | anotheruser
    action_type | zy
    timestamp | 2019-04-02 02:11:40.731217
    description | this is the third audit entry
    

    说明

    zombodb 提供的低级api 还是很有意义的,用来作为一个日志审计功能,同时较少了pg 数据的存储

    参考资料

    https://github.com/zombodb/zombodb/blob/master/LLAPI.md

  • 相关阅读:
    读写分离
    java并发集合知识点(二)
    jdbc框架有很多,包括spring jdbc
    多线程,势必涉及到共享对象读写问题
    <xliff:g>标签
    租赁市场的上海方(浦东/张江)
    HDU 3488Tour(流的最小费用网络流)
    sql使用存储过程和交易
    状态压缩动态规划 -- 骨牌
    Android-2手机应用程序,短信应用
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10640964.html
Copyright © 2011-2022 走看看