写点什么

事件流处理:数据仓库的可伸缩替代品

  • 2008-11-09
  • 本文字数:834 字

    阅读完需:约 3 分钟

Dan Pritchett 在博客上提出了一种数据仓库应用的替代方案。虽然厌恶“只能单一位置及单一存储空间上实现的方案”,他也承认有时候必须先聚合数据才能作分析。他所说的正是数据仓库应用的功能——沿着某些变量轴聚合信息并转化数据间的关系。而在 Pritchett 看来,数据仓库应用在使用中有许多缺点。数据仓库应用不仅非常昂贵,“比较小的组织一般难以企及”,而且 ETL(Extract, Transform and Load,提取、转换、装载)软件的工作方式意味着要付出可伸缩性和反应能力的代价:

首先,ETL 给生产数据库增加了明显的负担。如果你的业务有空窗期可以做 ETL,那是最好的;如果没有,管理可伸缩性就是很大的挑战。第二,数据仓库里的数据新鲜度一般滞后 24 小时或更长,随着业务增长,滞后时间会越来越长。

Dan Pritchett 相信有一种方案更便宜,也更可伸缩:用 ESP( Event Stream Processor )处理事件流。

ESP 用类似 SQL 的语言处理各种事件流。与数据库和数据仓库通过 SQL 分析数据表类似,ESP 用它们的查询语言分析事件流。要想理解 ESP,可以把事件类比成数据库表中的行,而事件的属性则对应数据库表的列。每一种事件类型就等于是一张表。 […]

[ESP 分析] 数据的变化,而且就在变化发生的当时分析。我们不再进行批量的 ETL,而是把业务事件变成一连串的数据状态变化。这就创造出一种更易于管理的生产系统的伸缩模型。

[…]

ESP 可以做水平伸缩,因此可以达至一种更具成本效益的业务方案。而且由于 ESP 执行分析是实时的,因此得到的业务指标更加应时,并且不受业务增长的影响。

Dan 也特别指出这种方法的弱点,就是不能进行历史性的分析,不能从当前以外的角度去观察业务活动。Pritchett 提出用一种捕捉并重演事务的框架去克服此弱点,不过该方案相当昂贵。Tahir Akhtar 在帖子的留言中提出另一种弥补方法:用 ESP 替代 ETL,但在享用 ESP 的可伸缩性和反应能力优势的同时,继续使用数据仓库应用以保留历史分析能力。

查看英文原文: Event Stream Processing: Scalable Alternative to Data Warehouses?

2008-11-09 19:321372
用户头像

发布了 225 篇内容, 共 69.6 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/测试开发 | Web测试方法与技术之CSS讲解

测试人

软件测试 自动化测试 测试开发 Web自动化测试 web测试

为什么用元空间替代永久代?

王磊

java面试

2023我的前端面试小结

loveX001

JavaScript

FL Studio2023最新版本音乐编曲制作软件

茶色酒

FL Studio2023

2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i] = { a, b, c }表示,用户i报

福大大架构师每日一题

算法 rust 福大大

1行Python代码去除图片水印,网友:干干净净!

程序员晚枫

Python GitHub 开源 去水印 自动化办公

ChatGPT十问十答 | 图解ChatGPT

涛哥 数字产品和业务架构

人工智能 ChatGPT

软件测试/测试开发 | Web测试方法与技术实战演练

测试人

软件测试 自动化测试 测试开发 Web自动化测试

软件测试/测试开发 | SeleniumIDE用例录制

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

KMP算法详解

javaadu

数据结构 字符串 KMP

Python 发展趋势:与 Rust 深度融合、更易于编写 Web 应用

Python猫

Python

被流量和热度裹挟,自媒体行业必须坚守职业道德

石头IT视角

架构实战营-模块一作业

🐢先生

架构实战营

三次握手与四次挥的问题,怎么回答?

loveX001

JavaScript

springboot自动配置原理

喝水不抬头

NodeJS 实战系列:DevOps 尚未解决的问题

光毅

DevOps nodejs

如何做总架构师

agnostic

总架构

软件测试/测试开发 | Web自动化之Selenium安装

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

为什么补码是取反加1?

Dinfan

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

ThreadLocal源码分析及避坑指南

喝水不抬头

极客时间架构训练营模块七-王者荣耀商城异地多活架构设计

张Dave

大家心心念念的RocketMQ5.x入门手册来喽

中间件兴趣圈

RocketMQ rocketmq5

New Bing 内测,革搜索的命

冯骐

openai GPT ChatGPT New Bing 对话模型

C++ 智能指针(一) std::auto_ptr

orbitgw

c++ C++ STL

软件测试/测试开发 | Web自动化之显式等待与隐式等待

测试人

软件测试 自动化测试 测试开发 web测试 web自动化

写给go开发者的gRPC教程-拦截器

凉凉的知识库

Go 微服务 gRPC http2

Shell分支语句

圆弧

分支 条件 shell脚本

一个容器,但是一整个k8s集群

newbe36524

C# Docker Kubernetes

架构训练营 - 模块四作业

Sam

架构实战营

软件测试/测试开发 | Selenium 测试用例编写

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

事件流处理:数据仓库的可伸缩替代品_架构_Sadek Drobi_InfoQ精选文章