首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找可扩展的数据库解决方案

寻找可扩展的数据库解决方案
EN

Stack Overflow用户
提问于 2016-07-14 00:45:52
回答 2查看 32关注 0票数 0

在我工作的物理实验室中,在每个实验的开始(我们每分钟运行几个实验),我们对MariaDB数据库执行一系列插入操作。其中一个表有几百列-每个列对应一个命名变量-并用作该运行期间使用的参数的日志。例如,一个变量是在实验的特定步骤中使用的激光功率。

随着时间的推移,实验者添加新的变量来参数化实验的新步骤。最初,我的代码通过简单地向表中添加新列来处理这个问题-但随着表中的行数增加到大约60000行,添加一列所需的时间变得非常长(超过一分钟)。

现在,我已经通过预定义了数百个额外的列来绕过这个问题,这些列可以在需要新变量时重命名。然而,按照添加变量的速度,这只能持续我们的实验室(或使用该软件的其他实验室)几年后才需要维护表格。我想知道是否有人可以推荐一种不同的架构或不同的平台,为这个“列数”问题提供一个自然的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2016-07-14 00:51:31

我猜你正在运行各种不同类型的实验,这就是为什么你需要越来越多的变量?如果是这种情况,您可能需要考虑以下两种情况之一:

  • 对每种类型的实验都有单独的表,
  • 有单独的表来保存每种实验类型的参数值(引用主表中的实验),
  • 有一个更简单的“实验参数”表,该表有3个(或更多,取决于值的复杂程度)引用:实验、参数和参数值。

我倾向于前两个选项中的一个,第三个倾向于使数据变得更复杂,分析和维护,而不是灵活性的价值。

票数 1
EN

Stack Overflow用户

发布于 2016-07-14 03:26:07

看起来EAV最适合您的场景。我总是会避开它,但在这种情况下,它似乎是有意义的。我会将最后的n数据实验保存在主表中,而将其他实验数据保存到一个存档表中。很自然地,您会知道归档暂时不需要的数据的速度有多快,但在连接到更大的表时总是可用的。

有关EAV的介绍,请参阅Rick James的web ddocument ( stackoverflow User)。此外,请访问堆栈here上提供的问题。

每次我看着EAV的时候,我都想知道为什么会有人用它来编写程序。但想象一下你必须工作的学术/实验/临时环境,我不禁认为这可能是最适合你的环境。下面是一个标题为Should I use EAV model?的高级探索性问题。

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

https://stackoverflow.com/questions/38357429

复制
相关文章

相似问题

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