欧洲航天局科学数据中心(the European Space Agency Science Data Center,简称ESDC)利用TimescaleDB扩展切换到用PostgreSQL来存储他们的数据。ESDC的各种数据,包括结构化的、非结构化的和时间序列指标在内接近数百TB,还有使用开源工具查询跨数据集的需求。

\\

ESDC收集来自他们每一个空间任务的海量数据(每天的量以TB计算),并把这些数据提供给包括普通公众在内的团队使用。包括空间任务和卫星的元数据,以及在空间任务执行期间生成的数据,这些数据都可以是结构化的,也可以是非结构化的。生成的数据包括地理空间和时间序列数据。因为需要能够使用现成的、开源工具来分析数据,所以在选择数据存储解决方案时,对数据集的交叉运用就成了一个需求项 。团队希望摆脱像Oracle和Sybase这样的传统系统。

\\

因为PostgreSQL的成熟,以及对各种数据类型和非结构化数据的支持,ESDC团队已经确定使用PostgreSQL。除了这些例行要求外,ESDC也需要存储和处理地理空间和时间序列数据。地理空间数据是那些附有位置信息的数据,比如行星在天空中的位置。这必须在不使用不同类型或数据源的不同数据存储的情况下完成。之所以决定迁移到PostgreSQL,是因为它支持这种处理的扩展机制。PostgreSQL针对JSON和全文本搜索有原生支持。PostGIS、pg_sphere和q3c扩展运行ESDC使用常规SQL来运行基于位置的查询以及更专业的分析。

\\

对于像太阳轨道器项目(the Solar Orbiter project)这样的任务产生的时间序列数据,PostgreSQL还必须高效且可扩展地存储它们。这对写入速度要求很低,因为收集到的数据存储在本地的卫星上,“用于每天的地面站通行期间的稍后下行链路”,并分批次插入数据库。但是,针对这个数据库的查询,必须支持结构化的数据类型、数据集之间的ad-hoc匹配和高达数百TB的大型数据集。

\\

目前,还不清楚哪些特定的时间序列数据库得到了评估,但是,该团队没有选择其中任何一个,因为他们已经将SQL标准化为首选的查询语言,并把PostgreSQL作为平台,因为它满足了他们的其他要求。过去有一些方法可以把时间序列数据存储在PostgreSQL上。它最近的分区特性试图解决这样的问题:将大表索引保存在内存中,并在每次更新时将其写入磁盘,方法是将表分割成更小的分区。当按时间进行分区时,分区也可以用于存储时间序列数据,遵循着这些分区上的索引。ESDC存储时间序列数据的时候,遇到了性能问题,于是转而使用名为TimescaleDB的扩展。

\\

\\

图片来源: https://blog.timescale.com/when-boring-is-awesome-building-a-scalable-time-series-database-on-postgresql-2900ea453ee2

\\

TimescaleDB使用名为hypertable的抽象来隐藏跨多个维度(如时间和空间)的分区。每个hypertable被分成“块(chunk)”,每个块对应一个特定的时间间隔。块的大小是一定的,因此,用于表索引的所有B树结构都能够在数据插入数据库期间驻留内存,类似于PostgreSQL进行分区的方式。索引是根据时间和分区关键字自动产生的。可以针对任意“维度”进行查询,就像其他时间序列数据库允许针对标签查询一样。

\\

TimescaleDB和其他分区工具(如pg_partman)的区别之一是自动调整分区大小。尽管据报道,与基于PostgreSQL 10 分区的解决方案和InfluxDB相比,TimescaleDB有更高的性能基准,但人们一直担心可维护性。在撰写本文时,TimescaleDB的集群部署仍处于开发阶段。

\\

TimescaleDB是托管在GitHub上的开源软件。

\\

阅读英文原文:High Volume Space Exploration Time-Series Data Storage in PostgreSQL

\\

感谢冬雨对本文的审校。

PostgreSQL中的大容量空间探索时间序列数据存储相关推荐

  1. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)

    R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...

  2. Python使用matplotlib可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)

    Python使用matplotlib可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) 目录

  3. Android中使用File文件进行数据存储

    上一篇学到使用SharedPerences进行数据存储,接下来学习一下使用File进行存储 我们有时候可以将数据直接以文件的形式保存在设备中, 例如:文本文件,图片文件等等 使用File进行存储操作主 ...

  4. 日常生活中怎样利用计算机的,数据存储与管理在日常生活中的三种方式

    数据存储与管理在使用的时候还是有很多的技术性要求需要我们不断的学习和实践.下面是在长时间的市场积累中总结出来的一些关于数据存储与管理的技巧. 过去20年里,计算领域发生了很大的变化,无论如何变化,计算 ...

  5. python标准化_如何在Python中规范化和标准化时间序列数据

    最低日温度 该数据集显示了一个强大的季节要素,并有一个很好的,细致的细节工作. 本教程假定数据集位于当前工作目录中,文件名为 " daily-minimum-temperatures-in- ...

  6. DX11中渲染到纹理的数据存储问题

    以float格式存储到纹理中时,rgba中的a值,如果存储方式不当,可能会导致数据错乱. 问题是在体绘制实验中出现的. 在渲染到纹理的ps shader中,使用如下代码输出坐标值,其中output.v ...

  7. Web SQL介绍,web sql中增删改查、数据存储位置、运行脚本、建表建库

    Web SQL: Web SQL是一种简单的存在服务器中的数据库,运行在javascript脚本中,其数据储存在计算机Application中Web SQL中. web sql提供了三个核心方法: 1 ...

  8. Netflix数据库架构变革:缩放时间序列的数据存储

    Netflix分析了其数据集的访问模式,对查看数据存储架构进行了重新设计,并采用群集分片的数据分类方式,实时和压缩数据并行的读取模式.以寻求满足更多的独特需求与成本,效率的改进.本文来自Netflix ...

  9. Android中的数据存储

    Android中的数据存储 1.SharedPreference存储(共享参数) 1.1.使用SharedPreferences存储和读取数据的步骤 存储数据 保存数据一般分为四个步骤: 使用Acti ...

最新文章

  1. 在 Windows Server 2008 中通过组策略向计算机或用户部署网络打印机
  2. php小偷程序原理分析2
  3. php二进制流转bmp图片,php图片的二进制转换实例
  4. PostgreSQL 优化器代码概览 1
  5. [转载] Java中日期格式转换
  6. 解决Pycharm文件夹中同级目录导包报错的问题
  7. Python -- 常见错误解决方法记录
  8. python支持向量机回归_Python机器学习之支持向量机——非线性SVC
  9. java多窗口,主编处理java代码怎么实现多个窗口
  10. python websocket爬虫_python根据websocket抓取斗鱼弹幕和礼物消息
  11. 索尼z5原生android6.0,索尼Z5怎么刷安卓6.0?索尼Z5刷安卓6.0固件包教程
  12. 重磅官宣:说一件大事
  13. win10默认头像路径
  14. 《安富莱嵌入式周报》第249期:2022.01.17--2022.01.23
  15. 王冰玉时代曙光科技 丽江-稻城-理塘-丹巴-康定-成都“中心"穿越小卡片之旅...
  16. 按住Shift键右击鼠标打开命令行窗口
  17. React构造函数中为什么要写 super(props)
  18. weblogic启动错误 ClassNotFoundException: com.bea.wcp.sip.management.descriptor.beans.SipServerBean
  19. 【spark】Spark SQL:INSERT INTO语句语法
  20. Python爬虫学习笔记 (9) [初级] 小练习 爬取慕课网课程清单

热门文章

  1. 阿里古谦:阿里互联网架构的6大最佳实践-博客-云栖社区-阿里云
  2. 优先级调度和运行前调度的比较
  3. 转载 Xmlhttprequest对象池
  4. 摸清源头 让电脑运行不再迟缓
  5. 佩恩:京奥了不起 10年后“水落石出”
  6. Wallop下蛋送邀请。
  7. Proxy 动态代理 InvocationHandler CGLIB MD
  8. MongoDB的安装及基本命令和pymongo的使用
  9. iOS: 零误差或极小误差的定时执行或延迟执行?
  10. 如何安装Android SDK Emulator