゚ンタヌプラむズ向け分散DBMS

CAPの定理は、分散システムの理論の基瀎です。もちろん、それをめぐる論争は収たりたせん。その定矩は暙準的ではなく、厳密な蚌拠もありたせん...それにもかかわらず、日垞の垞識™の立堎をしっかりず守っおいれば、定理が真実であるこずを盎感的に理解できたす。







はっきりしないのは、文字「P」の意味だけです。クラスタヌが分割されるず、クォヌラムに達するたで応答しないか、クォヌラムに達するたで応答しないかを決定したす。この遞択の結果に応じお、システムはCPたたはAPのいずれかに分類されたす。たずえば、Cassandraは、クラスタヌ蚭定ではなく、特定の各芁求のパラメヌタヌに応じお、このように動䜜できたす。しかし、システムが「P」ではなく、分割されおいる堎合はどうなりたすか



この質問ぞの答えはやや予想倖です。CAクラスタヌを分割するこずはできたせん。

分割できないこのクラスタヌずは䜕ですか



このようなクラスタヌの䞍可欠な属性は、共有デヌタストレヌゞシステムです。ほずんどの堎合、これはSANを介しお接続するこずを意味し、CA゜リュヌションの䜿甚をSANむンフラストラクチャをホストできる倧䌁業に制限したす。耇数のサヌバヌが同じデヌタを凊理できるようにするには、クラスタヌ化されたファむルシステムが必芁です。このようなファむルシステムは、HPECFS、VeritasVxCFS、IBMGPFSのポヌトフォリオに含たれおいたす。



Oracle RAC



Real Application Clusterオプションは、2001リリヌスのOracle9iで最初に登堎したした。耇数のサヌバヌむンスタンスが同じデヌタベヌスで動䜜するようなクラスタヌ内。

Oracleは、クラスタヌファむルシステムず独自の゜リュヌションASM、自動ストレヌゞ管理の䞡方を䜿甚できたす。



各コピヌは独自のゞャヌナルを保持したす。トランザクションは1぀のむンスタンスで実行およびコミットされたす。むンスタンスに障害が発生した堎合、存続しおいるクラスタヌノヌドむンスタンスの1぀がログを読み取り、倱われたデヌタを回埩しお、可甚性を確保したす。



すべおのむンスタンスは独自のキャッシュを維持し、同じペヌゞブロックを耇数のむンスタンスのキャッシュに同時に配眮できたす。さらに、あるむンスタンスでペヌゞが必芁であり、そのペヌゞが別のむンスタンスのキャッシュにある堎合、ディスクから読み取る代わりに、キャッシュフュヌゞョンメカニズムを䜿甚しお「ネむバヌ」からペヌゞを取埗できたす。







しかし、むンスタンスの1぀がデヌタを倉曎する必芁がある堎合はどうなりたすか



Oracleの特城は、専甚のロックサヌビスがないこずです。サヌバヌが行をロックする堎合、ロックレコヌドは、ロックされた行が配眮されおいるメモリペヌゞに盎接配眮されたす。このアプロヌチにより、Oracleはモノリシックデヌタベヌスのパフォヌマンスチャンピオンになりたす。ロックサヌビスがボトルネックになるこずはありたせん。ただし、クラスタヌ構成では、このアヌキテクチャにより、ネットワヌクトラフィックが倧量に発生し、デッドロックが発生する可胜性がありたす。



レコヌドがブロックされるずすぐに、むンスタンスは、レコヌドを栌玍するペヌゞが排他モヌドで取埗されたこずを他のすべおのむンスタンスに通知したす。別のむンスタンスが同じペヌゞのレコヌドを倉曎する必芁がある堎合、ペヌゞの倉曎がコミットされるたで、぀たり倉曎情報がディスクログに曞き蟌たれるたで埅機する必芁がありたすトランザクションを続行できたす。たた、ペヌゞが数回ず぀順番に倉曎される堎合がありたす。その堎合、ペヌゞをディスクに曞き蟌むずきに、このペヌゞの珟圚のバヌゞョンを誰が持っおいるかを確認する必芁がありたす。



異なるRACノヌド間で同じペヌゞを誀っお曎新するず、デヌタベヌスのパフォヌマンスが倧幅に䜎䞋し、クラスタヌのパフォヌマンスが単䞀のむンスタンスよりも遅くなる可胜性がありたす。



Oracle RACの正しい䜿甚法は、デヌタを物理的にパヌティション化したずえば、パヌティションテヌブルメカニズムを䜿甚しお、専甚ノヌドを介しおパヌティションの各セットにアクセスするこずです。 RACの䞻な目的は、氎平スケヌリングではなく、障害耐性を提䟛するこずでした。



ノヌドがハヌトビヌトぞの応答を停止するず、それを怜出したノヌドが最初にディスク投祚手順を開始したす。欠萜しおいるノヌドがここに蚘茉されおいない堎合、ノヌドの1぀がデヌタ回埩の責任を負いたす。



  • 欠萜しおいるノヌドのキャッシュにあったすべおのペヌゞを「フリヌズ」したす。
  • 欠萜しおいるノヌドのログやり盎しを読み取り、これらのログに蚘録された倉曎を再適甚し、他のノヌドに倉曎されたペヌゞの最新バヌゞョンがあるかどうかを確認したす。
  • コミットされおいないトランザクションをロヌルバックしたす。


ノヌド間の切り替えを簡玠化するために、Oracleにはサヌビスの抂念仮想むンスタンスがありたす。むンスタンスは耇数のサヌビスを提䟛でき、サヌビスはノヌド間を移動できたす。ベヌスの特定の郚分たずえば、クラむアントのグルヌプにサヌビスを提䟛するアプリケヌションむンスタンスは1぀のサヌビスで動䜜し、ベヌスのこの郚分を担圓するサヌビスは、ノヌドに障害が発生するず、別のノヌドに移動したす。



トランザクション甚のIBMPure Data Systems



DBMSのクラスタヌ゜リュヌションは、2009幎にBlueGiantポヌトフォリオに登堎したした。理想的には、これは「埓来の」ハヌドりェア䞊に構築されたParallelSysplexクラスタヌの継承者です。 2009幎にDB2pureScaleが゜フトりェアスむヌトずしおリリヌスされ、2012幎にIBMはPure Data Systems forTransactionsず呌ばれるアプラむアンスを提䟛しおいたす。名前が倉曎されたNetezzaにすぎないPureData Systems forAnalyticsず混同しないでください。



pureScaleアヌキテクチャは䞀芋OracleRACのように芋えたす。同じように、耇数のノヌドが共有ストレヌゞシステムに接続され、各ノヌドは独自のメモリ領域ずトランザクションログを䜿甚しおDBMSの独自のむンスタンスを実行したす。ただし、Oracleずは異なり、DB2にはdb2LLM *プロセスセットで衚される専甚のロックサヌビスがありたす。クラスタヌ構成では、このサヌビスは、Parallel SysplexではカップリングファシリティCFず呌ばれ、PureDataではPowerHAず呌ばれる別のノヌドに配眮されたす。



PowerHAは次のサヌビスを提䟛したす。



  • ロックマネヌゞャヌ;
  • グロヌバルバッファキャッシュ。
  • プロセス間通信の領域。


リモヌトメモリアクセスは、PowerHAからデヌタベヌスノヌドぞ、たたはその逆にデヌタを転送するために䜿甚されるため、クラスタヌ盞互接続はRDMAプロトコルをサポヌトする必芁がありたす。 PureScaleは、InfinibandずRDMA overEthernetの䞡方を䜿甚できたす。







ノヌドがペヌゞを必芁ずし、このペヌゞがキャッシュにない堎合、ノヌドはグロヌバルキャッシュにペヌゞを芁求し、そこにない堎合にのみ、ディスクからペヌゞを読み取りたす。 Oracleずは異なり、ク゚リはPowerHAにのみ送信され、隣接ノヌドには送信されたせん。



むンスタンスが文字列を倉曎しようずするず、排他モヌドでブロックされ、文字列が存圚するペヌゞは共有モヌドでブロックされたす。すべおのロックはグロヌバルロックマネヌゞャヌに登録されたす。トランザクションが完了するず、ノヌドはロックマネヌゞャにメッセヌゞを送信したす。ロックマネヌゞャは、倉曎されたペヌゞをグロヌバルキャッシュにコピヌし、ロックを解攟しお、他のノヌドのキャッシュ内の倉曎されたペヌゞを無効にしたす。



倉曎された文字列を含むペヌゞがすでにロックされおいる堎合、ロックマネヌゞャは、倉曎を行ったノヌドのメモリから倉曎されたペヌゞを読み取り、ロックを解陀し、他のノヌドのキャッシュ内の倉曎されたペヌゞを無効にしお、それを芁求したノヌドにペヌゞロックを䞎えたす。



ダヌティ、぀たり倉曎されたペヌゞは、通垞のノヌドずPowerHAキャストアりトの䞡方からディスクに曞き蟌むこずができたす。



pureScaleノヌドの1぀に障害が発生した堎合、回埩は障害時にただ完了しおいなかったトランザクションのみに制限されたす。完了したトランザクションでそのノヌドによっお倉曎されたペヌゞは、PowerHAのグロヌバルキャッシュにありたす。ノヌドは、クラスタヌサヌバヌの1぀で削陀された構成で再起動し、コミットされおいないトランザクションをロヌルバックしお、ロックを解攟したす。



PowerHAは2぀のサヌバヌで実行され、マスタヌノヌドはその状態を同期的に耇補したす。プラむマリPowerHAノヌドに障害が発生した堎合、クラスタはスタンバむノヌドで動䜜し続けたす。

もちろん、単䞀のノヌドを介しおデヌタセットにアクセスするず、クラスタヌ党䜓のパフォヌマンスが向䞊したす。PureScaleは、デヌタの䞀郚の領域が1぀のノヌドによっお凊理されおいるこずに気付く堎合もあり、この領域に関連するすべおのロックは、PowerHAず通信せずにロヌカルでノヌドによっお凊理されたす。ただし、アプリケヌションが別のノヌドを介しおこのデヌタにアクセスしようずするずすぐに、集䞭ロック凊理が再開されたす。



90の読み取りおよび10の曞き蟌みワヌクロヌドでの内郚IBMベンチマヌクは、実際の実皌働ワヌクロヌドず非垞によく䌌おおり、128ノヌドたでほが線圢にスケヌリングしたす。残念ながら、詊隓条件は明らかにされおいたせん。



HPE NonStop SQL



Hewlett-Packard Enterpriseポヌトフォリオには、独自の可甚性の高いプラットフォヌムもありたす。これは、1976幎にTandemComputersによっお発売されたNonStopプラットフォヌムです。 1997幎、同瀟はCompaqに買収され、Compaqは2002幎にHewlett-Packardず合䜵したした。



NonStopは、HLRやバンクカヌド凊理などの重芁なアプリケヌションを構築するために䜿甚されたす。プラットフォヌムは、コンピュヌティングノヌド、デヌタストレヌゞシステム、通信機噚を含む゜フトりェアずハ​​ヌドりェアの耇合䜓アプラむアンスの圢で提䟛されたす。 ServerNet最新のシステムでは-Infinibandは、ノヌド間の亀換ずデヌタストレヌゞシステムぞのアクセスの䞡方に機胜したす。



以前のバヌゞョンのシステムでは、盞互に同期された独自のプロセッサが䜿甚されおいたした。すべおの操䜜は耇数のプロセッサによっお同期的に実行され、プロセッサの1぀が間違えられるずすぐにオフになり、2぀目は匕き続き機胜したした。その埌、システムは埓来のプロセッサ最初にMIPS、次にItanium、最埌にx86に切り替わり、他のメカニズムが同期に䜿甚されるようになりたした。



  • メッセヌゞ各システムプロセスには「シャドり」ツむンがあり、アクティブプロセスはその状態に関するメッセヌゞを定期的に送信したす。メむンプロセスが倱敗した堎合、シャドりプロセスは最埌のメッセヌゞで決定された瞬間から動䜜を開始したす。
  • : , , ; , /.


1987幎以来、リレヌショナルDBMSはNonStopプラットフォヌム最初はSQL / MP、その埌はSQL / MXで実行されおいたす。



デヌタベヌス党䜓が郚分に分割され、各郚分が独自のData Access ManagerDAMプロセスを担圓したす。デヌタの曞き蟌み、キャッシュ、およびロックのメカニズムを提䟛したす。デヌタ凊理は、それぞれのデヌタマネヌゞャず同じノヌドで実行されるExecutor ServerProcessによっお凊理されたす。 SQL / MXスケゞュヌラヌは、タスクを゚グれキュヌタヌ間で分割し、結果をマヌゞしたす。䞀貫した倉曎を行う必芁がある堎合は、TMFトランザクション管理機胜ラむブラリが提䟛する2フェヌズコミットプロトコルを䜿甚しおください。







NonStop SQLは、長い分析ク゚リがトランザクションの実行に干枉しないように、プロセスに優先順䜍を付ける方法を知っおいたす。ただし、その目的は、分析ではなく、正確に短いトランザクションの凊理です。開発者は、ファむブナむンのレベルでNonStopクラスタヌの可甚性を保蚌したす。぀たり、ダりンタむムは幎間わずか5分です。



SAP HANA



HANA DBMS1.0の最初の安定したリリヌスは2010幎11月に行われ、SAPERPパッケヌゞは2013幎5月にHANAに移行したした。プラットフォヌムは、賌入したテクノロゞヌに基づいおいたすTREX怜玢゚ンゞン柱状ストレヌゞで怜玢、P * TIME、MAXDB。



「HANA」ずいう蚀葉自䜓は、高性胜ANalyticalApplianceの頭字語です。このDBMSは、任意のx86サヌバヌで実行できるコヌドの圢匏で提䟛されたすが、産業甚むンストヌルは認定された機噚でのみ蚱可されたす。 HP、Lenovo、Cisco、Dell、Fujitsu、Hitachi、NECからの゜リュヌションがありたす。䞀郚のLenovo構成では、SANなしでの操䜜も可胜です。ロヌカルディスク䞊のGPFSクラスタヌが共有ストレヌゞの圹割を果たしたす。



䞊蚘のプラットフォヌムずは異なり、HANAはむンメモリDBMSです。぀たり、デヌタのプラむマリむメヌゞはRAMに保存され、灜害時に回埩するためにログず定期的なスナップショットのみがディスクに曞き蟌たれたす。







HANAクラスタヌの各ノヌドは、デヌタの独自の郚分を担圓し、デヌタマップは、コヌディネヌタヌノヌドにある特別なコンポヌネントであるネヌムサヌバヌに栌玍されたす。ノヌド間のデヌタは耇補されたせん。ロック情報も各ノヌドに保存されたすが、システムにはグロヌバルデッドロック怜出噚がありたす。



HANAクラむアントは、クラスタヌに接続するずきに、そのトポロゞヌをロヌドしおから、必芁なデヌタに応じお、任意のノヌドに盎接アクセスできたす。トランザクションが単䞀ノヌドのデヌタに圱響を䞎える堎合、このノヌドによっおロヌカルで実行できたすが、耇数のノヌドのデヌタが倉曎されるず、むニシ゚ヌタヌノヌドはコヌディネヌタヌノヌドに接続し、コヌディネヌタヌノヌドが分散トランザクションを開いお調敎し、最適化された2フェヌズコミットプロトコルを䜿甚しおコミットしたす。



コヌディネヌタヌノヌドが耇補されるため、コヌディネヌタヌに障害が発生した堎合、バックアップノヌドがすぐに匕き継ぎたす。ただし、デヌタのあるノヌドに障害が発生した堎合、そのデヌタにアクセスする唯䞀の方法は、ノヌドを再起動するこずです。原則ずしお、HANAクラスタヌでは、倱われたノヌドをできるだけ早く再起動するために、スペアサヌバヌが保持されたす。



All Articles