繁体   English   中英

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

[英]Should I use a local database or an XML file?

我应该为我的应用程序选择持久存储,因此我应该决定是选择本地数据库(在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 /字典”的方法有什么缺点?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM