`
844604778
  • 浏览: 550858 次
文章分类
社区版块
存档分类
最新评论

使用XML提供数据处理效率

 
阅读更多

方法2:用xml类型代替主从表设计,从而达到提高查询性能。

优化和提高数据库的性能,是从一个良好的数据库设计开始的。以一个会议预订系统为例,一个预订会议系统包括了会议时间,会议地点,主持人,参与人,知会人,记录者等相关信息。在的TDD,DDD模型主导的时代,在这儿为了更好的想表达我要阐述的问题,还是以表驱动模型来进行开发。

用户需求:

a:一个会议可能有多个主持人,虽然这种情况比较少,但是也有可能有。

b:一个会议有多个参与人,这个不难理解。

c:一个会议有可能要让某人知晓,这人可以参与或不参与会议,一般为高层。

d:一个会议有可能有零个或者多个记录者。

e:一个会议需要远程视频,投影仪,电脑,麦克风等会议设备中的某些设备。

f:会议预订成功,或者会议时间,会议地点等重要信息修改后,邮件通知与会人员。

常规数据库设计:

a:建一个Meeting的主表,用于存放会议名称,会议地点,会议时间等的相关信息。

b:再建一个MeetingUser的表存储主持人,参与人,知会人,记录者。

c:同样,会议所需要的设备用MeetingDevice表来存储相关的信息。如图:


这样的表结构,是比较常规的设计方法,但是在实际应用中,你会发现一些待改进的问题。比如:

a:在提取一个会议的相关信息时,会连接多个表进行查询。这种查询在很大的程序上影响了数据库性能。

b:在做修改操作时也够呛的,先修改主表的相关信息,再把主表关联的子表信息全部删除重新插入一次,这样的操作是否够吐血了。当然有人精益求精,会比较修改前和修改后的数据,再用增加,删除,修改的手段达到子表数据的更新。这样的操作在有些ORM操作中已经实现了,但当自己code代码来实现的时候,特别是在多次code的时候,感觉总是那么烦心。

吐槽了这么多,是否有更好的解决方案呢?当然,在SQL里,我们可以XML数据类型来消除主从表的设计。如图:

上面的表结构设计,是不是有一个小清新的感觉呢?很明显,可以把第一种表的设计缺陷给消除了。一个会议的相关信息都存储在了一个表的一条记录中,这样的数据看起来是不是更直观呢?

a:获取一个预订会议的详细信息,我不需要进行多个表的连接查询,我要做的是只需用C#的Linq.Xml来解析查询出来的XML字符串即可。

b:修改操作时,我只需要重新组合XML数据,一个Update就更新了与会议相关的信息,操作是不是简单多了。

表面上看这种设计已经完美了,但是用户的需求是无止境的,有一天,你收到了一个需求,查询某个用户参与过的所有会议(就是只要主持人,参与人,或者记录者中包括了这个用户,就把这些记录都给查询出来),Oh!My God 这种表结构设计应该怎么解决这个问题呢?其实可以用XQuery解决这个问题,还没接触过XQuery的那得赶快充一下电了。XQuery中最常用的有 exist(),value()这些函数,这儿就不详细的介绍了,网上搜索一下有很多相关资料,如果有必要,我会把以前项目中用的XQuery技巧与大家分享。



本文转载自:http://blog.csdn.net/wwww1988600/article/details/11979811

分享到:
评论

相关推荐

    XML数据索引技术

    对XML数据建立有效的索引,是左右XML数据处理性能的重要因素.深入地讨论了目前XML索引 技术的研究现状,将XML索引技术分为两大类:节点记录类索引(本身还可以分为3个小的类型)和结构摘要类 索引.根据XML数据查询...

    xml字符串转化Dataset

    由于XML的易共享性等众多优点,XML技术越来越多地被应用于企业数据处理等领域,如应用于企业报表、新闻发布、会计数据处理等等。 XML正快速成为从中间层传送数据到桌面的工具,由于XML的数据可以通过中间层代理与...

    如何让Expat支持中文XML

    为便于理解,Demo程序将解析出的xml数据仍按xml的样子输出到屏幕上,且将"、">"符号换为了"["、"]"。 内附编译好的EXE,用法:ExpatSaxDemo demo.xml 以下便是输出结果: [library] [book format="16开" pages...

    android xml解析1

    在JAVA中有两种常见的XML解析方式,DOM和SAX,DOM在解析的时候会将所有的数据一次性载入内存中进行解析,在数据量比较大的情况下,效率非常低.尤其在手机这种对内存和性能要求比较苛刻的设备里面这种方法并不可取. ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式带来的经验教训,XML一开始就坚持实行"良好的格式"。 我们先看HTML的一些语句,这些语句在HTML中...

    基于SSM框架的商品数据处理系统源码

    项目概述:基于SSM框架的商品数据处理系统 本项目采用Java为主要开发语言,整合了JavaScript、HTML和CSS等多种技术,构建了一套商品数据处理系统。该系统包括以下文件组成: - 配置文件:11个XML文件,负责系统...

    图结构XML文档上子图查询的高效处理算法

    研究了图结构XML数据上子图查询处理,给出了一系列高效的处理算法.基于可达编码,首先提出基于哈 希的结构连接算法(HGJoin)来处理图结构XML数据上的可达查询.然后,该算法被扩展来处理特殊的二分图查询. 基于...

    JSON 核心技术应用

    尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript ...

    基于XML的电能质量标准数据共享模型及跨平台数据交换

    最后,提出了基于模式转换的映射数据交换方法,任何2个XML文档解析出来的树结构元素都可以根据距离根节点的深度和数据字典进行语义自动匹配,精确度更高,处理速度也更快。基于以上数据交换模型和模式转换方法成功地实现...

    android解析xml文件的方式

    在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xml,xml是与平台无关的特性,被广泛运用于数据通信中,那么在android中如何解析xml文件数据呢?通常有三种方式:DOM,SAX,...

    大数据处理神器:Fire框架开源源码,助力Spark与Flink任务高效开发

    项目概述:Fire框架是一款由中通大数据团队自主研发并贡献给开源社区的大数据处理利器,专门针对Spark与Flink任务的高效开发而设计。该框架采用Scala为主要编程语言,兼容Java、Shell和HTML等,总计包含1054个文件,...

    论文研究-一种基于关系的XML文档模型映射方法.pdf

    在分析已有映射方法的基础上,提出了一种新的XML文档到关系数据库的模型映射方法。该方法按照节点类型依次将XML文档的各个节点信息映射到关系数据库中不同的表中,为所有...该方法具有通用性,可以处理任意的XML文档。

    XML&JSON 目标检测、实例分割标签转换给yolo用脚本

    高效处理:批量处理功能,提高大规模数据集的处理效率。 适用场景 计算机视觉研究人员和工程师,需要将现有的XML或JSON格式的标注文件转换为YOLOv8可用的格式。 教育工作者和学生,寻求理解和实践目标检测和实例分割...

    论文研究-基于LazyDFA的XPath在XML数据流上查询优化算法.pdf

    针对XML数据流上XPath查询处理及查询优化问题,给出了一种基于lazyDFA技术的解决方案,并提出了优化算法。共享NFA状态表,通过将NFA中的状态分成共享和独享两个状态集来降低lazyDFA的内存使用量;建立状态转移表优化...

    基于XML配置的动态数据查询技术

    针对信息系统中静态数据列表开发效率低下和不能满足用户定制化需求的问题,提出基于XML配置的动态数据查询技术.首先通过Apache Digester解析表单的XML结构化配置,将实例化的配置信息交由动态查询引擎处理,动态查询...

    .NET框架中的XML:在.NET框架中使用XML架构执行代码生成

    火龙果软件工程技术中心本页内容简介基础类扩展XSD处理XmlSerializer的内部原理通过CodeDom自定义映射技巧小结简介自动代码生成—无论是数据访问层、业务实体类还是用户界面—可以大大提高开发人员的生产效率。...

    NPOI 是一个基于 .NET 平台的开源项目,用于读写和操作 Microsoft Office 格式的文档 其中包括 Exce

    同时,NPOI 插件采用了流式读写的方式,可以提高数据处理效率和稳定性。 总的来说,NPOI 是一个非常实用和方便的 Excel 数据处理插件,适用于各种 Unity 项目,包括游戏、教育、商业等领域。如果您需要进行 Excel ...

    大数据处理与并行计算.pdf

    SuperMap ⽀持并⾏计算,有效的提⾼了⼤数据处理的效率。 并⾏计算原理 并⾏计算是将⼀个任务分解成若⼲个⼩任务并协同执⾏以完成求解的过程,是增强复杂问题解决能⼒和提升性能的有效途径。并⾏计算可以 通过多种...

    Android应用中使用DOM方式解析XML格式数据的基本方法

    DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存中,这样使的处理较大的文档效率低。 XML基本的节点类型 node – DOM基本的数据类型 Element – 最主要处理...

    基于XML标准vml作图包

    用Microsoft Word(可用于绘制各种几何图形等),Microsoft Excel(绘制数据图表),用Microsoft Powerpoint等,使用这些软件作图是非常方便快捷的,工作效率比较理想。由于网络应用的发展,很多图形、图片需要在网络...

Global site tag (gtag.js) - Google Analytics