写点什么

NoSQL、JSON 和时间序列数据管理: Anuj Sahni 访谈

  • 2014-04-29
  • 本文字数:1745 字

    阅读完需:约 6 分钟

时间序列数据是以固定的时间间隔按顺序排列的变量值。时间序列数据正从四面八方向我们涌来:传感器、移动设备、Web 追踪、财经事件、工厂自动化以及各种工具—只列举这几个吧。

时间序列数据管理最近比较受关注,InfoQ 采访了 Oracle NoSQL 数据库的高级产品经理 Anuj Sahni,请他介绍时间序列数据,以及如何对这种类型的数据建模。

InfoQ: 什么是时间序列数据,它跟结构化数据有什么区别?

Sahni: 时间序列是按统一的时间间隔采集的数据点序列。比如来自全球证券交易所的股票行情信息,定期采集的贵金属价格,按周期间隔采集的特定经 / 纬度的天气详情,从制造机械或石油钻井平台的传感器上源源不断输出的数据。时间序列信息不一定会跟结构化数据有什么不同,但它是 a) 数量和速度出众 b) 信息的稀疏性使得很难用传统的数据存储方式保存它,因为那种方式是为定义良好的结构化数据设计的。

InfoQ: 将一个数据集建模为时间序列数据有什么好处?

Sahni: 并不是所有的数据都需要用时间序列表示,但如果你有持续的信息项进来(比如说来自于传感器),并且你想要基于时间维度分析那些数据,那么比较稳健的做法是保留每条信息项的到达时间,并为之建立索引以便提高查询速度。

InfoQ: 为了把时间序列类型的数据保存在我们的数据库中,设计时要考虑哪些问题?

Sahni: 时间序列数据,一般来说,都是大量生产的,所以需要特别考虑如何保存在数据库中,以及如何很好地访问它们。所以你应该尽量事先明确数据的访问方式,比如在证券交易的演示中,我们知道每只股票的行情信息都是每秒生成一次的,即每只股票每天有 86K 的行情信息。如果我们把那么多条记录都各自存在不同的行中,那访问这些信息的时间复杂度将会非常巨大,所以我们可以按 5 分钟,1 小时,或者一天将这些记录分组为一条向量记录。把信息存在更大数据块里的好处显而易见,因为你要从 NoSQL 存储中获取特定时间段的数据时,所做的查询次数更少。还有一点需要记住,如果你开的窗口太小,那你就要做很多的读写操作;如果太大,那耐久力就是个问题,如果出现系统故障,你就要有信息丢失了。所以你得掌握好两者的平衡。

InfoQ: 在使用时间序列数据时,开发人员应该遵循什么样的设计或架构模式呢?

Sahni: 在设计任何一个时间序列应用时,最重要的就是要了解客户端应用的访问模式,以及它所要求的信息粒度。尽管我们可能需要持久化所有的时间序列数据,但一般我们不需要把每个数据点都存成数据库里的单独记录。如果我们可以定义一个时间窗口,然后把那个时间段的所有读取都存为一个数组,那么我们可以极大削减存储在数据库中的实际记录数量,提升系统的性能。继续前面那个例子,如果每支股票每天生成 84K 的数据点,那么你在访问这些信息时就需要在硬盘上做很多的随机 I/O,简直太多了,但如果你可以把同样的信息存为一个数组,每个数组放一个小时的信息,那么取一天的数据只需要查询 24 次就行了。

另外一个需要平衡的是数组对象的大小 (不管是 JSON, XML 还是其他什么东西)。你应该不想让数组的窗口大小大到最终返回的数据超出你的需要太多,那样就浪费了宝贵的带宽。但如果你把窗口定的太精细,那很可能会降低吞吐量,并增加系统的延迟。所以要处理好两边的平衡,得出合适的时间窗口大小,从 / 往数据库中读 / 写时间序列数据集合。

InfoQ: 把数据集存为时间序列数据有什么限制吗?

Sahni: 我得说处理时间序列数据所面临的真正挑战是基于需求和访问模式微调系统。如果将来访问模式变了,那你可能必须重建索引,重新计算数组的大小来优化查询。所以每个时间序列应用的定制性都非常强,你可以采用最佳实践,但却不能指望只通过引入数据建模模板来解决不同的时间序列问题。

Anuj 还在去年的 JavaOne 大会上讲了如何在应用中管理时间序列数据。

关于受访者

Anuj Sahni是 Oracle 的高级产品经理 **,他负责管理公司在NoSQL数据库和大数据产品上的领导地位。**Anuj 在世界 500 强公司里有超过 12 年的产品管理 / 开发经验。他领导过高度成功的、分布在全球的跨职能团队开发新软件和基于云的服务。Anuj 在佛罗里达大学取得了计算机工程硕士学位,还在生物信息学领域发表过学术论文。在闲暇时,他喜欢骑行、追踪,还有跟他的两个女儿玩。

查看原文链接: NoSQL, JSON, and Time Series Data Management: Interview with Anuj Sahni

2014-04-29 08:054665
用户头像

发布了 45 篇内容, 共 26.2 次阅读, 收获喜欢 11 次。

关注

评论

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

web前端培训:Vue3 调度系统的深度剖析

@零度

Vue 前端开发

《隐私计算》重磅发布,全面、系统论述数据要素安全流通价值

博文视点Broadview

IOS技术分享| anyLive 开源项目

anyRTC开发者

ios 音视频 移动开发 视频直播 开源demo

2022,你的团队距离持续部署还有多远?| 研发效能提升36计

阿里云云效

阿里云 云原生 持续部署 研发团队 研发

首发|Clusterpedia 0.1.0 四大重要功能

Daocloud 道客

开源项目 多云管理 K8s 多集群管理 多云资源复杂检索

脱颖而出!OceanBase 入选 2021“科创中国”开源创新榜单

OceanBase 数据库

数据库 分布式 OceanBase 开源 科创中国

李凌:6 年,我如何从开源小白成为 Apache 顶级项目 PMC

腾源会

开源 腾源会

Kafka中指定副本为Leader的三种实现方式

石臻臻的杂货铺

kafka 运维

智汇华云 | Kubernetes多集群管理方案kubefed原理解析

华云数据

云计算 华云数据 虚拟云

会声会影2022脸部索引功能详解

懒得勤快

始于信任 忠于专业|DataPipeline收到一封来自山东城商行联盟的感谢信

DataPipeline数见科技

Web 键盘输入法应用开发指南 (3) —— 输入法事件

天择

JavaScript 键盘 输入法 3月月更

高性能图计算系统 Plato 在 Nebula Graph 中的实践

NebulaGraph

图数据库 图计算 分布式图数据库

EMQ 正式成为 OASIS 最高级别成员,主导推进物联网协议标准化应用

EMQ映云科技

开源 物联网 ibm mqtt OASIS

PostmangRPC功能使用介绍

蜜糖的代码注释

gRPC 调试 Postman 3月月更

Hoo虎符研究院|2022年三月值得关注的赛道

区块链前沿News

Web NFT 元宇宙 虎符交易所

Redis现网那些坑:用个缓存,还要为磁盘故障买单?

华为云开发者联盟

redis 缓存 SSD 磁盘故障 缓存Redis

云原生多云应用利器 -- Karmada 调度器

Daocloud 道客

Kubernetes 云原生 开源软件 Karmada

数仓中长跳转问题复现及解决方案

华为云开发者联盟

寄存器 GaussDB(DWS) 长跳转 编译器O2

java培训:MyBatis的架构与原理分析

@零度

mybatis JAVA开发

2022年1月娱乐直播行业用户洞察:行业格局稳定,内容运营精细化

易观分析

一文全面掌握大数据关联与汇聚

云智慧AIOps社区

redis Clickhouse flink sql 大数据开发

微服务身份认证需求下的私钥托管痛点与破局

全象云低代码

微服务 低代码 身份认证 鉴权 密钥

云原生网络利器--Cilium 总览

Daocloud 道客

ebpf cilium 云原生网络 容器网络方案

上手体验!如何借助龙蜥实验室快速部署 Web 应用?

OpenAnolis小助手

开源 国产操作系统 web服务器

如何获取 Docker 容器的 IP 地址

AlwaysBeta

Docker 容器

检测图片中是否有二维码

逆锋起笔

android 二维码 Android端 3月月更

为什么需要线程池?什么是池化技术?

CRMEB

通过简书网学习 ActionChains,selenium webdriver 学习第3篇

梦想橡皮擦

Python 3月月更

DM 中 relay log 性能优化实践丨TiDB 工具分享

PingCAP

大数据培训:Spark高频面试题汇总

@零度

大数据 spark

NoSQL、JSON和时间序列数据管理: Anuj Sahni访谈_Oracle_Srini Penchikala_InfoQ精选文章