Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用模式构建:桶模式

使用模式构建:桶模式

作者头像
MongoDB中文社区
发布于 2019-04-22 07:29:44
发布于 2019-04-22 07:29:44
8040
举报
文章被收录于专栏:MongoDB中文社区MongoDB中文社区

关注MongoDB中文用户组学习更多关于MongoDB的知识和技能

欢迎回到MongoDB模式设计系列。上一次我们研究了属性模式,在本文中,我们将了解一下桶模式。

桶模式在处理物联网(IOT)、实时分析或通用时间序列数据时特别有效。通过将数据放在一起,我们可以更容易地将数据组织成特定的组,提高发现历史趋势或提供未来预测的能力,同时还能对存储进行优化。

桶模式

随着数据在一段时间内持续流入(时间序列数据),我们可能倾向于将每个测量值存储在自己的文档中。然而,这种倾向是一种非常偏向于关系型数据处理的方式。如果我们有一个传感器每分钟测量温度并将其保存到数据库中,我们的数据流可能看起来像这样:

随着我们的应用程序在数据和索引大小上的扩展,这可能会带来一些问题。例如,我们可能最终不得不对每次测量的sensor_id和timestamp进行索引,实现以内存为代价的快速访问。但利用文档数据模型,我们可以按时间将这些数据“以桶的方式”储存到特定时间片测量值的文档中。我们还可以通过编程方式向每一个“桶”中添加附加信息。

通过将桶模式应用于数据模型,我们可以在节省索引大小、简化潜在的查询以及在文档中使用预聚合数据的能力等方面获得一些收益。获取上面的数据流并对其应用桶模式,我们可以得到:

使用桶模式,我们将数据“封装”到一个小时的桶中。这个特定的数据流仍然在增长,因为它目前只有42个测量值;这个小时还有更多的测量值要添加到“桶”中。当它们添加到measurements数组中时,transaction_count将增加,并且sum_temperature也将更新。有预先聚合的sum_temperature值,就可以很容易拉出一个特定的存储桶并确定该桶的平均温度(sum_temperature / transaction_co-unt)。在处理时间序列数据时,知道2018年7月13日加利福尼亚州康宁市下午2:00至3:00的平均温度通常比知道下午2:03那一时刻的温度更有意义也更重要。通过用桶组织数据并进行预聚合,我们可以更轻松地提供这些信息。

此外,随着我们收集的信息越来越多,为了更高效我们可能决定将源数据进行归档。你想我们多久才会需要访问从1948年开始康宁市的温度?能够将这些数据桶移动到数据存档中是一项很大的收益。

应用场景示例

有一个Bosch的物联网实现可以成为时间序列数据在现实世界中体现价值的一个例子。他们将MongoDB和时间序列数据应用于一个汽车业的数据程序中。该应用程序从整个车辆的各种传感器中获取数据,从而提高车辆本身的诊断能力和部件性能。

其它一些例子还包括在银行的金融程序中使用这种模式将交易进行分组。

结论

处理时间序列数据时,在MongoDB中使用桶模式是一个很好的选择。它减少了集合中的文档总数,提高了索引性能,并且通过预聚合简化了数据访问。

桶模式在许多情况下都非常有效,但是如果我们的数据中有异常值呢?这就是我们要讨论的下一个模式——异常值设计模式(Outlier Design Pattern)的作用所在。

译者

牟天垒

野生程序员一枚。长期关注分布式系统及通用型数据库技术。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mongoing中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB开发系列-数据集设计分桶范式
数据集设计模式,MongoDB在官方文档https://docs.mongodb.com/ecosystem/ 中的use cases部分提供了详细的参考内容。
needrunning
2019/07/04
1.8K0
MongoDB开发系列-数据集设计分桶范式
数据库信息速递 MONGODB 6.0 的新特性,更多的查询函数,加密查询,与时序数据集合 (译)
最近一段时间群里经常有人开始问MOGNODB 的问题,我觉得后面会开始在大量写一些MONGODB 的东西,原来从mongodb 3.2开始弄想起来也有6-7年时间了,相比传统的DBA 对于MONGODB 应该是非常了解和熟悉的,但是我错了,截止到现在,传统的DBA 对于MONGODB 一部分人还是一头雾水,时代不同了,不会MOGNODB 的DBA,如同你吃饭,只有刀叉,没有筷子,筷子更简单,更多变,适应的场景和变化更多,所以这是一个必备的技能,REDIS + MONGODB + MYSQL OR REDIS + POSTGRESQL + MONGODB 这属于DBA铁三角,不信你可以看看招聘信息。
AustinDatabases
2023/09/06
4760
数据库信息速递  MONGODB 6.0 的新特性,更多的查询函数,加密查询,与时序数据集合 (译)
MongoDB开发系列:从数据集合的设计开始
MongoDb中集合概念就是关系型数据库中的表,本文讨论的内容主要集中在MongoDb数据库库设计集合时关键原则和常见的设计误区。
needrunning
2019/07/04
1.9K0
MongoDB开发系列:从数据集合的设计开始
使用模式构建系列总结
现在到了我们总结使用模式构建系列的时候,这是一个很好的机会回顾一下这个系列涵盖的模式所解决的问题,并着重复习每个模式所具有的一些好处以及做出的权衡。关于模式设计,最常见的问题是“我正在设计一个要做某某事情的应用程序,如何对数据建模?”正如我们希望你在学习本系列过程中可以体会到的那样,要回答这个问题,需要考虑很多事情。不过我们提供了一个应用场景示例图,这至少有助于为通用的数据建模提供一些初级的指导。
MongoDB中文社区
2019/06/13
5720
时间序列数据和MongoDB:第一部分 - 简介
时间序列数据日益成为现代应用的核心 - 想想物联网,股票交易,点击流,社交媒体等。随着从批量处理系统向实时系统的转变,有效捕获和分析时间序列数据可以使组织在竞争对手之前更好地检测和响应事件,或提高运营效率以降低成本和风险。使用时间序列数据通常与常规应用程序数据不同,您应该遵循最佳实践。本系列博客旨在提供这些最佳实践,帮助您在 MongoDB 上构建时间序列应用程序:
MongoDB中文社区
2018/12/27
2K0
技术干货| MongoDB时间序列集合
点击下方公众号关注并分享,获取MongoDB最新资讯! 名词解释 Glossary bucket:带有相同的元数据且在一段有限制的间  隔区间内的测量值组。 bucket collection :用于存储时序型集合的底层的分组桶的系统集合。复制、分片和索引都是在桶级别上完成的。 measurement:带有特定时间序列的K-V集合。 meta-data:时序序列里很少随时间变化的K-V对,同时可以用于识别整个时序序列。 time-series:一段间隔内的一系列测量值。 time-series coll
MongoDB中文社区
2022/05/12
1.9K0
Elasticsearch用得好,下班下得早!
刚接触ES的小伙伴可能会有这样的疑问: 哪些场景下该使用ES?今天我们主要从市面上一些主流的产品对比分析, 看下那些场景下使用ES, 哪些场景下不适ES. 主要竞品如下: Solr Solr是第一
架构狂人
2023/09/21
2140
Elasticsearch用得好,下班下得早!
Elastic可观测解决方案为集成插件启用时序数据流,可节省高达 70% 的指标存储空间
Elastic 可观测解决方案里面一些最常用的集成插件在最新版本里面默认使用更加经济高效的时间序列索引来存储指标数据。Kubernetes、Nginx、System、AWS、Azure、RabbitMQ、Redis 和更多的常用 Elastic 可观测集成插件开始支持时间序列数据流 (TSDS)。
点火三周
2023/07/29
1.5K0
Elastic可观测解决方案为集成插件启用时序数据流,可节省高达 70% 的指标存储空间
在5000亿数据中大海捞针,需要怎样的硬件做支撑?
最近看到一篇由Alexander Zaitsev撰写的,关于ClickHouse性能对比的文章(文末会有报告的原文地址),觉得很有意思,所以拿来与大家分享一下。它有趣的地方在于,这是一篇针对性能对标的,性能对标测评。这算不算螳螂捕蝉,黄雀在后呢?
Nauu
2020/02/13
1.4K0
在5000亿数据中大海捞针,需要怎样的硬件做支撑?
使用模式构建:异常值模式
到目前为止,在《使用模式构建》系列中,我们已经研究了多态模式、属性模式和桶模式。其中,尽管文档的模式略有不同,但从应用程序和查询的角度来看,文档的结构基本上是一致的。然而,如果情况并非如此会怎么样?当有数据不属于“正常”模式时会发生什么?如果有异常值怎么办?
MongoDB中文社区
2019/04/22
6290
使用模式构建:异常值模式
解码大数据的四个V:体积、速度、种类与真实性
在大数据领域,有一个大家耳熟能详的概念——“四个V”:Volume(体积)、Velocity(速度)、Variety(种类)、Veracity(真实性)。这四个维度构成了理解和应用大数据的核心框架。今天,我们从技术视角出发,结合实际案例和代码,逐一剖析这四个V,带你全面解码大数据的真谛。
Echo_Wish
2025/01/27
940
解码大数据的四个V:体积、速度、种类与真实性
Flux脚本语言入门教程
Flux 是一种开源数据脚本语言,旨在查询、分析和处理数据。Flux支持多种数据源类型,包括:
Jensen_97
2023/11/08
1.3K0
物联网云平台数据存储方案,这次我终于找对了
物联网云平台是一个连接设备和互联网的系统,通过传感器、设备和网络进行数据采集和传输,需要一个可靠和高效的存储系统来存储和管理大量的物联网数据。存储的意义在于提供数据的持久性和可访问性,使得数据可以在任意时间被查询、分析和应用。
架构师修炼
2023/09/03
1.5K0
物联网云平台数据存储方案,这次我终于找对了
时间序列数据和MongoDB:第\b二部分 - 架构设计最佳实践
之前的文章“ 时间序列数据和MongoDB:第一部分 - 简介 ”中,介绍了时间序列数据的概念,然后介绍了一些常见问题,可用于帮助收集时间序列应用程序。这些问题的答案有助于指导支持大批量生产应用程序部署所需的架构和 MongoDB 数据库配置。现在,我们将重点介绍两种不同的模式设计如何影响读取,写入,更新和删除操作下的内存和磁盘利用率。
MongoDB中文社区
2018/12/27
1.3K0
时序数据库学习二:OpenMetrics规范
OpenMetrics:一种云原生、高度可扩展的指标协议。它定义了大规模上报云原生指标的事实标准,同时支持文本表示协议和Protocol Buffers协议。虽然时间序列可以支持任意字符串或二进制数据,但RFC只针对和包括数字数据。得益于Prometheus的流行,作为Prometheus的监控数据采集方案,OpenMetrics可能很快会成为未来监控的业界标准。
仙士可
2022/06/05
2.2K0
使用模式构建:计算模式
我们已经在使用模式构建系列研究了各种优化存储数据的方法。现在,我们从另一个角度来看看模式设计。通常,仅仅存储数据并使其可用还不够。当我们可以从数据中计算出值时,数据会变得有用的多。最新Amazon Alexa的总销售收入是多少?有多少观众看了这部最新的大片?这类问题可以从数据库中存储的数据那里得到答案,但必须进行计算。
MongoDB中文社区
2019/04/22
5100
使用模式构建:计算模式
揭秘可观测利器:腾讯云 APM 深度融合 OpenTelemetry 和 Prometheus,助力高效指标采集与处理
导语:文章主要介绍腾讯云应用性能监控(APM)服务端通过对数据的处理将 OpenTelemetry 指标转换成 Prometheus 指标,输出到腾讯云 Prometheus 监控服务中,做到让用户只需要进行简单的关联后,应用直接通过 OpenTelemetry API 上报指标,并提供多种可自定义的图表展示方式。
腾讯云可观测平台
2025/02/11
2090
揭秘可观测利器:腾讯云 APM 深度融合 OpenTelemetry 和 Prometheus,助力高效指标采集与处理
Pandas数据应用:天气数据分析
随着全球气候变化的加剧,天气数据的分析变得越来越重要。通过分析历史天气数据,我们可以预测未来的气候趋势,帮助各行各业做出更明智的决策。Pandas 是一个强大的 Python 数据处理库,广泛应用于数据科学领域。本文将从基础到深入,介绍如何使用 Pandas 进行天气数据分析,并探讨常见问题、报错及解决方案。
Jimaks
2024/12/30
2760
不同数据库处理高基数数据的方式
时间序列数据、物联网传感器读数、用户行为日志——这些只是现代系统必须处理的数据流的几个例子。它们的共同点是都倾向于高基数,这给数据存储和分析带来了独特的挑战。随着组织越来越依赖数据驱动的决策,了解不同数据库如何处理高基数数据对于构建高效且可扩展的系统至关重要。
云云众生s
2025/01/09
810
不同数据库处理高基数数据的方式
什么魔力要你升级到 MONGODB 6.0 (译)
MONGODB 已经走到了6.0,但大多数的公司使用MONGODB 可能都没有到5.0 这个版本,大多还在4.X 晃悠,偶然看到一篇关于 7大理由升级到6.0 的文字,翻译并分享,看看有什么需求促使我们升级到更高版本的MONGODB
AustinDatabases
2022/12/12
1.8K0
什么魔力要你升级到 MONGODB 6.0 (译)
推荐阅读
相关推荐
MongoDB开发系列-数据集设计分桶范式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档