【问题标题】:Allowing user to save data to a file允许用户将数据保存到文件
【发布时间】:2013-07-12 03:32:45
【问题描述】:

还有比这更有效的方法来在我的应用程序中实现用户保存的文件吗?

(我将 C# / .Net 与 Sql Server 一起使用)

我的目标:

我希望允许用户将他们创建的数据点(连同其他一些结构化数据)保存到具有任意扩展名的“项目文件”中。

建议的方法:

  • 将每个数据点与 FileID 列一起存储在数据库中
  • 当用户保存文件时,获取所有数据点:“SELECT * ... WHERE FileID = @CurrentFileID”。
  • 将所有这些数据点导出到 XML 文件。
  • 从数据库中删除所有这些数据点。
  • 将 XML 文件另存为项目文件(或作为项目文件的一部分)。
  • 每次用户加载他们的项目文件时,将 XML 中的数据重新导入数据库。
  • 显示数据库中 FileId = 当前文件 ID 的数据点。

替代方案: 使用 Sqlite 并为每个用户的项目创建一个单独的 Sqlite 数据库文件?

【问题讨论】:

  • 如果你已经有了一个数据库,为什么不直接使用呢?
  • @Blorgbeard:但我希望允许用户创建的项目文件在安装该软件的其他计算机上使用(当然不会有相同的数据库)。
  • 所以它就像一个导出/导入功能。然后我看不出需要从原始数据库中删除
  • 好的。所以这一步是不必要的。但是当我将 XML 数据重新导入数据库时​​,如果该数据已经存在于给定的表中,是否会花费更长的时间或发生冲突?

标签: c# .net sql database


【解决方案1】:

“最佳”答案取决于几个因素。通过询问有关数据使用的一些探索性问题,您可以帮助自己找到最适合您的实施方案。

我要问的第一个问题是:您现在或将来有什么理由可以将数据点作为离散字段存储在数据库中。

在需要消耗这些数据点的背景下思考这个问题。

例如,如果您需要能够根据某些标准将它们拉入报表或一次仅导出其中的一部分,那么您几乎肯定需要将它们作为离散值存储在数据库中。

但是,如果这些点仅在您的应用程序中作为一个完整的集合使用,并且您每次都必须分解和重新组装 XML,您可能只想将完整的 XML 文件作为 blob 存储在数据库中。这将使存储、备份和更新操作变得非常简单,但也会限制未来的灵活性。

我倾向于倾向于第一种方法(离散字段),但如果您无法设想数据的任何其他用途,并且如果需要离散字段,您可以轻松地从第二种方法开始,如果需要,将 blob 中的数据转换为表格数据应该是一个相对简单的练习。

您还可以通过提出其他问题来完善答案:

  • 数据量级是多少(数百、数千、百万、数十亿)?

  • 插入和更新的频率是多少(x 每秒、分钟、天、年)?

  • 所需的响应时间是多少(毫秒、秒,无所谓)?

如果您需要每秒插入数十万个点,最好将数据存储为 blob。

但是,如果您每天只需插入几百个点几次,则最好从表格方法开始。

它可能会变得复杂,但通过探究数据在您的场景中的使用方式,您应该能够为您的系统得出一个很好的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2013-04-26
    • 2016-05-10
    相关资源
    最近更新 更多