元数据库是什么?与数据库有何区别?

元数据库是什么?与数据库有何区别?,第1张

楼主您好!

数据的英文名称是“Metadata",它是“关于数据的数据”在地理空间信息中用于描述地理数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征,它是实现地理空间信息共享的核心标准之一。目前,国际上对空间元数据标准内容进行研究的组织主要有三个,分别是欧洲标准化委员会(CEN/TC287)、美国联邦地理数据委员会(FGDC)和国际标准化组织地理信息/地球信息技术委员会(ISO/TC211)。空间元数据标准内容分两个层次。第一层是目录信息,主要用于对数据集信息进行宏观描述,它适合在数字地球的国家级空间信息交换中心或区域以及全球范围内管理和查询空间信息时使用。第二层是详细信息,用来详细或全面描述地理空间信息的空间元数据标准内容,是数据集生产者在提供空间数据集时必须要提供的信息。

元数据主要有下列几个方面的作用:

(1)用来组织和管理空间信息,并挖掘空间信息资源,这正是数字地球的特点和优点所在。通过它可以在广域网或因特网上准确地识别、定位和访问空间信息。

(2)帮助数据使用者查询所需空间信息。比如,它可以按照不同的地理区间、指定的语言以及具体的时间段来查找空间信息资源。

(3)组织和维护一个机构对数据的投资。

(4)用来建立空间信息的数据目录和数据交换中心。通过数据目录和数据交换中心等提供的空间元数据内容,用户可以共享空间信息、维护数据结果,以及对它们进行优化等。

(5)提供数据转换方面的信息。使用户在获取空间信息的同时便可以得到空间元数据信息。通过空间元数据,人们可以接受并理解空间信息,与自己的空间信息集成在一起,进行不同方面的科学分析和决策。描述空间信息的元数据标准体系内容按照部分、复合元素和数据元素来组织,它们是依次包含关系,前者包含后者,即:后者依次组成前者。具体分为8个基本内容部分和4个引用部分,由12个部分组成,其中标准化内容包括标识信息、数据质量信息、数据集继承信息、空间数据表示信息、空间参照系信息、实体和属性信息、发行信息以及空间元数据参考信息等内容,另外还有4个部分是标准化部分中必须引用的信息,它们为引用信息、时间范围信息、联系信息及地址信息。元数据标准内容体系是通过元数据网络管理系统来实现的,该系统主要由权限验证功能(服务器端验证)、输入和合法性校验功能(客户端校验)、查询功能(服务器端查询)与返回和显示功能(服务器端格式化查询结果并返回,客户端显示)等组成。利用空间元数据网络管理系统作为空间交换站的共享软件可基本上实现空间信息的网络共享。

转自: http://zhidao.baidu.com/question/61835466.html

如何获取SQL Server数据库元数据

元数据简介

元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆目录卡和名片等都能够看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server 或是研发数据库应用程式的时候,我们经常要获取一些涉及到数据库架构的信息:

某个数据库中的表和视图的个数连同名称

某个表或视图中列的个数连同每一列的名称、数据类型、长度、精度、描述等

某个表上定义的约束

某个表上定义的索引连同主键/外键的信息。

下面我们将介绍几种获取元数据的方法。

获取元数据

使用系统存储过程和系统函数访问元数据

获取元数据最常用的方法是使用 SQL Server 提供的系统存储过程和系统函数。

系统存储过程和系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用直接查询系统表就能获得当前数据库对象的元数据。

常用的和元数据有关的系统存储过程有以下一些:

系统存储过程

sp_columns 返回指定表或视图的列的周详信息。

sp_databases 返回当前服务器上的任何数据库的基本信息。

sp_fkeys 若参数为带有主键的表,则返回包含指向该表的外键的任何表若参数为带有外键的表名,则返回任何同过主键/外键关系和该外键相关联的任何表。

sp_pkeys 返回指定表的主键信息。

sp_server_info 返回当前服务器的各种特性及其对应取值。

sp_sproc_columns 返回指定存储过程的的输入、输出参数的信息。

sp_statistics 返回指定的表或索引视图上的任何索引连同统计的信息。

sp_stored_procedures 返回当前数据库的存储过程列表,包含系统存储过程。

sp_tables 返回当前数据库的任何表和视图,包含系统表。

常用的和元数据有关的系统函数有以下一些:

系统函数

COLUMNPROPERTY 返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

COL_LENGTH 返回指定数据库的指定属性值,如是否处于只读模式等。

DATABASEPROPERTYEX 返回指定数据库的指定选项或属性的当前配置,如数据库的状态、恢复模型等。

OBJECT_ID 返回指定数据库对象名的标识号

OBJECT_NAME 返回指定数据库对象标识号的对象名。

OBJECTPROPERTY 返回指定数据库对象标识号的有关信息,如是否为表,是否为约束等。

fn_listextendedproperty 返回数据库对象的扩展属性值,如对象描述、格式规则、输入掩码等。

由于我们无法直接利用到存储过程和函数的返回结果,因此只有在我们关心的只是查询的结果,而无需进一步利用这些结果的时候,我们会使用系统存储过程和系统函数来查询元数据。

 例如,假如要获得当前服务器上任何数据库的基本信息,我们能够在查询分析器里面运行:

EXEC sp_databases

GO

在返回结果中我们能够看到数据库的名称、大小及备注等信息。

但是假如要引用这部分信息,或存储这部分信息以供后面使用,那么我们必须借助中间表来完成这个 *** 作:

CREATE TABLE #sp_result

(

DATABASE_NAME sysname,

DATABASE_SIZE int,

REMARKS varchar(254) NULL

)

GO

INSERT INTO #sp_result

EXEC ('sp_databases')

GO

使用信息架构视图访问元数据

信息架构视图基于 SQL-92 标准中针对架构视图的定义,这些视图单独于系统表,提供了关于 SQL Server 元数据的内部视图。信息架构视图的最大长处是,即使我们对系统表进行了重要的修改,应用程式也能够正常地使用这些视图进行访问。因此对于应用程式来说,只要是符合 SQL-92 标准的数据库系统,使用信息架构视图总是能够正常工作的。

信息架构视图

INFORMATION_SCHEMA.CHECK_CONSTRAINTS:返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

INFORMATION_SCHEMA.COLUMNS:返回当前数据库中当前用户能够访问的任何列及其基本信息。

INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE:返回当前数据库中定义了约束的任何列及其约束名。

INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE:返回当前数据库中定义了约束的任何表及其约束名。

INFORMATION_SCHEMA.KEY_COLUMN_USAGE:返回当前数据库中作为主键/外键约束的任何列。

INFORMATION_SCHEMA.SCHEMATA:返回当前用户具备权限的任何数据库及其基本信息。

INFORMATION_SCHEMA.TABLES:返回当前用户具备权限的当前数据库中的任何表或视图及其基本信息。

INFORMATION_SCHEMA.VIEWS:返回当前数据库中的当前用户能够访问的视图及其任何者、定义等信息。

由于这些信息架构都是以视图的方式存在的,因此我们能够很方便地获得并利用需要的信息。

例如,我们要得到某个表有多少列,能够使用以下语句:

SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME='mytable'

使用系统表访问元数据

虽然使用系统存储过程、系统函数和信息架构视图已能够为我们提供了相当丰富的元数据信息,但是对于某些特别的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL Server 将任何数据库对象的信息均存放在系统表中,作为 SQL Server 的管理、研发人员,了解各个系统表的作用将有助于我们了解 SQL Server 的内在工作原理。

SQL Server 的系统表很多,其中最常用的和元数据查询有关的表有如下一些:

syscolumns 存储每个表和视图中的每一列的信息连同存储过程中的每个参数的信息。

syscomments 存储包含每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的原始 SQL 文本语句。

sysconstraints 存储当前数据库中每一个约束的基本信息。

sysdatabases 存储当前服务器上每一个数据库的基本信息。

sysindexes 存储当前数据库中的每个索引的信息。

sysobjects 存储数据库内的每个对象(约束、默认值、日志、规则、存储过程等)的基本信息。

sysreferences 存储任何包括 FOREIGN KEY 约束的列。

systypes 存储系统提供的每种数据类型和用户定义数据类型的周详信息。

将系统存储过程、系统函数、信息架构视图和系统表结合使用,能够方便地让我们获得任何需要的元数据信息。

 示例:

1、 获得当前数据库任何用户表的名称。

SELECT OBJECT_NAME (id)

FROM sysobjects

WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0

其中主要用到了系统表 sysobjects连同其属性 xtype,更有就是用到了 OBJECTPROPERTY 系统函数来判断是不是安装 SQL Server 的过程中创建的对象。

2、获得指定表上任何的索引名称。

SELECT name FROM sysindexes

WHERE id = OBJECT_ID ('mytable') AND indid >0

综合实例

下面给出了一个存储过程,他的作用是自动将当前数据库的用户存储过程加密。

DECLARE @sp_name nvarchar(400)

DECLARE @sp_content nvarchar(2000)

DECLARE @asbegin int

declare @now datetime

select @now = getdate()

DECLARE sp_cursor CURSOR FOR

SELECT object_name(id)

FROM sysobjects

WHERE xtype = 'P'

AND type = 'P'

AND crdate <@now

AND OBJECTPROPERTY(id, 'IsMSShipped')=0

OPEN sp_cursor

FETCH NEXT FROM sp_cursor

INTO @sp_name

WHILE @@FETCH_STATUS = 0

BEGIN

SELECT @sp_content = text FROM

syscomments WHERE id = OBJECT_ID(@sp_name)

SELECT @asbegin =

PATINDEX ( '%AS' + char(13) + '%', @sp_content)

SELECT @sp_content =

SUBSTRING(@sp_content, 1, @asbegin - 1)

+ ' WITH ENCRYPTION AS'

+ SUBSTRING (@sp_content, @asbegin+2, LEN(@sp_content))

SELECT @sp_name = 'DROP PROCEDURE [' + @sp_name + ']'

EXEC sp_executesql @sp_name

EXEC sp_executesql @sp_content

FETCH NEXT FROM sp_cursor

INTO @sp_name

END

CLOSE sp_cursor

DEALLOCATE sp_cursor

该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。本存储过程在 SQL Server 2000 上通过。

作用如下:

一、系统表存储SQL所有的系统信息。

存储有关数据库服务中的元数据所谓元数据即(比如数据服务器有哪些用户数据库、数据库服务器有哪些登陆账号,数据库中都有哪些表,每个表都有哪些字段 每个数据库有哪些存储过程、视图等等的数据),系统表一般sys开头。

二、了解数据库中系统表,可以编写sql语句或编程的时候用到。

在创建数据库的时候选判断数据库是否存在;创建数据库中对象(表、视图、存储过程、索引等)是否存在,存在返回,不存在则执行创建语句。批量删除数据库中对象,比如一次性删除某个具体数据库中的所有用户创建的表、视图、索引等对象。

三、重要的几个系统表

Sysxlogins:存在与Master数据库中,(所有数据库中用户和角色),记录着所有能登陆到Sql server 的帐号。要重启服务或reconfigure with override,sysdatabases:记录着当前系统所有的数据库。只有Master数据中有此系统表。

扩展资料:

一、数据库优点:

1、易于维护:都是使用表结构,格式一致;

2、使用方便:SQL语言通用,可用于复杂查询;

3、复杂 *** 作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

二、数据库缺点:

1、读写性能比较差,尤其是海量数据的高效率读写;

2、固定的表结构,灵活度稍欠;

3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6765563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存