1. 说明在创建数据库时如何合理规划数据库的物理存储结构和逻辑存储结构
Oracle数据库的逻辑结构和物理结构
Oracle 数据库的逻辑结构是由一些数据库对象组成,如数据库表空间、表、索引、段、视图、存储过程、触发器等。数据库的逻辑存储结构(表空间等)决定了数据库的物理空间是如何被使用的,数据库对象如表、索引等分布在各个表空间中。
Oracle 数据库的物理结构从操作系统一级查看,是由一个个的文件组成,从物理上可划分为:数据文件、日志文件、控制文件和参数文件。数据文件中存放了所有的数据信息;日志文件存放数据库运行期间产生的日志信息,它被重复覆盖使用,若不采用归档方式的话,已被覆盖的日志信息将无法恢复;控制文件记录了整个数据库的关键结构信息,它若被破坏,整个数据库将无法工作和恢复;参数文件中设置了很多Oracle 数据库的配置参数,当数据库启动时,会读取这些信息。
逻辑结构的优化
逻辑结构优化用通俗的话来说就是通过增加、减少或调整逻辑结构来提高应用的效率,下面通过对基本表的设计及索引、聚簇的讨论来分析ORACLE逻辑结构的优化。
1、基本表扩展
数据库性能包括存储空间需求量的大小和查询响应时间的长短两个方面。为了优化数据库性能,需要对数据库中的表进行规范化。一般来说,逻辑数据库设计满足第三范式的表结构容易维护且基本满足实际应用的要求。所以,实际应用中一般都按照第三范式的标准进行规范化,从而保证了数据库的一致性和完整性,设计人员往往会设计过多的表间关联,以尽可能地降低数据冗余。但在实际应用中这种做法有时不利于系统运行性能的优化:如过程从多表获取数据时引发大量的连接操作,在需要部分数据时要扫描整个表等,这都消耗了磁盘的I/O 和CPU 时间。
为解决这一问题,在设计表时应同时考虑对某些表进行反规范化,方法有以下几种:一是分割表。分割表可分为水平分割表和垂直分割表两种:水平分割是按照行将一个表分割为多个表,这可以提高每个表的查询速度,但查询、更新时要选择不同的表,统计时要汇总多个表,因此应用程序会更复杂。垂直分割是对于一个列很多的表,若某些列的访问频率远远高于其它列,就可以将主键和这些列作为一个表,将主键和其它列作为另外一个表。通过减少列的宽度,增加了每个数据页的行数,一次I/O就可以扫描更多的行,从而提高了访问每一个表的速度。但是由于造成了多表连接,所以应该在同时查询或更新不同分割表中的列的情况比较少的情况下使用。二是保留冗余列。当两个或多个表在查询中经常需要连接时,可以在其中一个表上增加若干冗余的列,以避免表之间的连接过于频繁,一般在冗余列的数据不经常变动的情况下使用。三是增加派生列。派生列是由表中的其它多个列的计算所得,增加派生列可以减少统计运算,在数据汇总时可以大大缩短运算时间。
因此,在数据库的设计中,数据应当按两种类别进行组织:频繁访问的数据和频繁修改的数据。对于频繁访问但是不频繁修改的数据,内部设计应当物理不规范化。对于频繁修改但并不频繁访问的数据,内部设计应当物理规范化。有时还需将规范化的表作为逻辑数据库设计的基础,然后再根据整个应用系统的需要,物理地非规范化数据。规范与反规范都是建立在实际的操作基础之上的约束,脱离了实际两者都没有意义。只有把两者合理地结合在一起,才能相互补充,发挥各自的优点。
2、索引和聚簇
创建索引是提高检索效率最有效的方法之一,索引把表中的逻辑值映射到安全的RowID,能快速定位数据的物理地址,可以大大加快数据库的查询速度,一个建有合理索引的数据库应用系统可能比一个没有建立索引的数据库应用系统效率高几十倍,但并不是索引越多越好,在那些经常需要修改的数据列上建立索引,将导致索引B*树的不断重组,造成系统性能的下降和存储空间的浪费。对于一个大型表建立的索引,有时并不能改善数据查询速度,反而会影响整个数据库的性能。这主要是和SGA的数据管理方式有关,Oracle在进行数据块高速缓存管理时,索引数据比普通数据具有更高的驻留权限,在进行空间竞争时,Oracle会先移出普通数据,对建有索引的大型表进行数据查询时,索引数据可能会用完所有的数据块缓存空间,Oracle不得不频繁地进行磁盘读写来获取数据,所以,在对一个大型表进行分区之后,可以根据相应的分区建立分区索引。
Oracle提供了另一种方法来提高查询速度,就是聚簇(Cluster)。所谓聚簇,简单地说就是把几个表放在一起,按一定公共属性混合存放。聚簇根据共同码值将多个表的数据存储在同一个Oracle块中,这时检索一组Oracle块就同时得到两个表的数据,这样就可以减少需要存储的Oracle块,从而提高应用程序的性能。
对于逻辑结构的优化,还应将表数据和索引数据分开表空间存储,分别使用独立的表空间。因为如果将表数据和索引数据放在一起,表数据的I/O操作和索引的I/O操作将产生影响系统性能的I/O竞争,降低系统的响应效率。将表数据和索引数据存放在不同的表空间中,并在物理层面将这两个表空间的数据文件放在不同的物理磁盘上,就可以避免这种竞争了。
物理结构的优化
数据库的数据最终是存储在物理磁盘上的,对数据进行访问就是对这些物理磁盘进行读写,因此对于这些物理存储的优化是系统优化的一个重要部分。对于物理存储结构优化,主要是合理地分配逻辑结构的物理存储地址,这样虽不能减少对物理存储的读写次数,但却可以使这些读写尽量并行,减少磁盘读写竞争,从而提高效率,也可以通过对物理存储进行精密的计算减少不必要的物理存储结构扩充,从而提高系统利用率。
1、磁盘读写并行优化
对于数据库的物理读写,Oracle系统本身会进行尽可能的并行优化,例如在一个最简单的表检索操作中,如果表结构和检索域上的索引不在一个物理结构上,那么在检索的过程中,对索引的检索和对表的检索就是并行进行的。
2、操作并行优化
操作并行的优化是基于操作语句的统计结果,首先是统计各个表的访问频率,表之间的连接频率,根据这些数据按如下原则分配表空间和物理磁盘,减少系统进程和用户进程的磁盘I/O竞争;把需要连接的表格在表空间/物理磁盘上分开;把高频访问的表格在表空间/物理磁盘上分开;把经常需要进行检索的表格的表结构和索引在表空间/物理磁盘上分开。
3、减少存储结构扩展
如果应用系统的数据库比较脆弱,并在不断地增长或缩小,这样的系统在非动态变化周期内效率合理,但是当在动态变化周期内的时候,性能却很差,这是由于Oracle的动态扩展造成的。在动态扩张的过程中,Oracle必须根据存储的要求,在创建行、行变化获取缺省值时,扩展和分配新的存储空间,而且表格的扩展往往并不是事情的终结,还可能导致数据文件、表空间的增长,这些扩展会导致在线系统反应缓慢。对于这样的系统,最好的办法就是在建立的时候预先分配足够的大小和合适的增长幅度。在一个对象建立的时候要根据应用充分地计算他们的大小,然后再根据这些数据来定义对象Initial、Next和Minextents的值,使数据库在物理存储上和动态增长次数上达到一个比较好的平衡点,使这些对象既不经常发生增长,也不过多地占用数据库。
2. 数据库物理模型
数据库物理模型设计的目标是根据选定的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。
航空物探信息系统建设
航空物探信息系统建设
所以坐标的存储数据是:
航空物探信息系统建设
航空物探信息系统建设
3. 什么是数据库的概念设计,逻辑设计,物理设计,以及
数据库设计过程包括:
现实世界→需求分析→概念设计→逻辑设计→物理设计
概念设计——利用数据模型进行概念数据库的模式设计。它不依赖任何DBMS(数据库管理系统)常用的数据模型为ERM(实体联系模型),用到的术语有:实体、属性、联系、键。
逻辑设计——把概念设计得到的概念数据库模式变为逻辑数据模式,它依赖于DBMS。用到的术语有:函数依赖、范式、关系分解。
物理结构设计——指的是根据数据库的逻辑结构来选定RDBMS(如Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。
确定数据库的物理结构包含下面四方面的内容:
1、确定数据的存储结构;
2、设计数据的存取路径;
3、确定数据的存放位置;
4、确定系统配置。
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。在数据库物理设计中,最有效的方式是集中地存储和检索对象。
4. 数据库设计
根据以上数据内容分析,当前遥感综合调查基础数据库主要由各个专题数据库(以矢量数据为主)、公共数据库(既有矢量数据又有栅格数据,前者如1∶25万基础地理数据,后者如1∶25万DEM数据库和1∶25万ETM+遥感影像)等构成,同时整个系统还必须具备自身的扩展机制,随着用户和应用的不断变化,数据库的内容也必将随之变化。因此,遥感综合调查基础数据库设计的主导思想是,利用ArcSDE技术提供的Multiuser Geodatabase模型组织复杂的空间数据,建立一个开放的、灵活的空间数据库。
Geodatabase由矢量要素数据集、栅格数据集、TIN数据集、空间域、规则等部件构成。它对通常所要处理和表达的地理空间要素,如矢量、栅格、三维表面、网络、地址等进行了统一的描述,并引入了这些地理空间要素的行为、规则和关系(ESRI,2001)。而遥感综合调查基础数据库只存储其中的矢量要素数据集、栅格数据集等几种类型。基于Geodatabase的遥感综合调查数据模型如图11.4所示。
设计Geodatabase与设计普通的数据库是相同的,也分成两个基本步骤——逻辑数据模型的表达和数据库模型的物理实施,即逻辑设计和物理设计。逻辑设计是空间数据在用户或应用中的表现形式,物理设计主要是空间数据在存储介质里的具体储存方式。逻辑数据模型是对所要研究的现实世界的有关数据而建立的一个抽象的关联结构,以描述这些数据之间的逻辑关系。它完全独立于具体系统实现和处理过程,区别于物理数据模型,即它不是一个在数据库管理系统中的表结构,不化解或消除实体间的多对多关系,更接近于现实世界,是一个访问数据的基本视图。可以说逻辑层是物理层的表现,而物理层是逻辑层的基础。
图11.4基于GeoDatabase的遥感综合调查数据模型
图11.5逻辑层与物理层的联系
从逻辑设计的角度来看,本系统基础数据库的设计思路是:数据库→子库→图层→空间实体,库可以包含多个子库,子库用来存放不同比例尺或不同用途的空间数据,再根据项目设计书的要求对每一个子库做大类和图层的划分。从物理设计的角度来看,最终反映在ArcSDE的物理数据库模型则是GEODATABASE→FEATUREDATASET→FEATURECLASS→FEATURE(如图11.5)所示。
5. 空间数据库的空间数据库的设计
数据库因不同的应用要求会有各种各样的组织形式。数据库的设计就是根据不同的应用目的和用户要求,在一个给定的应用环境中,确定最优的数据模型、处理模式、存贮结构、存取方法,建立能反映现实世界的地理实体间信息之间的联系,满足用户要求,又能被一定的DBMS接受,同时能实现系统目标并有效地存取、管理数据的数据库。简言之,数据库设计就是把现实世界中一定范围内存在着的应用数据抽象成一个数据库的具体结构的过程。
空间数据库的设计是指在现在数据库管理系统的基础上建立空间数据库的整个过程。主要包括需求分析、结构设计、和数据层设计三部分。
1、需求分析
需求分析是整个空间数据库设计与建立的基础,主要进行以下工作:
1)调查用户需求:
了解用户特点和要求,取得设计者与用户对需求的一致看法。
2)需求数据的收集和分析:
包括信息需求(信息内容、特征、需要存储的数据)、信息加工处理要求(如响应时间)、完整性与安全性要求等。
3)编制用户需求说明书:
包括需求分析的目标、任务、具体需求说明、系统功能与性能、运行环境等,是需求分析的最终成果。
需求分析是一项技术性很强的工作,应该由有经验的专业技术人员完成,同时用户的积极参与也是十分重要的。
在需求分析阶段完成数据源的选择和对各种数据集的评价
2、结构设计
指空间数据结构设计,结果是得到一个合理的空间数据模型,是空间数据库设计的关键。空间数据模型越能反映现实世界,在此基础上生成的应用系统就越能较好地满足用户对数据处理的要求。
空间数据库设计的实质是将地理空间实体以一定的组织形式在数据库系统中加以表达的过程,也就是地理信息系统中空间实体的模型化问题。
1)概念设计
概念设计是通过对错综复杂的现实世界的认识与抽象,最终形成空间数据库系统及其应用系统所需的模型。
具体是对需求分析阶段所收集的信息和数据进行分析、整理,确定地理实体、属性及它们之间的联系,将各用户的局部视图合并成一个总的全局视图,形成独立于计算机的反映用户观点的概念模式。概念模式与具体的DBMS无关,结构稳定,能较好地反映用户的信息需求。
表示概念模型最有力的工具是E-R模型,即实体-联系模型,包括实体、联系和属性三个基本成分。用它来描述现实地理世界,不必考虑信息的存储结构、存取路径及存取效率等与计算机有关的问题,比一般的数据模型更接近于现实地理世界,具有直观、自然、语义较丰富等特点,在地理数据库设计中得到了广泛应用。
2)逻辑设计
在概念设计的基础上,按照不同的转换规则将概念模型转换为具体DBMS支持的数据模型的过程,即导出具体DBMS可处理的地理数据库的逻辑结构(或外模式),包括确定数据项、记录及记录间的联系、安全性、完整性和一致性约束等。导出的逻辑结构是否与概念模式一致,能否满足用户要求,还要对其功能和性能进行评价,并予以优化。
从E—R模型向关系模型转换的主要过程为:
①确定各实体的主关键字;
②确定并写出实体内部属性之间的数据关系表达式,即某一数据项决定另外的数据项;
③把经过消冗处理的数据关系表达式中的实体作为相应的主关键字
④根据②、③形成新的关系。
⑤完成转换后,进行分析、评价和优化。
3)物理设计
物理设计是指有效地将空间数据库的逻辑结构在物理存储器上实现,确定数据在介质上的物理存储结构,其结果是导出地理数据库的存储模式(内模式)。主要内容包括确定记录存储格式,选择文件存储结构,决定存取路径,分配存储空间。
物理设计的好坏将对地理数据库的性能影响很大,一个好的物理存储结构必须满足两个条件:一是地理数据占有较小的存储空间;二是对数据库的操作具有尽可能高的处理速度。在完成物理设计后,要进行性能分析和测试。
数据的物理表示分两类:数值数据和字符数据。数值数据可用十进制或二进制形式表示。通常二进制形式所占用的存贮空间较少。字符数据可以用字符串的方式表示,有时也可利用代码值的存贮代替字符串的存储。为了节约存贮空间,常常采用数据压缩技术。
物理设计在很大程度上与选用的数据库管理系统有关。设计中应根据需要,选用系统所提供的功能。
4)数据层设计
大多数GIS都将数据按逻辑类型分成不同的数据层进行组织。数据层是GIS中的一个重要概念。GIS的数据可以按照空间数据的逻辑关系或专业属性分为各种逻辑数据层或专业数据层,原理上类似于图片的叠置。例如,地形图数据可分为地貌、水系、道路、植被、控制点、居民地等诸层分别存贮。将各层叠加起来就合成了地形图的数据。在进行空间分析、数据处理、图形显示时,往往只需要若干相应图层的数据。
数据层的设计一般是按照数据的专业内容和类型进行的。数据的专业内容的类型通常是数据分层的主要依据,同时也要考虑数据之间的关系。如需考虑两类物体共享边界(道路与行政边界重合、河流与地块边界的重合)等,这些数据间的关系在数据分层设计时应体现出来。
不同类型的数据由于其应用功能相同,在分析和应用时往往会同时用到,因此在设计时应反映出这样的需求,即可将这些数据作为一层。例如,多边形的湖泊、水库,线状的河流、沟渠,点状的井、泉等,在GIS的运用中往往同时用到,因此,可作为一个数据层。
5)数据字典设计
数据字典用于描述数据库的整体结构、数据内容和定义等。 数据字典的内容包括: 1)数据库的总体组织结构、 数据库总体设计的框架 。 2)各数据层详细内容的定义及结构、 数据命名的定义 。 3)元数据(有关数据的数据,是对一个数据集的内容、质量条件及操作过程等的描述) 。
6. 在网络环境中数据库的物理结构设计要考虑什么问题
物理结构设计
数据库的物理设计通常分为两步:
确定数据库的物理结构
对物理结构进行评价,评价的重点是时间和空间效率
1.确定数据库的物理结构
(1)确定数据的存储结构
确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素.这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案.
(2)设计数据的存取路径
在关系数据库中,选择存取路径主要是指确定如何建立索引.例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等.
(3)确定数据的存放位置
为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放.
(4)确定系统配置
DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化.初始情况下,系统都为这些变量赋予了合理的缺省值.但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能.
2.评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构.
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构.如果该结构不符合用户需求,则需要修改设计.
7. 数据库逻辑设计和物理设计包含哪些内容
1.概念设计;对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中住处的分类、聚集和概括,建立抽象的概念数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。
2.逻辑设计;主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。
8. 数据库的物理结构设计指的是什么
Log File物理结构
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字节