文档章节

postgresql 数据库中间件 pgoneproxy 实现冷热数据分离查询(二)

harris2016
 harris2016
发布于 2016/07/19 11:27
字数 754
阅读 230
收藏 2

    在前一篇《postgresql中间件pgoneproxy支持冷热数据分离查询》中讲解了按照id来进行数据的分离,针对时间至少稍微的提了一下。本篇这专门针对时间来进行讲解和测试下。

    在我的数据库中新建了一张表bigtest,其中字段情况如下所示:

            Table "public.bigtest_0"
 Column |            Type             | Modifiers 
--------+-----------------------------+-----------
 id     | integer                     | 
 name   | character varying(1024)     | 
 age    | integer                     | 
 tt     | timestamp without time zone | 

现在按照tt字段来进行数据的分离插入和查询。下面是bigtest表的分表的配置情况:

{
        "table"  : "bigtest",
        "pkey"   :  "tt",
        "type"   :  "timestamp",
        "method" :  "buffer",
        "partitions":
        [
                {"suffix":"_0", "group":"data1", "minval":"2004-01-01 00:00:00", "maxval":"2015-01-01 00:00:00"},
                {"suffix":"_1", "group":"data1", "minval":"2015-01-01 00:00:01","maxval":"2037-01-01 00:00:00"}
        ]
}

  从上面配置可以看出,时间在2004-01-01 00:00:00~2015-01-01 00:00:00的数据存放到bigtest_0的表中,时间在2015-01-01 00:00:01 ~2037-01-01 00:00:00的数据存放到bigtest_1的表中。

  在配置好pgoneproxy的proxy-part-tables选项后,启动中间件pgoneproxy。进行表的创建,插入数据,查询数据的操作,情况如下所示:

1. 创建数据库表

直接执行创表语句,pgoneproxy就会根据配置情况自动创建两张分表,情况如下所示:

pgbench=> \dt;
              List of relations
 Schema |       Name       | Type  |  Owner   
--------+------------------+-------+----------
 public | pgbench_accounts | table | postgres
 public | pgbench_branches | table | postgres
 public | pgbench_history  | table | postgres
 public | pgbench_tellers  | table | postgres
(4 rows)

pgbench=> create table bigtest(id int, name varchar(1024), age int, tt timestamp);
CREATE 0
pgbench=> \dt;
              List of relations
 Schema |       Name       | Type  |  Owner   
--------+------------------+-------+----------
 public | bigtest_0        | table | db_user
 public | bigtest_1        | table | db_user
 public | pgbench_accounts | table | postgres
 public | pgbench_branches | table | postgres
 public | pgbench_history  | table | postgres
 public | pgbench_tellers  | table | postgres
(6 rows)

pgbench=> 

2. 插入数据

下面插入两条语句,看是否能够根据要求插入到不同的数据表中

pgbench=> select * from bigtest_0;
 id | name | age | tt 
----+------+-----+----
(0 rows)

pgbench=> select * from bigtest_1;
 id | name | age | tt 
----+------+-----+----
(0 rows)

pgbench=> insert into bigtest(id, name, age, tt) values (10, 'name10', 10, '2024-01-01 00:00:00');
INSERT 0 1
pgbench=> insert into bigtest(id, name, age, tt) values (10, 'name10', 10, '2014-01-01 00:00:00');
INSERT 0 1
pgbench=> select * from bigtest_0;
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2014-01-01 00:00:00
(1 row)

pgbench=> select * from bigtest_1;
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2024-01-01 00:00:00
(1 row)

pgbench=> 

3. 查询数据

根据各种条件进行数据查询,情况如下所示:

pgbench=> select * from bigtest where tt < '2015-01-01 00:00:00';
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2014-01-01 00:00:00
(1 row)

pgbench=> select * from bigtest where tt > '2015-01-01 00:00:00';
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2024-01-01 00:00:00
(1 row)

pgbench=> select * from bigtest where tt < '2035-01-01 00:00:00';
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2014-01-01 00:00:00
 10 | name10 |  10 | 2024-01-01 00:00:00
(2 rows)

pgbench=> select * from bigtest where tt < '2035-01-01 00:00:00' and tt > '2016-01-01 00:00:00';
 id |  name  | age |         tt          
----+--------+-----+---------------------
 10 | name10 |  10 | 2024-01-01 00:00:00
(1 row)

则从上面的查询情况看,能够根据时间进行准确的查询。故pgoneproxy也能够根据时间进行冷热数据的分离存储和查询。

© 著作权归作者所有

harris2016
粉丝 10
博文 54
码字总数 30661
作品 0
杭州
程序员
私信 提问
阿里云德歌:PostgreSQL独孤九式搞定物联网

物联网行业不再仅仅只是设备的接入,设备接入后数据的采集和融合,以及融合后的分析,会为整个社会带来重要的价值。数据,让我们更真实 的了解社会与自然,让人与自然、与社会更加的融合。但...

小云栖
2016/05/25
1
0
PgSQL · 最佳实践 · 双十一数据运营平台订单Feed数据洪流实时分析方案

摘要 2017年的双十一又一次刷新了记录,交易创建峰值32.5万笔/秒、支付峰值25.6万笔/秒。而这样的交易和支付等记录,都会形成实时订单Feed数据流,汇入数据运营平台的主动服务系统中去。 数据...

阿里云RDS-数据库内核组
2017/11/08
0
0
数据库案例集锦 - 开发者的《如来神掌》

标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗...

德哥
2017/06/09
0
0
PostgreSQL 类微博FEED系统 - 设计与性能指标

标签 PostgreSQL , feed , 微博 , 推送 , 分区 , 分片 , UDF , 挖掘 , 文本挖掘 背景 类微博系统,最频繁用到的功能: 之前写过一篇《三体高可用PCC大赛 - facebook微博 like场景 - 数据库设...

德哥
2018/04/18
0
0
PostgreSQL入门篇学习笔记(一)

PostgreSQL最强大的开源数据库,以前一直以为是mysql。可谓无知者,无畏也。井底之娃,一个八线城市的python运维dba的悲哀。 以下把PostgreSQL简称为pg。 1,pg是唯一能做到数据零丢失的开源...

落叶刀
2015/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部