第38卷
第18期
计算机工程
2012年9月
Vr01.38
NO.18
ComputerEngineering
September2012
・软件技术与数据库・
文章编号:loom一3428(2012)18—006§珈3
文献标识码:A
中圈分类号:TP311
一种高效的海量数据储存方案
王柏,胡谷雨,罗健欣
(解放军理工大学指挥自动化学院,南京210007)
摘要:为解决传统地理信息系统在离线状态下无法正常运行的问题,设计本地缓存机制,提出一种基于四叉树索引的海量数据储存方案。采用四叉树文件系统管理本地缓存,包括数据的添加、读取、查询和删除,避免传统Windows文件系统储存大量小文件时存在的文件操作耗时长的弊端。实验结果证明,该方案能实现数据加密,提高地理信息数据的安全性,与Windows文件系统相比,更适用于本地缓存。关奠诃:地理信息系统;海量数据储存;四叉树;本地缓存;文件系统;数据安全
An
Emcient
Storage
SchemeforMassiveData
WANGBai,HU
Gu—yu,LUOJian—xin
(InstituteofCommandAutomation,PLAUniversity
ofScienceandTechnology,Nanjing
210007,China)
[Abstraetl
Inorder
to
solvetheproblemthattraditionalGeographicInformation
System(GIS)can
notrun
well
offiine,thispaper
usesnative
storageandproposesaschemecalledquadtreefilesystem,whichisbased
OH
quad
tree
index,anditpreventsthestoragefromtheshortcoming
usingwindowsfilesystem.Themainfunctionincludesinserting,reading,queryinganddeleting,itencryptsthedatausingsimplemethod,whichimprovesthedatasecurity.Experimentalresultsshowthattheschemeisbetter
thanWindowsfilesystemforstoringnativedata.
[KeywordslGeographicInformationSystem(GIS);massivedatastorage;quadtree;localcache;filesystem;datasecurity
DOI:10.3969/j.issn.1000—3428
2012.18.017
1概述
(3)缓存文件有安全保障,他人不易获取原数据。
随着GIS应用的深入,人们越来越多地要求用真三维
3
基于四叉树索引的数据德存方案设计
空间处理问题,其关键技术之一是海量数据的存储与快速
为满足客户端缓存数据组织方式的要求,本文设计了
处理。本文提出一种基于四叉树索引的海量数据存储方一种基于四叉树索引的数据管理方案,下面从数据的初始案一一四叉树文件系统,在客户端设定了本地缓存来储存
化、添加、读取、查询、删除等操作阐述该方案V“1。已下载的地形数据,实现系统离线运行功能,且缓存数据3.1影像效据筒介
管理高效、灵活。
Google
Earth使用的影像数据是根据四叉树模型进行
2相关技术研究
分割的,第0层仅有l张图片,即全球影像的墨卡托投影,
当前,国内外很多科研机构开展了有关海量地形数据第1层有4张图片,第2层有16张图片,……,第_r,层存储与管理的研究,并取得令人瞩目的成果,主要有美国有4”张图片。每张图片大小是256×256像素。使用的最
航空航天局(NASA)喷气推进实验室(JPL)在OnEarth项目精细的数据是19层,空间分辨率约为0,3m/pixel。数据
中研制的用于存储LandSat-7全球影像拼接的RASCHAL每递增一层,空间分辨率减半。系统(存储容量40TB,已使用l5TB)¨。J、Google用于支3.2晨存文件格式设计
撑其GoogleEarth/Maps应用的海量存储系统(数据量为
本文四叉树文件系统包含2种文件格式:索引文件(后
70.5
TB【j4】,其中,影像数据70TB,索引数据500GB一1)。
缀名为.idx)和数据文件(后缀名为.dat)。为适应文件指针偏
还有一些基于传统的关系型DBMS实现的空间数据库,
移控制,文件的大小以2GB为上限,如果有文件达到上如OracleSpatial,以及各大GIS企业与研究机构实现的空限,则文件编号累加,建立一个新的文件来继续存储数据。
间数据引擎,如ESRI的ArcSDE。国内比较著名的是武每个文件都有一个文件头,索引文件头包含该文件的汉吉奥研制的GeoImageDB海量影像数据库管理系统【6J。
类型(索引文件或者数据文件)、索引指向数据的类型(如影
对于客户端缓存而言,数据的组织方式有以下要求:像数据、高程数据等)、该索引文件的编号(可能有多个索
(1)从缓存文件加载数据及时,不影响程序正常运行。引文件)、该索引文件当前的末尾偏移量以及64位的扩展
(2)缓存文件复制移动删除方便,一次下载,多次使用。
域。索引文件中包含每个数据的索引结构,索引结构内容
伥誊筒介:王柏(1997--),男.硕士研究生,主研方向:数据库技术,网络管理;胡谷雨,教授;罗健欣,博士收稿日期:201I—11—03
修回日期:201I—12—26
E—mail:372882017@qq.com
66
计算机工程2012年9月20日
包括该索引节点的位置、其子节点的位置以及与该索引节点对应的数据的位置和长度,索引文件中的前n个索引结
构是,r/个首层数据的索引结构(对于OoogleEarth使用的影像数据而言,n=l,而对于NASA提供的高程数据首层则有9×18个数据块)。之后的索引结构则是首层节点的子节
点以及后代节点。为了找到每一个叶节点,该叶节点的所
有祖节点索引无论是否有数据,均存储在索引文件中。若
某一索引对应的四叉树块没有数据,则在索引结构中该索引对应的数据文件编号、数据偏移以及数据长度均为0。
数据文件头与索引文件头类似,包含该文件的类型、数据的类型、该数据文件的编号、当前的末尾偏移量以及
64位的扩展域。数据文件中包含每个索引结构对应的数据,这些数据的长度和偏移在索引结构中都有定义,故在
数据文件中只需依次存储,不需要额外的处理。根据需要,在储存这些数据时可进行必要的加密操作,本文仅使用位
加密法实现了数据的简单加密。客户端在使用该数据时,只需进行相应的解密计算。他人不知道解密算法,即使拥
有了缓存数据,也无法轻易获取原始数据,这在一定程度上保证了数据的安全性。
3.3缓存文件的初始化
缓存文件初始化需要的参数包括数据的类型,首层数据块个数(行×歹IJ)。初始化流程如图l所示。
参数传入:数据类型
首层数据块个数
接编号创建第1个目录和数据文件,填写根据文件编号命名计文件头信息和首层
算已创建的目录文件
和数据文件数
索引结构
初始化完毕
圈1曩存文件的柳妯化
3.4缓存数据的添加
不同的缓存数据类型有不同的类操作指针,添加某一
种缓存数据需要的参数包括该缓存数据的位置信息(层行
列)、数据内容和数据长度。执行流程如下:
(1)根据数据位置信息(1evel,rOW,c01)计算它所在的首层数据块信息(TopLevel,TopRow,ropC01):
TopLevel=0
TopRow=(int)(row/2{level-74畦8”“’、TopCot=(int)(col/2‘“。。~ropLevefl、
(2)打开第1个索引文件,读取索引文件头,读取步
骤(1)中计算得出的首层数据块对应的索iJl(directStruct)。
(3)根据四叉树结构遍历到需要添加数据的索引位置。(4)根据索引对数据的描述判定是否添加该数据。若数
据已存在,不用更新,返回成功。若节点在数据文件中没有数据,需要更新。
(5)按照数据文件当前偏移dataFileHeader.CurData
Off,以及数据长度datalenth向当前打开的数据文件中添
加数据,更新目录结构中对数据的描述。至此,一个缓存数据添加完毕。
缓存数据的添加流程如图2所示。
彭博薯嫠豢熬蛐)-一能渤鹪忮H禚曼茹\———————/
鬻黼Header竖4HI'微direclFileader
攀
”“
亟必甾莎谑耧>≮豁
是l
否
初婚让新数据文件J是
(创建并读取数据}■一文件头)
釜影
赢丁
功一
)
膊碥肼鼾哪
黼燃一胜旆触噍点
墅乳抬泌
件更新索引和数据L———_J/划审\
。:善由
文件头信息l,—</该子爷熹是否\>—三二:三=
————————————————一
l口\…/
糍翳隧测攀
瞳2量存羹据的添加
3,5曩存数据的读取
当需要某一数据块的数据时,只需指定对应数据块的
位置信息(层行列),使用相应的类操作指针读取缓存文件
中的数据,具体操作流程如图3所示。
计算该数据块对应的
首层数据块
打开第1个索引文掣
件,读取索引文件
头direetFileHeader一态
取数一计据一出应一的索~首引一
/沁\‘,积擞
嚣又嚣娜\女坠点\绷/
\自/
至土
‘按directStrucl存储的、计算当前数据在下
文件编号数据偏移长度
层的祖节点行列并、
读取数据
计算该节点属于其/
父节点哪个子节点
鲨回鲨false返
h
/1宋
读取该子节点存于
directStruct
《爹
圈3曩存象据的读取
3.6缓存数据的查询
根据数据块的位置信息(层行列)可以查询缓存文件中是否存在该数据块对应的数据。具体操作与读取数据类似,仅在最后读取到该数据块对应的索引后,判断索引记
第38卷第18期王柏,胡谷雨,罗健欣:一种高效海量数据储存方案
67
录中该数据的偏移是否为0,如果等于0,说明该数据不
存在,否则,数据文件中该数据存在。
通过实现上述功能,该方案即形成了一个简单的文件管理系统一一四叉树文件系统,该系统生成的缓存文件能
够很好地满足前文提到的本地缓存组织方式的要求。
3.7缓存数据的删除
如果某一数据块的数据在添加时出错,或有其他特殊情况,需要将该数据在缓存文件中删除,依然可以根据读
取该数据的流程获取该数据块的索引,在数据文件中将该
4实验对比与分析
为体现本文提出的四叉树文件系统所形成的缓存文
数据对应的内存清空,并将该数据块索引中的数据文件编号,数据偏移和长度置为0。此时数据文件中该数据对应
的那段内存空闲,可以额外建立一个空闲内存索引文件,记录这些被删除的内存空间,当有新数据添加时,可以在
件的优点,与Windows文件系统对该影像数据的存储做了一些对比实验。Windows文件系统通过目录树存储该影
像数据,即通过不同文件夹存放不同层不同行列的数据。
4.1实验数据
本文选用5晕巾不同大小的数据集作为实验对象。它们
这些空闲内存中找一块最合适的存放新数据,并且在该数据块的索引中做好记录。把能够存放该数据的最小空闲空
间认为是最适合的内存空间。
表1
在Windows文件系统和四叉树文件系统下的文件大小和
占用空间如表1所示。
5锋数据集大小
4.2实验内容
对缓存数据进行复制、移动、删除操作,计算耗时。
本文方案的优越性。实验结果表明,对缓存文件的复制移
动和删除操作耗时,四叉树文件系统比Windows文件系
具体方法:在Windows的shellapi文件中定义了一个名为
SHFileopera£ion()的外壳函数,用它可以实现各种文件操作,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。使用该函数只需填写该专用的
统要好得多,而读取操作耗时都很短(实验结果显示的耗时是对一个文件读取lo万次的耗时),两者区剐不是很
大。因此,四叉树文件系统避免了使用大量小文件导致的占用额外空间、文件操作费时费力等弊端,更加适合客户
结构,告知Windows执行什么样的操作,并提供其他重要信息。使用该函数对文件进行相应的操作,并统计耗时。
在缓存数据文件中读取某一数据信息,计算读取耗时。给定根目录与层行列号,将该图片数据读取到内存,然后将该内存删除。因为读一次耗时很短,所以统计对一
个数据读取10万次的耗时并记录下来进行对比。4.3结果分析
端的缓存文件存储。
基于桌面文件系统架构的种类非常多,如Ext2/Ext3、
LFS。表2对3种常见文件系统在嵌入式系统应用中的实际情况进行了总结,从表中可以看出,虽然这些文件系统
各有优势,但作为嵌入式系统应用到地理系新系统中,其可靠性、稳定性和数据一致性却没有得到很好的保障。
袁2现有文t争系统在嵌入式系统应用中的倪势与缺睹
图4为耗时较多的复制和移动操作耗时曲线图,实验结果为进行10次重复操作后所取平均耗时(将系统环境引
起的误差降到最低)。
5绪柬语
本文提出一种高效的海量数据存储方案,用来存储地
理信息系统的本地缓存数据,使得即使客户端不与服务器连接,也能够使用之前下载的缓存文件保证程序的正常运
行。描述了该存储方案中数据的添加、读取、查询、删除等操作,通过与Windows文件系统存储缓存文件做相应
数据集太小/195
操作的实验对比,证实了四叉树文件系统更加适用于本地缓存数据的存储。但本文系统对数据的加密算法比较简
图4耗时较多昀复制和移动操作耗时
虽然该实验的各项操作在不同系统环境和状况下会有一些误差,但操作多次取平均值后在一定程度上说弱了
单,对数据删除后形成的空闲内存空间管理也不够完善,
这些都是下一步研究的重点。
(下转第72页)
72
计算机工程2012年9月20日
表4列出了该仿真网络的各性能指标的数值。在计算路由开销时没有计算总体呈周期性发送的Hello报文和拓
扑更新报文。
表4仿真罔络各性能指标性能指标
数值
络仿真系统属于较可信等级,基本满足仿真需求。从评估过程来看,本文建立的指标体系和分类综合可信性评估模型的针对性和可操作性较强,较好地结合了专家主观经验
与客观测量数值,具有一定的参考价值。
。。苎皇要壁,,平均端到端时延/s
#l止l/(bit'st)
n032860.0513157494
技术大学,2000.一…~[2]
贺丽梅,陈致明,刘乾生,等.相似理论在仿真可信性分析中的应用【J】.计算机应用研究,2002,19(12):111—113.
—_=:-::=●:=————————————————一
10.0513
157494
0.048
9
0.929
原始墼-关联矩阵:F应的中证验型模在验检设假茹叶jj三;丢。:互茹乞:集轰三]3[、。4…’。一……’…’’。…………一一…一。一
0.0329
,
o.047
。
o161000157
000
o.044o0.052
0
o.9500.900
0.030o
0.035
0
ffl[1]・航空计算技术,2003,33(1):1-3.[4]
李鹏波,张士峰,蔡洪・关于仿真可信性的度量【J】计算机
0.0500
|0.056
10.060
Fo.629
o.889o.842
358
00
1510000.06300.070
0
0.8000.700
0.0450.050
0
[5]杨惠珍,康风举,李俊.层次分析法在水下航行器系统仿真
可信性评估中的应用研究[J].系统仿真学报,2002,14(10):
148000
0J
0.6823o.7679o.9178
o.863
0
0.8260.8780.609
01
52
【6]Lin
Chin—Tsai,Tsai
on
Hui・Yin.Hierarchical
ClusteringAnalysis
of
1.0000o.6836
0.85950.5811
Based
Grey
Relation
Grade[J].International
Journal
0.6405
InformationandManagementSciences,2005,16(1):95-105.
10.440
70.4179
0.3912
0.3612
0.377
7j
研究【J].系统仿真学报,2010,22(11):2608.2012.
5.4
顶层指标的评估
[9】王曙钊,刘兴堂,吴晓燕,等.关于VV&A基层指标度量模型
最终得到顶层指标的隶属度向量为:
fO.273,0.391,0.254,0.072,O.01)
[101刘姓唐,梁炳成,刘力,等.复杂系统建模理论、方法与技
术【M]・北京:科学出版社,2008:46—51‘
[111王会梅,王永杰,张义荣・粗糙集理论在网络攻击效果评估中
根据最大隶属度原则判定本仿真系统为较可信等级。
6
结束语
本文分析了战场通信网络仿真系统的特点,针对性地
【12]杨连贺,李姜.集值统计迭代法在计算机类课程设置中的应
/B[J].天津工业大学学抿2003,22(3):70—72.
【13]查亚兵,唐见兵.基于主观综合评判的作战仿真可信度评估方
法研究[J].国防科学技术大学学报,2010,32(6):153.157.
建立了评估其可信性的层次化指标体系。使用集值统计迭代法确定了指标权重。并对逻辑类指标和数值类指标,分
评估。仿真实验结果表明,评估使用的220C战场通信网
编辑顾逸斐
is・l・]:IEEE[2]Hulen
Press,2005・
Conference.Berkeley,USA:Is.n.],2006:205-218.
N。腑ork8
and
H,Graf0,FitzgeraldK,eta1.Storag。Are8
[6]王密,龚健雅,李德仁.大型无缝影像数据库管理系统的设
计与实现[J]武汉大学学报,2003,28(3):294.300.[71
沈东良.遍历Linll)【kemel的链表时删除元素的方法[EB/OL].……’~7’’~
‘
‘
theHigh
P。rfo珊an。。s幻rag。system[Cl/mr。。’“m。10tll
S‘。mg。sy8‘。m8
NAsA
G。ddardc。“ference
and
Te。llIl。I。gi。s‘
o“M.ass
College
Park,USA:Is.n.].2002.
L
A,Dean
J,
Holzle
U.The
Google
『31
Barroso
CIustcr(2011-08—10)・http://blog-cs血.net/shendl/anicle/detail“6397898・
ArchitectureIM].is.1.1:IEEE【4】Ghemawat
S,Gobioff
the
ComputerSociety,2003.
T
L.The
Google
on
[81沈东良Linux内核中链表和散列表的实现原理揭秘[EB/OL】
File(2011-06—30)-http://blog.csdn・neffshendl・
H,Shun19th
System[Cl/mroc.of
ACMSymposiumOperating
编辑索书志
一种高效的海量数据储存方案
作者:
作者单位:刊名:英文刊名:年,卷(期):
王柏, 胡谷雨, 罗健欣, WANG Bai, HU Gu-yu, LUO Jian-xin解放军理工大学指挥自动化学院,南京,210007计算机工程
Computer Engineering2012,38(18)
1. Plesea L Remote Access to Very Large Image Repositories,A High Performance Computing Perspective 20052. Hulen H;Graf O;Fitzgerald K Storage Area Networks and the High Performance Storage System 20023. Barroso L A;Dean J;Holzle U The Google Cluster Architecture 20034. Ghemawat S;Gobioff H;Shun T L The Google File System 2003
5. Chang F;Dean J;Ghemawat S Bigtable:A Distributed Structure Data Storage System 20066. 王密;龚健雅;李德仁 大型无缝影像数据库管理系统的设计与实现[期刊论文]-武汉大学学报 2003(03)7. 沈东良 遍历Linux kernel的链表时删除元素的方法 20118. 沈东良 Linux内核中链表和散列表的实现原理揭秘 2011
引用本文格式:王柏. 胡谷雨. 罗健欣. WANG Bai. HU Gu-yu. LUO Jian-xin 一种高效的海量数据储存方案[期刊论文]-计算机工程 2012(18)
第38卷
第18期
计算机工程
2012年9月
Vr01.38
NO.18
ComputerEngineering
September2012
・软件技术与数据库・
文章编号:loom一3428(2012)18—006§珈3
文献标识码:A
中圈分类号:TP311
一种高效的海量数据储存方案
王柏,胡谷雨,罗健欣
(解放军理工大学指挥自动化学院,南京210007)
摘要:为解决传统地理信息系统在离线状态下无法正常运行的问题,设计本地缓存机制,提出一种基于四叉树索引的海量数据储存方案。采用四叉树文件系统管理本地缓存,包括数据的添加、读取、查询和删除,避免传统Windows文件系统储存大量小文件时存在的文件操作耗时长的弊端。实验结果证明,该方案能实现数据加密,提高地理信息数据的安全性,与Windows文件系统相比,更适用于本地缓存。关奠诃:地理信息系统;海量数据储存;四叉树;本地缓存;文件系统;数据安全
An
Emcient
Storage
SchemeforMassiveData
WANGBai,HU
Gu—yu,LUOJian—xin
(InstituteofCommandAutomation,PLAUniversity
ofScienceandTechnology,Nanjing
210007,China)
[Abstraetl
Inorder
to
solvetheproblemthattraditionalGeographicInformation
System(GIS)can
notrun
well
offiine,thispaper
usesnative
storageandproposesaschemecalledquadtreefilesystem,whichisbased
OH
quad
tree
index,anditpreventsthestoragefromtheshortcoming
usingwindowsfilesystem.Themainfunctionincludesinserting,reading,queryinganddeleting,itencryptsthedatausingsimplemethod,whichimprovesthedatasecurity.Experimentalresultsshowthattheschemeisbetter
thanWindowsfilesystemforstoringnativedata.
[KeywordslGeographicInformationSystem(GIS);massivedatastorage;quadtree;localcache;filesystem;datasecurity
DOI:10.3969/j.issn.1000—3428
2012.18.017
1概述
(3)缓存文件有安全保障,他人不易获取原数据。
随着GIS应用的深入,人们越来越多地要求用真三维
3
基于四叉树索引的数据德存方案设计
空间处理问题,其关键技术之一是海量数据的存储与快速
为满足客户端缓存数据组织方式的要求,本文设计了
处理。本文提出一种基于四叉树索引的海量数据存储方一种基于四叉树索引的数据管理方案,下面从数据的初始案一一四叉树文件系统,在客户端设定了本地缓存来储存
化、添加、读取、查询、删除等操作阐述该方案V“1。已下载的地形数据,实现系统离线运行功能,且缓存数据3.1影像效据筒介
管理高效、灵活。
Google
Earth使用的影像数据是根据四叉树模型进行
2相关技术研究
分割的,第0层仅有l张图片,即全球影像的墨卡托投影,
当前,国内外很多科研机构开展了有关海量地形数据第1层有4张图片,第2层有16张图片,……,第_r,层存储与管理的研究,并取得令人瞩目的成果,主要有美国有4”张图片。每张图片大小是256×256像素。使用的最
航空航天局(NASA)喷气推进实验室(JPL)在OnEarth项目精细的数据是19层,空间分辨率约为0,3m/pixel。数据
中研制的用于存储LandSat-7全球影像拼接的RASCHAL每递增一层,空间分辨率减半。系统(存储容量40TB,已使用l5TB)¨。J、Google用于支3.2晨存文件格式设计
撑其GoogleEarth/Maps应用的海量存储系统(数据量为
本文四叉树文件系统包含2种文件格式:索引文件(后
70.5
TB【j4】,其中,影像数据70TB,索引数据500GB一1)。
缀名为.idx)和数据文件(后缀名为.dat)。为适应文件指针偏
还有一些基于传统的关系型DBMS实现的空间数据库,
移控制,文件的大小以2GB为上限,如果有文件达到上如OracleSpatial,以及各大GIS企业与研究机构实现的空限,则文件编号累加,建立一个新的文件来继续存储数据。
间数据引擎,如ESRI的ArcSDE。国内比较著名的是武每个文件都有一个文件头,索引文件头包含该文件的汉吉奥研制的GeoImageDB海量影像数据库管理系统【6J。
类型(索引文件或者数据文件)、索引指向数据的类型(如影
对于客户端缓存而言,数据的组织方式有以下要求:像数据、高程数据等)、该索引文件的编号(可能有多个索
(1)从缓存文件加载数据及时,不影响程序正常运行。引文件)、该索引文件当前的末尾偏移量以及64位的扩展
(2)缓存文件复制移动删除方便,一次下载,多次使用。
域。索引文件中包含每个数据的索引结构,索引结构内容
伥誊筒介:王柏(1997--),男.硕士研究生,主研方向:数据库技术,网络管理;胡谷雨,教授;罗健欣,博士收稿日期:201I—11—03
修回日期:201I—12—26
E—mail:372882017@qq.com
66
计算机工程2012年9月20日
包括该索引节点的位置、其子节点的位置以及与该索引节点对应的数据的位置和长度,索引文件中的前n个索引结
构是,r/个首层数据的索引结构(对于OoogleEarth使用的影像数据而言,n=l,而对于NASA提供的高程数据首层则有9×18个数据块)。之后的索引结构则是首层节点的子节
点以及后代节点。为了找到每一个叶节点,该叶节点的所
有祖节点索引无论是否有数据,均存储在索引文件中。若
某一索引对应的四叉树块没有数据,则在索引结构中该索引对应的数据文件编号、数据偏移以及数据长度均为0。
数据文件头与索引文件头类似,包含该文件的类型、数据的类型、该数据文件的编号、当前的末尾偏移量以及
64位的扩展域。数据文件中包含每个索引结构对应的数据,这些数据的长度和偏移在索引结构中都有定义,故在
数据文件中只需依次存储,不需要额外的处理。根据需要,在储存这些数据时可进行必要的加密操作,本文仅使用位
加密法实现了数据的简单加密。客户端在使用该数据时,只需进行相应的解密计算。他人不知道解密算法,即使拥
有了缓存数据,也无法轻易获取原始数据,这在一定程度上保证了数据的安全性。
3.3缓存文件的初始化
缓存文件初始化需要的参数包括数据的类型,首层数据块个数(行×歹IJ)。初始化流程如图l所示。
参数传入:数据类型
首层数据块个数
接编号创建第1个目录和数据文件,填写根据文件编号命名计文件头信息和首层
算已创建的目录文件
和数据文件数
索引结构
初始化完毕
圈1曩存文件的柳妯化
3.4缓存数据的添加
不同的缓存数据类型有不同的类操作指针,添加某一
种缓存数据需要的参数包括该缓存数据的位置信息(层行
列)、数据内容和数据长度。执行流程如下:
(1)根据数据位置信息(1evel,rOW,c01)计算它所在的首层数据块信息(TopLevel,TopRow,ropC01):
TopLevel=0
TopRow=(int)(row/2{level-74畦8”“’、TopCot=(int)(col/2‘“。。~ropLevefl、
(2)打开第1个索引文件,读取索引文件头,读取步
骤(1)中计算得出的首层数据块对应的索iJl(directStruct)。
(3)根据四叉树结构遍历到需要添加数据的索引位置。(4)根据索引对数据的描述判定是否添加该数据。若数
据已存在,不用更新,返回成功。若节点在数据文件中没有数据,需要更新。
(5)按照数据文件当前偏移dataFileHeader.CurData
Off,以及数据长度datalenth向当前打开的数据文件中添
加数据,更新目录结构中对数据的描述。至此,一个缓存数据添加完毕。
缓存数据的添加流程如图2所示。
彭博薯嫠豢熬蛐)-一能渤鹪忮H禚曼茹\———————/
鬻黼Header竖4HI'微direclFileader
攀
”“
亟必甾莎谑耧>≮豁
是l
否
初婚让新数据文件J是
(创建并读取数据}■一文件头)
釜影
赢丁
功一
)
膊碥肼鼾哪
黼燃一胜旆触噍点
墅乳抬泌
件更新索引和数据L———_J/划审\
。:善由
文件头信息l,—</该子爷熹是否\>—三二:三=
————————————————一
l口\…/
糍翳隧测攀
瞳2量存羹据的添加
3,5曩存数据的读取
当需要某一数据块的数据时,只需指定对应数据块的
位置信息(层行列),使用相应的类操作指针读取缓存文件
中的数据,具体操作流程如图3所示。
计算该数据块对应的
首层数据块
打开第1个索引文掣
件,读取索引文件
头direetFileHeader一态
取数一计据一出应一的索~首引一
/沁\‘,积擞
嚣又嚣娜\女坠点\绷/
\自/
至土
‘按directStrucl存储的、计算当前数据在下
文件编号数据偏移长度
层的祖节点行列并、
读取数据
计算该节点属于其/
父节点哪个子节点
鲨回鲨false返
h
/1宋
读取该子节点存于
directStruct
《爹
圈3曩存象据的读取
3.6缓存数据的查询
根据数据块的位置信息(层行列)可以查询缓存文件中是否存在该数据块对应的数据。具体操作与读取数据类似,仅在最后读取到该数据块对应的索引后,判断索引记
第38卷第18期王柏,胡谷雨,罗健欣:一种高效海量数据储存方案
67
录中该数据的偏移是否为0,如果等于0,说明该数据不
存在,否则,数据文件中该数据存在。
通过实现上述功能,该方案即形成了一个简单的文件管理系统一一四叉树文件系统,该系统生成的缓存文件能
够很好地满足前文提到的本地缓存组织方式的要求。
3.7缓存数据的删除
如果某一数据块的数据在添加时出错,或有其他特殊情况,需要将该数据在缓存文件中删除,依然可以根据读
取该数据的流程获取该数据块的索引,在数据文件中将该
4实验对比与分析
为体现本文提出的四叉树文件系统所形成的缓存文
数据对应的内存清空,并将该数据块索引中的数据文件编号,数据偏移和长度置为0。此时数据文件中该数据对应
的那段内存空闲,可以额外建立一个空闲内存索引文件,记录这些被删除的内存空间,当有新数据添加时,可以在
件的优点,与Windows文件系统对该影像数据的存储做了一些对比实验。Windows文件系统通过目录树存储该影
像数据,即通过不同文件夹存放不同层不同行列的数据。
4.1实验数据
本文选用5晕巾不同大小的数据集作为实验对象。它们
这些空闲内存中找一块最合适的存放新数据,并且在该数据块的索引中做好记录。把能够存放该数据的最小空闲空
间认为是最适合的内存空间。
表1
在Windows文件系统和四叉树文件系统下的文件大小和
占用空间如表1所示。
5锋数据集大小
4.2实验内容
对缓存数据进行复制、移动、删除操作,计算耗时。
本文方案的优越性。实验结果表明,对缓存文件的复制移
动和删除操作耗时,四叉树文件系统比Windows文件系
具体方法:在Windows的shellapi文件中定义了一个名为
SHFileopera£ion()的外壳函数,用它可以实现各种文件操作,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。使用该函数只需填写该专用的
统要好得多,而读取操作耗时都很短(实验结果显示的耗时是对一个文件读取lo万次的耗时),两者区剐不是很
大。因此,四叉树文件系统避免了使用大量小文件导致的占用额外空间、文件操作费时费力等弊端,更加适合客户
结构,告知Windows执行什么样的操作,并提供其他重要信息。使用该函数对文件进行相应的操作,并统计耗时。
在缓存数据文件中读取某一数据信息,计算读取耗时。给定根目录与层行列号,将该图片数据读取到内存,然后将该内存删除。因为读一次耗时很短,所以统计对一
个数据读取10万次的耗时并记录下来进行对比。4.3结果分析
端的缓存文件存储。
基于桌面文件系统架构的种类非常多,如Ext2/Ext3、
LFS。表2对3种常见文件系统在嵌入式系统应用中的实际情况进行了总结,从表中可以看出,虽然这些文件系统
各有优势,但作为嵌入式系统应用到地理系新系统中,其可靠性、稳定性和数据一致性却没有得到很好的保障。
袁2现有文t争系统在嵌入式系统应用中的倪势与缺睹
图4为耗时较多的复制和移动操作耗时曲线图,实验结果为进行10次重复操作后所取平均耗时(将系统环境引
起的误差降到最低)。
5绪柬语
本文提出一种高效的海量数据存储方案,用来存储地
理信息系统的本地缓存数据,使得即使客户端不与服务器连接,也能够使用之前下载的缓存文件保证程序的正常运
行。描述了该存储方案中数据的添加、读取、查询、删除等操作,通过与Windows文件系统存储缓存文件做相应
数据集太小/195
操作的实验对比,证实了四叉树文件系统更加适用于本地缓存数据的存储。但本文系统对数据的加密算法比较简
图4耗时较多昀复制和移动操作耗时
虽然该实验的各项操作在不同系统环境和状况下会有一些误差,但操作多次取平均值后在一定程度上说弱了
单,对数据删除后形成的空闲内存空间管理也不够完善,
这些都是下一步研究的重点。
(下转第72页)
72
计算机工程2012年9月20日
表4列出了该仿真网络的各性能指标的数值。在计算路由开销时没有计算总体呈周期性发送的Hello报文和拓
扑更新报文。
表4仿真罔络各性能指标性能指标
数值
络仿真系统属于较可信等级,基本满足仿真需求。从评估过程来看,本文建立的指标体系和分类综合可信性评估模型的针对性和可操作性较强,较好地结合了专家主观经验
与客观测量数值,具有一定的参考价值。
。。苎皇要壁,,平均端到端时延/s
#l止l/(bit'st)
n032860.0513157494
技术大学,2000.一…~[2]
贺丽梅,陈致明,刘乾生,等.相似理论在仿真可信性分析中的应用【J】.计算机应用研究,2002,19(12):111—113.
—_=:-::=●:=————————————————一
10.0513
157494
0.048
9
0.929
原始墼-关联矩阵:F应的中证验型模在验检设假茹叶jj三;丢。:互茹乞:集轰三]3[、。4…’。一……’…’’。…………一一…一。一
0.0329
,
o.047
。
o161000157
000
o.044o0.052
0
o.9500.900
0.030o
0.035
0
ffl[1]・航空计算技术,2003,33(1):1-3.[4]
李鹏波,张士峰,蔡洪・关于仿真可信性的度量【J】计算机
0.0500
|0.056
10.060
Fo.629
o.889o.842
358
00
1510000.06300.070
0
0.8000.700
0.0450.050
0
[5]杨惠珍,康风举,李俊.层次分析法在水下航行器系统仿真
可信性评估中的应用研究[J].系统仿真学报,2002,14(10):
148000
0J
0.6823o.7679o.9178
o.863
0
0.8260.8780.609
01
52
【6]Lin
Chin—Tsai,Tsai
on
Hui・Yin.Hierarchical
ClusteringAnalysis
of
1.0000o.6836
0.85950.5811
Based
Grey
Relation
Grade[J].International
Journal
0.6405
InformationandManagementSciences,2005,16(1):95-105.
10.440
70.4179
0.3912
0.3612
0.377
7j
研究【J].系统仿真学报,2010,22(11):2608.2012.
5.4
顶层指标的评估
[9】王曙钊,刘兴堂,吴晓燕,等.关于VV&A基层指标度量模型
最终得到顶层指标的隶属度向量为:
fO.273,0.391,0.254,0.072,O.01)
[101刘姓唐,梁炳成,刘力,等.复杂系统建模理论、方法与技
术【M]・北京:科学出版社,2008:46—51‘
[111王会梅,王永杰,张义荣・粗糙集理论在网络攻击效果评估中
根据最大隶属度原则判定本仿真系统为较可信等级。
6
结束语
本文分析了战场通信网络仿真系统的特点,针对性地
【12]杨连贺,李姜.集值统计迭代法在计算机类课程设置中的应
/B[J].天津工业大学学抿2003,22(3):70—72.
【13]查亚兵,唐见兵.基于主观综合评判的作战仿真可信度评估方
法研究[J].国防科学技术大学学报,2010,32(6):153.157.
建立了评估其可信性的层次化指标体系。使用集值统计迭代法确定了指标权重。并对逻辑类指标和数值类指标,分
评估。仿真实验结果表明,评估使用的220C战场通信网
编辑顾逸斐
is・l・]:IEEE[2]Hulen
Press,2005・
Conference.Berkeley,USA:Is.n.],2006:205-218.
N。腑ork8
and
H,Graf0,FitzgeraldK,eta1.Storag。Are8
[6]王密,龚健雅,李德仁.大型无缝影像数据库管理系统的设
计与实现[J]武汉大学学报,2003,28(3):294.300.[71
沈东良.遍历Linll)【kemel的链表时删除元素的方法[EB/OL].……’~7’’~
‘
‘
theHigh
P。rfo珊an。。s幻rag。system[Cl/mr。。’“m。10tll
S‘。mg。sy8‘。m8
NAsA
G。ddardc。“ference
and
Te。llIl。I。gi。s‘
o“M.ass
College
Park,USA:Is.n.].2002.
L
A,Dean
J,
Holzle
U.The
Google
『31
Barroso
CIustcr(2011-08—10)・http://blog-cs血.net/shendl/anicle/detail“6397898・
ArchitectureIM].is.1.1:IEEE【4】Ghemawat
S,Gobioff
the
ComputerSociety,2003.
T
L.The
Google
on
[81沈东良Linux内核中链表和散列表的实现原理揭秘[EB/OL】
File(2011-06—30)-http://blog.csdn・neffshendl・
H,Shun19th
System[Cl/mroc.of
ACMSymposiumOperating
编辑索书志
一种高效的海量数据储存方案
作者:
作者单位:刊名:英文刊名:年,卷(期):
王柏, 胡谷雨, 罗健欣, WANG Bai, HU Gu-yu, LUO Jian-xin解放军理工大学指挥自动化学院,南京,210007计算机工程
Computer Engineering2012,38(18)
1. Plesea L Remote Access to Very Large Image Repositories,A High Performance Computing Perspective 20052. Hulen H;Graf O;Fitzgerald K Storage Area Networks and the High Performance Storage System 20023. Barroso L A;Dean J;Holzle U The Google Cluster Architecture 20034. Ghemawat S;Gobioff H;Shun T L The Google File System 2003
5. Chang F;Dean J;Ghemawat S Bigtable:A Distributed Structure Data Storage System 20066. 王密;龚健雅;李德仁 大型无缝影像数据库管理系统的设计与实现[期刊论文]-武汉大学学报 2003(03)7. 沈东良 遍历Linux kernel的链表时删除元素的方法 20118. 沈东良 Linux内核中链表和散列表的实现原理揭秘 2011
引用本文格式:王柏. 胡谷雨. 罗健欣. WANG Bai. HU Gu-yu. LUO Jian-xin 一种高效的海量数据储存方案[期刊论文]-计算机工程 2012(18)