【问题标题】:How much is too much data for and XML file, and what are some file based database alternatives?XML 文件的数据量是多少,有哪些基于文件的数据库替代方案?
【发布时间】:2009-12-13 00:38:45
【问题描述】:

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

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

我正在考虑的另一个选择是坚持序列化/序列化我的“跟踪”对象集合到/从 XMl。然而,在集合上使用 Linq 执行任何数据库类型的操作,例如搜索、排序、过滤。我还没有使用过 Linq,所以我不确定具体的操作方法,或者它是否是最佳选择。

【问题讨论】:

    标签: c# xml database linq


    【解决方案1】:

    虽然我无法回答您有关 XML 的问题,但我相信您的问题的解决方案是 SQLite。这是一个非常快速和轻量级的基于文件的 SQL 数据库,不需要服务器。您还可以使用 System.Data.SQLite 之类的东西在 .NET 中与之交互。

    【讨论】:

      【解决方案2】:

      看看这个:http://www.sqlite.org/。我认为如果排序和过滤对你很重要,你会想要一个基于 XML 的关系数据库。

      【讨论】:

        【解决方案3】:

        SQL Server Express 是免费的。

        另外,XML 不是一种数据库技术。例如,如果在您写出更新的过程中系统崩溃了怎么办?你会得到一个无法恢复的损坏文件。

        【讨论】:

        • XML 一种数据库技术,但它缺乏某些数据库所具有的特性(性能、内置查询操作和可靠性),但它有自己的特性(人类可读,广泛的工具可用性,易于实施,通常免费)。
        • XML 是一种表示数据的格式。时期。我不知道你为什么称它为数据库技术。
        【解决方案4】:

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

        XML 文件中的数据过多,您无法根据需要快速操作它。

        哦...和其他平面文件数据库:Berkeley DBBerkeley DB XML

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

        【讨论】:

          【解决方案5】:

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

          *。以关系方式存储数据

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

          *。对象存储

          虽然关系数据适用于海量数据并且我们需要执行大量数值计算(例如聚合等),但表结构和查询在复杂对象方面变得过于复杂。您可以评估一些非常有名的开源对象存储解决方案,这些解决方案非常高效且安全。解决方案之一是Db4O。他们有一个本地 .Net 客户端,据称性能非常好。

          *。 XML 数据存储

          虽然我对此知之甚少,但如果了解一些基于 .NET 的优秀解决方案,我会很高兴。我认为 Berkeley DB 是在 Oracle 的 Java 上

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              另一个方便的选项是VistaDB,虽然不是免费的。
              与 T-SQL 具有良好的兼容性(如果 SQL 服务器可能对您来说是个问题),并且是用完全托管的 .net 代码编写的,因此不需要像 sqlite 那样的完全信任。

              【讨论】:

                猜你喜欢
                • 2010-09-10
                • 1970-01-01
                • 2010-10-15
                • 2010-12-18
                • 2017-09-02
                • 2011-06-21
                • 1970-01-01
                • 2011-01-18
                • 2010-09-07
                相关资源
                最近更新 更多