xml做数据库
① xml数据库的简介
目前XML数据库有三种类型:
(1)XMLEnabledDatabase(XEDB),即能处理XML的数据库。其特点是在原有的数据库系统上扩充对XML数据的处理功能,使之能适应XML数据存储和查询的需要。一般的做法是在数据库系统之上增加XML映射层,这可以由数据库供应商提供,也可以由第三方厂商提供。映射层管理XML数据的存储和检索,但原始的XML元数据和结构可能会丢失,而且数据检索的结果不能保证是原始的XML形式。XEDB的基本存储单位与具体的实现紧密相关。
(2)NativeXMLDatabase(NXD),即纯XML数据库。其特点是以自然的方式处理XML数据,以XML文档作为基本的逻辑存储单位,针对XML的数据存储和查询特点专门设计适用的数据模型和处理方法。
(3)HybridXMLDatabase(HXD),即混合XML数据库。根据应用的需求,可以视其为XEDB或NXD的数据库,典型的例子是Ozone。
XML数据库是一个能够在应用中管理XML数据和文档的集合的数据库系统。XML数据库是XML文档及其部件的集合,并通过一个具有能力管理和控制这个文档集合本身及其所表示信息的系统来维护。XML数据库不仅是结构化数据和半结构化数据的存储库,像管理其它数据一样,持久的XML数据管理包括数据的独立性、集成性、访问权限、视图、完备性、冗余性、一致性以及数据恢复等。这些文档是持久的并且是可以操作的。
当前着重于页面显示格式的HTML标记语言和基于它的关键词检索等技术已经不能满足用户日益增长的信息需求。近年来的研究致力于将数据库技术应用于网上数据的管理和查询,使查询可以在更细的粒度上进行,并集成多个数据源的数据。但困难在于网上数据缺乏统一的、固定的模式,数据往往是不规则且经常变动的。因此,XML数据作为一种自描述的半结构化数据为Web的数据管理提供了新的数据模型,如果将XML标记数据放入一定的结构中,对数据的检索、分析、更新和输出就能够在更加容易管理的、系统的和较为熟悉的环境下进行,因而我们将数据库技术应用于XML数据处理领域,通过XML数据模型与数据库模型的映射来存储、提取、综合和分析XML文档的内容。这为数据库研究开拓了一个新的方向,将数据库技术的研究扩展到对Web数据的管理。
② 做一个网站,把数据保存在xml文件中,跟把数据保存在数据库中,区别有多大
实话实说,个人接触到使用Xml文件方式来保存数据的场景少之又少。除去求学期间根据课堂要求做静态网站时用于存储一些展示性数据,还有就是在WPF开发中保存一些常用但又不经常变化的离线数据。反而常使用Xml来做配置文件(例如SpringMvc、MyBatis和LogBack)网络数据传输和交互标准(例如WebService)、工作流设计(例如Activiti6)等情况较为常见。
Xml用于单设备数据存储的情况还说得过去,例如离线数据同步可以放在Xml数据文件中。在传统行业电商平台的规格,材质,产区等属性相对固定,Xml文件能很好胜任。再比如做一个内部使用的抽奖程序,将潜在用户群体以Xml方式保存也是不错的选择吧。所以Xml文件充当小型离线数据库还行。
而数据库的范围就比较宽泛,大致可以分为关系型数据库和非关系型数据库两大类。
关系型数据库以Oracle和MySql最为流困念渣行,学过编程的朋友应该耳熟能详,也是职场面试经久不衰的考察重点。
而NoSql算是后起之秀。在业务繁多复杂的当下,一些场景下关系型数据库应付起来相当吃力,有着更为复杂分类的非关系型数据库孕育而生。NoSql在搜索引擎(ElasticSearch)、键值(redis)、面向文档(Mongodb)和列存储(Hbase)等方面都能做高拆到得心应手。这些就让其有着更强的业务针对性,相比传统关系型数据库有着质的提升。下面简单列举几个应用场景。
Redis可用于计数、分布式锁实现、单点登录、限流和缓存数据等;
在复杂页面的数据不便以表数据结构保存时,使用Mongodb整页存储方便又简单;
Elasticsearch就是以空间换时间典型代表,在做搜索引擎和日志记录(ELK)等方面有很大优势;
Hbase不必再像关系型数据库那样以行为存储单元,而是以列为基准,非常便于数据结构拓展。
当下流行徽服务和各种解耦,连关系型数据库都不再设计外键关系,非关系型数据库大行其道,Xml文件用来汪悄保存数据显然已经不合时宜,当然也不能否认关系型数据库的地位和Xml的作用。重要数据或某些行业的特殊性还是要以关系型数据库为根基,毕竟事务、稳定性、安全性和技术恢复支持等方面需要考虑的重点。
③ 什么是xml数据库
开始讨论XML和数据库之前,我们先回答许多人都遇到过的问题:“XML是数据库吗?”
如果仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。在许多方面看起来它和其他文件没什么区别 -- 无论如何,每个文件都含有某种类型的数据。作为一种“数据库”格式,XML有一些优势:例如,它是自描述的(所用的标记描述了数据的结构和类型,尽管缺乏语义),可交换的(portable)(Unicode),能够以树型或图形结构描述数据。同样它也有缺点,例如,它显得有些繁琐,由于要对它进行解析和文本转换,所以数据访问速度较慢。
一个更有用的问题就是在较为宽松的意义上,XML及其周边技术是否可以算作“数据库” -- 数据库管理系统(DBMS)。答案是“在某种程度上是(sort of)”。从正面来说,XML提供了许多数据库所具备的东西:存储(XML文档), 模式(DTD, XML schema,RElAX NG 等等), 查询语言(XQuery, XPath, XQL, XML-QL, QUILT等等),编程接口(SAX, DOM,JDOM)等等。从反面来说,它缺少一些作为实用的数据库所应具备的特性:高效的存储,索引,安全,事务和数据一致性,多用户访问,触发器,在查询多个文件等等。
因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
XML适合于用作所谓“数据库”的一个好例子就是 .ini文件 -- 它包含应用程序的配置信息。与其写一个处理以逗号分隔(comma-delimited)的文件的解析器,开发一种小型的XML语言并写一个解释它的 SAX程序要容易的多。此外,XML允许使用嵌套的实体,而逗号分隔的文件(comma-delimited files)很难做到这点。然而,说它就是数据库还很勉强,因为它是线性读写的,而且仅用在程序开始和结束时。
比较适合于XML数据库的一些复杂的数据集就是个人通讯录(名字,电话号码,地址等),或用于描述浏览器书签以及用Napster偷来的MP3。然而,由于dBase和Access之类的数据库物美价廉,即使在这种情况下似乎也没有多少理由把XML文件作为数据库使用。XML的唯一真正好处就是数据的可交换性(portable),由于有越来越多的工具可以用来对数据库进行XML序列化(serializing),这一点好处似乎也要打些折扣。