PostgreSQL 物联网黑科技 - 瘦身500倍的索引(范围索引)
在数据库中用得最多的当属btree索引,除了BTREE,一般的数据库可能还支持hash, bitmap索引。
但是这些索引到了物联网,会显得太重,对性能的损耗太大。
为什么呢?
物联网有大量的数据产生和入库,入库基本都是流式的。在使用这些数据时,基本是FIFO,或者范围查询的批量数据使用风格。
btree索引太重,因为索引需要存储每条记录的索引字段的值和寻址,使得索引非常庞大。
另一方面,物联网的大量范围查询和批量处理用法决定了它不需要这么重的索引。
例子:
如下所示,btree索引的空间占比是非常大的。
postgres=# \dt+ tab List of relations Schema | Name | Type | Owner | Size |
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PostgreSQL 物联网黑科技 - 阅后即焚
在物联网应用场景中,有大量的传感器,会产生非常大量的消息以极高的并发进入数据库。 这些数据如果直接进入面向OLAP场景设计的数据仓库,数据实时入库会成为瓶颈,并且OLAP系统很难接受非常高并发的请求。 面对这样的应用场景,这些既要又要还要怎么满足呢? .1. 既要实时入库, .2. 又要实时分析, .3. 还要历史留档,应对随时变化的分析需求。 实时入库比较容易满足,我前些天写过一篇 "PostgreSQL 如何潇洒的处理每天上百TB的数据增量" https://yq.aliyun.com/articles/8528 实时分析也比较好满足,我前些天写过一篇 "PostgreSQL "物联网"应用 - 1 实时流式数据处理案例(万亿每天)" https://yq.aliyun.com/articles/
- 下一篇
用PostgreSQL支持含有更新,删除,插入的实时流式计算
大多数的流式计算产品只支持APPEND ONLY的应用场景,也就是只有插入,没有更新和删除操作。 如果要实现更新和删除的实时流式计算,在PostgreSQL中可以这样来实现。 在此前你可以阅读我以前写的文章来了解PG是如何处理一天一万亿的实时流式计算的: https://yq.aliyun.com/articles/166 要支持更新和删除,思路是这样的,加一张前置表,这个前置表的某个字段用来记录字段的最终状态,即到达这个状态后,记录不会被更新或删除。 通过触发器来控制什么记录插入到流中同时从前置表删除,什么记录现暂存在前置表。 下面是例子 本文假设flag=2是最终状态,应用层自己来定义这个FLAG。 pipeline=# create table pret1(id serial primary key, info
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装