Oracle migration to Greenplum - (含 Ora2pg)
背景 Oracle在OLTP领域毫无疑问是非常不错的数据库,但是OLAP领域,可以有更好的选择,特别是在数据量大到一定程度的时候,Oracle用来做数据分析会显得有点力不从心。 Greenplum是一个很好的替代Oracle来处理OLAP业务场景的数据库,支持多机并行、列存储、丰富的OLAP SQL语法,存储过...
背景 Oracle在OLTP领域毫无疑问是非常不错的数据库,但是OLAP领域,可以有更好的选择,特别是在数据量大到一定程度的时候,Oracle用来做数据分析会显得有点力不从心。 Greenplum是一个很好的替代Oracle来处理OLAP业务场景的数据库,支持多机并行、列存储、丰富的OLAP SQL语法,存储过...
背景 店铺,广告推荐位,自动计算,高效检索,高效更新。 根据:本店、全网用户行为,库存等进行运算,得到每个商品的分值,推荐排行靠前的商品。 维度可能很多,例如:北京的男性用户在秋天买袜子的可能性是0.431,这里面就是4个维度。实际场景维度可能有几十个,几百个,甚至几千个。 需要支持任意维度,排序,求TOP...
背景 PostgreSQL 10 引入了内置分区语法,同时引入了逻辑订阅的功能。 《PostgreSQL 10.0 preview 逻辑订阅 - 原理与最佳实践》 逻辑订阅简单来说就是 1、创建pub, 2、将需要订阅的表加入到pub中, 3、在接收端创建订阅sub,指定订阅哪个pub。 4、然后发布...
背景 Oracle 可以将interval当成一个秒为单位的数值,并允许对其值进行round。 PostgreSQL的round没有写这个,不过我们可以自定义一个兼容函数。 create or replace function round(interval, int) returns float8 as $$...
背景 有一个这样的数据结构 日期, 消费金额,userbitmaps。表示这一天这些设置为1的BIT位对应对用户消费了这么多金额。 需求,最近7天,消费大于多少的用户有哪些。 create table t_test ( dt date, -- 日期 amount int, -...
背景 在PostgreSQL中,支持geohash, geometry, geograph三种空间存储结构。 1、geohash,很多库都支持它,因为简单,将地球作为标准化的球体,展开抽象为一个平面,划分为若干个小方格,进行编码,相邻的小方格的编码前缀一样。 geohash 每一个小方块的精度与编码长...
背景 在打车高峰时期,通常会出现某个区域打车的人特别多的情况,比如在下班时,写字楼。比如在演唱会结束时,演唱会现场。 这个场景有一个特点,同一个点发出请求,按距离搜索最近的车,然后锁定车辆。 在数据库中,如果大家都这么操作,会带来锁冲突的问题。我在上一篇文档中,介绍了adlock,可以大幅提高吞吐,但是还有一...