索引扫描优化之 - GIN数据重组优化(按元素聚合) 想象在玩多阶魔方
背景 前一篇文章介绍了一个场景,利用多列索引,多种索引接口(GIN\BTREE\BRIN…)以及PostgreSQL内置的bitmapAnd, bitmapOr等手段,提升广告营销实时搜索性能,同时兼顾开发工作量。 《懒人推动社会进步 - 多列聚合, gin与数据分布(选择性)》 其中在讲到GIN索引的优化时...
背景 前一篇文章介绍了一个场景,利用多列索引,多种索引接口(GIN\BTREE\BRIN…)以及PostgreSQL内置的bitmapAnd, bitmapOr等手段,提升广告营销实时搜索性能,同时兼顾开发工作量。 《懒人推动社会进步 - 多列聚合, gin与数据分布(选择性)》 其中在讲到GIN索引的优化时...
背景 在广告行业,精准营销是一个较热的话题,之前写过一个案例,如何使用PostgreSQL的array类型和GIN索引实时圈人的场景。 《万亿级营销(圈人)迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计》 使用以上方法,程序需要作出一些调整(当然,如果用户原本就是PostgreSQL技术栈,...
背景 类似mongodb的rotate collate(设置表的上限容量、上限记录数,持续写入,自动覆盖最老的记录),PostgreSQL通过pipelinedb也能实现类似的功能。 此类功能非常适合日志数据,无需维护成本,持续写入,自动覆盖最老的记录。 pipelinedb计划会在2017-07月份转换为p...
背景 PostgreSQL 10加入了quorum based的同步复制功能,用户可以配置若干standby节点,并配置需要将WAL发送多少份才返回给客户端事务结束的消息。 ANY num_sync ( standby_name [, ...] ) 原理详见 https://www.postgre...
背景 Pilosa is an open source, distributed bitmap index that dramatically accelerates queries across multiple, massive data sets. Pilosa abstracts the index f...
背景 BRIN索引的原理很简单,每个数据块(或者每一段连续的数据块)记录了其中的元数据(最大值,最小值,平均值,COUNT,AVG,NULL值个数等),当每个数据块存储的数据范围错开(边界清晰)时,块级索引的效率就非常高。 例如测试表 create table test(id int, info text);...
背景 打开PostgreSQL网站,你会看到这样的flag。 The world’s most advanced open source database. 那么它从何而来呢? 从个人对数据库的角度,在几个方面来分析一下 一、功能方面 1 数据处理能力 - 高级SQL特性 1、窗口查询 2、聚合...
背景 你也许在一家ToB的数据分析公司,你可能设计了一张表(包括用户标识,及若干已经统计好的的属性值),你也许收集了一些用户的数据,你也许要为客户提供报表,你也许需要为客户提供任意属性值的组合查询,并快速的返回结果给用户。 这些需求应该是非常常见的ToB的数据平台公司的形态,头痛的问题无法建模,因为B端的需求无...
背景 在物联网有一个非常普遍的数据需求,就是数据的写入,另一个普遍的需求则是数据的消费(按时序读取),以及流式计算。 关于流式计算,请参考 《(流式、lambda、触发器)实时处理大比拼 - 物联网(IoT)\金融,时序处理最佳实践》 《流计算风云再起 - PostgreSQL携PipelineDB力挺Io...
背景 当对象存在时,不创建;当对象不存在时,创建。 在数据库中使用IF NOT EXISTS语法进行判断。 Syntax: CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table...