ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。要执行模块中的SQL语句,必须对授权标识授予必要的权限。1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。......
2023-10-28
图18.8 传统数据库上的SQL引擎
传统数据库上的SQL引擎如图18.8所示。其中,查询处理器用来分析用户请求(查询),通过查阅数据字典验证语义,进行优化,生成优化后的执行计划。存储引擎按执行计划存取数据。
目前使用最广的RDBMS往往运行在SMP的体系架构上。SMP的体系架构包括多个处理器,每个CPU有自己的存储引擎,内存和I/O则为每个CPU共享。SMP的体系架构很难应对数据仓库应用所需的大量数据迁移和处理大量数据的负载。原因主要是数据需要在计算机背板和I/O通道上移动。
SQL引擎也可工作在分析数据库上。分析数据库用于数据仓库和商务智能(BI)应用方面,支持低延迟的负载分析查询。这时会使用MPP体系架构,如Teradata数据仓库,但是这种架构解决方案价格昂贵、可伸缩性差。
1.对HDFS而言为什么DML难以实现
HDFS是目前处理大数据常用的工具,但是其体系架构主要支持只读运算,即WORM(write once read many)。HDFS支持数据添加,但不支持数据更新。数据修改成为HDFS的固有局限。因此大多数SQL解决方案不支持Hadoop上的DML操作。有些供应商通过使用日志记录更新请求,然后选择适当时机合并修改请求,将归并后的修改实施到原始数据上。
经验告诉我们,关系型数据库在面对超越一定数据集大小的时候,鉴于性能和可伸缩性的缘故,能力受到了限制。有一些技术,如数据的人工分片与分割(sharding and partitioning),可以用来解决这个问题。尽管如此,问题还没真正解决。分布式系统的主要挑战是如何在集群上让分布连接能延迟实现。要解决这个问题,需让数据在网络上高速迁移,达到很快的速度和高的吞吐能力。
减少在通信链路上迁来迁去的数据量是一个重要挑战。开发出适应各种数据集(特别是半结构化数据)上的可伸缩算法,从而实现和结构化数据上一样的SQL性能是一个挑战。为了适应日益增长的数据集大小,已经使用了各种不同的技术,压缩或格式化数据可使数据存取开销最小。
简单来说,SQL大数据引擎必须应对这些挑战。
Hadoop上的第一个SQL引擎是Hive,由Facebook于2009年开发。Hive在Hadoop上实现低延迟SQL,但有固有的局限性。这主要是由于Hive采用的体系架构将SQL查询转换为Map Reduce这种面向批处理的系统。复杂的SQL查询需要多轮Map Reduce过程,而每轮结束需要将临时数据写入磁盘,下一轮又要从磁盘读出数据以便进一步处理。数据随着磁盘I/O在网络里传来传去,导致系统速度变慢。
显然,Map Reduce并非为适应优化很长的数据流水线而设计的。
2.大数据上的SQL解决方案
解决大数据上SQL的负载问题,有几种解决方案,例如,面向批处理负载的SQL、面向交互处理负载的SQL和面向流负载的SQL等。
概括起来,大数据上的SQL引擎主要包含四种不同的方案。
(1)构建一个翻译层,将SQL查询翻译成等价的MapReduce代码,执行在计算集群。
Hive就是这种解决方案的样例,它是面向批处理负载的SQL解决方案。它使用Map Reduce和Apache Tez[6]作为中间层。中间层运行针对海量数据集的复杂作业,包括ETL和生成数据“流水线”(见图18.9(c))。
(2)借助现存关系型引擎,并结合40多年的研究和开发成果,包括所有的存储引擎和查询优化技术等,使之更强壮(见图18.9(d))。
假设将MySQL/Postgres嵌入Hadoop集群的每个数据节点,构造一个软件层次,在这个层次底下的分布式文件系统中存取数据。这种RDBMS引擎与数据节点配合,再与数据节点通信并从HDFS读数据,将之翻译成符合自己的数据格式。
(3)构建新的查询引擎,与数据节点共处在同一个计算节点,在HDFS数据上工作并直接执行SQL查询。这种查询引擎使用查询分离器(query splitter)将查询分割成一个或几个底层的数据处理器(handlers)(如HDFS、HBase、关系数据引擎、搜索引擎等),存取和处理数据(见图18.9(b))。
Drill[7]和Impala[8]是可以在HDFS上实现交互SQL查询。这种Hadoop引擎上的SQL优势在于执行特定SQL查询和实施数据调查与发现,可以直接用于数据分析,在BI工具上自动生成SQL代码。
(4)使用现有的分析数据库(部署在与Hadoop集群不同的集群上),与Hadoop集群上的节点交互,使用专用的连接器(proprietary connector)从HDFS获取数据,但在分析引擎上执行SQL查询。这类外部分析引擎可以集成起来,使用Hive或HCatalog[9]里的元数据可以在HDFS数据上无缝工作。典型产品如Teradata(见图18.9(a))。
图18.9 在Hadoop上构建SQL引擎的方法
3.减少SQL查询延迟的方法
数据规模和I/O开销越大,查询所需要花费的时间越长。许多研究和发明聚焦于存储层实现优化,减小数据集的规模。
可从以下三个方面来改进性能。
●写性能:如何使写数据变得很快。(www.chuimin.cn)
●部分读性能:如何使读数据集里的某些列变得很快。
●完整读性能:如何使读数据集里的每个列变得很快。
不同格式的数据差异很大。为大数据选择最佳的数据格式,本质上可以改进查询处理的性能。下面讨论一些数据格式。
1)Text/CSV文件
逗号分割值(comma-separated values,CSV)文件不支持块压缩,这样,Hadoop中的CSV文件常有重要的读性能开销问题。CSV文件不存储元数据,使用时必须知道文件是如何写进去的,模式演化的支持有限。
2)JSON[10]记录
不像CSV文件,JSON在数据里存储元数据,支持模式演化。与CSV文件一样,JSON文件不支持块压缩。
3)Avro[11]格式
Avro格式在数据里存储元数据,允许指定独立的模式,以便读该文件。Avro格式支持的索引,可以定义新的独立模式让用户重新命名、添加、删除和修改字段的数据类型,也可分解Avro文件和支持块压缩。
4)顺序文件
顺序文件(sequence files)使用二进制格式存储数据,其结构和CSV文件的结构相似。顺序文件不在数据里存储元数据,因此,唯一的模式演化选项是添加新字段。顺序文件不支持块压缩。
5)RC文件
RC(record columnar)文件是Hadoop里的第一个列式文件格式。RC文件的优势是压缩和查询性能。写RC文件需要的存储和计算开销大于非列式文件,写起来一般也慢。
6)ORC文件
ORC(optimized RC)文件的发明优化了Hive中的性能,其压缩性能优于RC文件的,查询速度更快,但不支持模式演化。
7)Parquet文件
Parquet也是Hadoop中一种列式存储格式,允许压缩,以改进查询性能。与RC文件和ORC文件不同,这种文件的格式支持有限的模式演化。可以将新的列添加到已有的Parquet格式里。
每种格式适合不同的情况。格式的选择要考虑使用方式、环境和负载情况。
●Hadoop分布。
●模式演化(schema evolution):数据结构是否随着时间的变化而变化。
●处理需求(processing requirements):考虑数据的负载和所用的工具。
●读/写需求(read/write requirements):读/写方式是只读、读/写还是只写。
●抽取需求(exporting/extraction requirements):是否从Hadoop抽取数据输入到外部数据库引擎或其他平台?
●存储需求(storage requirements):数据量是否是一个重要因素?
●数据压缩是否对存储十分重要?
对于Map Reduce作业的中间数据来说,顺序文件是一种好的解决方案。ORC(Hortonworks/Hive)或Parquet(Cloudera/Impala)不错,但它们创建时间较长,也不能更新。
如果模式随时可能变化,Avro是一种好的选择,但是查询性能不如ORC或Parquet。当从Hadoop抽取数据到数据库时,CSV文件很不错。
有关分布式数据库技术的文章
ANSI SQL标准提供了安全系统最基本的访问控制级别,主要有以下几种。授权标识是一种区别访问数据库不同部分的基本方法,应用SQL的这种特征,根据不同的访问控制可以将数据库分给各个模式。要执行模块中的SQL语句,必须对授权标识授予必要的权限。1992 SQL标准增加了一条取消权限的REVOKE语句,使用该语句可选择性地逐级取消被授权者的权限。......
2023-10-28
SQL:1999[7]是ISO制定的一个国际标准。可以说SQL3是为面向对象SQL而定义的,计划作为对象-关系数据库管理系统的基础。与SQL-92相比,新的语言增加了面向对象的特征。JTC 1中的分委员会SC32负责数据库的标准问题,其中,WG3负责SQL标准,而WG4关注SQL/MM。......
2023-10-28
SQL语言是关系数据库的国际标准语言。1992年通过的SQL标准称为SQL2,于1999年再次更新为SQL99或SQL3标准。将SQL嵌入宿主语言,还需要提供对选出的数据进行面向逐个......
2023-10-28
如何将数据库迁移到云上是面临的一个挑战。有些组织会在迁移到云上时重新设计体系结构。例如,用户使用的系统缺乏负载均衡,迁移到云上时,可以让云供应商弥补这个不足。难的是异构数据库的迁移,例如,将Oracle数据库迁移到云端的PostgreSQL上。......
2023-10-28
与数据库安全系统打交道的人员可以分为两类:数据库管理员和普通用户。DBA要对安全负责,所以他(们)要创建授权规则,定义谁可以使用哪部分数据,以及如何使用。图13.1数据库安全系统由图13.1可知,数据库安全系统里存放着授权规则,在每次数据库存取时强制满足其规则。从完整性方面考虑,数据库安全可以包含以下两方面。1)设计阶段的数据库安全在设计阶段必须关注数据库的安全性。DBA负责处理整个数据库系统里的用户账号和口令。......
2023-10-28
Oracle公司的OPS环境比一般的(单实例)Oracle环境复杂得多。不同结构下的OPS的实施略有不同。图14.23OPS体系结构为了利用这些特性,需要专业人员合适的设计以及恰当的手工配置。下面对有些关键问题进行简单讨论,讨论中会涉及一些Oracle系统专用的术语,读者可参阅Oracle公司的相关文档。DLM与Oracle进程一起工作并相互通信。DLM相关的初始化参数在每个实例的SGA[12]中分配必要的结构以处理消息机制、封锁与实例相关的Cache管理,这样就为各种Oracle进程操纵提供了基础。......
2023-10-28
要在并行数据库系统中查找数据,首先要确定数据由哪些处理器管理,放在哪里,这就是数据定位。因为希望在数据所在处执行程序,所以数据定位就是判断系统性能好坏的一个重要因素。有round-robin分割、哈希分割和归类分割三种基本分割方法,如图14.14所示。图14.14不同的分割模式round-robin分割是最简单的一种分割方法,它能保证均匀分配。图14.15Teradata DBC的数据分布由图14.15可知,Teradata DBC采用的策略是将数据均匀地分布到其存储设备中。......
2023-10-28
图5.6以网络为中心的计算驱动力量、增长领域与示例值得注意的是,美国国防部的Net-Centric的数据策略是从用户出发考虑的。根据DoD的描述:以网络为中心是指实现一个联网环境,包括基础设施、系统、过程和个人,使之能够按照完全不同的方式实施战斗和商务活动。以网络为中心的基础是GIG。以网络为中心,通过安全互联时间或地点独立的人和系统,充分支持军事态势知识的改进和更好地访问商务信息,大大缩短了决策周期。......
2023-10-28
相关推荐