首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >物理硬件数据库设计

物理硬件数据库设计
EN

Stack Overflow用户
提问于 2009-05-27 21:52:58
回答 3查看 398关注 0票数 3

我必须为一个独特的环境开发一个数据库。我没有数据库设计的经验,可以使用每个人的智慧。

我的小组正在为物理硬件设计一个数据库和一个数据采集系统。我们需要一个系统来存储所有的硬件配置参数,并跟踪这些参数的变化,因为它们是由用户更改的。

设置:

  • 我们有近200个探测器和大约40个与每个探测器相关的参数。在这40个参数中,我们预计在实验过程中只有少数参数会发生变化。与单个检测器相关的大多数参数都是静态的。
  • 我们在定时跑步中为这个实验收集数据。在这些运行过程中,加载到硬件中的参数不能更改,尽管我们应该能够随时编辑数据库以为下一次运行做准备。目前的计划:
代码语言:javascript
复制
- 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是合适的,但我计划每次运行时都备份系统,以防万一。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-27 22:09:46

有关设计的一些基本内容;您应该确保不从任何表中删除数据;跟踪最新的数据(可能最好使用最近更新的日期时间);但是,当数据值发生变化时,不要删除旧的数据。启动运行时,标记与run ID一起使用的每个表(在另一列中);这样,您就可以维护关于每个设置的完整历史记录,并且可以准确地表明在给定运行时使用的状态。

票数 1
EN

Stack Overflow用户

发布于 2009-05-27 22:32:43

问问你的同事。

你没有说你在做什么样的物理,或者工作组有多大,但是在我的学科(粒子物理学)中,有一个很深的经验储存库--建立和运行这种类型的系统(我们称之为“慢速控制”和类似的)。和你一起工作的人很有可能做过这件事,或者认识一个曾经做过的人。可能有一个详细的描述,最后一次在某人的论文。

我个人和这件事没有多大关系,但我知道这一点:一个共同的特点是没有删除-无覆盖设计。您只能添加数据,永远不要删除它。这样你就有机会弄清楚在遇到麻烦时到底发生了什么。

也许我该再解释一点。虽然这是一项重要的任务,而且必须正确完成,但它与物理并没有真正的关系,所以你不能在尖顶arXive.org上查找它。没有人写过关于中型慢速控制数据库的设计和实现的论文。但他们有时会把它写在论文里。找到指针最简单的方法就是问问实验室里的一群人。

票数 1
EN

Stack Overflow用户

发布于 2009-05-27 22:08:47

从事物的声音来看,这不是一个特别大的数据库。因此,您可能可以不使用Oracle免费数据库,这将为您在日志记录(不确定这是否是一个实际的单词)和管理方面提供了极大的灵活性。

在您说“将有几个不同的客户端同时读取和写入数据库”之后,您就提到了‘非腐败’,这给我带来了一个危险的信号。您是否计划创建具有此接口的应用程序?或者你计划通过像蟾蜍这样的工具直接访问数据库?

为了维护您的数据完整性,您需要对您的权限进行严格的操作。我只允许一个人(和一个备份)拥有管理员权限,能够在GUI之外进行数据操作(这将使您的生活更轻松)。

备份?是的,绝对的!你不仅应该做每天,每周和每月备份,你应该做充分和增量。此外,经常测试备份映像以确认它们实际上是有效的。

至于数据结构,我需要更详细地说明您要存储什么以及如何访问它。但是,从你在这里的发言来看,你需要下面的表格(首先):

代码语言:javascript
复制
Detectors
Parameters
Detector_Parameters

一些补充说明:

由于您将进行如此多的更改,我建议使用像SVN这样的版本控制来跟踪所有的DDL等等。我还建议使用布奇拉之类的工具来跟踪bug (如果需要的话),并使用谷歌文档进行团队文档管理。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/918207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档