非关系型数据库和气象数据

5

现在有一种非常新颖的技术,叫做NoSQL数据库。我的数据是一些气象数据,由多行多列组成:值表示某个时间、某个站点(用WMO编号而不是坐标标识)测量到的某些参数值。

并非每个站点都会测量所有参数,也不是每个参数都能一直被测量。

目前我将这些数据(30年间每小时的数值,共计约10亿条)存储在MySQL中。由于数据不断增长,加之未来还会有更多数据,让我有些头疼。

看到那些似乎很容易扩展的基于文档的NoSQL系统,我想知道对于气象数据,NoSQL是否是一个可行的数据存储概念。您有相关经验吗?

更新:忘记提及典型查询:大多数查询需要在时间轴上获取数据,比如:给我2010年1月1日00:00到2010年3月1日00:00期间066310站点的温度。

或者:给我某个特定站点所有参数最近的数值。


到底是什么让你头疼?数据库管理?性能?数据聚合?还是其他什么?如果与性能有关,您是否分析了查询计划 - 也许您需要更好的索引或调整数据库设置(PostgreSQL在这方面非常出色)。您的数据集有多大 - 硬盘空间方面。1GB?更多?更少? - Mike
很难在不知道您的表结构和查询细节的情况下做出判断,但是您可以通过在经典数据库中对日期字段进行聚集(并为您的查询提供适当的索引)来获得更快的速度。 - ChristopheD
@Mike:当前数据库在磁盘上大约有30GB,但未来的扩展将使其增加到100-300GB。查询会进行分析,并相应地对表进行索引。让我们头疼的是一般的事物大小。备份、复制恢复、带有重型索引活动的批量插入都需要越来越长的时间。@ChristopheD:集群绝对是我们正在研究的内容。 - Christian Studer
3个回答

2

当您的数据结构非常简单(例如简单的键值存储)/可预测,并且不需要关系完整性或需要自由/高级查询时,NoSQL可能很适合。

然而,易于扩展性所获得的优势可能会失去灵活性和一致性。

最大的问题是如何轻松地组合复杂的数据查询。我认为气象数据不是NoSQL的最佳候选。

我个人更喜欢PostgreSQL而不是MySQL,并且在正确设置时发现它非常可扩展(即使有数百万甚至数十亿行)。


这并不完全正确。NoSQL也可以适应非常复杂的数据,例如图形数据库。此外,还有更简单的键值NoSQL数据存储。NoSQL解决方案的种类非常广泛。 - ase
@adamse:关于NoSQL术语的广泛性,你提到的很有道理,尽管我认为图数据库可能不是气象数据的最佳选择;-) - ChristopheD


1

我现在很难给出一个连贯的答案,但是我会尽力。

  1. 你的数据可以轻松地适应“nosql”数据存储,例如Cassandra(可能还有更多)。
  2. 许多“nosql”解决方案的无模式设计会使你受益(因为并非所有列(使用MySQL术语)都一直存在)。
  3. 基于时间的查询在Cassandra中不成问题(请查看基于TimeUUID的键)。
  4. 你似乎没有充分利用MySQL的关系部分,所以当失去它时你不会受到太大的影响。
  5. 虽然你可能只需要使用MySQL,因为你并没有描述出你真正遇到的问题,你真的有任何问题吗?(只是感兴趣也完全没问题)
  6. 像索引和搜索这样的东西,在许多nosql数据存储中你必须手动实现,如果这让你感到害怕,那么可能还是坚持使用sql比较好。

谢谢聆听;)


我会看看Cassandra。谢谢你的建议。 - Christian Studer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接