聊一聊流式数据库(流式数据结构)
ccwgpt 2024-10-31 12:26 103 浏览 0 评论
流式数据库的诞生是十多年数据处理和服务演变的结晶。这一演变根植于数据库管理系统、数据处理以及数字时代不断变化的需求的广泛历史之中。为了深入理解这一演变,让我们回顾那些塑造了流式数据库发展的关键历史里程碑。
在20世纪末,互联网的兴起和数字数据的爆炸性增长催生了对更具可扩展性和灵活性的数据管理解决方案的需求。数据仓库和Hadoop等面向批处理的处理框架应运而生,以应对这个时代数据规模的挑战。
“大数据”一词不仅指数据的庞大体量,也涵盖了存储和处理超大数据集的所有解决方案。大数据无法存储在单一计算机或服务器上,需要将其分割成更小、等大小的部分,并在多台计算机中存储。Hadoop和MapReduce之所以流行,是因为它们支持分布式存储和处理。
随着分布式流(distributed streaming)的概念兴起,大量数据被移动到Hadoop中。Apache Kafka,一种旨在处理大数据的消息传递服务,不仅提供了数据从一个系统到另一个系统的传输方法,还提供了实时访问动态数据的途径。这一进步激发了对实时流媒体用例的新需求。
新技术如Apache Flink和Apache Spark应运而生,以满足这些新期望。作为支持批处理和流式传输的分布式框架,它们能在多台服务器上处理数据并提供分析结果。当与Kafka结合使用时,这三者共同提供了一种能够支持实时流式分析用例的解决方案。我们将在第2章中更详细地探讨流处理器。
到了2010年代中期,流媒体领域出现了更简单、更高效的范式,以扩大实时数据处理的规模。这包括了两个新的流处理框架:Apache Kafka Streams(KStreams)和Apache Samza。KStreams和Samza是首批实现物化视图(meterialized view)的框架,它们使得流媒体看起来和感觉更像数据库。
Apache Kafka Streams 是构建在 Apache Kafka 之上的客户端库,专门用于构建高吞吐量、低延迟的实时流处理应用程序。它允许开发者以一种易于扩展和复制的方式处理记录流。Kafka Streams 提供了一系列易于使用的 API,包括高级的 DSL(特定领域语言)和低级的处理器 API,它们可以相互配合使用。 Kafka Streams 的关键特性包括:
- 易用性:提供简洁的 API,便于开发者构建复杂的流处理应用。
- 无需单独的处理集群:作为常规 Java 应用运行,无需维护专门的处理集群。
- 状态处理能力:支持状态化处理,通过 RocksDB 实现状态的持久化和容错。
- 时间窗口处理:支持不同类型的时间窗口操作,如滑动窗口、跳跃窗口和会话窗口。
- 流式表格双模型:将流处理结果视为动态更新的表格,提供直观的数据理解方式。
- 可扩展和容错:基于 Kafka,继承了其可扩展性和高可用性。
Kafka Streams 通过处理拓扑(Processing Topology)来定义应用程序的处理逻辑,它由一系列节点和边组成,每个节点执行特定的处理操作,如过滤、映射、聚合等。此外,Kafka Streams 还支持全局状态存储,允许应用程序跨多个流处理任务共享状态。
Apache Samza 是由 LinkedIn 开发并贡献给 Apache 基金会的开源分布式流处理框架。它以高度可靠的方式支持低延迟的数据流处理,并广泛应用于各种大数据应用场景。 Samza 的核心特性包括:
- 高性能:提供极低延迟和高吞吐量,适用于大量数据的实时分析。
- 水平扩展能力:能够随着数据量的增长而动态扩展计算资源。
- 容错机制:采用内置的故障恢复策略,确保数据的一致性和完整性。
- 灵活的部署选项:可以在 YARN 集群或作为独立库的形式进行部署。
- 状态管理:支持持久化的状态存储,便于复杂的业务逻辑处理。
Samza 的架构设计围绕着 Kafka 消息队列展开,利用 Kafka 的功能实现流式的实时数据处理。它还依赖于 Apache Hadoop YARN 来提供资源管理和任务调度的能力。
Samza 支持统一的 API,允许开发者用简单的 API 描述应用逻辑,同时支持批处理和流式数据。Samza 可作为嵌入式库轻松集成到现有应用中,提供灵活的部署选项,包括公共云、容器化环境和裸机硬件。
Kafka Streams 和 Samza 都是强大的流处理框架,但 Kafka Streams 更加专注于 Kafka 生态系统内部的集成,而 Samza 提供了更广泛的数据源和存储选项,以及更灵活的部署方式。
物化视图(Materialized View)是一种数据库对象,它存储了查询结果的物理副本,这与普通视图(仅保存SQL查询逻辑)不同。物化视图可以提高查询性能,尤其是对于复杂或计算密集型的查询,因为它预先计算并存储了结果。
物化视图特别适合于数据仓库系统,用于预先计算和存储表连接或聚集等耗时较多的操作结果,从而加快查询速度。此外,物化视图还支持查询重写(Query Rewrite),这意味着当对物化视图的基表进行查询时,数据库会自动判断是否可以通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。
物化视图的类型主要分为三种:
- 包含聚集的物化视图,如聚合函数SUM、AVG等。
- 只包含连接的物化视图,用于预计算连接操作。
- 嵌套物化视图,其查询定义中引用了其他物化视图。
Martin Kleppmann进一步将数据库与流媒体相结合。在2015年的演讲《Turning the Database Inside-Out(翻转数据库)》中,他描述了一种实现流处理的方法,该方法采用数据库的内部功能并将其外部化为实时流。这种方法促成了更具可扩展性、弹性和实时性的流处理系统。
流处理的一个挑战(现在仍然是)是它比批处理更难以使用。抽象概念较少,技术层面更深。为了实现流处理用例,数据工程师现在必须考虑数据顺序、一致性、容错性、弹性和可扩展性等因素。这些成为阻碍数据团队尝试使用流媒体的障碍。因此,许多人选择继续使用数据库来转换数据,尽管这可能以牺牲性能为代价。
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)