我应该使用本地数据库还是XML文件?

时间:2012-03-04 19:14:23

标签: c# .net database

我应该为我的应用程序选择持久存储,因此我应该决定是选择本地数据库(在SQL Server Compact 3.5数据库中)还是XML文件。基本上,应用程序需要非常频繁地更新表中的一些数据:该表的每一行都包含GUID(作为主键),两列DateTime列,两列TimeSpan列和四列double列。

此表可能包含数千行,其中一些行(约10%)会非常频繁地更新,其中每次更新都包含以下操作:

  • 检索与GUID相关的当前值;
  • 将这些值与某些数据进行比较,以获得新值;
  • 使用新值覆盖当前值。

更新的行(上述10%)并不总是相同,但在程序执行期间可能会逐渐更改。

如果我将此表存储在XML文件中,则只要应用程序启动,数据访问层就会将XML文件中的数据加载到Dictionary<Guid, ...>,以获得更好的性能。然后,当应用程序终止时,XML文件将被字典中更新的数据覆盖,因为我认为无法更新XML文件的特定部分。这是我目前使用的方法。

  1. 使用本地数据库而不是XML文件有什么好处?我相信如果我使用本地数据库,我可以不使用Dictionary<Guid, ...>,那么数据访问层会更简单。
  2. 本地数据库可能比当前的“基于XML /词典”的方法有什么缺点?

1 个答案:

答案 0 :(得分:4)

如果您的应用程序崩溃,则可能无法保存您的XML文件。或者更糟糕的是,它可能会被破坏。通过将程序包装在try / finally中并在finally中编写XML,可以缓解此错误,但这仍然可以使您更新XML。

当您使用数据库时,您保证您的事务将是原子的 - 这意味着写入将完全完成或根本不发生。这是使用数据库的主要好处。

然而,使用XML / Dictionary方法仍然非常快,因为它是所有内存中的事务。只要您不关心数据完整性,这是一种非常可行的方法。

就复杂的数​​据访问层而言,这可能是任何一种方法的问题。只需将此图层与业务逻辑分开,它就不会影响您选择的图层。