首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

物理数据库设计 - 文件是否应该存储在数据库中

2023-11-09 来源:花图问答

下面就来论述一下关于将文件存储于数据库外部的缺点。

1、垃圾回收问题。

当你想删除一张图片时,你只能够删除掉数据库中的记录,图片文件是没有办法由SQL语句删除的,你必须在你的高级程序中维护着这些图片。保证在删除数据行的同时删除掉图片文件。

2、文件不支持数据库备份工具

当我们备份数据库的时候,是没有办法连同外部文件一起备份的。所以在备份时,必须使用文件系统备份工具来同时备份外部图片。

3、文件不支持SQL的访问权限设置

外部文件会绕开通过GRANT和REVOKE SQL语句设定的访问权限。SQL权限管理这对表和列的访问,但它们并不能应用到外部文件。

4、图片路径不是SQL数据类型

图片路径并不是SQL的数据类型,它只是一个字符串,数据库并不会验证这是否是一个有效的文件路径。如果这个文件被重命名、移动或者删除了,数据库并不会自动更新对应的路径。

同样文件存储于数据库外部也有其优点:

1、数据库在没有图片的时候能够经意很多,因为图片相比于简单数据类型说更大。

2、当不包含图片时,备份数据库会更快并且备份的文件更小,虽然必须执行一次额外的文件备份,但比备份一个大型数据库更容易管理。

3、图片如果存储于数据库之外,那么对图片的预览或者编辑就能够使用更简单直接的处理方式。比如,经常要编辑或修改图片,那么存储于数据库之外就是很好的选择。

二、解决方案 在需要时使用BLOB类型

存储时,使用二进制BLOB存储文件。

图片存储在数据库中,不需要额外加载,也就不会存在文件路径不正确的风险。

删除一条记录的同时也删除了图片。

更新记录的时候会加锁,因此不会有别的客户端并发更新图片。

数据库备份会包含所有的图片。

SQL权限控制对图片也有效。

各种优缺点都有,依据自己的程序,斟酌选择正确的解决方案吧。

物理数据库设计 - 文件是否应该存储在数据库中

标签:

小编还为您整理了以下内容,可能对您也有帮助:

一般文件是存储在数据库中好,还是存储在文件系统中比较好呢?

一般都是存成文件的,安全方面的话做好目录安全应该没什么大问题。

存在数据库里比较安全,但是数据库的负荷很大的。

数据库服务器和存储服务器是什么关系?是数据都存储在存储上还是存储在数据库上?

数据库服务器依赖于存储服务器的数据,这意味着数据库数据文件被放置在存储服务器上。

数据以记录的形式存储在数据库中;数据库将数据作为文件存储在存储服务器上。

数据库服务器由在局域网和数据库管理系统软件中运行的一台或多台计算机组成,数据库服务器为客户端应用程序提供数据服务。存储服务器是为特定目标设计的,因此配置也不同。它可能是一个稍有额外存储空间的服务器,或者它可能有很多存储空间。

扩展资料:

数据库服务器特征:

1、编程量减少

数据库服务器提供了用于数据操纵的标准接口API(Application Programming Interface,应用程序编程接 口)。

2、数据库安全高

数据库服务器提供监控性能、并发控制等工具。由DBA(Database Administrator,数据库管理员)统一负 责授权访问数据库及网络管理。

3、数据可靠性管理

数据库服务器提供统一的数据库备份/恢复、启动/停止数据库的管理工具。

4、计算机资源利用充分

数据库服务器把数据管理及处理工作从客户机上分离出来,使网络中各计算机资源能灵活分配、各尽其用。

参考资料来源:百度百科-存储服务器

参考资料来源:百度百科-数据库服务器

数据库怎么保存文件

问题一:请教如何将文件存储到数据库中? 将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中。在SQL Server中该字段的数据类型是Image,在Access中该字段的数据类型是OLE对象。保存文件到SQL Server数据库中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));Sqlmand cm=new Sqlmand();cm.Connection=;cm.mandType=mandType.Text;if(.State==0) .Open();cm.mandText=insert into +tableName+(+fieldName+) values(@file);SqlParameter spFile=new SqlParameter(@file,SqlDbType.Image);spFile.Value=bytes;cm.Parameters.Add(spFile);cm.ExecuteNonQuery()保存文件到Access数据库中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));OleDbmand cm=new OleDbmand();

问题二:如何保存sql数据库 右键数据库,属性,查看数据库路径,如图

停止服务管理器,然后拷出来就行了

问题三:数据库文件怎样保存到压缩包里 数据库设计二进制字段就可以了,读取文件,写入数据库就行了

问题四:数据库文件的默认存放位置? 很长,一时间想不起来

不过你可以先创建一个默认的数据库

然后点击数据库属性,里面有路径

把它复制到文件夹地址就行了

希望对你能有所帮助

问题五:数据库怎么存储文件 以二进制的方式处理。

如果使用 SQLServer 数据库,创建 varbinary(max) 类型的字段。

如果使用 Oracle 数据库,创建 blog 类型的字段。

问题六:sql数据库如何导出? 使用Discuz! X1.5自带的导出功能

问题七:如何像数据库中保存图片? 一般图像是不保存在数据库的.而是先将图片放在工程下的某个文件夹中,将图片所在的工程文件路径存在数据库中,当程序加载图片的时候,从数据库中读取图片的路径,然后根据路径在工程的文件夹中读取图片文件

问题八:如何用SQL数据库存放视频 用iamge类型,写入的时间用流写入,读出的时间同样需要流转换

问题九:sql 存储过程怎样保存 greate 应该是CREATE

use tbuser

go

Create procere search_login

@username varchar(50),@userpass varchar(50)

as

BEGIN

select * from tbuser where [email protected] and [email protected]

END

只要点执行就存在服务器里了

保存本地,直接点保存就行了。

问题十:如何将数据库导出成sql文件 您好,很高兴为您解答。

1、打开SQL Server Management Studio 2008 ,连接到数据库服务器,展开对象资源管理器到数据库节点

2、选择需要将数据导出到脚本的数据库,将包含所有的存储过程,表,视图,表里的数据等等。

3、右击选中的数据,按照以下路径选择生成脚本向导 :AdventureWorks -〉任务 -〉生成脚本

4、当点击生成脚本,弹出一个向导--生成数据库对象脚本。

5、下一步到达设置脚本编写选项,进入高级设置对话框,关键是要编写脚本的数据类型这里,默认是仅限架构,选择架构和数据或者是数据都可以吧数据导成脚本

执行完就可以看到结果了

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~

数据库物理模型

数据库物理模型设计的目标是根据选定的Oracle数据库系统特点和航空物探数据管理与服务的业务处理需求,确定航空物探数据库最优的物理环境、存取方法和存储结构。即通过数据库物理设计,以便达到物理数据库结构的优化,使得在数据库上运行的各种事务响应时间少、存储空间利用率高、事务吞吐率大。

一、数据库布局

航空物探信息系统的维护数据(部门、岗位、人员、人员权限、数据入库检查规则及数据字典等)相对比较稳定。入库前数据需经过各种检查校对,确认数据正确后才能归档,存入航空物探资料数据库,所以存入资料库前的数据可能经常需要修改和删除,相对变化较大;而存入资料数据库中的数据一般不允许修改和删除,以免误操作破坏资料库数据造成损失。

图2-12 航空物探数据库逻辑模型

图2-13 航空物探数据库布局与数据采集流程图

据此,我们采用图2-13所示的数据库数据采集流程,并将航空物探数据库分为资料采集数据库、资料数据库、系统维护数据库分别进行存储和管理,实现数据的统一管理和统一使用,便于数据入库和易于维护等。

航空物探资料数据库是航空物探所有数据最终存储的场所。资料采集数据库是数据归档存入资料数据库前的临时“集散地”,在此接收各项检查,在确认数据无误后归档到资料数据库,然后删除资料采集数据库中已归档的数据。此外,资料采集数据库中还保存数据入库、维护、检查日志及归档记录。

系统维护数据库,存储系统维护信息(如系统功能、数据库表清单等)、安全信息(如信息系统用户的角色、权限、授权的系统功能等),数据字典、入库数据检查规则等。将其与航空物探数据分开,有利于系统维护和管理。

二、数据库空间设置

数据库空间设置包括磁盘空间设置、应用系统表空间设置、撤销表空间、临时表空间、日志空间和索引空间设置。

(一)磁盘空间设置

磁盘空间设置的目标:磁盘性能不能阻碍实现数据库性能,数据库磁盘必须专用于数据库文件,否则非数据库将会影响到数据库性能,且磁盘空间必须满足恢复和性能的要求。

航空物探数据库服务器为IBM P620小型机,8块硬盘,每块硬盘36GB空间,每块物理磁盘建立一个文件系统。为了提高磁盘的反应时间和寻道时间,提高I/O的存取效率,除了一块硬盘用于UNIX操作系统外,其余7块磁盘分别存放资料采集数据库、系统维护数据库-日志文件,资料数据库及资料数据库的大字段数据、索引、回滚段和数据日志文件。

(二)应用系统表空间设置

信息系统数据采集过程对数据的事务操作比较频繁,经常进行数据插入(新数据入库)、修改(入库数据有误)和删除操作(数据重新导入或归档入库),因此航空物探资料采集数据库所在的表空间会很活跃。为了不影响其他I/O的竞争,同时也可以提高数据入库的操作效率(50多年的历史数据需要集中入库),分配一个磁盘空间(36GB)为采集库的表空间。由于采集数据归档入资料库后被删除,同时进行数据入库的项目也不是很多,虽仍保留所有的采集日志数据,一个磁盘空间也足够使用。

航空物探资料数据库的二维表和Oracle大字段(BLOB)分别存放在不同的物理磁盘(每个磁盘36GB)上,对同时存在有表格数据和大字段数据的数据库表(如航迹线数据)时,可以提高磁盘I/O效率。随着数据入库的项目越来越多,需要增加相应的物理磁盘或磁盘阵列。

系统维护数据库相对稳定,占用磁盘空间约500 M左右。由于系统磁盘有限,把日志文件存放该磁盘中。

(三)撤销表和临时表空间的设置

在Oracle数据库中,撤销的目的是确保事务的回退和恢复。撤销参数有UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。

UNDO_MANAGEMENT参数用于数据库中管理撤销数据的方式,航空物探数据库设置为自动模式(auto)。

UNDO_TABLESPACE参数用于指定数据库中保存撤销数据的撤销表空间名称,航空物探数据库撤销表空间名称为UNDO_ARGS_TBSPACE,空间大小设置为20GB,以确保在保留时间内进行恢复。

UNDO_RETENTION参数用于指定已经提交事务的撤销数据在能够覆盖之前应该保留多长时间,本数据库系统设置为60 min。

临时表空间是用以存储大量的排序,与撤销表空间存放在一个物理磁盘上,本数据库系统临时表空间设置为500 M。

(四)日志空间设置

日志的主要功能是记录对数据库已做过的全部操作。在系统出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以不会丢失已有操作结果。

日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,航空物探数据库系统分别在一个独立磁盘和系统维护库磁盘中存放日志文件。若系统出现故障,在下次打开数据库时Oracle数据库系统自动用日志文件中的信息来恢复数据库文件。

根据航空物探数据库信息系统同时登录的用户数及使用的功能,将日志文件大小设置为10GB。

(五)索引表空间设置

为了提高航空物探信息系统的查询和统计速度,把所有索引空间与应用表空间完全分开,从而提高I/O存取效率。航空物探索引表空间大小设置为10GB。

聚集是表的一种存储方法,一般每个基本表是单独组织的,但对逻辑上经常在一起查询的表,在物理上也邻近存放,这样可减少数据的搜索时间,提高性能。

当几个关系(表)以聚集方式组织时,是通过公共属性的值为表聚集的依据。航空物探数据库系统是以项目标识(PROJ_ID)建立聚集的,所有涉及项目标识的数据库表直接引用项目标识聚集。航空物探聚集表空间与索引表空间相同。

三、数据库参数设置

在数据库创建前需要对如下数据库参数进行设置,航空物探参数文件名为Initoraargs.ora,各种参数设置如下:

航空物探信息系统建设

四、内存设置

航空物探数据库服务器物理内存为4GB,除部分用于系统开销外,其余全部用于数据库。

Oracle使用共享系统全局区(System Global Area,SGA)内存来管理内存和文件结构,包含DB_block_Buffers、DB_cache_size、Shared_pool_size、Log_Buffer参数。航空物探数据库系统的全局区内存参数设置如下。

DB_block_Buffers参数为SGA中存储区高速缓存的缓冲区数目,每个缓冲区的大小等于参数DB_block_size的大小,DB_block_Buffers=19200(约300 MB)。

Shared_pool_size参数为分配给共享SQL区的字节数,是SGA大小的主要影响者,Shared_pool_size=1228800000(1.2GB)。

DB_cache_size参数是SGA大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O,DB_cache_size=1024000000(1GB)。

Log_Buffer参数为重做日志高速缓存大小,主要进行插入、删除和修改回退操作,Log_buffer=5120000(5MB)。

五、优化设置

由于航空物探信息系统的采集软件和应用软件是采用MS.NET C#进行开发的,应用程序与数据库之间的连接有传统的ODBC和OLE DB两种方式。为了支持ODBC在OLE DB技术上建立了相应的OLE DB到ODBC的调用转换,而使用直接的OLE DB方式则不需转换,从而提高处理速度。

在建立数据库表时,参数Pctfree和Pctused设置不正确可能会导致数据出现行链接和行迁移现象,即同一行的数据被保存在不同的数据块中。在进行数据查询时,为了读出这些数据,磁头必须重新定位,这样势必会大大降低数据库的执行速度。因此,在创建表时应充分估计到将来可能出现的数据变化,正确地设置这两个参数,尽量减少数据库中出现的行链接和行迁移现象。

航空物探资料采集数据库表的插入、修改和删除的频率较高,Pctfree设置为20,Pctused设置为40;系统维护数据库表相对稳定,Pctfree设置为10,Pctused设置为15;资料数据库表除了增加数据外基本不进行修改和删除操作,Pctfree设置为10,Pctused设置为5。

六、扩展性设置

多CPU和并行查询PQO(Parallel Query Option)方式的利用:CPU的快速发展使得Oracle越来越重视对多CPU的并行技术的应用,一个数据库的访问工作可以用多个CPU相互配合来完成。对于多CPU系统尽量采用并行查询选项方式进行数据库操作。航空物探数据库服务器为2个CPU,在程序查询中采用了并行查询的方式。

在航空物探工作量统计、飞行小时统计、测量面积统计和岩石物性统计中,为了加快统计效率,在相应的查询语句中增加了并行查询语句。

随着航空物探高精度测量程度的不断提高,测量数据将越来越大。为了满足航空物探查询效率及发展,将航磁测量数据与校正后航磁测量数据按比例尺分1∶20 万以下、20万~50万、1∶50万以上分别存放3张不同的数据库表。

七、创建数据库

在完成数据库布局、空间设置、内存设置、数据库参数设置、扩展性设置和优化设置后,进行航空物探数据库物理模型设计,即航空物探数据库实体创建。由于航空物探空间数据库逻辑模型是采用ESRI提供的ArcGIS UML构建的Geodatabase模型,因此,使用ESRI公司提供的CaseTools将航空物探数据UML模型图转成空间数据库(Geodatabase)实体(图2-14)。

航空物探属性数据库表(二维表)是采用Power Designer数据库设计平台直接把数据库关系模型生成数据库脚本来创建的。

经过数据库的概念设计、逻辑设计和物理设计,最终生成航空物探数据库。

图2-14 航空物探数据库物理模型实现

八、空间数据的索引机制

对于海量的空间数据库而言,数据库的操作效率是关系到数据库成败的关键问题。为了提高数据的访问、检索和显示速度,数据在加载到数据库时,要素类数据建立了空间索引,栅格数据构建了金字塔结构,对象类数据采用与数据库直接联接的访问机制。

(一)空间索引

为了提高要素类数据的查询性能,在建立航空物探空间数据库时,创建了空间索引机制。常用的空间索引有格网索引、R树索引、四叉树索引等。Geodatabase采用格网索引方式。所谓格网索引是将空间区域划分成适合大小的正方形格网,记录每一个格网内所包含的空间实体(对象)以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网编号,就可以快速检索到所需的空间实体。

确定适合的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度降低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率较低。数据库的每一数据层采用不同大小、不同级数的空间索引格网单元,但每层最多级数不能超过*。格网单元的大小不是一个确定性的值,需要根据对象的大小确定。空间索引格网的大小与检索准确度之间的关系如图2-15所示。

选择格网单元的大小遵循下列基本原则:

1)对于简单要素的数据层,尽可能选择单级索引格网。减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程,例如航迹线要素类。

图2-15 索引格网大小与检索准确度的关系

2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网。Geodatabase最多提供*格网单元。每一要素封装边界在适合的级内,减少了每一封装边界有多个格网的可能性。在空间索引搜索过程中,RDBMS则必须搜索所有3个格网单元级,这将消耗大量的时间。

3)若用户经常对图层执行相同的查询,最佳格网的大小应是平均查寻空间范围的1.5倍。

4)格网的大小不能小于要素封装边界的平均大小,为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取平均格网单元的3倍。最佳格网单元的大小可能受图层平均查询的影响。

空间域是按照要素数据集定义的,空间索引格网是按照要素类设置的。它们都是在创建Geodatabase数据库时设置,并一经设置,中间不许改变;所以一定要在充分分析数据的情况下确定它们的值。航空物探数据主要是简单要素类,空间跨度为70°。根据上述原则,航空物探数据选择单级索引格网,格网大小为20°。

(二)金字塔结构

金字塔结构的核心是将栅格数据逐级进行抽稀,形成多级分辨率的重采样数据,并将其分割成块,按一定的文件格式(金字塔文件格式)存储成磁盘文件;在以后进行图像显示处理时,只需将要显示的部分所覆盖的块从磁盘文件直接读进内存缓冲区显示即可。从金字塔的所有层中寻找与所要求显示的比例相近或匹配的一层,并将该层的从某一点起的一定范围的图像所覆盖的所有块加载到内存缓冲区,提取所需部分并形成图像。

金字塔算法(图2-16)是通过获取显示时所需要的一定分辨率的数据来提高显示速度。使用金字塔数据格式后,在显示全图时仅需要显示一个较低分辨率的数据,这样既能加快显示速度,又不会影响显示效果。放大图像,尽管显示图像分辨率提高,由于显示区域减小,所以显示速度不会下降。如果没有为栅格数据建立金字塔数据,则每次显示都会读取整个数据,然后进行重采样得到显示所需要的分辨率,明显地降低了显示速度。

图2-16 金字塔压缩示意图

金字塔数据重采样方式有:最近邻法、双线性内插和立方卷积。其中最近邻法适用于离散数据,而双线性内插法和立方卷积法适合于连续数据。

在ArcGIS Engine中提供了IRasterPyramid和IRasterPyramid2接口来实现金字塔数据的建立,而建立的数据保存在*.rrd格式的文件中。

(三)空间域定义

空间域是指数据的有效空间范围,即Geodatabase数据库的最大等效坐标的值域范围,其定义主要是指比例系数和Min X、Min Y的计算。

因为使用整数比浮点数有更高的压缩率,并且对整数进行二进制搜索比较快,所以多用户Geodatabase以4字节正整数存储坐标,其最大值为32位正整数所能表示的范围是21.4亿(2147483647),整数的范围称为空间域。在创建Geodatabase数据库时需要定义合适的比例系数。大的整数值将消耗大量的计算机物理内存,所以选定的比例系数最好不要大于必须的比例系数。空间域随坐标系的单位变化而变化。

比例系数和空间域之间成反比例关系,比例系数越大(存储单位越小),表达的空间域也越小。为了使目标数据都存储在系统中,需要谨慎地设置比例系数。将目标数据的宽度和高度较适中的数值乘以比例系数,如果结果小于21.4亿,则比例系数是合适的。

航空物探数据模型是为我国的航空物探行业数据建库设计的,它支持的空间数据的坐标范围为我国领土覆盖的海陆空间,最低纬度为赤道。根据概念设计的分析,航空物探数据模型采用的是地理坐标系,坐标系单位是度,基准是Beijing_1954,要求存储的坐标数据精度达到0.01 m。在赤道处,赤道圆周长为40075694.6 m,则每度弧长=40075694.6×100/360 cm=11132137.389 cm,即1 cm对应8.983000883E-8°。所以,航空物探数据模型的比例系数取为8.98E-8,即存储单位为8.98E-8°,可满足1 cm精度要求。

将空间域移动到目标数据范围之前,首先找到空间域在存储单位的中心位置,目的是在必要时向各个方向扩展。4字节正整数可表示的坐标范围:2147483647×8.98E-8=192.84°。我国的领土范围是东经70°~140°,北纬0°~60°。所以,选取的比例系数是合适的。把空间域坐标系中心定为90°,然后,计算空间域的Min X、Min Y。

航空物探信息系统建设

航空物探信息系统建设

所以坐标的存储数据是:

航空物探信息系统建设

航空物探信息系统建设

数据库物理模型

数据库物理模型设计的目标是根据选定的Oracle数据库系统特点和航空物探数据管理与服务的业务处理需求,确定航空物探数据库最优的物理环境、存取方法和存储结构。即通过数据库物理设计,以便达到物理数据库结构的优化,使得在数据库上运行的各种事务响应时间少、存储空间利用率高、事务吞吐率大。

一、数据库布局

航空物探信息系统的维护数据(部门、岗位、人员、人员权限、数据入库检查规则及数据字典等)相对比较稳定。入库前数据需经过各种检查校对,确认数据正确后才能归档,存入航空物探资料数据库,所以存入资料库前的数据可能经常需要修改和删除,相对变化较大;而存入资料数据库中的数据一般不允许修改和删除,以免误操作破坏资料库数据造成损失。

图2-12 航空物探数据库逻辑模型

图2-13 航空物探数据库布局与数据采集流程图

据此,我们采用图2-13所示的数据库数据采集流程,并将航空物探数据库分为资料采集数据库、资料数据库、系统维护数据库分别进行存储和管理,实现数据的统一管理和统一使用,便于数据入库和易于维护等。

航空物探资料数据库是航空物探所有数据最终存储的场所。资料采集数据库是数据归档存入资料数据库前的临时“集散地”,在此接收各项检查,在确认数据无误后归档到资料数据库,然后删除资料采集数据库中已归档的数据。此外,资料采集数据库中还保存数据入库、维护、检查日志及归档记录。

系统维护数据库,存储系统维护信息(如系统功能、数据库表清单等)、安全信息(如信息系统用户的角色、权限、授权的系统功能等),数据字典、入库数据检查规则等。将其与航空物探数据分开,有利于系统维护和管理。

二、数据库空间设置

数据库空间设置包括磁盘空间设置、应用系统表空间设置、撤销表空间、临时表空间、日志空间和索引空间设置。

(一)磁盘空间设置

磁盘空间设置的目标:磁盘性能不能阻碍实现数据库性能,数据库磁盘必须专用于数据库文件,否则非数据库将会影响到数据库性能,且磁盘空间必须满足恢复和性能的要求。

航空物探数据库服务器为IBM P620小型机,8块硬盘,每块硬盘36GB空间,每块物理磁盘建立一个文件系统。为了提高磁盘的反应时间和寻道时间,提高I/O的存取效率,除了一块硬盘用于UNIX操作系统外,其余7块磁盘分别存放资料采集数据库、系统维护数据库-日志文件,资料数据库及资料数据库的大字段数据、索引、回滚段和数据日志文件。

(二)应用系统表空间设置

信息系统数据采集过程对数据的事务操作比较频繁,经常进行数据插入(新数据入库)、修改(入库数据有误)和删除操作(数据重新导入或归档入库),因此航空物探资料采集数据库所在的表空间会很活跃。为了不影响其他I/O的竞争,同时也可以提高数据入库的操作效率(50多年的历史数据需要集中入库),分配一个磁盘空间(36GB)为采集库的表空间。由于采集数据归档入资料库后被删除,同时进行数据入库的项目也不是很多,虽仍保留所有的采集日志数据,一个磁盘空间也足够使用。

航空物探资料数据库的二维表和Oracle大字段(BLOB)分别存放在不同的物理磁盘(每个磁盘36GB)上,对同时存在有表格数据和大字段数据的数据库表(如航迹线数据)时,可以提高磁盘I/O效率。随着数据入库的项目越来越多,需要增加相应的物理磁盘或磁盘阵列。

系统维护数据库相对稳定,占用磁盘空间约500 M左右。由于系统磁盘有限,把日志文件存放该磁盘中。

(三)撤销表和临时表空间的设置

在Oracle数据库中,撤销的目的是确保事务的回退和恢复。撤销参数有UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。

UNDO_MANAGEMENT参数用于数据库中管理撤销数据的方式,航空物探数据库设置为自动模式(auto)。

UNDO_TABLESPACE参数用于指定数据库中保存撤销数据的撤销表空间名称,航空物探数据库撤销表空间名称为UNDO_ARGS_TBSPACE,空间大小设置为20GB,以确保在保留时间内进行恢复。

UNDO_RETENTION参数用于指定已经提交事务的撤销数据在能够覆盖之前应该保留多长时间,本数据库系统设置为60 min。

临时表空间是用以存储大量的排序,与撤销表空间存放在一个物理磁盘上,本数据库系统临时表空间设置为500 M。

(四)日志空间设置

日志的主要功能是记录对数据库已做过的全部操作。在系统出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以不会丢失已有操作结果。

日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,航空物探数据库系统分别在一个独立磁盘和系统维护库磁盘中存放日志文件。若系统出现故障,在下次打开数据库时Oracle数据库系统自动用日志文件中的信息来恢复数据库文件。

根据航空物探数据库信息系统同时登录的用户数及使用的功能,将日志文件大小设置为10GB。

(五)索引表空间设置

为了提高航空物探信息系统的查询和统计速度,把所有索引空间与应用表空间完全分开,从而提高I/O存取效率。航空物探索引表空间大小设置为10GB。

聚集是表的一种存储方法,一般每个基本表是单独组织的,但对逻辑上经常在一起查询的表,在物理上也邻近存放,这样可减少数据的搜索时间,提高性能。

当几个关系(表)以聚集方式组织时,是通过公共属性的值为表聚集的依据。航空物探数据库系统是以项目标识(PROJ_ID)建立聚集的,所有涉及项目标识的数据库表直接引用项目标识聚集。航空物探聚集表空间与索引表空间相同。

三、数据库参数设置

在数据库创建前需要对如下数据库参数进行设置,航空物探参数文件名为Initoraargs.ora,各种参数设置如下:

航空物探信息系统建设

四、内存设置

航空物探数据库服务器物理内存为4GB,除部分用于系统开销外,其余全部用于数据库。

Oracle使用共享系统全局区(System Global Area,SGA)内存来管理内存和文件结构,包含DB_block_Buffers、DB_cache_size、Shared_pool_size、Log_Buffer参数。航空物探数据库系统的全局区内存参数设置如下。

DB_block_Buffers参数为SGA中存储区高速缓存的缓冲区数目,每个缓冲区的大小等于参数DB_block_size的大小,DB_block_Buffers=19200(约300 MB)。

Shared_pool_size参数为分配给共享SQL区的字节数,是SGA大小的主要影响者,Shared_pool_size=1228800000(1.2GB)。

DB_cache_size参数是SGA大小和数据库性能的最重要的决定因素。该值较高,可以提高系统的命中率,减少I/O,DB_cache_size=1024000000(1GB)。

Log_Buffer参数为重做日志高速缓存大小,主要进行插入、删除和修改回退操作,Log_buffer=5120000(5MB)。

五、优化设置

由于航空物探信息系统的采集软件和应用软件是采用MS.NET C#进行开发的,应用程序与数据库之间的连接有传统的ODBC和OLE DB两种方式。为了支持ODBC在OLE DB技术上建立了相应的OLE DB到ODBC的调用转换,而使用直接的OLE DB方式则不需转换,从而提高处理速度。

在建立数据库表时,参数Pctfree和Pctused设置不正确可能会导致数据出现行链接和行迁移现象,即同一行的数据被保存在不同的数据块中。在进行数据查询时,为了读出这些数据,磁头必须重新定位,这样势必会大大降低数据库的执行速度。因此,在创建表时应充分估计到将来可能出现的数据变化,正确地设置这两个参数,尽量减少数据库中出现的行链接和行迁移现象。

航空物探资料采集数据库表的插入、修改和删除的频率较高,Pctfree设置为20,Pctused设置为40;系统维护数据库表相对稳定,Pctfree设置为10,Pctused设置为15;资料数据库表除了增加数据外基本不进行修改和删除操作,Pctfree设置为10,Pctused设置为5。

六、扩展性设置

多CPU和并行查询PQO(Parallel Query Option)方式的利用:CPU的快速发展使得Oracle越来越重视对多CPU的并行技术的应用,一个数据库的访问工作可以用多个CPU相互配合来完成。对于多CPU系统尽量采用并行查询选项方式进行数据库操作。航空物探数据库服务器为2个CPU,在程序查询中采用了并行查询的方式。

在航空物探工作量统计、飞行小时统计、测量面积统计和岩石物性统计中,为了加快统计效率,在相应的查询语句中增加了并行查询语句。

随着航空物探高精度测量程度的不断提高,测量数据将越来越大。为了满足航空物探查询效率及发展,将航磁测量数据与校正后航磁测量数据按比例尺分1∶20 万以下、20万~50万、1∶50万以上分别存放3张不同的数据库表。

七、创建数据库

在完成数据库布局、空间设置、内存设置、数据库参数设置、扩展性设置和优化设置后,进行航空物探数据库物理模型设计,即航空物探数据库实体创建。由于航空物探空间数据库逻辑模型是采用ESRI提供的ArcGIS UML构建的Geodatabase模型,因此,使用ESRI公司提供的CaseTools将航空物探数据UML模型图转成空间数据库(Geodatabase)实体(图2-14)。

航空物探属性数据库表(二维表)是采用Power Designer数据库设计平台直接把数据库关系模型生成数据库脚本来创建的。

经过数据库的概念设计、逻辑设计和物理设计,最终生成航空物探数据库。

图2-14 航空物探数据库物理模型实现

八、空间数据的索引机制

对于海量的空间数据库而言,数据库的操作效率是关系到数据库成败的关键问题。为了提高数据的访问、检索和显示速度,数据在加载到数据库时,要素类数据建立了空间索引,栅格数据构建了金字塔结构,对象类数据采用与数据库直接联接的访问机制。

(一)空间索引

为了提高要素类数据的查询性能,在建立航空物探空间数据库时,创建了空间索引机制。常用的空间索引有格网索引、R树索引、四叉树索引等。Geodatabase采用格网索引方式。所谓格网索引是将空间区域划分成适合大小的正方形格网,记录每一个格网内所包含的空间实体(对象)以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网编号,就可以快速检索到所需的空间实体。

确定适合的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度降低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率较低。数据库的每一数据层采用不同大小、不同级数的空间索引格网单元,但每层最多级数不能超过*。格网单元的大小不是一个确定性的值,需要根据对象的大小确定。空间索引格网的大小与检索准确度之间的关系如图2-15所示。

选择格网单元的大小遵循下列基本原则:

1)对于简单要素的数据层,尽可能选择单级索引格网。减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程,例如航迹线要素类。

图2-15 索引格网大小与检索准确度的关系

2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网。Geodatabase最多提供*格网单元。每一要素封装边界在适合的级内,减少了每一封装边界有多个格网的可能性。在空间索引搜索过程中,RDBMS则必须搜索所有3个格网单元级,这将消耗大量的时间。

3)若用户经常对图层执行相同的查询,最佳格网的大小应是平均查寻空间范围的1.5倍。

4)格网的大小不能小于要素封装边界的平均大小,为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取平均格网单元的3倍。最佳格网单元的大小可能受图层平均查询的影响。

空间域是按照要素数据集定义的,空间索引格网是按照要素类设置的。它们都是在创建Geodatabase数据库时设置,并一经设置,中间不许改变;所以一定要在充分分析数据的情况下确定它们的值。航空物探数据主要是简单要素类,空间跨度为70°。根据上述原则,航空物探数据选择单级索引格网,格网大小为20°。

(二)金字塔结构

金字塔结构的核心是将栅格数据逐级进行抽稀,形成多级分辨率的重采样数据,并将其分割成块,按一定的文件格式(金字塔文件格式)存储成磁盘文件;在以后进行图像显示处理时,只需将要显示的部分所覆盖的块从磁盘文件直接读进内存缓冲区显示即可。从金字塔的所有层中寻找与所要求显示的比例相近或匹配的一层,并将该层的从某一点起的一定范围的图像所覆盖的所有块加载到内存缓冲区,提取所需部分并形成图像。

金字塔算法(图2-16)是通过获取显示时所需要的一定分辨率的数据来提高显示速度。使用金字塔数据格式后,在显示全图时仅需要显示一个较低分辨率的数据,这样既能加快显示速度,又不会影响显示效果。放大图像,尽管显示图像分辨率提高,由于显示区域减小,所以显示速度不会下降。如果没有为栅格数据建立金字塔数据,则每次显示都会读取整个数据,然后进行重采样得到显示所需要的分辨率,明显地降低了显示速度。

图2-16 金字塔压缩示意图

金字塔数据重采样方式有:最近邻法、双线性内插和立方卷积。其中最近邻法适用于离散数据,而双线性内插法和立方卷积法适合于连续数据。

在ArcGIS Engine中提供了IRasterPyramid和IRasterPyramid2接口来实现金字塔数据的建立,而建立的数据保存在*.rrd格式的文件中。

(三)空间域定义

空间域是指数据的有效空间范围,即Geodatabase数据库的最大等效坐标的值域范围,其定义主要是指比例系数和Min X、Min Y的计算。

因为使用整数比浮点数有更高的压缩率,并且对整数进行二进制搜索比较快,所以多用户Geodatabase以4字节正整数存储坐标,其最大值为32位正整数所能表示的范围是21.4亿(2147483647),整数的范围称为空间域。在创建Geodatabase数据库时需要定义合适的比例系数。大的整数值将消耗大量的计算机物理内存,所以选定的比例系数最好不要大于必须的比例系数。空间域随坐标系的单位变化而变化。

比例系数和空间域之间成反比例关系,比例系数越大(存储单位越小),表达的空间域也越小。为了使目标数据都存储在系统中,需要谨慎地设置比例系数。将目标数据的宽度和高度较适中的数值乘以比例系数,如果结果小于21.4亿,则比例系数是合适的。

航空物探数据模型是为我国的航空物探行业数据建库设计的,它支持的空间数据的坐标范围为我国领土覆盖的海陆空间,最低纬度为赤道。根据概念设计的分析,航空物探数据模型采用的是地理坐标系,坐标系单位是度,基准是Beijing_1954,要求存储的坐标数据精度达到0.01 m。在赤道处,赤道圆周长为40075694.6 m,则每度弧长=40075694.6×100/360 cm=11132137.389 cm,即1 cm对应8.983000883E-8°。所以,航空物探数据模型的比例系数取为8.98E-8,即存储单位为8.98E-8°,可满足1 cm精度要求。

将空间域移动到目标数据范围之前,首先找到空间域在存储单位的中心位置,目的是在必要时向各个方向扩展。4字节正整数可表示的坐标范围:2147483647×8.98E-8=192.84°。我国的领土范围是东经70°~140°,北纬0°~60°。所以,选取的比例系数是合适的。把空间域坐标系中心定为90°,然后,计算空间域的Min X、Min Y。

航空物探信息系统建设

航空物探信息系统建设

所以坐标的存储数据是:

航空物探信息系统建设

航空物探信息系统建设

oracle数据库的物理存储结构有那些,它们各自的作用?

http://hi.baidu.com/blue_greed/blog/item/dcea21ca97bf7782c8176816.html

去这里看看~~

数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。

物理结构,即Oracle数据库使用的操作系统文件结构。对于数据库物理结构文件,不同的oracle版本,不同的操作系统平台上有不同的存储目录结构

数据库的物理结构文件按其作用可以分为三类:

数据文件

日志文件

控制文件

一、数据文件

数据文件用来存储数据库的数据,如表、索引等。读取数据时,系统首先从数据库文件中读取数据,并存储到SGA的数据缓冲区中。

二、重做日志文件

重做日志文件记录对数据库的所有修改信息。它是三类文件中最复杂的一类文件,也是保证数据库安全与数据库备份与恢复有直接关系的文件。

三、控制文件

控制文件是一个二进制文件,用来描述数据库的物理结构,一个数据库只需要一个控制文件,控制文件的内容包括:

数据库名及数据库唯一标识

数据文件和日志文件标识

数据库恢复所需的同步信息,即检查点号

数据库的数据是全部存储在表中,还是表和查询中?

是储存在表里的,查询只是一个查找的过程,不过,你也可以将查询之后的数据存储起来,这就是我们说的缓存

数据库的数据是全部存储在表中,还是表和查询中?

是储存在表里的,查询只是一个查找的过程,不过,你也可以将查询之后的数据存储起来,这就是我们说的缓存

在网络环境中数据库的物理结构设计要考虑什么问题

物理结构设计
数据库的物理设计通常分为两步:
确定数据库的物理结构
对物理结构进行评价,评价的重点是时间和空间效率
1.确定数据库的物理结构
(1)确定数据的存储结构
确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素.这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案.
(2)设计数据的存取路径
在关系数据库中,选择存取路径主要是指确定如何建立索引.例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等.
(3)确定数据的存放位置
为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放.
(4)确定系统配置
DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化.初始情况下,系统都为这些变量赋予了合理的缺省值.但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能.
2.评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构.
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构.如果该结构不符合用户需求,则需要修改设计.

在网络环境中数据库的物理结构设计要考虑什么问题

物理结构设计
数据库的物理设计通常分为两步:
确定数据库的物理结构
对物理结构进行评价,评价的重点是时间和空间效率
1.确定数据库的物理结构
(1)确定数据的存储结构
确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素.这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案.
(2)设计数据的存取路径
在关系数据库中,选择存取路径主要是指确定如何建立索引.例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等.
(3)确定数据的存放位置
为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放.
(4)确定系统配置
DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化.初始情况下,系统都为这些变量赋予了合理的缺省值.但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能.
2.评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构.
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构.如果该结构不符合用户需求,则需要修改设计.

数据库的物理结构设计指的是什么?

Log File物理结构

从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。

并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。

我们依次从上到下来看每个Block的结构

Log File Header Block

Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节

Start LSN,这个redo log文件开始日志的lsn,占用8字节

Log File Number,总是为0,占用4字节

Created By,备份程序所占用的字节数,占用32字节

另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。

Log blocks

log block结构分为日志头段、日志记录、日志尾部

Block Header,占用12字节

Data部分

Block tailer,占用4字节

Block Header

这个部分是每个Block的头部,主要记录的块的信息

Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节

Block data len,表示该block中有多少字节已经被使用了,占用2字节

First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节

Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节

数据库系统中数据的物理存储由哪个级别决定

数据库系统中数据的物理存储由多个级别决定,其中最重要的级别是存储设备的物理结构和操作系统的文件系统。存储设备的物理结构包括硬盘、固态硬盘、内存等,这些设备的不同特性会影响数据的存储方式和读写速度。操作系统的文件系统则负责管理文件在存储设备上的物理存储位置和访问权限,不同的文件系统也会对数据的读写性能产生影响。

此外,数据库系统还涉及到数据的逻辑结构和索引结构等级别。数据的逻辑结构包括表、字段、记录等,在数据库中的组织方式会影响数据的存储方式。索引结构则是为了加速数据的查询而设计的,不同的索引结构对数据的读取性能也会产生影响。

最后,数据库系统中还有一些高级别的因素会影响数据的物理存储,例如数据库的设计和优化、系统的硬件配置和网络拓扑等,这些因素的优化可以提高数据库系统的性能和稳定性。

显示全文