文档章节

postgresql中间件pgoneproxy支持冷热数据分离查询

harris2016
 harris2016
发布于 2016/07/18 17:58
字数 709
阅读 349
收藏 2

    在某些应用场景中,随着时间的流逝,历史数据很少被访问,主要是访问新产生的数据。这种情况下会把很少访问的数据存储到IO比较慢的存储设备上,而把长期查询的数据存放到IO比较快的存储设备上面。比如,像网上交易系统,可以把几个月前的历史数据存放到机械硬盘上面,而把当月的数据存放到固态硬盘上面。从而让成本最优的情况下,提升用户体验。

     pgoneproxy目前已经支持这种冷热数据分离的情况,只要使用pgoneproxy的分库分表功能,同时把method设置为buffer即可。下面来详细介绍下冷热数据分离查询的功能:

1. 配置

    当前假设把冷数据存放到bigtest_1的表中,把热数据放到bigtest_0的表中。其中假设id在0-100内的数据为热数据,而id在101-1000内的数据为冷数据,则proxy-part-tables项的配置为:

[
 {
        "table"  : "bigtest",
        "pkey"   :  "id",
        "type"   :  "int",
        "method" :  "buffer",
        "partitions":
        [
                {"suffix":"_0", "group":"data1", "minval":"0", "maxval":"100"},
                {"suffix":"_1", "group":"data1", "minval":"101","maxval":"1000"}
        ]
  }
]

通过上面的配置可以看到通过minval和maxval来指定数据的范围。其中minval和maxval可以是数字和字符串。

如果需要以时间来进行分表操作,则可以修改pkey为时间的字段,同时设置type为time。在通过minval和maxval来指定时间的范围。

2. 查询

    查询时只要带上pkey指定的字段即可。pgoneproxy会根据pkey字段的值按照不同的规则进行数据的查询。下面得到的数据情况:

pgbench=> select * from bigtest_0;
 id |  name  | age 
----+--------+-----
 10 | name10 |  10
 11 | name11 |  11
 12 | name12 |  12
 13 | name13 |  13
 14 | name14 |  14
 15 | name15 |  15
 16 | name16 |  16
(7 rows)

pgbench=> select * from bigtest_1;
 id  |  name   | age 
-----+---------+-----
 110 | name110 | 110
 111 | name111 | 111
 112 | name112 | 112
 113 | name113 | 113
 114 | name114 | 114
 115 | name115 | 115
 116 | name116 | 116
(7 rows)

pgbench=> select * from bigtest where id = 10;
 id |  name  | age 
----+--------+-----
 10 | name10 |  10
(1 row)

pgbench=> select * from bigtest where id = 110;
 id  |  name   | age 
-----+---------+-----
 110 | name110 | 110
(1 row)

也可以通过这个规则直接把数据插入到对应的表中。如果不指定id指点,则会把查询语句发送到两张表中进行查询。比如进行下面的查询操作:

pgbench=> select * from bigtest where name = 'name110';
 id  |  name   | age 
-----+---------+-----
 110 | name110 | 110

这个查询就会同时查询bigtest_0和bigtest_1表中的数据,最后进行合并后返回到客户端。像上面那样指定id,就会到对应的表中查询,而不是查询两张表,从而可以提升速度。

    通过上面的方法就可以解决冷热数据分离 查询的问题了。欢迎大家使用。

© 著作权归作者所有

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入门篇学习笔记(一)

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

落叶刀
2015/11/21
0
0
postgresql 数据库中间件 pgoneproxy 实现冷热数据分离查询(二)

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

harris2016
2016/07/19
178
0
PostgreSQL 类微博FEED系统 - 设计与性能指标

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

德哥
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Netdata:轻量级linux服务器的性能监控工具

https://github.com/netdata/netdata/ yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig -y yum install libuuid-devel zlib-devel -y wget https://g......

perofu
5分钟前
1
0
java画图工具来添加水印

用Java代码给图片加水印 不多哔哔,直接上代码: /** * @param srcImgFile 原图片文件对象 * @param outFile 输出图片文件对象 * @param waterMarkConte...

嘻嘻哈哈的忧郁
7分钟前
0
0
支付宝开源非侵入式 Android 自动化测试工具 Soloπ

前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放、图像识别、云测平台等测试技术贴合实际业务需求深度应用和创新,测...

shzwork
9分钟前
0
0
p3d分红逻辑学习

每次p3d余额变动,就会计算profitPerShare: profitPerShare_ += (_dividends * magnitude / (tokenSupply_)); 我的分红余额: (profitPerShare * myTokenBalanceLedger) - myPayouts 举栗子......

wmzsonic
13分钟前
1
0
CentOS7救援模式

问题 很久没有使用的一台虚拟机,忘记了root密码,这里使用救援模式,对root密码重设密码。 步骤 关机,重新开机,选中对应对版本,按“e”: 按“e” 找到“linux16”行 替代"or"为“rw in...

亚林瓜子
16分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部