[英]Using XML for data storage
我被要求使用一个非常锁定的内容管理系统创建一个虚假的博客。 我没有能力使用数据库进行内容存储,所以我玩弄了使用XML来存储文章数据的选项; 日期,标题,摘录,标签和内容等基本内容,并使用jQuery呈现页面。
文章的篇幅不会很长,但创建这样的应用程序是否有任何利弊?
如果你不喜欢重新发明轮子http://www.flatpress.org/做得很好。
以下是有关平面文件DBS中ACID合规性的有趣讨论: http ://www.perlmonks.org/?node_id = 524840
尽管我是XML的粉丝,但在数据存储/传递方面,使用它比任何其他可能的格式似乎都是一种下意识的反应。 一个好的数据库永远是一个更好的解决方案,但如果真的不可能,那就试着避免将所有内容都转储到一个巨大的XML文件中。 使用所需的元数据(日期,标题,标签......)为每篇文章存储单独的文件将是一个良好的开端。 或者,文章内容可以嵌入XML中。 因为XML最初用于定义标记语言,所以感觉就像在家一样,尽管现在看来你发现它更常用于数据结构。
许多较小的XML文件,然后可能是另一个做一些索引的文件将是要走的路。 这至少会在数据库中进行的分区和索引附近进行。 无论你做什么, 都不要创建一个或几个巨大的XML文档 。 否则你有一天会回到这里询问其中一个“帮助我解析1 GiB XML文档并耗尽内存”问题:)
Hunter.ross的建议看起来非常好。
你绝对可以使用XML来实现存储目的,但是实现起来并不昂贵。
由于您没有提到您的平台,我假设您正在使用.NET! 使用XElement
,XML的使用并不比数据库查询复杂。
另一方面,你想要达到的目标是在你的表现上花费大量时间。 如果您不考虑将整个XML文件加载到内存中,那么每次要保存某些内容时,您的XML文件都会被重写。 如果这样做,一旦XML文件开始变大,您很快就会出现“Out of memory”异常。
使用XML的实现成本相对较高,因为您必须通过手动过程来了解如何从XML获取检索数据,其中简单的数据库查询将执行相同的操作。
如果您考虑除XML之外的任何其他选择,我建议您使用SQLite
,您也可以阅读何时使用SQLite 。 您不需要任何数据库安装,它是可移植的。 它只是存储在您的服务器上的二进制文件,而SQLite几乎在每个平台上都有API,它有各种各样的包装器。 这更像是在数据文件上执行数据库查询。
SQLite只是另一个关系数据库,如SQL Server,MySQL等,您可以执行您所知道的各种SQL查询,还可以与Entity Framework
, NHibernate
或任何其他ORMs
。
性能不会像SQL Server / MySQL那样,但您可以使用此SQLite为您网站的数千个访问者提供服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.