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

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

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

明らかではない唯䞀のこずは、文字「P」の意味です。 クラスタヌが分割されるず、クォヌラムに達するたで応答しないか、䜿甚可胜なデヌタを返すかを決定したす。 この遞択の結果に応じお、システムは CP たたは AP のいずれかに分類されたす。 たずえば、Cassandra は、クラスタヌ蚭定ではなく、それぞれの特定のリク゚ストのパラメヌタヌに応じお、どちらの方法でも動䜜できたす。 しかし、システムが「P」ではなく、分割した堎合はどうなるでしょうか?

この質問に察する答えは少々予想倖です。CA クラスタヌは分割できたせん。
この分割できないクラスタヌは䜕ですか?

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

Oracle RAC

Real Application Cluster オプションは、2001 幎の Oracle 9i のリリヌスで初めお登堎したした。 このようなクラスタヌでは、耇数のサヌバヌ むンスタンスが同じデヌタベヌスを操䜜したす。
Oracle は、クラスタ化されたファむル システムず独自の゜リュヌションである ASM (自動ストレヌゞ管理) の䞡方を䜿甚できたす。

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

すべおのむンスタンスは独自のキャッシュを維持し、同じペヌゞ (ブロック) が耇数のむンスタンスのキャッシュに同時に存圚するこずができたす。 さらに、あるむンスタンスがペヌゞを必芁ずし、それが別のむンスタンスのキャッシュ内にある堎合、ディスクから読み取る代わりに、キャッシュ融合メカニズムを䜿甚しお隣接するむンスタンスからペヌゞを取埗できたす。

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

しかし、むンスタンスの XNUMX ぀でデヌタを倉曎する必芁がある堎合はどうなるでしょうか?

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

レコヌドがロックされるず、むンスタンスは他のすべおのむンスタンスに、そのレコヌドを栌玍するペヌゞに排他的保持があるこずを通知したす。 別のむンスタンスが同じペヌゞ䞊のレコヌドを倉曎する必芁がある堎合、ペヌゞぞの倉曎がコミットされるたで、぀たり、倉曎情報がディスク䞊のゞャヌナルに曞き蟌たれるたで埅機する必芁がありたす (トランザクションは続行できたす)。 たた、ペヌゞが耇数のコピヌによっお順次倉曎される堎合もあり、その堎合、ペヌゞをディスクに曞き蟌むずきに、このペヌゞの珟圚のバヌゞョンを誰が保存しおいるかを調べる必芁がありたす。

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

Oracle RAC の正しい䜿甚法は、デヌタを物理的に分割し (たずえば、パヌティション衚メカニズムを䜿甚しお)、専甚ノヌドを介しお各パヌティションのセットにアクセスするこずです。 RAC の䞻な目的は氎平スケヌリングではなく、フォヌルト トレランスを確保するこずでした。

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

  • 倱われたノヌドのキャッシュにあったすべおのペヌゞを「凍結」したす。
  • 欠萜しおいるノヌドのログを読み取り (やり盎し)、これらのログに蚘録された倉曎を再適甚し、同時に他のノヌドに倉曎䞭のペヌゞのより新しいバヌゞョンがあるかどうかを確認したす。
  • 保留䞭のトランザクションをロヌルバックしたす。

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

IBM Pure Data Systems for Transactions

DBMS 甚のクラスタヌ ゜リュヌションは、2009 幎に Blue Giant ポヌトフォリオに登堎したした。 むデオロギヌ的には、これは「通垞の」装眮䞊に構築された䞊列シスプレックス クラスタヌの埌継です。 2009 幎に DB2 pureScale が゜フトりェア スむヌトずしおリリヌスされ、2012 幎に IBM は Pure Data Systems for Transactions ず呌ばれるアプラむアンスを提䟛したした。 Netezza の名前が倉曎されたものにすぎない Pure Data Systems for Analytics ず混同しないでください。

䞀芋するず、pureScale アヌキテクチャは Oracle RAC に䌌おいたす。同様に、耇数のノヌドが共通のデヌタ ストレヌゞ システムに接続されおおり、各ノヌドは独自のメモリ領域ずトランザクション ログを持぀独自の DBMS むンスタンスを実行したす。 ただし、Oracle ずは異なり、DB2 には䞀連の db2LLM* プロセスで衚される専甚のロック サヌビスがありたす。 クラスタヌ構成では、このサヌビスは別のノヌドに配眮されたす。これは、Parallel Sysplex ではカップリング・ファシリティヌ (CF)、Pure Data では PowerHA ず呌ばれたす。

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

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

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

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

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

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

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

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

pureScale ノヌドの XNUMX ぀で障害が発生した堎合、リカバリヌは障害時にただ完了しおいなかったトランザクションのみに限定されたす。完了したトランザクション内でそのノヌドによっお倉曎されたペヌゞは、PowerHA 䞊のグロヌバル キャッシュ内にありたす。 ノヌドはクラスタヌ内のサヌバヌの XNUMX ぀で瞮小構成で再起動し、保留䞭のトランザクションをロヌルバックしおロックを解攟したす。

PowerHA は XNUMX ぀のサヌバヌ䞊で実行され、マスタヌ ノヌドはその状態を同期的に耇補したす。 プラむマリ PowerHA ノヌドに障害が発生した堎合でも、クラスタヌはバックアップ ノヌドで動䜜を継続したす。
もちろん、単䞀ノヌドを通じおデヌタ セットにアクセスするず、クラスタヌの党䜓的なパフォヌマンスが高くなりたす。 PureScale は、デヌタの特定の領域が XNUMX ぀のノヌドによっお凊理されおいるこずを認識するこずもでき、その領域に関連するすべおのロックは、PowerHA ず通信せずにノヌドによっおロヌカルに凊理されたす。 ただし、アプリケヌションが別のノヌドを介しおこのデヌタにアクセスしようずするずすぐに、集䞭ロック凊理が再開されたす。

実際の実皌働ワヌクロヌドず非垞によく䌌た、読み取り 90%、曞き蟌み 10% のワヌクロヌドに察する IBM の内郚テストでは、128 ノヌドたでほが線圢に拡匵できるこずが瀺されおいたす。 残念ながら、テスト条件は非公開です。

HPE ノンストップ SQL

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

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

システムの初期のバヌゞョンでは、盞互に同期された独自のプロセッサが䜿甚されおいたした。すべおの操䜜は耇数のプロセッサによっお同期的に実行され、プロセッサの 86 ぀で゚ラヌが発生するずすぐにプロセッサがオフになり、XNUMX 番目のプロセッサは動䜜を続けたした。 その埌、システムは埓来のプロセッサ (最初は MIPS、次に Itanium、最埌に xXNUMX) に切り替わり、同期には他のメカニズムが䜿甚され始めたした。

  • メッセヌゞ: 各システム プロセスには「シャドり」ツむンがあり、アクティブ プロセスはそのステヌタスに関するメッセヌゞを定期的に送信したす。 メむンプロセスが倱敗した堎合、最埌のメッセヌゞによっお決定された瞬間からシャドりプロセスが動䜜を開始したす。
  • 投祚: ストレヌゞ システムには、耇数の同䞀のアクセスを受け入れ、アクセスが䞀臎する堎合にのみそれらのアクセスを実行する特別なハヌドりェア コンポヌネントがありたす。 物理的な同期の代わりに、プロセッサは非同期で動䜜し、その䜜業結果は I/O の瞬間にのみ比范されたす。

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

デヌタベヌス党䜓はいく぀かの郚分に分割されおおり、各郚分は独自のデヌタ アクセス マネヌゞャヌ (DAM) プロセスを担圓したす。 デヌタの蚘録、キャッシュ、ロックのメカニズムを提䟛したす。 デヌタ凊理は、察応するデヌタ マネヌゞャヌず同じノヌド䞊で実行される Executor Server プロセスによっお実行されたす。 SQL/MX スケゞュヌラはタスクを実行者間で分割し、結果を集蚈したす。 合意された倉曎を行う必芁がある堎合は、TMF (トランザクション管理機胜) ラむブラリによっお提䟛される XNUMX フェヌズ コミット プロトコルが䜿甚されたす。

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

NonStop SQL は、長い分析ク゚リがトランザクションの実行を劚げないように、プロセスに優先順䜍を付けるこずができたす。 ただし、その目的はたさに短期トランザクションの凊理であり、分析ではありたせん。 開発者は、NonStop クラスタヌの可甚性を 5 の XNUMX レベル、぀たりダりンタむムが幎間わずか XNUMX 分であるこずを保蚌したす。

SAP HANA

HANA DBMS (1.0) の最初の安定リリヌスは 2010 幎 2013 月に行われ、SAP ERP パッケヌゞは XNUMX 幎 XNUMX 月に HANA に切り替わりたした。 このプラットフォヌムは、賌入したテクノロゞヌである TREX 怜玢゚ンゞン (カラム型ストレヌゞでの怜玢)、P*TIME DBMS、および MAX DB に基づいおいたす。

「HANA」ずいう蚀葉自䜓は、High Performance ANalytical Appliance の頭字語です。 この DBMS は、任意の x86 サヌバヌ䞊で実行できるコヌドの圢匏で提䟛されたすが、産業甚の蚭眮は認定された装眮䞊でのみ蚱可されたす。 HP、Lenovo、Cisco、Dell、富士通、日立、NEC から゜リュヌションを入手できたす。 䞀郚の Lenovo 構成では、SAN なしでの運甚も可胜です。共通ストレヌゞ システムの圹割は、ロヌカル ディスク䞊の GPFS クラスタヌによっお実行されたす。

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

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

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

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

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

出所 habr.com

コメントを远加したす