时间序列数据和MongoDB:第一部分 - 简介

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:
时间序列数据日益成为现代应用的核心 - 想想物联网,股票交易,点击流,社交媒体等。随着从批量处理系统向实时系统的转变,有效捕获和分析时间序列数据可以使组织在竞争对手之前更好地检测和响应事件,或提高运营效率以降低成本和风险。使用时间序列数据通常与常规应用程序数据不同,您应该遵循最佳实践。本系列博客旨在提供这些最佳实践,帮助您在 MongoDB 上构建时间序列应用程序:
  1. 介绍时间序列数据的概念,并描述与此类数据相关的一些挑战

  2. 如何查询,分析和呈现时间序列数据

  3. 提供发现问题,帮助您收集成功交付时间序列应用程序所需的技术要求

01

什么是时间序列数据?

虽然并非所有数据都属于时间序列,但其中越来越多的数据可归类为时间序列 ——让我们可以使用实时的数据,而不是批量的使用。

在每个行业和每个公司中,都需要查询,分析和报告时间序列数据。

想想看,股票当日,交易者不断查看股票价格随时间的变化,并运行算法来分析识别机会的走向。他们正在查看一段时间区间内的数据,例如每小时或每日范围。联网汽车公司可能会获得遥感信息,例如发动机性能和能耗,以改善部件设计,并监控磨损率,以便他们可以在问题发生之前安排车辆维修,他们也会查看一段时间的数据。

02


为什么时间序列数据具有挑战性?

时间序列数据可以包括以恒定时间间隔捕获的数据(如每秒的设备测量值),或者以不规则的时间间隔(如警报和审计事件用例生成的数据)捕获的数据。时间序列数据也经常用诸如设备类型和事件的位置之类的属性来标记,并且每个设备可以提供可变的附加元数据。数据模型灵活性可满足各种快速变化的数据提取和存储要求,因此传统的具有严格模式的关系(表格)数据库系统难以有效处理时间序列数据。此外,存在可伸缩性问题。由于多个传感器或事件产生的读数频率很高,时间序列应用程序会生成大量需要提取和分析的数据流。

时间序列数据可以来自不同的来源,每个来源都需要生成、存储并分析不同属性。数据生命周期的每个阶段都对数据库提出了不同的要求 - 从提取到消费和归档。


  • 在数据读取期间,数据库主要执行写入密集型操作,主要执行更新和偶尔的插入。提取期间检测到数据流异常时,例如超过特定阈值的值,消费者可能希望得到数据的实时警告。

  • 随着更多数据被读取,消费者可能希望通过查询获得特定的见解,并发现趋势。在数据生命周期的这个阶段,工作负载被读取而不是重写,但数据库仍然需要保持高写入速率,因为数据被同时读取然后被查询。

  • 消费者可能希望查询历史数据并执行预测分析,利用机器学习算法来预测未来行为或识别趋势。这将对数据库施加额外的读取负载。

  • 最后,根据应用程序的要求,捕获的数据可能具有保质期,需要在一段时间后存档或删除。

正如您所看到的那样,处理时间序列数据不仅仅是存储数据,还需要广泛的数据平台功能,包括处理同时读写需求,高级查询功能和归档等等。


03

谁在使用 MongoDB 获取时间序列数据?

MongoDB 提供了满足高性能时间序列应用程序需求所需的所有功能。其中一家利用MongoDB 时间序列功能的公司是定量投资管理公司 Man AHL。

Man AHL 的 Arctic 应用程序利用 MongoDB 存储高频金融服务市场数据(每秒约2亿五千万)。对冲基金经理的定量研究人员(“quants”)使用 Arctic 和 MongoDB 来研究、构建和部署新的交易模型,以了解市场的行为方式。使用MongoDB 与现有专有数据库相比,Man AHL 实现了40倍的成本节省。除了节省成本之外,他们还能够将处理性能提高 25 倍,超过之前的解决方案。Man AHL 在 GitHub 上开源他们的 Arctic 项目

博世集团是一家跨国工程集团,拥有近 30 万名员工,是全球最大的汽车零部件制造商。物联网是博世的战略计划,因此公司选择 MongoDB 作为其物联网架构中的数据平台层。该架构为博世集团及其工业互联网应用中的许多客户提供物联网应用,如汽车,制造业,智能城市,精准农业等。如果您想了解更多关于通过管理物联网平台生成的多样化,快速变化和大批量时间序列数据集所带来的主要挑战,请下载博世和 MongoDB 白皮书

西门子是一家专注于电气化,自动化和数字化领域的全球性公司。西门子开发了“Monet”,一个由 MongoDB 支持的平台,提供先进的能源管理服务。Monet 使用MongoDB进行实时原始数据存储,查询和分析。

04

专注于应用要求

使用时间序列数据时,必须花足够的时间来了解如何创建,查询和过期数据。有了这些信息,您可以优化架构设计和部署架构,以最好地满足应用程序的要求。

在清楚应用程序的要求前,不应该直接确定性能指标或 SLA。

当您开始使用 MongoDB 进行时间序列项目时,您应该清楚以下问题:

写工作量:

  • 提取率是多少?每秒多少次插入和更新?

  • 随着插入速率的增加,您的设计可能会受益于 MongoDB 自动分片的水平扩展,允许您跨多个节点对数据进行分区和扩展多个客户端的同时连接。

  • 虽然单个 MongoDB 节点可以处理来自数万个 IoT 设备的同时连接,但您需要考虑使用分片来扩展它们以满足预期的客户端负载。您是否需要存储所有原始数据点或预先汇总数据?如果预先聚合,可以存储哪些粒度或间隔的汇总级别?每分钟?每15分钟一次?

  • 如果您的应用程序要求证明这一点,MongoDB 可以存储您的所有原始数据。但是,请记住,通过预聚合减少数据大小将产生较低的数据集和索引存储,并提高查询性能。每个事件中存储的数据大小是多少?

MongoDB的单个文档大小限制为16 MB。如果您的应用程序需要在单个文档中存储更大的数据,例如二进制文件,您可能希望利用 MongoDB GridFS。理想情况下,在存储高容量时间序列数据时,最佳做法是将文档大小保持在1个磁盘块大小附近。

读工作量:

  • 每秒读取查询数量是多少?

  • 较高的读取查询负载可能会受益于其他索引或通过 MongoDB 自动分片进行水平扩展。

  • 与写入卷一样,可以使用自动分片来缩放读取。您还可以在副本集中的辅助副本之间分发读取负载。客户是否在地理上分散或位于同一地区?

  • 您可以通过部署在地理上更接近数据使用者的只读辅助副本来减少网络读取延迟。您需要支持哪些常见的数据访问模式?例如,您是通过单个值(例如时间)检索数据,还是需要更复杂的查询来查找属性组合的数据,例如事件类,按区域,按时间?

  • 创建适当的索引时,查询性能最佳。了解如何查询数据并定义正确的索引对数据库性能至关重要。此外,能够在不中断系统的情况下实时修改索引策略是时间序列平台的重要属性。您的消费者会使用哪些分析库或工具?

  • 如果您的数据使用者使用的是Hadoop或Spark等工具,那么MongoDB就有一个MongoDB Spark Connector,可以与这些技术集成。MongoDB还有用于 PythonRMatlab和其他用于分析和数据科学的平台的驱动程序。您的组织是否使用 BI 可视化工具来创建报告或分析数据?

MongoDB通过MongoDB BI Connector 集成了大多数主要的BI报告工具,包括 Tableau,QlikView,Microstrategy,TIBCO等。MongoDB 还有一个名为 MongoDB Charts 的本机BI报告工具,它提供了在 MongoDB 中可视化数据的最快方法,而无需任何第三方产品。

数据保留和存档:

  • 什么是数据保留政策?可以删除或存档数据吗?如果是这样,在什么年龄?

  • 如果存档,存档需要多长时间以及如何访问?存档数据是否需要存储或是否可以从备份中恢复?

在 MongoDB 中有各种删除和归档数据的策略。其中一些策略包括使用 TTL索引,可查询备份分区分片(允许您创建分层存储模式),或者只是创建一个架构,您可以在不再需要时删除数据集。

安全:

  • 需要定义哪些用户和角色,以及每个实体所需的最低权限权限是什么?

  • 加密要求是什么?您是否需要支持时间序列数据的运行时(网络)和静止(存储)加密?

  • 是否需要在审计日志中捕获针对数据的所有活动?

  • 该应用程序是否需要符合 GDPR,HIPAA,PCI 或任何其他监管框架?

监管框架可能需要启用加密,审计和其他安全措施。MongoDB 支持这些遵从性所必需的安全配置,包括静态和运行中的加密,审计以及基于角色的粒度访问控制控制。

虽然列表可能无法包含所有需要考虑的事项,但它将帮助您思考应用程序需求及其对MongoDB 架构和数据库配置设计的影响。在下一篇博客文章 2,“第2部分:MongoDB中的时间序列数据的模式设计 ”中,我们将探索各种方法来构建不同需求集的模式,以及它们对应用程序性能和规模的相应影响。 3,“时间序列数据和MongoDB:第3部分 - 查询,分析和呈现时间序列数据 ”,我们将展示如何查询,分析和呈现时间序列数据。


原文发布时间为:2018-10-11
本文作者: Mongoing中文社区
本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“ ”。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
12天前
|
JSON NoSQL MongoDB
mongodb导出聚合查询的数据
mongodb导出聚合查询的数据
|
12天前
|
存储 NoSQL 关系型数据库
MongoDB 的数据关系
MongoDB是面向文档的NoSQL数据库,以其灵活的数据模型区别于传统关系型数据库。数据以JSON-like文档形式存储,文档可嵌套并存储在集合中。其特点包括:嵌入式文档、弱类型架构(无模式)、无连接性及引用关系。MongoDB支持动态添加字段,通过嵌入或引用处理文档关联,适应各种数据结构和复杂关系,适合不同应用场景。
|
22天前
|
NoSQL MongoDB
MongoDB数据日期显示相差8小时
MongoDB数据日期显示相差8小时
12 0
|
2月前
|
JSON NoSQL MongoDB
mongoDB数据的导出导入
mongoDB数据的导出导入
|
4月前
|
NoSQL 数据管理 分布式数据库
阿里云数据库MongoDB版助力掌阅平滑上云,撬动数据红利
随着互联网行业格局的逐步成型以及数字阅读行业的市场竞争日益激烈,掌阅将与阿里云和MongoDB继续深度合作,变现技术红利,继续深化存量用户精细化运营和加大增量用户贡献。
阿里云数据库MongoDB版助力掌阅平滑上云,撬动数据红利
|
4月前
|
存储 人工智能 NoSQL
多维数据实时分析,MongoDB给零售企业提供快速高效的数据洞察力
客户行为正在迅速演变,供应链正在重组,员工也正在以新的方式工作。企业需要提供更加个性化的客户体验,对市场趋势做出更快速的反应,监测和预防潜在问题。
多维数据实时分析,MongoDB给零售企业提供快速高效的数据洞察力
|
5月前
|
SQL NoSQL MongoDB
06 MongoDB - 数据操作
06 MongoDB - 数据操作
20 0
|
3月前
|
JSON NoSQL 小程序
Mongodb数据库的导出和导入总结
Mongodb数据库的导出和导入总结
189 0
|
1月前
|
NoSQL 网络协议 MongoDB
Windows公网远程连接MongoDB数据库【无公网IP】
Windows公网远程连接MongoDB数据库【无公网IP】
|
1月前
|
存储 NoSQL 关系型数据库
一篇文章带你搞懂非关系型数据库MongoDB
一篇文章带你搞懂非关系型数据库MongoDB
55 0