3

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

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

设置:

  • 我们有近 200 个检测器和大约 40 个与每个检测器相关的参数。在这 40 个参数中,我们预计只有少数会在实验过程中发生变化。大多数与单个检测器相关的参数都是静态的。
  • 我们在定时运行中收集此实验的数据。在这些运行期间,加载到硬件中的参数不得更改,尽管我们应该能够随时编辑数据库以准备下一次运行。目前的计划:

    • 数据库将提供当前参数与上次运行期间使用的参数之间的差异。
    • 在新的运行开始时,最新的数据库更改被加载到硬件中。
    • 用于即将运行的设置必须标有运行编号和当前日期和时间。这是必不可少的。我需要实验设置的运行历史。
  • 将有几个不同的客户端读取和写入数据库。尽管对数据库的更改并不频繁,但我不能保证这些更改不会同时发生。

  • 必须是健壮且不可损坏的。实验系统的配置取决于硬件。数据库的任何故障都会阻止数据采集,而且我们的时间很昂贵。数据库备份?

我目前的计划是使用 sqlite 数据库来实现上述要求,尽管我不确定它是否可以支持我的所有要求。还有其他我应该研究的技术吗?有没有人做过类似的事情?我愿意学习任何技术,只要它成熟。

欢迎提示和建议。

谢谢,

肖恩


更新 1

数据库访问

三个轻量级应用程序可以写入和读取数据库,一个应用程序只能读取。

具有写访问权限的应用程序负责设置硬件参数的非重叠子集。具体来说,我们有一个应用程序(其中可能有多个副本)设置高电压,一个应用程序设置其余硬件参数,这些参数可能在实验期间发生变化,一个 GUI 设置其余参数它们几乎是静态的,仅对正确重建数据至关重要。

只读访问的程序是我们的数据分析软件。它需要访问数据库中几乎所有的参数,才能将传入的数据正确格式化为我们可以正确分析的内容。与数据库的连接数应大于 10。

备份

我们实验室的另一个设置每次运行都会转储一个 xml 文件。尽管我认为 xml 不合适,但我计划每次运行都备份系统,以防万一。

4

3 回答 3

1

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

于 2009-05-27T22:09:46.467 回答
1

向周围的同事询问。

你没有说你在做什么样的物理学,或者工作组有多大,但在我的学科(粒子物理学)中,只有建立和运行这种类型的系统(我们称之为“慢速控制”等)。与您一起工作的人很有可能已经这样做了,或者认识这样做的人。在某人的论文中可能有关于最后一次退出的详细描述。

我个人对此并没有太大的关系,但我确实知道这一点:一个共同的特征是具有不删除不覆盖设计。您只能添加数据,不能删除它。这可以保留您在遇到麻烦时弄清楚到底发生了什么的机会


Perhaps I should explain a little more. While this is an important task and has to be done right, it is not really related to physics, so you can't look it up on Spires or on arXive.org. No one writes papers on the design and implementation of medium sized slow controls databases. But they do sometimes put it in their dissertations. The easiest way to find a pointer really is to ask a bunch of people around the lab.

于 2009-05-27T22:32:43.083 回答
0

从事物的声音来看,这并不是一个特别大的数据库。因此,您可能能够摆脱使用Oracle 的免费数据库,这将为您提供各种极大的灵活性,包括日记(不确定这是否是一个实际的词)和管理。

在您说“将有几个不同的客户端同时读取和写入数据库”之后,您就提到了“不可损坏”,这对我来说是一个危险信号。您是否打算创建某种具有此接口的应用程序?还是您打算通过 TOAD 之类的工具直接访问数据库?

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

备份?是的,一点没错!您不仅应该进行每日、每周和每月备份,还应该进行完整备份和增量备份。此外,经常测试您的备份图像以确认它们确实有效。

至于数据结构,我需要更多关于您尝试存储的内容以及如何访问它的详细信息。但是根据您在这里的说明,我会说您需要以下表格(首先):

Detectors
Parameters
Detector_Parameters

一些附加说明:

由于您将进行如此多的更改,因此我建议使用SVN之类的版本控制来跟踪您的所有 DDL 等。我还建议使用诸如bugzilla之类的东西进行错误跟踪(如果需要)并使用google docs进行团队文档管理。

希望有帮助。

于 2009-05-27T22:08:47.030 回答