允许用户将数据保存到文件中

时间:2013-07-13 21:33:47

标签: c# .net sql database

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

(我正在使用C#/ .Net和Sql Server)

我的目标:

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

建议的方法:

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

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

1 个答案:

答案 0 :(得分:2)

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

我要问的第一个问题是:您是否有任何理由可以将数据点存储为数据库中的离散字段,无论是现在还是将来。

在需要消耗这些数据点的上下文中考虑这个问题。

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

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

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

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

  • 数据的大小(数百,数千,数百万,数十亿)是多少?

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

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

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

但是,如果您每天只需要插入几百点几次,那么从使用tabled方法开始可能会更好。

它可能变得复杂,但通过探测在您的场景中如何使用数据,您应该能够为您的系统找到一个非常好的答案。

相关问题