海量数据 "写入、共享、存储、计算" 最佳实践

标签

PostgreSQL , 冷热分离 , 数据共享 , 打破孤岛 , 无盘工作 , 存储计算分离 , 行为数据 , 轨迹数据 , 金融数据 , 监控数据 , 物联网 , GIS , 范围 , 数组 , 图片


背景

数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志。

随着用户量、用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多。

日积月累,给企业IT带来诸多负担,IT成本不断增加,收益确不见得有多高。

上图描绘了企业中可能存在的问题:

1. 数据孤岛问题严重(如果没有大数据平台时)。

2. 对成本预估不足,计算能力扩容麻烦,又或者铺张浪费严重。

3. 数据冗余问题突出。

4. 存储成本昂贵。

5. 业务萎缩后硬件成为固定资产,IT负担严重,几乎没有硬件伸缩能力。

6. 数据量太大,几乎无法备份。

7. 业务需求多,数据种类多,分析成本、开发成本高昂。

本文将针对这个场景,给出一个比较合理的方案,灵活使用,可以减轻企业IT成本,陪伴企业高速成长。

行业场景

1. 物流

一个包裹,从揽件、发货、运输、中转、配送到签收整个流程中会产生非常多的跟踪数据,每到一个节点,都会扫描一次记录包裹的状态信息。

运输过程中,车辆与包裹关联,车辆本身采集的轨迹、油耗、车辆状态、司机状态等信息。

配送过程,快递员的位置信息、包裹的配送信息都会被跟踪,也会产生大量的记录。

一个包裹在后台可能会产生上百条跟踪记录。

运输的车辆,一天可能产生上万的轨迹记录。

配送小哥,一天也可能产生上万条轨迹记录。

我曾经分享过一个物流配送动态规划的话题。有兴趣的童鞋也可以参考

《聊一聊双十一背后的技术 - 物流、动态路径规划》

物流行业产生的行为数据量已经达到了海量级别。

怎样才能有效的对这些数据进行处理呢?

比如:

实时按位置获取附近的快递员。

实时统计包裹的流量,快递员的调度,车辆的调度,仓库的选址等等一系列的需求。

2. 金融

金融行业也是数据的生产大户,用户的交易,企业的交易,证券数据等等。

数据量大,要求实时计算,要求有比较丰富的统计学分析函数等。

我曾经分享过一个关于模拟证券交易的系统需求分析。有兴趣的童鞋也可以参考

《PostgreSQL 证券行业数据库需求分析与应用》

3. 物联网

物联网产生的数据有时序属性,有流计算需求(例如到达阈值触发),有事后分析需求。

数据量庞大,有数据压缩需求。

我刚好也写过一些物联网应用的数据库特性分析,这些特性可以帮助物联网实现数据的压缩、流计算等需求。

《流计算风云再起 - PostgreSQL携PipelineDB力挺IoT》

《旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用》

《PostgreSQL 物联网黑科技 - 瘦身几百倍的索引(BRIN index)》

《一个简单算法可以帮助物联网,金融 用户 节约98%的数据存储成本》

《"物联网"流式处理应用 - 用PostgreSQL实时处理(万亿每天)》

《PostgreSQL 黑科技 range 类型及 gist index 助力物联网(IoT)》

物联网还有一个特性,传感器上报的数据往往包括数字范围(例如温度范围)、地理位置、图片等信息,如何高效的存储,查询这些类型的数据呢?

4. 监控

监控行业,例如对业务状态的监控,对服务器状态的监控,对网络、存储等硬件状态的监控等。

监控行业具有比较强的业务背景,不同的垂直行业,对监控的需求也不一样,处理的数据类型也不一样。

例如某些行业可能需要对位置进行监控,如公车的轨迹,出了位置电子围栏,发出告警。换了司机驾驶,发出警告。等等。

5. 公安

公安的数据来自多个领域,例如 通讯记录、出行记录、消费记录、摄像头拍摄、社交、购物记录 等等。

公安的数据量更加庞大,一个比较典型的场景是风险控制、抓捕嫌犯。涉及基于地理位置、时间维度的人物关系分析(图式搜索)。

如何才能满足这样的需求呢?

6. 其他行业

其他不再列举。

行业痛点

如何解决数据孤岛,打通数据共享渠道?

如何高效率的写入日志、行为轨迹、金融数据、轨迹数据等?

如何高效的实时处理数据,根据阈值告警通知,实时分析等?

如何解决大数据的容灾、备份问题?

如何解决大数据的压缩和效率问题?

如何解决数据多维度、类型多,计算复杂的问题?

如何解决企业IT架构弹性伸缩的问题?

总结起来几个关键字:

写入、共享、存储、计算。

方案

用到三个组件:

1. RDS PostgreSQL

支持时序数据、块级索引、倒排索引、多核并行、JSON、数组存储、OSS_FDW外部读写等特性。

解决OLTP,GIS应用、复杂查询、时空数据处理、多维分析、冷热数据分离的问题。

2. HybridDB PostgreSQL

支持列存储、水平扩展、块级压缩、丰富的数据类型、机器学习库、PLPYTHON、PLJAVA、PLR编程、OSS_FDW外部读写等特性。

解决海量数据的计算问题。

3. OSS 对象存储

多个RDS实例之间,可以通过OSS_FDW共享数据。

OSS多副本、跨域复制。

解决数据孤岛、海量数据存储、跨机房容灾、海量数据备份等问题。

1 写入

数据写入分为3条路径:

1. 在线实时写入,可以走RDS SQL接口,单个实例能达到 百万行/s 以上的写入速度。

2. 批量准实时写入,可以走HybridDB SQL接口,单个实例能达到 百万行/s 以上的写入速度。

3. 批量准实时写入,比如写文件,可以走OSS写入接口,带宽弹性伸缩。

2 共享

多个RDS实例之间,可以通过OSS_FDW共享数据。

例如A业务和B业务,使用了两个RDS数据库实例,但是它们有部分需求需要共享数据,传统的方法需要用到ETL,而现在,使用OSS_FDW就可以实现多实例的数据共享,而且效率非常高。

通过RDS PostgreSQL OSS_FDW的并行读写功能(同一张表的文件,可以开多个worker process进程并行读写),共享数据的读写效率非常高。

并行体现三个方面:OSS读写并行、RDS PostgreSQL多核计算并行、RDS PG或HybridDB的多机并行。

3 存储

对于实时数据,使用RDS PostgreSQL, HybridDB的本地数据存储。对于需要分析、需要共享的数据,使用OSS进行存储。

OSS相比计算资源的存储更加的廉价,在确保灵活性的同时,降低了企业的IT成本。

通过OSS对象存储,解决了企业的数据冗余、成本高等问题,满足了数据的备份、容灾等需求。

4 计算

通过RDS PostgreSQL, HybridDB, OSS的三个基本组件,实现了计算资源、存储资源的分离。

因为计算节点的数据量少了(大部分数据都存在OSS了),计算节点的扩容、缩容、容灾、备份都更加方便。

计算本身分为以下几种

1. 流式计算

流式计算分为两种,一种是实时统计,另一种是设置阈值进行实时的告警。

通过pipelinedb(base on postgresql)可以实现这两类流计算。

好处:

SQL标准接口,丰富的内置函数支持复杂的流计算需求,丰富的数据类型(包括GIS,JSON等)支持更多的流计算业务场景,异步消息通知机制支持第二类流计算需求。

pipelinedb正在进行插件化改造,以后可以作为PostgreSQL的插件使用。

https://github.com/pipelinedb/pipelinedb/issues?q=is%3Aissue+is%3Aopen+label%3A%22extension+refactor%22

例如在监控领域,使用流计算的异步消息机制,可以避免传统主动问询监控的无用功问题。

2. 实时交互业务

传统的OLTP需求,使用RDS PostgreSQL可以满足。

PostgreSQL的特性包括:GIS、JSON、数组、冷热分离、水平分库、K-V类型、多核并行、块级索引、倒排索引等。

PostgreSQL支持的场景包括:流计算、图式搜索、时序数据、路径规划、模糊查询、全文检索、相似查询、秒杀、基因、金融、化学、GIS应用、复杂查询、BI、多维分析、时空数据搜索等。

覆盖银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。

3. 准实时分析

结合OSS对象存储,RDS PostgreSQL和HybridDB都可以实现准实时的分析。

同一份OSS的数据,也可以在多个实例之间进行共享,同时访问。

4. 离线分析、挖掘

结合OSS对象存储,RDS PostgreSQL和HybridDB都可以实现对离线数据的分析和挖掘。

RDS PostgreSQL 支持单机多核并行,HybridDB for PostgreSQL支持多机并行。用户可以根据计算量进行选择。

计算需要具备的能力

计算的灵魂是类型的支持、以及类型的处理。

1. PostgreSQL内置了丰富的类型支持,包括(数字、字符串、时间、布尔、枚举、数组、范围、GIS、全文检索、bytea、大对象、几何、比特、XML、UUID、JSON、复合类型等),同时支持用户自定义的类型。可以支持几乎所有的业务场景

2. 操作符,为了满足对数据的处理需求,PG对每一种支持的类型,都支持非常丰富的操作,

3. 内置函数,PG内置了丰富的统计学函数、三角函数、GIS处理函数,MADlib机器学习函数等。

4. 自定义计算逻辑,用户可以通过C, python, java, R等语言,定义数据的处理函数。扩展PostgreSQL, HybridDB for PostgreSQL的数据处理能力。

5. 聚合函数,内置了丰富的聚合函数,支持数据的统计。

6. 窗口查询功能的支持。

7. 递归查询的支持。

8. 多维分析语法的支持。

方案小结

RDS PostgreSQL 优势

主要体现在这几个方面

1. 性能

RDS PostgreSQL主要处理在线事务以及少量的准实时分析。

PG OLTP的性能可以参考这篇文档,性能区间属于商业数据库水准。

《数据库界的华山论剑 tpc.org》

PG 的OLAP分析能力,可以参考这篇文档,其多核并行,JIT,算子复用等特性,使得PG的OLAP能力相比其他RDBMS数据库有质的提升。

《分析加速引擎黑科技 - LLVM、列存、多核并行、算子复用 大联姻 - 一起来开启PostgreSQL的百宝箱》

PostgreSQL 10 在HTAP方面还有更多的增强。

2. 功能

功能也是PostgreSQL的强项,在上一章《计算需要具备的能力》有详细介绍。

3. 扩展能力

计算能力扩展,通过增加CPU,可以扩展复杂计算的性能。

存储能力扩展,通过OSS存储以及oss_fdw插件,可以扩展RDS PG的存储能力,打破存储极限。

4. 成本

存储成本:由于大部分需要分离的数据都存储到OSS了,用户不再需要考虑这部分的容灾、备份问题。相比存储在数据库中,存储成本大幅降低。

开发成本:RDS PG, HybridDB PG都支持丰富的SQL标准接口,访问OSS中的数据(通过TABLE接口),使用的也是SQL标准接口。节省了大量的开发成本,

维护成本:使用云服务,运维成本几乎为0。

5. 覆盖行业

覆盖了银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。

HybridDB PostgreSQL 优势

1. 性能

HybridDB PostgreSQL为MPP架构,计算能力出众。

2. 功能

在上一章《计算需要具备的能力》有详细介绍。

3. 扩展能力

计算能力扩展,通过增加计算节点数,可以扩展复杂计算的性能。

存储能力扩展,通过OSS存储以及oss_fdw插件,可以扩展RDS PG的存储能力,打破存储极限。

4. 成本

存储成本:由于大部分需要分离的数据都存储到OSS了,用户不再需要考虑这部分的容灾、备份问题。相比存储在数据库中,存储成本大幅降低。

开发成本:RDS PG, HybridDB PG都支持丰富的SQL标准接口,访问OSS中的数据(通过TABLE接口),使用的也是SQL标准接口。节省了大量的开发成本,

维护成本:使用云服务,运维成本几乎为0。

5. 覆盖行业

覆盖了银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。

典型用法

参考

《RDS PostgreSQL : 使用 oss_fdw 读写OSS对象存储》

《HybridDB PostgreSQL : 使用 oss_fdw 读写OSS对象存储》

时间: 2024-09-03 11:34:54

海量数据 "写入、共享、存储、计算" 最佳实践的相关文章

PgSQL · 应用案例 · "写入、共享、存储、计算" 最佳实践

背景 数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志. 随着用户量.用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多. 日积月累,给企业IT带来诸多负担,IT成本不断增加,收益确不见得有多高. 上图描绘了企业中可能存在的问题: 1. 数据孤岛问题严重(如果没有大数据平台时). 2. 对成本预估不足,计算能力扩容麻烦,又或者铺张浪费严重. 3.

企业开始使用软件定义的存储的最佳实践方案

对于今天许多的IT专家来说,"大数据"早已不仅仅只是另一个毫无实际意义的因概念炒作而兴起的时髦术语了.这是一个更接近转折点的东西,而不能被简单抹去.原因非常简单:大数据的规模正在不断越来越大.对于大量的企业组织而言,特别是那些数据密集型的行业,如零售业--他们发现,能够以具有成本效益的方式从过剩的海量数据信息中获得真正的价值,将成为决定企业组织能否在未来获得市场成功的关键因素. 庆幸的是,当前的确是有一些实用的解决方案的.一些龙头企业领军正在转向开源的.软件定义的存储作为部署网络规模的

表格存储最佳实践:一种用于存储时间序列数据的表结构设计

在表格存储的数据模型这篇文章中提到: 在表格存储内部,一个表在创建的时候需要定义主键,主键会由多列组成,我们会选择主键的第一列作为分片键.当表的大小逐渐增大后,表会分裂,由原来的一个分区自动分裂成多个分区.触发分裂的因素会有很多,其中一个很关键的因素就是数据量.分裂后,每个分区会负责某个独立的分片键范围,每个分区管理的分片键范围都是无重合的,且范围是连续的.在后端会根据写入数据行的分片键的范围,来定位到是哪个分片. 表会以分区为单位,被均匀的分配到各个后端服务器上,提供分布式的服务.      

(流式、lambda、触发器)实时处理大比拼 - 物联网(IoT)\金融,时序处理最佳实践

标签 PostgreSQL , 物联网 , 传感器 , lambda , 调度 , 实时 , 流式更新 , UPSERT , insert on conflict do update 背景 越来越多的数据要求实时的分析.聚合.展示最新值.展示异常值.实时的搜索. 例如 金融数据.物联网传感器的数据.网络游戏的在线数据等等. 关于实时搜索,可以参考这篇最佳实践: <行为.审计日志 实时索引/实时搜索 - 最佳实践> 关于海量数据的"写入.共享.存储.计算",以及离线分析,则可

大数据时代结构化存储云HBase技术架构及最佳实践

在10年,阿里研究HBase,是为了解决阿里容量及并发的实际问题,按照数据库要求,阿里深入HBase技术,并致力于保障稳定性和性能,目前已经有10000台规模,数百个集群,大约1亿的QPS,服务整个集团的业务.17年,把这部分能力也开放给公有云客户.本文中,阿里云高级专家封神带来了主题演讲<大数据时代结构化存储云HBase技术架构及最佳实践>,介绍HBase的应用选择.实战案例.技术平台解读以及后续的规划. 为什么应用HBase 一般而言,传统关系型数据库面临着成本.容量.QPS.分析等多方面

云端流计算、在线业务、实时分析 闭环设计 - 阿里云RDS、HybridDB for PostgreSQL最佳实践

背景 水的流动汇成江河大海,孕育生命,形成大自然生态.数据流动,推进社会进步,拓展业务边界. <从人类河流文明 洞察 数据流动的重要性> 以某淘系业务案例展开,看看用户如何利用阿里云RDS PostgreSQL,HybridDB for PostgreSQL,海量对象存储OSS,打造一个从流计算到在线业务,再到数据分析和挖掘的业务,发挥数据的价值,拓展业务的边界. 业务简介 一个电商业务通常会涉及 商家.门店.物流.用户.支付渠道.贷款渠道.商品.平台.小二.广告商.厂家.分销商.店主.店员.

海量实时计算+OLTP+OLAP DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践 - 泛电网系统应用

标签 PostgreSQL , 国家电网 , 电表 , 余额 , 流式计算 , 状态监测 , 上下文相关 背景 电网系统是一个关系民生,又非常典型的传统系统,虽然传统,量可不小.在互联网化(物联网化)的今天,有很多值得借鉴和思考的点供给其他相关系统参考. 每个省份大概有亿级户电表,最大的地市可能有千万户级别. 以往我们电费是怎么交的呢?我们小区是两个月交一次,也就是说先消费,再付款的方式.这么说起来电网真的是很仁义啊,现在哪有这么多先消费再付款的呀.移动话费.家庭宽带.天然气等等,都是充值后使用

Hadoop存储与计算分离实践

本文PPT来自阿里云E-MapReduce团队的余根茂于10月16日在2016年杭州云栖大会上发表的<Hadoop存储于计算分离实践>. Hadoop部署一般可大致分为传统集群部署和云上集群部署.具体而言,对于传统集群部署,存储和计算是重点,计算能力加上存储能力大致等同于这个集群的能力.传统集群往往包含很多数据"中心",并以集群混部的方式部署.在理想情况下,一个集群系统往往希望产生更少的数据迁移,并且达到更高的资源利用率.然而在现实中,当带宽逐渐不再是稀缺资源,磁盘不在是承

弹性计算云产品使用误区与最佳实践【Tech Insight演讲实录】

隽勇, 曾就职微软,擅长网络.Windows相关技术,网络问题的终结者,现就职阿里云专注于弹性计算方面的技术研究,"对技术负责,更对用户负责".隽勇在本次Tech insight分享的主题是弹性计算云产品. 业务上云的核心点在哪里 隽勇谈到,从大量客户的上云和护航压测经验来看,想要用好弹性云计算产品,需要把握住两个要点: 1.充分了解云产品的优点与限制,结合实际业务场景.合理使用云产品: 2.应用的架构和代码优化 & 操作系统调优. 结合业务场景合理使用云计算产品 云计算产品用