- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在寻找一种方便的方式来存储和查询大量气象数据(几 TB)。有关问题中间数据类型的更多信息。
以前我一直在寻找 MongoDB 的方向(我在我自己以前的许多项目中都使用它并且感觉很舒服),但最近我发现了关于 HDF5 的信息。数据格式。阅读它,我发现它与 Mongo 有一些相似之处:
HDF5 simplifies the file structure to include only two major types of object: Datasets, which are multidimensional arrays of a homogenous type Groups, which are container structures which can hold datasets and other groups This results in a truly hierarchical, filesystem-like data format. Metadata is stored in the form of user-defined, named attributes attached to groups and datasets.
它看起来像 Mongo 中的数组和嵌入式对象,并且它还支持用于查询数据的索引。
Because it uses B-trees to index table objects, HDF5 works well for time series data such as stock price series, network monitoring data, and 3D meteorological data.
数据:
特定区域被划分为更小的正方形。在每个传感器的交叉点上(一个点)。
此传感器每 X 分钟收集一次以下信息:
它还针对不同的高度(0 米、10 米、25 米)收集数据。高度并不总是相同的。此外,每个传感器都有某种元信息:
鉴于此,我不希望一个元素的大小大于 1Mb。此外,我在一个地方有足够的存储空间来保存所有数据(据我所知,不需要分片)
数据操作。我将通过多种方式与数据进行交互:
转换为存储大量数据:在 netcdf format 的某个时间点,很少 TB 的数据会提供给我我需要存储它们(将其转换为 HDF5 相对容易)。然后,将定期提供较小的数据部分(每周 1 Gb),我必须将它们添加到存储中。只是强调一下:我有足够的存储空间来将所有这些数据保存在一台机器上。
查询数据。通常需要实时查询数据。最常见的查询是:告诉我特定时间特定区域传感器的温度,显示特定时间特定传感器的数据,显示给定时间范围内某个区域的风。聚合查询(过去两个月的平均温度是多少)是极不可能的。这里我觉得Mongo很合适,但是hdf5+ pytables是另一种选择。
执行一些统计分析。目前我不知道它到底是什么,但我知道这不应该是实时的。所以我在想将 hadoop 与 mongo 一起使用可能是个好主意,但将 hdf5 与 R 一起使用可能是个好主意。是一个合理的选择。
我知道不鼓励提出有关更好方法的问题,但我正在寻找有经验的用户的建议。如果您有任何问题,我很乐意回答并感谢您的帮助。
P.S 我回顾了一些有趣的讨论,类似于我的:hdf-forum , searching in hdf5 , storing meteorological data
最佳答案
这是一个很难回答的问题,我不确定我是否能给出明确的答案,但我对 HDF5/pyTables 和一些 NoSQL 数据库都有经验。
这里有一些想法。
我认为您的数据通常很适合存储在 HDF5 中。您还可以在 R
中或通过 Numpy/Scipy
进行统计分析。
但您也可以考虑混合方法。将原始批量数据存储在 HDF5 中,并将 MongoDB 用于元数据或缓存经常使用的特定值。
关于mongodb - 存储和查询气象数据大数据集的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907195/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!