Oracle database machine

10 16th, 2008 | Posted by jacky | Filed under 大话技术

前几日,我在blog中把ORACLE和HP推出的database machine称之为一个山寨版的RAC系统,8个HP的PC server作为处理节点,14个exadata storage server组成了一个山寨版的存储系统。我认为这样是最简单的一种方式,仅仅是将硬件和软件打包到一个BOX中。但是实际上并不是如此,因为我在文档中看到了下面的话:

Each Exadata Storage Server has “Smart Scan”software built-in to execute rapid table scans,sending only required rows and columns through a fast Infiniband network for processing by database servers.

在ORACLE的share everything的架构中,存储是全局共享的。而在Greenplum的share nothing的架构中,在数据逻辑层就将数据distribute到每个node上,每个节点可以独立的对数据进行处理。如果我们假设ORACLE RAC的架构并没有发生改变,那么exadata storage server上的smart scan功能是如何实现的呢?我们先看一下ORACLE DATABASE MACHINE的架构:

The Oracle Database 11g has been significantly enhanced to take advantage of Exadata storage. The Exadata software is optimally divided between the database server and Exadata cell. The database server and Exadata Storage Server Software communicate using the iDB – the Intelligent Database protocol. iDB is implemented in the database kernel and transparently maps database operations to Exadata-enhanced operations. iDB implements a function shipping architecture in addition to the traditional data block shipping provided by the database. iDB is used to ship SQL operations down to the Exadata cells for execution and to return query result sets to the database kernel. Instead of returning database blocks Exadata cells return only the rows and columns that satisfy the SQL query. Like existing I/O protocols, iDB can also directly read and write ranges of bytes to and from disk so when offload processing is not possible Exadata operates like a traditional storage device for the Oracle database. But when feasible, the intelligence in the database kernel enables, for example, table scans to be passed down to execute on the Exadata Storage Server so only requested data is returned to the database server.

iDB负责database与Exadata cell之间的通信,将查询后的query result回传给数据库,而不是block。这下问题好像清楚了一点,既然回传的是结果集而不是block,这样ORACLE就不需要重新构造block了,只是把结果集处理一下返回给用户。但是什么情况下,ORACLE会这样处理,什么情况下是按照传统的方式处理呢?文档中并没有提及。

感觉ORACLE意识到了RAC架构存在的瓶颈,但是又不能改成share nothing的架构,只好在RAC外面加了一个iDB的东西,期望能在存储节点上做一些处理,减少存储和数据库之间传送的数据量,提高整个系统的性能。看来这个东西还不是简单的山寨货,还是有点东西在里面。

–EOF–

标签: ,
  1. bpmfhu
    10 16th, 200815:51

    相当崇拜你

  2. freezr
    10 16th, 200816:45

    你Y就扯吧,上次在MSN上和你说话,都不理我。

  3. bpmfhu
    10 17th, 200808:06

    kao,我手机上msn,经常收不到