XML的分块动态读取问题(200分)

D

Dentist

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个系统中使用XML作为数据交换格式,在SERVER上需要将多种结构化的二进制文件转
化为XML,然后传输到CLIENT解析并处理,必要时还会转回原始二进制格式。
但是转换后的XML文件太大:10几M的原始文件,转成XML之后可以达到了近60M!在网上传输
时占用网络带宽太大!并且在CLIENT端用DOM处理时会占用大量内存,处理速度难以忍
受!!!用SAX也不理想。
现在是在SERVER端将原始数据分块转换为XML传输到CLIENT端然后再拚接回原始的XML,
这样可以解决传输时占用网络带宽的问题,但解析时占用内存的问题还没有解决。当然只需要传输
少部分原始文件的时候这两个问题都不存在。并且如果分块传输原始数据又无法实现多源
数据的共享。
请众高手指点。
 
Heihei!这是XML作为中间格式的一个致命弱点,在高度结构化的二进制文件向XML转换的时候
原始文件越大,生成的XML会以接近几何级数的倍率增长。
我最近正在写一篇这方面的论文,还有一个小技术问题。写完之后我把草稿EMAIL给你吧。
能不能先把你的原始数据格式的说明文档发给我,我分析一下?
 
发出了,请查收。
这今天做梦都梦到树。
 
将大的文件分割成小的。
用分布的思想。
 
给你一个论文看看吧。

基于C/S模式的数据分布技术研究
夏秀峰
( 东北大学 沈阳 110004)
摘 要 服务器中的数据分片技术在网络数据库设计中具有至关重要的地位,
与系统性能和效率的提高,保障数据有效性、合法性及安全性存在着极为密切的关系。
本文提出了一种基于C/S模式的服务器数据模型优化原则,详细论述了这些原则产生的
背景、必要性和适应范围,并结合具体系统进行了探讨。
关键词 数据模型,C/S模式,数据分布
分类号 TP311
STUDY OF DATA DESTRIBUTION TECHNOLOGY BASED ON C/S MODE
Xia Xiufeng
(Faculty of Information Science and Engineering,Northeast University
Shenyang 110004)
Abstract In network database designing, the technology of data
fragment in server has more important position, and closely related
to system performance and efficiency raising, data efficiency, validity
and security assuring. This paper advances the principles of optimality
for data model based on c/s mode. According to the specific application
systems, the background, necessity and accommodation scope of these principles
are discussed.
Keywords data model, client/server mode, data distribution.
1 引言
随网络和数据库技术的不断成熟和完善,加上对现代化管理意识的不断增强,
人们在工作、学习和生活过程中对信息的依赖程度越来越高,使信息管理成为当今
最为活跃的领域之一。许多部门自行或委托开发的管理信息系统在实际工作中发挥了
重要的作用,并对管理体制的变革、社会分工及工作、学习和生活方式的改变产生了
巨大的影响。
出于技术发展、性能价格比较和用户需求等诸多因素的约束,目前,数据库服务器式
的客户/服务器模式在LAN环境上运行的信息处理系统中占有极为重要的地位,并逐渐成
为中小规模系统的主流(事实上,许多较大规模的系统也采用Client∕Server模式)。
众所周知,客户/服务器模式虽说存在许多优点,但同时也存在诸如可靠性和瓶颈问题
等缺点。
与传统的信息处理系统比较,现代信息处理系统具有以下新的特征:
l 系统适应范围不断扩展,所涉及的业务类型和集成的管理对象急剧增加;
l 系统规模不断扩大,用户数量有增无减;
l 数据量显著增加;
l 数据类型呈现多元化趋势;
l 用户对系统的依赖性显著提高;
l 对应用响应的实时性提出较高要求;
l 信息处理的流程化特征越来越明显;
l 相对独立的子系统之间的数据交换频繁;
l 对数据的有效性、合法性和安全性有较高要求。
基于以上原因,服务器的负荷不断加重,而且不可避免的存在响应时间、安全性、
可靠性等诸多方面的隐患和缺陷,虽然可采取冗余技术和适当减少客户机数量等消极手
段加以改善,但并不能从根本上克服该模式的缺点。
就目前而言,对等模式的网络操作系统技术和性能远没有成熟到实际应用的程度,
为解决上述问题,一种良好的建议是:在现行工作模式下优化网络服务器上的数据模型
及相关算法,并借鉴数据分布的思想和技术,构造满足上述要求的数据模型。本文从理
论和实践出发,提出了网络服务器上数据模型的六个构造原则,具有一定的普遍性和较
好的实用价值。
1 计算搜索原则
在许多实际应用系统中,数据模型不算很复杂,但数据量极大,采用单一文件的集中存
储方式存在许多弊病,主要表现在以下几个方面:
l 搜索范围扩大,访问速度降低;
l 访问冲突明显增加,响应时间和实时性很难保证;
l 超大容量使数据安全性受到严重威胁;
l 后台数据库管理和维护困难。
解决此类问题的根本途径是将单一文件的集中存储变更为多个文件的分布存储。因为具
有相同结构的数据,在某些特殊属性上肯定存在明显差异,而这些差异又可按照一个统一
的规则,通过一个具体个体中的一个或几个属性计算得到。因而在数据生成时,就可以
按照计算结果分别存储在不同的文件中(全局文件的水平分片),而在访问这些数据时,
又可以按照相同的规则快速获得搜索范围。归纳起来,分布存储的方法可包括以下三种。
首先是按数据类别分布存储。如图书管理系统中的图书信息──不同图书具有不同的图书
类别,高校成绩管理系统中的成绩信息──不同成绩属于不同系别、不同年级或不同培养
计划,诸如此类的数据,完全可以按照它们的不同类别分布存储。
其次是按数据特征分布存储。如有线电视台用户档案信息的存储,小规模系统采用单一
文件存储;中等规模系统可考虑按照用户编码的最后一位尾号分布存储在10个结构相同的
文件中;较大规模系统可考虑按照用户编码的最后两位尾号分布存储在100个文件中,其
优势不言而喻。
第三是按散列函数值分布存储。许多系统中的实体关键字,通过简易的计算不易获得独立
的特征值,为此可根据其特征设计相应的hash函数进行散列。如工程数据管理中的图纸信
息存储。此时的hash函数不必特别复杂,只需根据数据量的大小均匀分布到有限的几个文
件中即可。
上述三种方式中一个明显而又重要的特征是文件名的命名规则,一般可分成两部分,其一
是文件主名,必须规定所有文件都具有相同的主名;其二是特征名,主要用于区分或表达
该文件中信息的特征,而且必须保证数据的关键字的有效运算和特征名的紧密对应关系,
以便在获得数据关键字的前提下,通过对该关键字的直接且简易的运算,就可准确快速确
定该数据的存储归属(目标文件名),从而大大缩短系统搜索时间,减少访问冲突,并对
数据的后台管理和安全性提供有效的保证。
2 数据有效原则
在流程型加工企业的管理信息系统中,产品的工程数据管理占据相当重要的地位。由于
这些企业为了适应社会的需要以谋求自身的生存和发展,其产品往往是多品种多型号生产,
特别是在市场经济的环境下,客户的要求至高无上,不同用户对产品的要求也不尽相同,
加上产品在制造、使用和维护过程中的经验积累,于是就导致了同一种产品的设计从外形
到内核上都有可能存在不同的差异,因而也就产生了不同的产品构型。产品构型的变异和
产品质量保障体系的实施,使生产企业和用户之间的关系变得越来越紧密,客户可能随时
提出更换某些已损坏零件的合理要求,企业是否能迅速的查找出该产品技术档案资料,并
能据此生产出需要的零部件,是一个企业是否能占据市场并获得客户信任的重要问题。
过去,一个产品的生产图纸经过设计定型和生产定型后,要求保持基本稳定,加上产品的
交付状态也是确定的,所以更改比较少。而现代企业的生产图纸和资料是不断更改的,也
就是说图纸资料的状态是动态的。换句话说,一套图纸不为某一用户、某一个产品所专用
,而为各家用户、各个产品通用,各用户在使用同一份图纸时,仅仅选用适用于自己的内
容。产品图纸能有如此高效的功能就是通过构型变化实现的。为提高管理工作效率,及时对
设计更改在生产线上进行贯彻、跟踪、管理,保证更改的贯彻执行,并按用户要求生产出不同构型的产品,
对工程数据必须实现动态管理。传统的手工管理模式几乎无法实现动态管理功能,
因而往往使产品的设计和生产方式不具备构型的特征,造成企业的生存和发展受到很大程
度上的约束,而计算机技术可较好的解决工程数据的动态管理问题。
由于工程数据存在有效性特征,因而随生产过程的不断进行,产品数量、型号以及产品更
改信息的不断增加,其信息量往往呈现级数增加趋势。一方面,所存储的信息必须要满足
在线(当前)生产的动态要求,另一方面,又要能反映出历史上任意一个产品、任意一个
时刻的有效状态,以便能适应某些特殊的服务需求(如产品的返修等)。
为此,分析各类信息在生产过程中的使用频率、信息在生存周期内所处的不同状态以及所处某
个状态上的时间和行为基础上,提出了数据分布存储的设想。即按照“当前有效”的原则,将
当前有效的产品工程数据信息和历史上曾经有效的信息分别存储在两个独立的文件中,
分布存储过程对用户而言完全透明,亦即随某个正常行为而自动实现。如此不但可提高数据
的安全性,而且由于缩小了数据处理的源集合,大大加快了处理速度。通过对当前文件的
相关操作,可把产品目前的生产要求完整表达清楚,而通过对历史文件的相关操作(不经常
),就可把产品在历史上的设计和生产状况充分表达出来,以便用户提出对过去产品的维修
要求(包括其它质量保障、责任等)时,能正确提取产品档案,组织有效施工或发挥其它
作用。
3 处理简易原则
原始凭证(如财务管理中的财务凭证、销售系统中的销售凭证、库存管理系统的入∕出库
凭证等)是众多信息处理系统中重要而又基本的数据,许多统计数据和具有辅助决策作用
的信息都需要从原凭证文件中定期分类汇总生成。而这些统计数据有一个共同的特征,就
是必须按照时间的顺序反映出相关业务的本质,其中一般的属性都要包括年初数、上月数
、昨日数、本日数、本月数、本年数等。
该模型中年初数的含义为去年实际发生数据累计,由“年初承转”行为通过本年数替换而
来;上月数为自本年年初至上月月末实际发生数据累计,由“月初承转”行为通过本年数
替换而来;昨日数为本月月初至昨日末实际发生数据合计,由“日初承转”行为通过本月
数替换而来;本日数则为本日实际发生数据合计,通过“本日汇总”行为由“销售凭证表
”分类统计而来;本月数为本月月初至今日末实际发生数据合计,“本日汇总”时由昨日
数和本日数之和构成;本年数为本年年初至现在实际发生数累计,“本日汇总”时由上月数
和本月数之和构成。
显然,上述模型中的所有属性值都可通过“本日汇总”行为自动产生,只要本日记本数据
是正确的,那么其它所有数据都是正确的。另外该模型可满足动态“本日汇总”,即任何
时候进行本日汇总时产生的数据都代表了当前动态的业务情况,而且在不做“日初承转”
的前提下可重复进行汇总。显然这些文件中所有统计数据的形成只跟本日的原始凭证数据
有关,其它非本日数据仅通过简单的表内运算即可得到,而无须在本月和本年范围内对原
始凭证数据进行统计。根据模型的这种特征,将本年度的原始凭证数据按照日、月、年三
级结构进行分布存储,即只将本日实际发生的原始凭证存储在日文件中,通过“日初承转
”行为在每日汇总完毕、输出各种报表之后,于次日初将日文件中的数据全部添加到月表
中。同理在每月月初将月文件中的数据添加到年文件中。
诚然,这种分布的合理性建立在统计模型的优化设计基础上,但在统计的简易性、准确性
、快速性和数据的安全性上具有较好的优势。
4 数据合法性原则
许多信息处理系统中的原始数据都要经过生成(输入)、审核、处理、报废四个步骤。
如检验检测系统中的试验(检测)记录,物料管理系统中的到货记录、海关系统中的报关
记录等,它们都有一个共同的特点,即同一个数据具有不同状态,而且在不同状态时所起
到的作用和与之相关的行为也大相径庭。初始生成的数据需要经过自检、审核、批准后方
能生效(合法),正常业务的所有处理都必须发生在该数据的合法集合上。而经过处理后
的数据,除作为原始凭证查询外,已经不具备生成汇总信息的作用,而只等待相当长时间
后的报废处理。
对该类数据的存储虽然可采取集中方式,即用某些属性区别不同身份的数据,但其弊病
(如数据量极大、处理复杂等)显而易见,为此可采用三级(多级)存储结构解决此类问
题,即将审核前的数据、审核后处理前的数据和处理后报废前的数据分别独立存储。
具有不同状态的同一类数据可具有不同的存储结构(分布存储),它们在不同存储结构之
间的转储需要通过一些与实际密切相关的行为来实现,一般无需专门的转储程序,即分布
存储对用户而言是完全透明的。如通过“审核批准”行为可将合格的数据从一级结构中转
储到二级结构中,经过正常业务处理后的数据,除档案作用之外,已经从有效状态转变成
生存状态,可随某个正常系统行为如“月初承转”将其转储到三级结构中存储。
三级(多级)存储结构可有效保证系统中所有的正常业务行为都发生在合法数据集合上,
因而数据的合法性和安全性可得到有效保障;另外由于数据集合的规模相对集中存储方式
而言较小,处理的简易性和实效性问题可得到很好的解决,这在众多信息处理系统中具有
很好的优势。
5 数据安全性原则
数据的安全性是系统得以生存的有力保证,传统和现代的容错技术为数据安全性保障提供
了可能。根据不同的容错技术,数据文件也需在不同的存储介质上进行不同的分布(副本
拷贝/增量拷贝),并需要应用程序能自动实现它们之间的一致性维护和特殊情况下的后
备系统运行。
在一个物理盘上的多个逻辑盘(或一个逻辑盘中的多个子目录)中进行文件的副本存储是
容错技术的最基本手段,通过建立两份文件目录表和两份文件分配表的冗余方法,可有效
防止磁盘介质损坏而造成的数据不安全性问题。为提高系统运行效率,在数据模型设计时,
并不一定将系统中的所有数据都进行副本拷贝,按照系统可再次生成原则可挑选那些系统
的原始数据或不能通过系统行为重复生成的数据进行副本拷贝,一旦主盘或主目录上的数
据受到损坏时,能通过系统程序自动(人为)恢复。该方法要求应用程序能自主完成两个
备份之间的一致性维护。
容错技术引起的数据分布还包括磁盘镜像、磁盘双工、廉价磁盘冗余阵列和双服务器系统
等几种措施,但这些措施与网络操作系统或DBMS的性能有关,往往不需要用户程序特殊涉
及。保证数据安全性的另一个重要措施是后备系统,一般采用磁带机、硬盘或可擦写光盘
机作为备份介质,以便系统运行一段时间后所产生的大部分数据能转储到后备系统中。传
统的拷贝方法包括完全转储法和增量转储法两种,但都会产生数据冗余和一定时间代价等
问题。一种良好的建议是,由应用系统设计者自行设计用于安全性保障的后备系统,根据
系统的硬件配置,选择合适的备份方法,并通过正常的系统行为自主完成系统数据的有效
备份和恢复。
该方法的目的是一旦系统遇到故障,能通过有效的手段恢复运行,因而无须对系统中的所
有数据进行备份,对原始数据可进行实时回写,即每一次写操作要针对主文件和副本文件
同时进行。对汇总数据则只需要定期备份,其中备份的时间间隔可以较长,但必须有规律
(如一个月),当系统在两次备份期间出现故障时,可通过上次备份和迄今为止发生的
原始凭证数据再次生成当前状态。
上述措施的突出优点是,在保证数据安全性基础上,较大程度地减少了冗余数据的存储空
间,这对大信息量处理系统具有良好的性能,虽说为处理故障状态下的恢复花费了一定
的时间代价,但毕竟故障状态出现的几率较低,往往在中、小规模的信息处理系统中具有
较大的优势。
6 数据档案性原则
数据的档案性表现在很多方面,按照正常的工作需要,许多数据虽然已经失去了其存
在价值(从有效期进入生存期),但作为档案的重要组成部分,必须保留相当长的一段时
间,由于计算机的存储空间有限,不可能把所有的档案数据都长期保存在在线外存上。另外,
有许多汇总(统计)数据,也需要保存一段时间,以便能与当前的系统运行结果进行同期或异期对照比较。
对原始凭证类数据,由于其数据量大,而且在正常业务处理完毕后,除特殊情况外,很
少对其进行相关操作,之所以长期保存的目的往往是出于以防万一的需求(即数据档案
作用)。因而除了按照上述日、月、年三级结构进行分布存储外,对往年的数据则转储到磁盘、磁带、
光盘等外存储器上,作为电子档案进行长期保存,而文件名的构成原则是filename_yyyy,其中yyyy表示年度号。
对汇总类数据而言,一种良好的建议是:根据数据保存周期制订分布计划,一般根
据时间范围决定设置相同结构的文件个数。
l按日保存的汇总文件,可分布成32个(若需要),分别为filename、filename_1、filename_2、……、filename_31;
l按月保存的汇总文件,可分布成13个,分别为filename、filename_1、filename_2、……、filename_12;
l按年保存的汇总文件,则决定于保存周期,若周期为t,则可分布成t+1个,分别为filename、filename_1、filename_2、
……、filename_t;
按照该建议,filename存储当前文件,其它表示各个时间上的汇总文件,于是可实现某
些特殊的报表要求,如“近×年来×
××业务对照表”
(需多年的汇总数据构成)、“××年度×××月份汇总表” (需本年度多个月份的汇
总数据构成) 、“××年××月×××业务汇总表” (需本月份多日的汇总数据构成
)等。
对超过一个年度的原始数据,除非有经常性的特殊需要,否则没有必要在在线外存(如
当前硬盘)上进行长期保存,可利用外部磁盘、可擦写光盘和磁带机将超过有效期但在
生存期内的数据进行保存。当然在应用系统的设计上必须包括对以往数据的档案查询程序,
以便用户在特殊情况下对此类数据进行访问。
7 结束语
数据分布的原意本是在网络环境下将全局数据分散存储在各个站点上,
并通过分布式处理系统对数据进行透明化处理。但在Client∕Server模式下
,共享数据(涉网数据)皆驻留在服务器中(对非共享数据和个性处理仍可按照上述方法
处理),将数据分布的思想和技术应用到该环境下,将无疑会提高系统的综合性能。从这
个意义出发,信息处理系统的逻辑设计和物理设计(这与采用何种DBMS无关)之间仍存在
很大差异,理论系统设计与实际系统设计更不可同日而语。
参考文献
(1) 齐治昌、谭庆平,软件工程,高等教育出版社,1998,ISBN7-04-005944-4
(2) 陈血铨、陈洪亮,数据库原理与工程应用,中国科技大学出版社,1996,
ISBN7-312-00789-9
(3) J.D.Ullman,Principles of Database and Knowledge-base System,Vol.Ⅰ,Ⅱ,
Computer Science,press,1988,ISBN088175-188-V(X.1)
(4) 汤子瀛、哲凤屏、汤小丹,计算机操作系统,西安电子科技大学出版社,
1998,ISBN7-5606-0496-X/T.0232
(5) 王能斌,数据库系统原理,电子工业出版社,2000,ISBN 7-5053-5304-7
(6) 王珊等,数据仓库技术与联机分析处理,科学出版社1999,ISBN 7-03-006412-7
作者简介:夏秀峰,1964年生,博士研究生,主要研究领域为分布式数据库、数据仓库、
数据挖掘技术、决策支持系统及MIS分析与设计。
 
XML是中间格式,采用原始数据分块传输原始数据就无法实现多源数据的共享,客户端对每种
原始数据格式都要一段特定的解码程序,这样就失去了采用XML技术的意义。
如果要分割,也只能分割XML,但是XML是语法很严格的,在客户端分块的XML无法实时校验
和解析,这才是我们遇到的真正问题所在。
 
xml本身就是靠严格的语法才得以发扬广大的。
分割不好搞的。不传完怎么分析啊。
 
上面的那篇论文就像文中所述的一样:只适合数据模型不算很复杂但数据量极大的文件。
但XML作为任何标记语言的元语言,具体应用时定义是很灵活的(在没有行业标准以前),
它的树状结构也可以派生出很多类型,并不算简单。所以以上那篇论文讨论的方法不适合
本问题。顺便提一下文中讨论的三种方法的本质只是一个编码的问题,远远落后于现在分布式
异构数据共享的技术潮流。基于文件的分布式共享已经不被推荐。
XML的语法严格是它的最大优点,各种XML的解析器在这方面都做了很多工作,但这一点有
时候确实不利于一些实际工程问题的解决。最强的一点往往也是最容易突破的一点,我
现在就是从这一点出发对没传完的XML进行分析,并实时显示。当然方法是技术性的,会
依赖于某一种技术。
等编辑部收稿之后我再贴出来吧。
 
多人接受答案了。
 
sythree,你的论文呢,贴出来好不好阿
 
顶部