我应该为我的应用程序选择持久存储,因此我应该决定是选择本地数据库(在SQL Server Compact 3.5数据库中)还是XML文件。基本上,应用程序需要非常频繁地更新表中的一些数据:该表的每一行都包含GUID(作为主键),两列DateTime
列,两列TimeSpan
列和四列double
列。
此表可能包含数千行,其中一些行(约10%)会非常频繁地更新,其中每次更新都包含以下操作:
更新的行(上述10%)并不总是相同,但在程序执行期间可能会逐渐更改。
如果我将此表存储在XML文件中,则只要应用程序启动,数据访问层就会将XML文件中的数据加载到Dictionary<Guid, ...>
,以获得更好的性能。然后,当应用程序终止时,XML文件将被字典中更新的数据覆盖,因为我认为无法更新XML文件的特定部分。这是我目前使用的方法。
Dictionary<Guid, ...>
,那么数据访问层会更简单。答案 0 :(得分:4)
如果您的应用程序崩溃,则可能无法保存您的XML文件。或者更糟糕的是,它可能会被破坏。通过将程序包装在try
/ finally
中并在finally
中编写XML,可以缓解此错误,但这仍然可以使您更新XML。
当您使用数据库时,您保证您的事务将是原子的 - 这意味着写入将完全完成或根本不发生。这是使用数据库的主要好处。
然而,使用XML / Dictionary方法仍然非常快,因为它是所有内存中的事务。只要您不关心数据完整性,这是一种非常可行的方法。
就复杂的数据访问层而言,这可能是任何一种方法的问题。只需将此图层与业务逻辑分开,它就不会影响您选择的图层。