我怎样才能在存储过程中进行计算?

时间:2017-03-27 17:18:38

标签: c# sql-server r database database-design

我有一个数据库,可以处理数千行,用于存储AI算法的统计数据,我为我正在使用C#作为编程语言的项目编写战舰游戏。

我应该在SQL Layer上进行平均未命中,平均镜头等的计算吗?

如果是这样,它们应该存储在自己的列下的数据库中吗?或者应该在运行查询(或使用R编程语言)时计算它们来计算平均值而不是存储在任何地方?

我问这个问题,因为我从未使用过数据库,因此我不知道如何构建它。

感谢。

3 个答案:

答案 0 :(得分:0)

你“应该做什么”可能是个人偏好的问题,但如果是我,我会做你在返回数据的存储过程中提到的计算。我不会将平均值存储为数据库中的列。

答案 1 :(得分:0)

这取决于您希望将来重用这些记录,还是任何进一步的分析取决于这些数据。如果这样做,您可以获取这些派生值并将它们存储到数据库中,这将在您的C#代码运行时保存系统I / O资源,但作为回报,它将需要一些额外的空间。相比之下,如果你不这样做,如果没有大量的计算字段,它将不会是一个巨大的系统负担,你也可以节省磁盘空间。

最重要的是,它取决于你的真实案例。

更新:如果使用数据库,也可能存在系统资源问题,则需要open与目标数据库的连接,这可能需要一些资源来实现。

答案 2 :(得分:0)

这取决于你在做什么。

专业存储过程:

  • 如果您有不同的客户端访问相同的后端功能,他们可以共享相同的后端代码,减少重复
  • 在相同的情况下,它有助于确保一致性
  • 如果您的客户端代码涉及对数据库服务器的许多来回访问,则可以通过在存储过程中将代码移动到服务器来避免相关的延迟

专业前端:

  • 更容易移植到新数据库
  • 更容易调试和备份 - 使用存储过程,您可能需要专门的软件,即使数据库本身是免费的,您也可能需要付费,但如果您在前端完成所有这些操作的可能性要小得多
  • 整体上更简单,开发人员的学习曲线更少
  • 如果服务器上的代码在客户端上,而不是分布在可能很多的机器上(每个客户端一个),从而避免了服务器上的瓶颈。