一种基于SAAS的出版物平台的海量数据读取方法技术

技术编号:11385242 阅读:81 留言:0更新日期:2015-05-01 12:16
一种基于SAAS的出版物平台的海量数据读取方法:随着信息技术和传感器技术的飞速发展,使得遥感图像的数据量呈几何级数的递增,而传统的利用文件指针来读取文件的方法,只能正确读取2GB以下的数据。随着云技术的发展所有的数据已放致大型数据集中,此前的读取方法已无法满足现在用户的发展需要,而此出版物平台由于特别的原因,存储大量的图片数据,现用VC++实量此特殊的读取方法。

【技术实现步骤摘要】

本专利技术涉及一种基于SAAS的出版物平台的海量数据读取方法,特别涉及的是基于SAAS技术的图片读取技术。
技术介绍
随着信息技术和传感器技术的飞速发展 ,现代遥感数据源不断丰富 ,使得遥感影像图的数据量从以前的几兆、几十兆增长到现在的几百兆 ,甚至是几 GB、几十 GB。在这种情况下 ,如果对图像文件的处理仍采用传统的方法 ,显然是不行的。一方面,计算机硬件环境的发展已经远远不能满足图像处理的需要;另一方面 ,传统的利用文件指针方式来读取图像文件的方法,只能正确读取文件前面 231 -1(约 2GB)字节 ,所以不能满足大于 2GB以上的影像文件的读取。本文是在笔者开发的中国海岸带及近海卫星遥感综合应用系统 (Max_Deskpro)过程中,结合对海量遥感影像进行处理的要求 ,根据实际提出的一种快速读取海量图像的方法。实现该方法的主要技术包括内存映射文件技术、动态构建影像金字塔、缓存技术、图像分块技术。  
技术实现思路
一种基于SAAS的出版物平台的海量数据读取方法;本方法是利用内存映射文件,利用计算机的内存进行大量映射文件。内存映射文件在对文件进行读写操作的时候 , Win32 API和 MFC都提供了支持这些操作的函数和类 ,如 Win32 API的 WriteFile( ) , ReadFile( )和 MFC提供的 CFile类。这些函数在文件的数据量小于 ( 231 -1)字节的时候 ,在大多数场合是可以满足用户的需求。但是当文件的数据量大于 ( 231 -1)字节 (约 2GB)时候 ,就不能正确地使用 Seek( )函数定位到要读取数据的位置 ,这是因为 Seek( LONG Loff, UINT nFrom)函数提供的 Loff参数是 LONG型的 ,它最多支持 ( 231 -1)字节的偏移量。假如图像文件的数据量大于 2GB的话 ,就不能定位到 2GB以后的部分来读取数据。由于内存映射文件技术的主要函数都提供了两个 DWORD型参数来分别表示文件大小或偏移量的低 32Bits和高 32Bits,这两个参数加起来共 64Bits,因此它所支持的最大文件长度为 16EB( 264 -1字节 ),几乎可以满足对任何海量数据文件的处理。下面对两个关键函数进行具体说明 : HANDLE CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName);该函数创建一个文件内存映射对象 ,以告知系统文件映射对象需要多大的物理存储器。由于内存映射文件的物理存储器实际上是本地硬盘上的一个文件,而不是从系统的页文件中分配的内存 ,所以 CreateFileMapping( )函数不分配进程的地址空间 ,不占用内存空间 ,因此在实际应用中通常是一次性把整个文件创建为内存映射对象。如果要把文件中的数据映射到进程的地址空间中 ,则需要调用 MapViewofFile( )函数。该函数的具体定义如下 : LPVOID MapViewofFile( HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileoffsetHigh, DWORD dwFileoffsetLow, DWORD dwNumberofBytesToMap );调用该函数后 ,访问文件中的数据 ,就如同它位于内存中一样 ,这样就省去了对文件执行I/O操作的时间 ,所以它比用 CFile类和 Win32API的 WriteFile( ) , ReadFile( )速度上要快得多。在使用该函数的时候 ,由于它的返回值 LPVOID是一个 32Bits的指针类型 ,所以在处理海量数据文件的时候 ,还要进行分块映射 ,并且一次映射到进程地址空间的数据量要小于 231 -1字节数。文件内存映射的开始位置 (即文件的偏移地址)还必须满足是操作系统分配粒度的整数倍 (通常操作系统的分配粒度是 64K)。使用内存映射文件的一般步骤:(1)首先利用函数CreateFile( )打开一个文件内核对象;  (2)执行 CreateFileMapping( )函数创建一个文件内存映射对象;(3)运用MapViewofFile( )函数将整个文件的部分或者全部数据映射到内存中;(4)利用UnmapViewofFile( )函数解除文件的内存映射;(5)最后利用UnmapViewofFile释放句柄,否则会造成资源泄露。本文档来自技高网...

【技术保护点】
一种基于SAAS的出版物平台的海量数据读取方法:该方法主要是利用内存映射文件技术。

【技术特征摘要】
1.一种基于SAAS的出版物平台的海量数据读取方法:该方法主要是利用内存映射文件技术。
2.根据权利要求1的XML数据库的海量数据读取方法,此方法主要利用计算机的HANDLE CreateFileMapping函数和MapViewofFile函数。
3.HANDLE CreateFileMapping函数...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:镇江鼎拓科技信息有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1