Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于XML文件和XML文件来说,有多少数据太多,哪些是基于文件的数据库替代方案?_C#_Xml_Database_Linq - Fatal编程技术网

C# 对于XML文件和XML文件来说,有多少数据太多,哪些是基于文件的数据库替代方案?

C# 对于XML文件和XML文件来说,有多少数据太多,哪些是基于文件的数据库替代方案?,c#,xml,database,linq,C#,Xml,Database,Linq,我正在编写一个跟踪音乐库的应用程序,我需要一种方法来存储曲目、专辑和其他数据的列表。通常对于这种情况,我会使用XML文件来保存数据。然后我将使用ADO.NET数据表来操作数据。但是这个程序可能会保存大量的数据项。此外,我希望能够快速搜索、排序和过滤歌曲表 因此,我的第一个问题是,在使用关系数据库之前,在单个XML文件中应该存储多少数据方面是否存在最佳实践限制?其次,对于如何将这些数据存储在单个文件中,有哪些替代选项。请记住,我不希望程序依赖于有一台服务器(MS SQL、MySQL等)运行在它可以

我正在编写一个跟踪音乐库的应用程序,我需要一种方法来存储曲目、专辑和其他数据的列表。通常对于这种情况,我会使用XML文件来保存数据。然后我将使用ADO.NET数据表来操作数据。但是这个程序可能会保存大量的数据项。此外,我希望能够快速搜索、排序和过滤歌曲表

因此,我的第一个问题是,在使用关系数据库之前,在单个XML文件中应该存储多少数据方面是否存在最佳实践限制?其次,对于如何将这些数据存储在单个文件中,有哪些替代选项。请记住,我不希望程序依赖于有一台服务器(MS SQL、MySQL等)运行在它可以连接到的地方。我希望数据存储在单个文件中。我也不是微软Access的超级粉丝。因此,虽然ADO.NET可以访问MDB文件,但我正在寻找其他选项


我正在考虑的另一个选择是坚持将我的“Track”对象集合序列化到XMl或从XMl序列化。但是在集合中使用Linq进行任何数据库类型的搜索、排序和过滤。我还没有使用Linq,所以我不确定如何使用Linq,或者它是否是最好的选择。

请查看:。我认为,如果排序和筛选对您很重要,您将需要一个关系数据库而不是XML。

虽然我无法回答您关于XML的问题,但我相信解决您问题的方法是。它是一个非常快速和轻量级的基于文件的SQL db,不需要服务器。您还可以在.NET中使用类似的工具与它进行交互。

正如其他人所建议的,SQLite是一个很好的基于文件的轻量级数据库。您也可以使用SQL Server Compact,SQL Server Express是免费的


而且,XML不是一种数据库技术。例如,如果在编写更新的过程中系统崩溃,会发生什么情况?您将得到一个无法恢复的损坏文件。

似乎很多人都知道SQLite,但问题的第一部分是--

XML文件中有太多的数据,而您无法足够快地处理它以满足您的需要

哦。。。和其他平面文件数据库:以及


如果您习惯于使用XQuery,那么BDB-XML可能比SQL更容易转换为XML。

另一个方便的选项,虽然不是免费的,但是是。

与T-SQL具有良好的兼容性(如果SQL server可能会成为您今后的问题),并且使用完全托管的.net代码编写,因此不需要像sqlite那样的完全信任。

您可能对.net域中的解决方案感兴趣。有多种解决方案:

*。关系存储数据

MS SQL Compact Edition(您只需要在项目中引用dll并将数据存储在单个文件中 或SQL Lite

*.对象存储

而关系数据适用于海量数据,我们需要执行大量的数值计算(如聚合等),就复杂对象而言,表结构和查询变得过于复杂。您可以评估一些非常有名的开源对象存储解决方案,这些解决方案性能良好且安全。其中一个解决方案是。它们有一个本机.Net客户端,性能据称非常好

*.XML数据存储


虽然我对这方面了解不多,最好了解一些好的基于.NET的解决方案。我认为Berkeley DB基于Oracle的Java

XML是一种数据库技术,但它缺少一些数据库所具备的功能(性能、内置查询操作和可靠性),但它有自己的功能(人类可读,广泛的工具可用性,易于实现,通常是免费的)。XML是一种表示数据的格式。句号。我不知道为什么你会称它为数据库技术。