更好的方式来存储可更新的科学数据?

问题描述:

我正在使用由发布的科学数据组成的文件。我将这个文件与一个读取前5个空格分隔的数据字段的程序一起使用,并且之后的所有内容都被程序视为注释。更好的方式来存储可更新的科学数据?

2示例行(十万):

FeII 1608.4511 0.521 55.36 -1300 M03 Journal of Physics 
FeII 1611.23045 0.0321 55.36 1100 01J AJ 

程序把它读成:

FeII 1608.4511 0.521 55.36 -1300 
FeII 1611.23045 0.0321 55.36 1100 

这些数字是每个测量和大多数(不要让我开始)有相关的错误这些文件中没有列出。我希望以有用和可更新的方式存储此信息。也就是说,第一个入口FeII 1608.4511的误差是正负0.002。考虑何时进行新的测量并将其更改为:FeII 1608.45034加/减0.0005。我想更新价值,错误并记录关于它的出版物的一些信息。

使用这个文件的程序是遗留代码,既重要又不灵活:它需要文件看起来像上面的输出,当它被读入。我真的很想有一种方法来更新输入文件在评论中包含值和发布超链接等错误。我还想要一种版本控制能力来返回今天这个大文件的状态;或者在20个更多行更新为新值之后的5个月内。

有关如何最好地完成此任务的任何建议?我应该将所有内容存储在某种数据库中吗?

+0

你怎么知道这个新值,FeII 1608.45034±0.0005,应该更新FeII 1608.4511±0.002而不是FeII 1611.23045? –

+0

@Catcall,您正在引起我的担忧......我可以通过文档中的上下文线索轻松地在文件上手动执行每个更改。但是,如何选择在数据库中标记它们?并且有这样的条目: C I ** 1277.5501 C I ** 1277.7233 - 因此每个更改可能由字母加上接下来的5位数字唯一标识?但是如果我添加需要达到6位数字的新数据呢?如果需要在另一行上更新第六位数字,该怎么办? – JBWhitmore

数据库与身份密切相关。如果数据库无法通过其中的数据识别行,则数据库不会帮助您。

如果我是你,我首先将基础文件存储在版本控制系统中,而不是数据库。每5个月更改20次,我可能会手动进行这些更改并提交每批更改。 (我不知道什么可能构成你的批次。可能每次都会发生一次更改)

既然现有文件的格式既重要又脆弱,我不确定是否修改它是个好主意。我想我会更好地将错误范围和发布超链接存储在一个单独的文件中,并使用脚本将这些部分放在一起,以便可以使用错误范围和超链接的应用程序。

一个数据库听起来很明智,SQL Server Express是免费的,并广泛使用。

您可以读取包含所有注释的文本文件,并以相同的格式输出编辑的数据。您可以使用许多前端(包括Access)来进行快速开发,或者使用VB.Net或Excel创建自己的东西。

您需要考虑表格的结构,但它不应该太难,您可以在这里获得帮助。

为了更新引入错误和链接的文件中的信息,您不需要任何数据库;只要打开文件,遍历行并更新每一行。

如果您希望能够恢复线路状态,则需要定义某种数据库。例如,您可以在Sql Server或Firebird中创建一个数据库,并为每行历史状态存储一行(创建日期为off course);你的文件本身就是当前值的存储库,你可以用日期和简单的数据库信息来恢复文件。

如果您不能使用Firebird或SQL Server等数据库,则可以将历史数据存储在一个简单的文本文件中,这取决于您。请记住,您必须像@CatCall所评论的那样需要一种识别每行的方法,以便在文件中的行与存储在存储库中的历史数据之间建立关系。