SAS9 技术 --SPD引擎

类别:编程语言 点击:0 评论:0 推荐:

简介:SPD引擎
  SPD(Scalable Performance Data )是设计用于高性能数据传送,它之所以能达到快速的数据传送是由于按特定的格式组织数据,以最大限度的利用多CPU实现并行输入/输出功能
  
  SPD引擎使用多线程并行的快速读取数据,但相应的OS必须支持容许线程执行在现有的任意CPU上,虽然该功能是SPDE最重要的功能,但这种功能的是来自于SAS的数据存储的结构组织方面的支持,这种数据组织方式容许多线程、并行处理I/0任务的能力
  
  
  然它是不能替代缺省的SAS BASE引擎的,SPDE为大数据量的高速处理提供了一种选择,特别是在读写数百万记录的时候,并且还有某些OS是不容许大于2GB的文件存在,其主要表现在以下方面:
   支持上GB的数据
   在多CPU机器上具有可量测性
   并行WHERE处理
   并行装载
   并行INDEX创建
   并行数据传送
   固有的排序在BY时
   
  SPDE可运行于UNIX 、WINDOWS、z/oS(只在ZFS文件系统上) 和OpenVMS Alpha(只在 ODS-5文件系统上)上

利用SMP(symmetric multiprocessing)机器
  SPDE技术是充分建立在SMP机器上的,一个SMP机器有多个CPU且OS支持线程,一般来说,它具有多个控制器和多个磁盘设备,每个磁盘设备对应一个控制器,当SPDE读数据是,它运行一个或多个线程在每一个CPU上,这些线程并行的从多个磁盘设备上读取数据,这种读取很有可能是通过多CPU操控的
  
  例如:一个完美的系统,其有5个CPU和10个磁盘设备,在进行数据读取时要比单CPU机器会快上5倍以上,除了多线程I/0外,SMP机器还能支持多线程应用,如SORT过程

如何利用SPDE组织SAS数据
  因为SPDE是为高性能数据处理,故数据集的物理存储上是跟BASE SAS的的数据存储是不同的,后者是用单一文件存储数据集,其包含了数据和数据的相关描述信息,而SPDE是采用了分开的文件用来存储数据和数据描述信息,另外,如果数据集是被索引,则将会为每一个索引产生2个INDEX文件,这4种文件类型可被称为SPDE组件文件,每一种类型的文件都有它自己的文件扩展名
  另外,每一个组件文件可以一个或多个物理文件组成,故它可以跨越多个卷但在引用时是作为一个逻辑文件,例如:SPDE能建立许多物理文件,但引用时可以当作一个单一的文件
  描述性数据组件跟实际数据组件是不同的,表现在以下2方面:
    1。你能为实际数据组件指定一个固定长度的分区尺寸,用PARTSIZE选项指定,然而,你是不能控制描述性数据组件的分区尺寸的
    2。数据组件文件可以建立在不同的路径上,但描述性数据只能建立在一个单一路径下,直到路径的存储空间已满,才会使用下一个路径
  元数据组件文件
    其扩展名为.MDF,通常一个SPDE数据集只有一个MDF文件
  索引组件文件
    如果一个文件被索引,SPDE将会产生2个索引组件文件为每一个索引,HBX扩展名的文件包含了全局的索引,而.IDX文件则包含了分段的索引
  数据组件文件    
     一个数据组件文件可被几个或多个文件组成,胜于单一一个文件,每一个文件的是固定长度的,这个长度在建立数据集时指定
    特别的,分区尺寸的大小会影响你应用的执行性能,因为每一个文件是被一个线程读的


比较BASE SAS 引擎和SPD引擎 
  2者有很多相同处,2者都是用SAS 数据库存储数据;SAS库是一个包含多个文件和目录的东西,然而,SPDE库下的东西能存在在不同路径下,你可已在使用LIBNAME句法是指定一些数据存储的细节
  一个SPDE库包含数据文件,元数据文件,索引文件,
  注意的是SPDE库是不支持目录,视图,MDDB或者其他文件的

  SPDE文件操作空间
    SPDE文件操作空间是用于SPDE操作时所需要的额外的空间,如没有指定会使用缺省的,但当你操作大数据量的数据时,可能缺省的空间不足够大,因此,你可以用SPDEUTILLOC选项来指定SPDE文件操作空间
  临时数据集存储
    通过TEMP选项指定,如下
      libname user spde '/mydata' temp=yes;
      data a; x=1;
      run;
      proc print data=a;  
      (注:USER选项的使用使得在引用时只需使用一级名字)     
  2者的其他异同处
   【Feature】 【SPD Engine】 【Base SAS Engine 】
   分区数据集 YES NO
   并行WHERE优化 YES NO
   最低锁定级别 成员级别 记录级别
   不同请求同时访问给出的数据集 只读 读写
   支持SAS/SHARE NO YES
   SAS BY时自动排序 YES NO
   目录支持 NO YES
   视图支持 NO YES
   MDDB支持 NO YES
   完整性约束 NO YES
   变量数 多于32767
   记录数 2的63次方-1 2的32次方-1(32位机器上)      

2种引擎下数据集的互用
  BSE数据集必须转化为SPDE数据集才能被SPDE访问,你可已很容易的使用COPY、APPEND过程或数据步(PROC MIGRATE除外)
  另外,你已存在的SAS程序可以很好的运行在SPDE引擎下,只需做很小的修改,除了LIBNAME句法
  
共用SPDE文件  
  SPDE支持成员级的锁定,意思时多个用户可以同时读同一个SPDE数据集,然而当一个数据集在被更新时,其他用户只能访问它,如果你想支持读写,那么你需要SPD 服务器产品
  

本文地址:http://com.8s8s.com/it/it25755.htm