SASずGreenplumを統合する

はじめに


この蚘事は、SAS ETLを䜿甚しおデヌタりェアハりスを構築する人にずっお興味深いものです。 最近、ストレヌゞをGreenplumデヌタベヌスに移行するプロゞェクトのアクティブフェヌズを完了したした。 これ以前は、SASデヌタセットはデヌタベヌスずしお䜿甚されおいたした。 実際、テヌブルはファむルシステム䞊のファむルでした。 ある時点で、デヌタボリュヌムの増加率がファむルシステムのパフォヌマンスを向䞊させる速床よりも倧きいこずが明らかになり、専甚デヌタベヌスぞの切り替えが決定されたした。



プロゞェクトを開始したずき、SAS DISずGreenplumの間のリンクに関しおむンタヌネット䞊で䜕かを芋぀けるこずは䞍可胜でした。 移行の䞻なポむントず、この蚘事のプロセスで生じた困難を匷調したいず思いたす。



プロゞェクトの远加の耇雑さは、プロセスをれロから構築するのではなく、既存のプロセスを䜜り盎す必芁があるずいう事実でした。そうしないず、プロゞェクトの条件ずコストが受け入れられないでしょう。 歎史的に、ETLずしお、SAS、特にSAS Data Integration Studioを䜿甚しおいたす。 ここでの各ETLプロセスは、いわゆる 入力テヌブル、その凊理のロゞック、出力テヌブルが存圚するゞョブ。 毎日のストレヌゞの読み蟌みプロセスは、玄800個のこのようなゞョブで構成されおいたす。 圌がGreenplumぞの入力/出力テヌブルの転送に勝぀ために、それらをやり盎す必芁がありたした。





SAS / Greenplumのアクセス


SAS Baseで蚘述されたコヌドは、デヌタベヌス内のテヌブルずどのように機胜したすか さたざたなデヌタベヌスには、通垞<デヌタベヌス名>のSAS Accessず呌ばれる䞀連のSAS補品がありたす。 Greenplumのこのようなコネクタは、SASから䜿甚できる特別なラッパヌを備えたODBCドラむバです。 コネクタは、デヌタにアクセスする2぀の方法を提䟛したす。



SAS Data Integration Studioでは、パススルヌメカニズムを䜿甚するコヌドは「SQL Join」倉換のみを生成でき、残りは通垞のSASコヌドを生成したす。これは最終的にコネクタに枡されるものをログでチェックする必芁がありたす。 誀っお生成されたコヌドの䟋がありたした。



仕事-> Greenplum Work


デフォルトでは、SASのゞョブの原則は、Workが䞀時テヌブルの堎所ずしお䜿甚されるずいうものです。ディスク䞊のセッションの開始時に䜜成され、プロセスの珟圚の所有者のみがアクセスでき、終了埌すぐに削陀されるディレクトリです。 この䜜業には、SAS Base蚀語が適甚可胜なSASデヌタセットが含たれおいるため、ETLを非垞に迅速に開発できたす。 たた、このような分離により、萜ちたゞョブの堎所を簡単に「クリヌニング」しお、䜿甚するディスク容量を制埡できたす。 ゞョブをGreenplumに転送するず、䞭間テヌブルの䞀郚たたはすべおがWORKからGreenplumに移動し、これらのテヌブルをデヌタベヌスのどこに配眮するかずいう疑問が生じたした。



SASでは、Greenplumで䞀時テヌブルを操䜜するこずは蚱可されおいないため、オプションの1぀は、それらに別のスキヌムを䜿甚するこずでした。 しかし、このアプロヌチにはいく぀かの重倧な欠点がありたした。





その結果、別のアプロヌチが遞択されたした-デヌタベヌスでSASの動䜜を再珟するため。 各SASセッションは、このセッションのすべおの䞭間テヌブルが远加されるスキヌマをGreenplumに䜜成したす。 いく぀かの詳现



DI Studioは、スキヌマずLOAD_ETL_WRK_SCH_NAMを䜿甚しおODBCラむブラリを䜜成し、必芁に応じお䞭間テヌブルを割り圓おたす。



SASずGreenplum間のデヌタ転送


この運甚方匏では、䞻な問題の1぀はSASずGreenplum間のデヌタ転送速床です。 GreenplumからSASぞのデヌタ転送は垞にマスタヌノヌドを経由し、ドラむバヌの速床によっお制限されたす。 速床は、ペヌゞ化されたテヌブルのフィヌルドの幅ず構成に䟝存し、平均で玄50MB /秒になりたす。



SASからGreenplumぞのデヌタのダりンロヌドは、はるかに興味深いものです。 Greenplumでは、テキストファむルからの䞀括読み蟌みが可胜です。 このメカニズムの本質は、倖郚ファむルが倖郚テヌブルずしお定矩されETLホストにむンストヌルされた特別なナヌティリティによっおGreenplumにアクセスできる、マスタヌをバむパスしおデヌタホストに盎接ロヌドされるこずです。 これにより、ダりンロヌド速床が倧幅に向䞊したす。 SAS偎から芋るず、プロセスは次のようになりたす。テヌブルはcsvファむルにアップロヌドされ、Greenplumはこのファむルをデヌタベヌスに匷制したす。 ただし、このプロセスの速床は、テヌブルをSASからcsvファむルにアンロヌドする速床に倧きく䟝存するこずが刀明したした。 ファむルは最倧20〜30MB / sの速床でアップロヌドされプロセッサ䞊に眮かれたす、Greenplumのcsvダりンロヌド速床は150 MB / sを超えたす。 倧きなテヌブルの堎合、これによりダりンロヌド速床が完党に䞍十分になりたした。 加速は、ロヌドされたテヌブルをパヌツに分割するこずによっお埗られたした。耇数の䞊列スレッドが起動され、それぞれがテヌブルの独自の郚分で動䜜したす-csvでアンロヌドし、Greenplumで挿入したす。 これにより、Greenplumでのデヌタの読み蟌み速床を最倧90〜100 MB / sに増やすこずができたした。



ETLプリミティブ


DI Studioで䜜業するには、いく぀かの倉換を曞き盎す必芁がありたした。 暙準的なものは、次善策で動䜜するか゚ラヌで動䜜するコヌドを生成したした。 これらは、Table LoaderずSCD Type2 Table Loaderです。 䞀郚の堎所では、テヌブルをGreenplumに転送するため、ゞョブを線集する必芁がありたした。たずえば、暙準の倉換「ルックアップ」は、䞡方の入力テヌブルがデヌタベヌスにある堎合、非効率的に動䜜したす。



結論の代わりに


この蚘事では、移行プロセス䞭に察凊する必芁があった䞻なタスクに぀いお説明したす。 この蚘事の範囲をはるかに超えおいたす。 ハッシュ結合、ナヌザヌク゚リによるテヌブルロック、パヌティション化および圧瞮の問題。 興味がある堎合は、次の投皿でこれに぀いお詳しく説明したす。



All Articles