分布式数据库之Oracle相关

       此博文也是分布式数据库课程作业的一部分,部分翻译自Oracle数据库相关文档,算是对Oracle db-link和多媒体相关部分的简述,但文中关于db-link的global类型的翻译不知是否正确,在他人的博文中并没有找到相关的介绍,自己也没有设备来亲自实践一下,若有错误请大家纠正。

参考资料:

  1. http://www.itpub.net/thread-69831-1-1.html
  2. https://docs.oracle.com/en/database/oracle/oracle-database/12.2/imurg/introduction-to-oracle-multimedia.html

      不同的数据库系统在实现分布式数据库时,对远程数据管理和操作都有所不同,Oracle的分布式数据库是使用数据库连接(database-link)的方式实现的。数据库连接,在Oracle中指的是从Oracle数据库建立一个指针(pointer),通过一个单向的通信路径,将本地Oracle中的一个实体与远程数据库的实体连接起来,访问本地的该实体等效于访问远程数据库对应的实体。直接对本地实体进行操作等同于对远程数据进行操作。

      为了实现数据库连接,分布式系统中的每一个数据库都需要有一个独一无二的在分布式系统中的名字,用于在创建数据库连接时指定具体是哪一个数据库,在数据库连接创建之后可以使用数据库连接名来访问。

      Oracle数据库创建数据库连接的代码示例:

create database link DblinkName

connect to userName identified by userPassword

using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.2.158)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';

      在上面的一段代码中,在本地数据库中创建了一个名字为“DblinkName”的数据库连接,目标数据库的名字为192.168.2.158:1521.orcl,使用用户名“username”和密码“userPassword”验证,若要管理远程数据库192.168.2.158:1521.orcl中某个数据,可以直接表名加链接名来访问连接到的远程数据库中该表的数据,如下:

SELECT * FROM 表名@ DblinkName

      Oracle分布式数据库的管理主要通过对远程数据库连接的权限管理来实现,Oracle中的数据库连接权限分为三种:私有型(private),公共型(public)和全局型(global),私有型的数据库连接只有创建者有权访问,也是说只有数据库连接的创建者才能通过这个数据库连接对指针所指向的远程数据库实体进行查询、更新操作。公共型的数据库连接允许所有用户进行访问。区别于公共型的数据库连接,全局型的数据库连接会在创建时,自动在分布式系统中的每一个数据库上创建一个同样的数据库连接,由于私有型和公共型的数据库连接是单向连接,只能从创建连接的数据库发起数据访问请求,而全局型的数据库连接因为在分布式系统中所有数据库上创建了相应的数据库连接,有利于数据库管理员对数据的管理。当用户需要访问的远程数据库实体,有多条从本地同一个实体出发的数据库连接时,按照由强到弱的顺序优先使用不同类型的数据库连接,私有型数据库连接优先级最高,其次是公共型数据库连接,最后是全局型数据库连接。

      另外,当对远程数据库进行访问时,可以使用权限组的管理方式,即远程数据库授予本地数据库所有访问用户一个用户组权限,而不是通过某一个具体的用户进行访问,即从本地发起访问远程数据库的请求时并不要求拥有一个该远程数据库的用户账号和密码,减少多地存储账号密码的风险。尽管实际上也可以在定义数据库连接时显式写入密码账号,以非全局管理用户权限访问远程数据库,有连接开销小的优点,但是有暴露密码账号的危险。

      随着多媒体的普及与发展,Oracle数据库也拓展了对多媒体数据的支持。Oracle数据库对多媒体数据存储和操作,主要通过提供特殊的用于存储多媒体数据的数据类型,和在该数据类型上的一系列操作实现的。

      最早,Oracle数据库提供了一个名为Long的基本数据类型,可分为Long和Long Raw两种数据类型,前者以字符串的形式进行存储,而后者则以二进制的形式进行存储,均可用于存储数据量小于2G的多媒体数据。

      后来Oracle引入新的大数据对象类型LOB,用于存储数据大小不超过4G的非结构化数据,并且提供了一系列统一的操作方法。对应于Long和Long Raw,LOB可以分为以字符存储的CLOB(还有NCLOB)和以二进制存储的BLOB。BLOB直接使用二进制数据流存储多媒体数据,而CLOB类型,同样适合存储多媒体数据,但由于使用字符串的形式存储,更适合用于存储XML的非结构化文档。相比较与Long来说,BLOB类型的限制小,包括不存在每一表中只能存在一个字段以及具有可随机访问的特性,因此更适合进行存储多媒体数据和管理。

      除了LOB数据类型之外,还提供了一个BFILEs数据类型,但该类型的数据并不存储在数据库中,仅仅是提供了一个访问系统数据文件的一个接口。

      Oracle数据库很早(至少在我查询到的资料中,至少可以追溯到Oracle 8i)就提供了多媒体数据管理的工具,在Oracle 11g及之前被称为Oracle interMedia,后面更名为Oracle Multimedia,但仅仅只是名字发生了变化。

Oracle Multimedia提供以下服务:

  1. 图像的存储(符合行业标准的高效压缩格式)、检索、元数据提取和二维静态位图映射。
  2. 医学数字成像和通信(DICOM)的支持存储,检索,元数据提取,处理,编写,一致性验证以及匿名医学图像和其他DICOM内容(但从Oracle 12c开始不推荐,可能会在未来取消支持)。
  3. 流行音频和视频文件格式的存储、检索以及音频和视频的元数据提取的服务。

下图说明了Oracle Multimedia的框架结构:

                                            分布式数据库之Oracle相关_第1张图片

                                                                    图1 Oracle Multimedia的框架结构

      使用Oracle多媒体,Oracle数据库可以在表格中保存丰富的内容以及传统数据。如图所示,Oracle数据库可存储的丰富的多媒体数据包括音频,图像,视频和DICOM内容,例如X射线成像。通过嵌入数据库的JVM,提供了一个支持服务器端媒体解析器和一个图像处理器。媒体解析器可以提供对支持格式的数据和应用程序元数据的解析,并且可以将多媒体数据扩展为其他支持的格式。图像处理器可以完成诸如产生缩略图大小的图像,转换图像格式和添加图像水印等操作。使用Oracle Multimedia过程或方法可以在数据库和外部文件存储系统之间执行导入和导出操作。连接Oracle数据库和外部文件存储的双向箭头显示了数据移动方向。

      作为特别应用,使用Oracle Multimedia使Oracle数据库能够在数据库表中存储,管理,处理和检索DICOM内容。DICOM内容包括单帧和多帧图像,波形,三维图像切片,视频片段和结构化报告。

      Oracle数据库为了实现对用户提供的一系列多媒体数据操作,在多媒体数据使用BLOBs或者BFILEs存储时,Oracle Multimedia会自动从多媒体数据中提取出元数据,无论多媒体数据是通过BLOBs类型存储在数据库内还是使用BFILEs类型存储在数据库外。通过元数据,前述服务器端媒体解析器提供的格式转换以及图像处理器提供的一系列图像处理操作,包括格式转换,页面选择,量化操作,压缩,缩放,裁剪,复制,翻转,镜像,旋转,锐化,调整伽玛(亮度),为图像添加水印,从图像中删除元数据以及将元数据嵌入图像等等都需要媒体元数据的支持。媒体元数据包括以下属性:

  1. 音频,图像和视频或其他异构媒体数据的存储信息,包括源类型,位置和资源名称,以及数据是存储在本地(在数据库中)还是外部存储
  2. 音频,图像和视频或其他异构媒体数据的时间戳信息
  3. 音频和视频数据描述
  4. 音频,图像和视频,或其他异构媒体数据的MIME(Multipurpose Internet Mail Extensions,消息内容类型的因特网标准)类型,用于表明数据可以使用何种方式打开。
  5. 音频特性:编码类型,通道数,采样率,样本大小,压缩类型和播放时间(持续时间)
  6. 图像特征:高度和宽度,图像内容长度,图像内容格式和图像压缩格式
  7. 视频特性:帧的宽度和高度,帧分辨率,帧速率,播放时间(持续时间),帧数,压缩类型,颜色数和比特率
  8. 从XML中提取的元数据,例如电影的导演或制片人。

      通过上述特殊的数据类型和Oracle Multimedia,Oracle数据库提供了方便快捷的多媒体数据存储和管理服务。

      我的研究方向是情感计算,包括从音频数据中判断说话人的情绪和从包含面部的视频中分析面部表情,因此我涉及的多媒体数据主要为语音数据和视频数据。

      在最近跟随导师所进行的项目中,我们对被检测的个体进行多种数据的采集,包括被检测对象的生理数据:血氧、脉搏和皮肤电阻,行为数据:采集过程中的语音、采集过程中的面部记录以及采集过程中的身体姿态信息。

      从数据的格式上来看,这些数据都属于多媒体数据的范围,有着数据格式不同、长度不同、类型不同的特点,但是,这些数据都是基于时间戳对齐采集的,即其中某一个数据,在对应的数据采集时间,必然存在对应的其他所有形式的数据,如果使用用户编程的方式来对数据使用文件系统进行存储、管理,必然是十分繁琐复杂的。实际上也是如此,在数据采集时,以各种标准数据格式对不同类型的数据进行分开存储,为了在后期处理时能对齐数据,在采集软件中必须打上时间戳,时间戳的同步也十分的困难。在进行数据处理时,又必须根据采集的时候打上的时间戳手动对数据进行预处理、合并。而如果多媒体数据库能发展至支持多种不同类型的数据进行同时写入,并自动打上时间戳,并进行一系列的预处理,在用户编程时大不必考虑同步问题,也不用做拆分再组合的无用操作。随着对各种数据的分析处理的能力变强,多种数据的同步采集必然会是一个趋势,这正是多媒体数据库可大展拳脚之地。

      学以致用,正巧,我所接触的领域中存在着图像、视频内容的提取,即从图像、视频中自动提取文本描述,尽管发展缓慢,视频内容的自动抽取还存在很大的难度,但图像内容的自动提取已有了较好的效果,这无疑对多媒体数据库和图像检索的发展是一个好消息。我相信,需求和技术发展,两者必定是相互促进,多媒体数据库的研究也会更加热门。

你可能感兴趣的:(学习总结)