跳转至

PostgreSQL

支持多种索引,也能通过插件做到自定义索引,实现替换多种专业数据库的能力。

行id作为主键id,跟所在页的页码,作为键值对存为新表。以缩小查询范围。

类似B+树,但并发效率更强。

通过该种索引,平替关系型数据库,如Mysql

📌 GIN

文本切分为词元,通过词元反查主键id,做交并集运算,在pg中称为通用倒排索引。

通过该种索引,平替ElasticSearch

🚁 GIN + JSON

在pg中,普通json文本读写效率慢,因此优化:去掉空格、换行等冗余信息,并转为二进制格式存储。

这种优化后的数据类型称为JSON Binary,简称JSONB

pg将JSONB的键值对拆分,并生成哈希值,构建倒排索引,以提高查询效率。(代价是存储空间)

通过这种方式,平替MongoDB

📌 GIST

地理信息系统用到的实现,如搜索附近1公里的店铺。

参考b+树,将二维的数据,如经纬度范围放入非叶子节点,具体店铺经纬度放叶子节点,最终取交集的部分。

这种索引结构称为矩形树,R-Tree。rectangle

在pg中,这种处理多维数据的搜索结构,称为通用搜索树,简称GIST

📌 BRIN

时序数据库,按时间顺序插入大量数据,如日志、监控打点数据,索引空间紧张。

以每批数据页,取时间范围做摘要。

不理解数据本身,只关注范围边界,在pg中称为块范围索引,Block Range Index。以极小的存储代价,换取可观的查询性能。

通过这种方式,平替InfluxDB