【问题标题】:Insert/select information in lists vs sql在列表与 sql 中插入/选择信息
【发布时间】:2017-11-13 08:47:47
【问题描述】:

那里。 所以,我正在为学校做一个项目,它是一个投注程序(桌面、网络和移动),我想知道你对我应该如何访问和插入信息的意见。插入/从/等中选择是否会更好。 sql 数据库,或者如果最好使用列表并在我关闭程序或单击保存时将所有信息从列表中卸载到 sql 中。

一方面,我认为直接与数据库打交道会更安全,但另一方面,总是访问数据库可能会更慢。您可能甚至不会注意到很少有人访问它,但是如果有很多人这样做,它可能会造成损失......

那么,你怎么看?

【问题讨论】:

  • “你可能甚至不会注意到很少有人访问它,但是如果有很多人这样做,它可能会造成损失......” 多少人是很多人?您会惊讶于数据库的实际速度。
  • 这里有很多事情需要考虑。它是什么样的数据?数据有多大?数据变化的频率如何?您是否希望应用程序的所有用户一直看到更新的数据?如果您将数据存储在列表中并在应用程序关闭时将其保存到数据库中,您将面临数据一致性的风险。一个用户删除数据并保存到数据库,但其他用户仍然可以看到删除的数据。整体不推荐离线存储数据。
  • @CameronAavik,真的。老实说,我不知道同时访问数据库需要多少次才能减慢速度...
  • @ChetanRanpariya,嗯,这是一个投注程序,所以我想说它很重要(虽然它会涉及金钱,只是点数呵呵)。关于数据一致性,你提出了一个很好的观点。我问这个是为了比较,但也因为我担心另一件事。如果我只在 sql 上工作,我什至可能不需要其他类和构造函数(如俱乐部、赌注、用户......),因为它是最终项目,它将被评估。

标签: c# sql


【解决方案1】:

你的问题很自以为是。但一般规则是:信息有多重要

重要提示:那么一旦信息是新的/更改/删除的,就应该以某种方式/某处“保存”。这通常适用于系统的大多数数据,无论系统类型如何(例如移动/桌面/等)

不是很重要:那么您可以将其保留在“记忆中”。这通常是cache 数据或临时计算数据。

为什么要尽快保存重要数据?崩溃。您不能总是期望发生崩溃(无论是由于自己创建的错误还是某些环境问题)。因此,请尽快尝试保存数据。


旁注:“离线模式”或“批处理”等问题可以帮助您在特定情况下保存数据..但它们只是帮助您仍然遵循一般规则的技巧/模式 -> 及早保存。

【讨论】:

  • 正如我在另一个 anwser 上所说,您对数据一致性及其重要性提出了很好的观点。既然您提到它,在某些时候,它可能会使程序运行速度变慢,因为存储在内存中的信息。所以,我不需要为此创建任何类和构造函数,因为它们都会直接存储到数据库中,对吧?
  • 您仍然需要一个中间数据结构来在 UI(大概)和将其存储在数据库中的代码之间传递它。关于由于内存中的所有信息而“变慢”,这不会导致它变慢,可能导致它变慢的是处理/插入该数据所需的时间。计算机足够强大,但它不应该成为真正的问题。
  • 内存很快。 I/O(保存到磁盘或通过网络发送数据)是慢速部分。如果您在内存中放入了太多数据(超过内存可以容纳的数据),那么计算机就会开始将这些内存过剩的数据保存到硬盘中……这会很慢(这称为“分页”)。所以 - 你仍然需要像 @CameronAavik 所说的那样 ctor 和 poco - 这是编码的基础。祝你好运!
  • 感谢两位。我想我会用 sql 去。就这样我明白了,你为什么说我需要一个中间数据结构?我学到的方法是通过与数据库的 sql 连接接收数据并通过按钮单击事件或其他方式传递它。不涉及任何类/构造函数(当然,除了 sqlconnection 之一)。我不是拒绝你的想法,而是试图理解你的观点。
  • 这是您构建解决方案的方式以及您的关注点在哪里。基本上,您永远不会将数据库代码放在点击事件后面。点击事件正在处理 UI 的东西。 给定一个视图模型,然后决定如何显示它。查找/了解项目结构和项目分层。这将实现更好的测试和更轻松的维护。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 2012-05-20
  • 2021-02-17
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多