我必须为一个独特的环境开发一个数据库。我没有数据库设计的经验,可以使用每个人的智慧。
我的小组正在为物理硬件设计一个数据库和一个数据采集系统。我们需要一个系统来存储所有的硬件配置参数,并跟踪这些参数的变化,因为它们是由用户更改的。
设置:
- The database will provide the difference between the current parameters and the parameters used during last run.
- At the start of a new run, the most recent database changes be loaded into hardware.
- The settings used for the upcoming run must be tagged with a run number and the current date and time. This is essential. I need a run-by-run history of the experimental setup.
我目前的计划是使用sqlite数据库实现上述要求,但我不确定它是否能够支持我的所有需求。还有什么其他技术需要我去研究吗?有人做过类似的事吗?只要技术成熟,我愿意学习任何技术。
欢迎您提供建议和建议。
谢谢,
肖恩
更新1
数据库存取
有三个lite应用程序可以读写数据库,一个应用程序只能读取。
具有写访问权限的应用程序负责设置硬件参数的不重叠子集。具体来说,我们有一个应用程序(其中可能有多个副本)设置高压,一个应用程序设置在实验期间可能改变的其余硬件参数,另一个GUI设置其余的参数,这些参数几乎是静态的,仅对数据的正确重建是必要的。
只有读访问的程序是我们的数据分析软件。它需要访问数据库中几乎所有的参数,以便将传入的数据正确地格式化为我们可以正确分析的内容。连接到数据库的数目应该是>10。
备份
我们实验室的另一个安装程序每次运行都会转储一个xml文件。尽管我不认为xml是合适的,但我计划每次运行时都备份系统,以防万一。
发布于 2009-05-27 22:09:46
有关设计的一些基本内容;您应该确保不从任何表中删除数据;跟踪最新的数据(可能最好使用最近更新的日期时间);但是,当数据值发生变化时,不要删除旧的数据。启动运行时,标记与run ID一起使用的每个表(在另一列中);这样,您就可以维护关于每个设置的完整历史记录,并且可以准确地表明在给定运行时使用的状态。
发布于 2009-05-27 22:32:43
问问你的同事。
你没有说你在做什么样的物理,或者工作组有多大,但是在我的学科(粒子物理学)中,有一个很深的经验储存库--建立和运行这种类型的系统(我们称之为“慢速控制”和类似的)。和你一起工作的人很有可能做过这件事,或者认识一个曾经做过的人。可能有一个详细的描述,最后一次在某人的论文。
我个人和这件事没有多大关系,但我知道这一点:一个共同的特点是没有删除-无覆盖设计。您只能添加数据,永远不要删除它。这样你就有机会弄清楚在遇到麻烦时到底发生了什么。
也许我该再解释一点。虽然这是一项重要的任务,而且必须正确完成,但它与物理并没有真正的关系,所以你不能在尖顶或arXive.org上查找它。没有人写过关于中型慢速控制数据库的设计和实现的论文。但他们有时会把它写在论文里。找到指针最简单的方法就是问问实验室里的一群人。
发布于 2009-05-27 22:08:47
从事物的声音来看,这不是一个特别大的数据库。因此,您可能可以不使用Oracle免费数据库,这将为您在日志记录(不确定这是否是一个实际的单词)和管理方面提供了极大的灵活性。
在您说“将有几个不同的客户端同时读取和写入数据库”之后,您就提到了‘非腐败’,这给我带来了一个危险的信号。您是否计划创建具有此接口的应用程序?或者你计划通过像蟾蜍这样的工具直接访问数据库?
为了维护您的数据完整性,您需要对您的权限进行严格的操作。我只允许一个人(和一个备份)拥有管理员权限,能够在GUI之外进行数据操作(这将使您的生活更轻松)。
备份?是的,绝对的!你不仅应该做每天,每周和每月备份,你应该做充分和增量。此外,经常测试备份映像以确认它们实际上是有效的。
至于数据结构,我需要更详细地说明您要存储什么以及如何访问它。但是,从你在这里的发言来看,你需要下面的表格(首先):
Detectors
Parameters
Detector_Parameters一些补充说明:
由于您将进行如此多的更改,我建议使用像SVN这样的版本控制来跟踪所有的DDL等等。我还建议使用布奇拉之类的工具来跟踪bug (如果需要的话),并使用谷歌文档进行团队文档管理。
希望这能有所帮助。
https://stackoverflow.com/questions/918207
复制相似问题