zombodb 低级api 操作
Posted rongfengliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于zombodb 低级api 操作的主要内容,如果未能解决你的问题,请参考以下文章
带有 postgres-xl 的 zombodb:“zombodb.so:未定义符号:session_auth_is_superuser”
pgspider zombodb+opendistro 集成
Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段