Recent Posts

多国语言字符串的加密、全文检索、模糊查询的支持

2 minute read

背景 PostgreSQL中的全文检索和模糊查询是很好实现的。 通过pg_trgm插件,可以实现模糊查询(前、后、全模糊),近似查询,正则表达式查询的索引加速。 通过中文分词插件(pg_jieba, pg_scws, zhparser),可以实现中文分词,其他语种的分词,参考对应的插件。 但是,如果要让数据...

Greenplum, PostgreSQL 数据实时订阅的几种方式

less than 1 minute read

背景 通常在一个企业中,对一份数据可能更有多个业务系统需要对其进行处理。 《从人类河流文明 洞察 数据流动的重要性》 因此数据是流动的,通常会通过消息队列来完成这样的工作。不过呢,这样要求消息队列是最上游。 当无法将消息队列放到最上游时,例如数据先到了数据库,再订阅给其他业务线,怎么办呢? 就比如这里的R...

PostGIS 距离计算建议 - 投影 与 球 坐标系, geometry 与 geography 类型

2 minute read

背景 PostGIS中有两种常用的空间类型geometry和geography,这两种数据类型有什么差异,应该如何选择? 对于GIS来说,首先是坐标系,有两种:一种是球坐标(地理坐标),另一种是平面坐标(投影坐标)。 球坐标通常用于计算,平面坐标通常用于展示(也可以计算)。 投影坐标是从球坐标投影后展开得来...

Greenplum 类型一致性使用注意 - 索引条件、JOIN的类型一致性限制

5 minute read

背景 在查询时,有很多用户会犯浑,发现建立了索引,但是查询偏偏不走索引。 怎么不走索引啊? 这里做容易混淆的是类型的差异,例如字段类型为字符串,但是输入的是INT类型,这样就可能不走索引。(除非创建了自动的CAST,自动进行类型转换) 查询的输入类型与索引的类型一致是非常有必要的。 例子 1、建表(使用变...

Greenplum 点查询的优化(分布键)

2 minute read

背景 Greenplum是分布式数据库,在建表时,可以指定随机分布、或按指定字段或多个字段进行分布。 因此在做点查时,Greenplum可以根据WHERE条件来判断是需要在所有节点查询,还是只需要到若干节点查询。 假设tbl按id分布,那么下面几种情况应该到哪个节点查询呢: -- 到单个节点查询 sel...

PostgreSQL DISTINCT 和 DISTINCT ON 语法的使用

4 minute read

背景 本文介绍一下distinct的几种用法。 https://www.postgresql.org/docs/10/static/queries-select-lists.html#queries-distinct 1、返回唯一值 After the select list has been proces...

[未完待续] PostgreSQLGreenplum Customer视角TODO

6 minute read

背景 https://wiki.postgresql.org/wiki/Todo PostgreSQL 一、内置HA 1、多副本自动选主、自动HA 2、单副本HA 二、sharding 1. 物理流复制备库,支持对外部表执行DML操作,因为它不修改本地数据,没有风险。 此法,可以用于sharding库的中...