我正在为大型地理空间数据集设计一个新系统,这将需要快速的读取查询性能。因此,我想看看是否有人认为在以下情况下有合适的DBMS,数据结构或其他方法来实现所需的性能,或者是否有经验/建议:
将从处理后的卫星雷达数据中连续产生数据,这些数据将覆盖全球。根据卫星的分辨率和地球的土地覆盖范围,我估算了完整的数据集,可在全球750亿个离散位置产生价值。在单个卫星的生命周期中,输出将在这些位置的每个位置产生多达300个值(因此,总数据集大于22万亿个值)。这是针对一颗卫星的,已经在轨道上有第二颗,在新的几年中计划再发射两颗。因此会有很多数据!单个数据项非常简单,仅包含(经度,纬度,值),但是由于项数众多,我估计单个卫星可以产生高达100TB的数据。
写入的数据永远不需要更新,因为它只会随着新的卫星采集处理而增长。写入性能并不重要,但读取性能至关重要。该项目的目标是能够通过简单的界面(如google map上的图层)可视化数据,其中每个点均基于其平均值,梯度或随时间变化的某些函数具有彩色值。(帖子末尾的演示)。
根据这些要求,数据库需要具有可伸缩性,我们可能会寻求云解决方案。该系统必须能够处理地理空间查询,例如“(纬度,经度)附近的点”和“(框)中的点”,并具有小于1的读取性能(用于定位单个点)以及包含多达50,000点(尽管最好是200,000点)。
到目前为止,我在1.11亿个位置拥有约7.5亿个数据项的测试数据集。我已经试用了一个postgres / postGIS实例,该实例可以正常运行,但是没有分片的可能性,我不能这样做,因为随着数据的增长,它也可以应对。远,并且通过分片就可以随数据量进行扩展。我最近对弹性搜索学到了一些知识,因此对此的任何评论对我来说都是新的,将是有帮助的。
这个gif(来自我的postgres试用版)正在提供(6x3)预先计算的栅格图块,每个图块包含约200,000点,并花费约17s来生成每个。通过单击一个点,可以通过在小于1秒的时间内将所有历史值拉到最近的位置来绘制图表。
对于冗长的帖子,我们深表歉意,欢迎提出任何意见/建议。