空间数据库

Posted 耀阳居士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空间数据库相关的知识,希望对你有一定的参考价值。

空间数据库

简介: 引用:http://baike.baidu.com/view/1194566.htm 空间数据库指的是地理信息系统在计算机物理存储介质上存储的与应用相关的地理空间数据的总和,一般是以一系列特定结构的文件的形式组织在存储介质之上的。

引用:http://baike.baidu.com/view/1194566.htm

空间数据库指的是地理信息系统在计算机物理存储介质上存储的与应用相关的地理空间数据的总和,一般是以一系列特定结构的文件的形式组织在存储介质之上的。空间数据库的研究始于20 世纪 70年代的地图制图遥感图像处理领域,其目的是为了有效地利用卫星遥感资源迅速绘制出各种经济专题地图。由于传统的关系数据库在空间数据的表示、存储、管理、检索上存在许多缺陷,从而形成了空间数据库这一数据库研究领域。而传统数据库系统只针对简单对象,无法有效的支持复杂对象(如图形、图像)。

 

编辑本段空间数据库的特点

  1、数据量庞大。
 
  空间数据库面向的是地学及其相关对象,而在客观世界中它们所涉及的往往都是地球表面信息、地质信息、大气信息等及其复杂的现象和信息,所以描述这些信息的数据容量很大,容量通常达到 GB级。
 
  2、具有高可访问性 。
 
  空间信息系统要求具有强大的信息检索和分析能力, 这是建立在空间数据库基础上的,需要高效访问大量数据。
 
  3、空间数据模型复杂
 
  空间数据库存储的不是单一性质的数据,而是涵盖了几乎所有与地理相关的数据类型,这些数据类型主要可以分为 3 类:
 
  (1)属性数据:与通用数据库基本一致,主要用来描述地学现象的各种属性,一般包括数字、文本、日期类型。
 
  (2)图形图像数据:与通用数据库不同,空间数据库系统中大量的数据借助于图形图像来描述。
 
  (3)空间关系数据:存储拓扑关系的数据,通常与图形数据是合二为一的。
 
  4、属性数据和空间数据联合管理。
 
  5、应用范围广泛。
 
  [1][2]
 
  空间数据库的设计

一、空间数据库的设计

  数据库因不同的应用要求会有各种各样的组织形式。数据库的设计就是根据不同的应用目的和用户要求,在一个给定的应用环境中,确定最优的数据模型、处理模式、存贮结构、存取方法,建立能反映现实世界的地理实体间信息之间的联系,满足用户要求,又能被一定的DBMS接受,同时能实现系统目标并有效地存取、管理数据的数据库。简言之,数据库设计就是把现实世界中一定范围内存在着的应用数据抽象成一个数据库的具体结构的过程。
 
  空间数据库的设计是指在现在数据库管理系统的基础上建立空间数据库的整个过程。主要包括需求分析、结构设计、和数据层设计三部分。
 
  1、需求分析
 
  需求分析是整个空间数据库设计与建立的基础,主要进行以下工作:
 
  1)调查用户需求
 
  了解用户特点和要求,取得设计者与用户对需求的一致看法。
 
  2)需求数据的收集和分析
 
  包括信息需求(信息内容、特征、需要存储的数据)、信息加工处理要求(如响应时间)、完整性与安全性要求等。
 
  3)编制用户需求说明书
 
  包括需求分析的目标、任务、具体需求说明、系统功能与性能、运行环境等,是需求分析的最终成果。
 
  需求分析是一项技术性很强的工作,应该由有经验的专业技术人员完成,同时用户的积极参与也是十分重要的。
 
  在需求分析阶段完成数据源的选择和对各种数据集的评价
 
  2、结构设计
 
  指空间数据结构设计,结果是得到一个合理的空间数据模型,是空间数据库设计的关键。空间数据模型越能反映现实世界,在此基础上生成的应用系统就越能较好地满足用户对数据处理的要求。
 
  空间数据库设计的实质是将地理空间实体以一定的组织形式在数据库系统中加以表达的过程,也就是地理信息系统中空间实体的模型化问题。主要过程是见图2-7-1。
 
  1)概念设计
 
  概念设计是通过对错综复杂的现实世界的认识与抽象,最终形成空间数据库系统及其应用系统所需的模型。
 
  具体是对需求分析阶段所收集的信息和数据进行分析、整理,确定地理实体、属性及它们之间的联系,将各用户的局部视图合并成一个总的全局视图,形成独立于计算机的反映用户观点的概念模式。概念模式与具体的DBMS无关,结构稳定,能较好地反映用户的信息需求。
 
  表示概念模型最有力的工具是E-R模型,即实体-联系模型,包括实体、联系和属性三个基本成分。用它来描述现实地理世界,不必考虑信息的存储结构、存取路径及存取效率等与计算机有关的问题,比一般的数据模型更接近于现实地理世界,具有直观、自然、语义较丰富等特点,在地理数据库设计中得到了广泛应用。
 
  2)逻辑设计
 
  在概念设计的基础上,按照不同的转换规则将概念模型转换为具体DBMS支持的数据模型的过程,即导出具体DBMS可处理的地理数据库的逻辑结构(或外模式),包括确定数据项、记录及记录间的联系、安全性、完整性和一致性约束等。导出的逻辑结构是否与概念模式一致,能否满足用户要求,还要对其功能和性能进行评价,并予以优化。
 
  从E—R模型向关系模型转换的主要过程为:
 
  ①确定各实体的主关键字
 
  ②确定并写出实体内部属性之间的数据关系表达式,即某一数据项决定另外的数据项;
 
  ③把经过消冗处理的数据关系表达式中的实体作为相应的主关键字
 
  ④根据②、③形成新的关系。
 
  ⑤完成转换后,进行分析、评价和优化。
 
  3)物理设计
 
  物理设计是指有效地将空间数据库的逻辑结构在物理存储器上实现,确定数据在介质上的物理存储结构,其结果是导出地理数据库的存储模式(内模式)。主要内容包括确定记录存储格式,选择文件存储结构,决定存取路径,分配存储空间。
 
  物理设计的好坏将对地理数据库的性能影响很大,一个好的物理存储结构必须满足两个条件:一是地理数据占有较小的存储空间;二是对数据库的操作具有尽可能高的处理速度。在完成物理设计后,要进行性能分析和测试。
 
  数据的物理表示分两类:数值数据和字符数据。数值数据可用十进制或二进制形式表示。通常二进制形式所占用的存贮空间较少。字符数据可以用字符串的方式表示,有时也可利用代码值的存贮代替字符串的存储。为了节约存贮空间,常常采用数据压缩技术
 
  物理设计在很大程度上与选用的数据库管理系统有关。设计中应根据需要,选用系统所提供的功能。
 
  4)数据层设计
 
  大多数GIS都将数据按逻辑类型分成不同的数据层进行组织。数据层是GIS中的一个重要概念。GIS的数据可以按照空间数据的逻辑关系或专业属性分为各种逻辑数据层或专业数据层,原理上类似于图片的叠置。例如,地形图数据可分为地貌、水系、道路、植被、控制点、居民地等诸层分别存贮。将各层叠加起来就合成了地形图的数据。在进行空间分析、数据处理、图形显示时,往往只需要若干相应图层的数据。
 
  数据层的设计一般是按照数据的专业内容和类型进行的。数据的专业内容的类型通常是数据分层的主要依据,同时也要考虑数据之间的关系。如需考虑两类物体共享边界(道路与行政边界重合、河流与地块边界的重合)等,这些数据间的关系在数据分层设计时应体现出来。
 
  不同类型的数据由于其应用功能相同,在分析和应用时往往会同时用到,因此在设计时应反映出这样的需求,即可将这些数据作为一层。例如,多边形的湖泊、水库,线状的河流、沟渠,点状的井、泉等,在GIS的运用中往往同时用到,因此,可作为一个数据层。
 
  5)数据字典设计
 
  数据字典用于描述数据库的整体结构、数据内容和定义等。 数据字典的内容包括: 1)数据库的总体组织结构、 数据库总体设计的框架 。 2)各数据层详细内容的定义及结构、 数据命名的定义 。 3)元数据(有关数据的数据,是对一个数据集的内容、质量条件及操作过程等的描述) 。
 
 
 
参考资料
  • 1

    黄杏元等. 地理信息系统概论[M]. 北京:高等教育出版社, 2001.  

  • 2

    王云飞. 矢量空间数据库引擎(SVSDE)的结构设计与开发[D]. 中国地质大学(北京), 2009.  

开放分类:
地理信息系统

sql-表空间

表空间

 编辑
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。
Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的。
中文名
表空间
外文名
 tablespaces
软件类型
数据库
所属软件
Oracle数据库
优    势
表空间的设计理念
面向领域
服务器

表空间的典型应用

编辑
典型应用一:控制用户所占用的表空间配额。
在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬盘空间耗竭。所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。为了达到这个目的,我们就可以通过表空间来实现。
我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属于这个表空间。如此的话,这个用户的存储容量,就受到这个表空间大小的限制。
典型应用二:控制数据库所占用的磁盘空间。
有时候,在Oracle数据库服务器运行过程中,可能运行不止一个服务。除了数据库服务器外,可能还有邮件服务器等应用系统服务器。为此,就需要先对Oracle数据库的磁盘空间作个规划,否则,当多个应用程序服务所占用的磁盘空间都无限增加时,最后可能导致各个服务都因为硬盘空间的耗竭而停止。所以,在同一台服务器上使用多个应用程序服务时,我们需要先为各个应用服务规划分配磁盘空间,各服务的磁盘空间都不能够超过我们分配的最大限额,或者超过后及时地提醒我们。只有这样,才能够避免因为磁盘空间的耗竭而导致各种应用服务的崩溃。
典型应用三:灵活放置表空间,提高数据库的输入输出性能。
数据库管理员还可以将不同类型的数据放置到不同的表空间中,这样可以明显提高数据库输入输出性能,有利于数据的备份与恢复等管理工作。因为我们数据库管理员在备份或者恢复数据的时候,可以按表空间来备份数据。如在设计一个大型的分销系统后台数据库的时候,我们可以按省份建立表空间。与浙江省相关的数据文件放置在浙江省的表空间中,北京发生业务记录,则记录在北京这个表空间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表空间即可。很明显,这样设计,当某个表空间中的数据出现错误需要恢复的时候,可以避免对其他表空间的影响。
另外,还可以对表空间进行独立备份。当数据库容量比较大的时候,若一下子对整个数据库进行备份,显然会占用比较多的时间。虽然说Oracle数据库支持热备份,但是在备份期间,会占用比较多的系统资源,从而造成数据库性能的下降。为此,当数据库容量比较大的时候,我们就需要进行设置多个表空间,然后规划各个表空间的备份时间,从而可以提高整个数据库的备份效率,降低备份对于数据库正常运行的影响。
典型应用四:大表的排序操作。
我们都知道,当表中的记录比较多的时候,对他们进行查询,速度会比较慢。第一次查询成功后,若再对其进行第二次重新排序,仍然需要这么多的时间。为此,我们在数据库设计的时候,针对这种容量比较大的表对象,往往把它放在一个独立的表空间,以提高数据库的性能。
典型应用五:日志文件与数据文件分开放,提高数据库安全性。
默认情况下,日志文件与数据文件存放在同一表空间。但是,这对于数据库安全方面来说,不是很好。所以,我们在数据库设计的过程中,往往喜欢把日志文件,特别是重要日志文件,放在一个独立的表空间中,然后把它存放在另外一块硬盘上。如此的话,当存放数据文件的硬盘出现故障时,能够马上通过存放在另一个表空间的重做日志文件,对数据库进行修复,以减少企业因为数据丢失所带来的损失。
当然,表空间的优势还不仅仅这些,企业对于数据库的性能要求越高,或者数据库容量越大,则表空间的优势就会越大。

建立表空间与建立用户的顺序关系

编辑
数据库设计的时候,我们建议数据库管理员按如下顺序设置表空间。
第一步:建立表空间。
在设计数据库的时候,首先需要设计表空间。我们需要考虑,是只建立一个表空间呢,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。
到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不同类型的数据,设置不同的表空间,以提高其输入输出性能。
第二步:建立用户,并制定用户的默认表空间。
在建立用户的时候,我们建议数据库管理员要指定用户的默认表空间。因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这不是很合理。
另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。

 

 客户要求用pgsql,所在服务器装了一下pgsql,我出了一个pgsql的分类,看这篇文章前,把这个分类下的文章都可以看一下,这是我熟悉pgsql的一套流程。以前搞过一次pgsql,很早了。

1,查看数据库

  1. playboy=> \\l                       //\\加上字母l,相当于mysql的,mysql> show databases;  
  2.         List of databases  
  3.    Name    |  Owner   | Encoding  
  4. -----------+----------+----------  
  5.  playboy   | postgres | UTF8  
  6.  postgres  | postgres | UTF8  
  7.  template0 | postgres | UTF8  
  8.  template1 | postgres | UTF8  
  9.   
  10. playboy=> select pg_database_size(\'playboy\');    //查看playboy数据库的大小  
  11.  pg_database_size  
  12. ------------------  
  13.           3637896  
  14. (1 row)  
  15.   
  16. playboy=> select pg_database.datname, pg_database_size(pg_database.datname) AS size from pg_database;    //查看所有数据库的大小  
  17.   datname  |  size  
  18. -----------+---------  
  19.  postgres  | 3621512  
  20.  playboy   | 3637896  
  21.  template1 | 3563524  
  22.  template0 | 3563524  
  23. (4 rows)  
  24.   
  25. playboy=> select pg_size_pretty(pg_database_size(\'playboy\'));      //以KB,MB,GB的方式来查看数据库大小  
  26.  pg_size_pretty  
  27. ----------------  
  28.  3553 kB  
  29. (1 row)  

2,查看多表

  1. playboy=> \\dt                      //相当于mysql的,mysql> show tables;  
  2.         List of relations  
  3.  Schema | Name | Type  |  Owner  
  4. --------+------+-------+---------  
  5.  public | test | table | playboy  
  6. (1 row)  

3,查看单表

  1. playboy=> \\d test;                 //相当于mysql的,mysql> desc test;  
  2.             Table "public.test"  
  3.  Column |         Type          | Modifiers  
  4. --------+-----------------------+-----------  
  5.  id     | integer               | not null  
  6.  name   | character varying(32) |  
  7. Indexes: "playboy_id_pk" PRIMARY KEY, btree (id)  
  8.   
  9. playboy=> select pg_relation_size(\'test\');   //查看表大小  
  10.  pg_relation_size  
  11. ------------------  
  12.                 0  
  13. (1 row)  
  14.   
  15. playboy=> select pg_size_pretty(pg_relation_size(\'test\'));   //以KB,MB,GB的方式来查看表大小  
  16.  pg_size_pretty  
  17. ----------------  
  18.  0 bytes  
  19. (1 row)  
  20.   
  21. playboy=> select pg_size_pretty(pg_total_relation_size(\'test\')); &n

    以上是关于空间数据库的主要内容,如果未能解决你的问题,请参考以下文章

    Oracle表空间的概述

    Oracle表空间和PostgreSQL表空间的区别?

    oracle10g数据库如何扩充表空间

    oracle数据库创建自动增长的表空间语句怎么写?

    oracle数据库中表空间和表之间的关系是怎么样的

    oracle 查询数据库表空间大小和剩余空间