【问题标题】:Using XML for data storage使用 XML 进行数据存储
【发布时间】:2011-10-31 20:08:34
【问题描述】:

我被要求使用相当封闭的内容管理系统创建一个虚假博客。我没有能力使用数据库来存储内容,所以我在玩弄使用 XML 来存储文章数据的选项;日期、标题、摘录、标签和内容等基本内容,并使用 jQuery 呈现页面。

文章不会很长,但是创建这样的应用程序有什么优点/缺点吗?

【问题讨论】:

  • 这对您来说不太可能是个问题,但我们最近在我的工作中开发了一个类似的解决方案并遇到了一个大问题,因为我们忘记了我们的生产服务器在六台机器上进行了负载平衡。用户会在一台服务器上更新 XML,然后重新加载,然后感到困惑,因为他们的 XML 现在是由另一台机器提供的,而他们的更改不在其中。 (最后通过将其保存到测试服务器上的 XML 文件来解决它,但我们都同意,如果我们有选择的话,DB 将是可行的方法。)

标签: jquery xml blogs


【解决方案1】:

如果你不想重新发明轮子http://www.flatpress.org/ 做得很好。

以下是关于平面文件 DBS 中 ACID 合规性的有趣讨论: http://www.perlmonks.org/?node_id=524840

【讨论】:

    【解决方案2】:

    尽管我是 XML 的粉丝,但在数据存储/传递方面,使用它而不是任何其他可能的格式似乎是一种下意识的反应。一个好的数据库总是一个更好的解决方案,但如果这真的不可能,请尽量避免将所有内容转储到一个巨大的 XML 文件中。使用所需的元数据(日期、标题、标签...)为每篇文章存储一个单独的文件将是一个好的开始。或者,文章内容可以嵌入到 XML 中。因为 XML 最初是为定义标记语言而设计的,所以它会让人觉得很自在,尽管现在您似乎发现它更频繁地用于数据结构。

    许多较小的 XML 文件,然后可能是另一个做一些索引的文件将是要走的路。这至少在数据库中进行的分区和索引附近的某个地方。无论您做什么,不要创建一个或多个巨大的 XML 文档。否则你有一天会回到这里,问一个“帮助我必须解析一个 1 GiB XML 文档并且内存不足”的问题:)

    Hunter.ross 的建议看起来很不错。

    【讨论】:

      【解决方案3】:

      您绝对可以将 XML 用于您的存储目的,但它会很昂贵,而不是实施起来很困难。

      由于您没有提到您的平台,我假设您正在使用 .NET!使用XElement,XML 的使用并不比数据库查询复杂。

      另一方面,您想要实现的目标是会对您的表现产生重大影响。如果您不考虑将整个 XML 文件加载到内存中,您的 XML 文件将在每次您想要保存内容时被重写,并且在检索时也是如此。如果你这样做了,一旦你的 XML 文件开始变大,你很快就会得到“Out of memory”异常。

      使用 XML 的实施成本相对较高,因为您必须通过手动过程来从 XML 中获取检索数据,而简单的数据库查询也会这样做。

      如果您考虑除 XML 之外的任何其他选择,我建议您使用SQLite,您也可以阅读when to use SQLite。您不需要任何数据库安装,它是可移植的。它只是存储在您的服务器上的一个二进制文件,SQLite 具有几乎适用于每个平台的 API,并且它具有广泛的包装器。这更像是对您的数据文件执行数据库查询。

      SQLite 只是另一个关系数据库,如 SQL Server、MySQL 等,您可以执行您知道的各种 SQL 查询,也可以与Entity FrameworkNHibernate 或任何其他ORMs 一起使用。

      性能不会像 SQL Server/MySQL,但您可以使用此 SQLite 为您网站的数千名访问者提供服务。

      【讨论】:

        猜你喜欢
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 2015-03-31
        • 2016-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多