私の理解が正しければ、基礎となるストレージと取得の問題に関心があり、DDL と定義の問題、つまり列指向のデータベースのカテゴリには関心がありませんね。
ベンダーに関係なく、ほぼすべてのストレージが次のような形式であることを理解していると仮定します。
- インデックスの B ツリー
- 整理されていないデータのヒープ
その基盤の上に、各ベンダーには最適化と特許取得済みの専門技術があります。例えば。Sybase (行) は次のとおりです。
- データ行を B ツリーに結合し、ヒープを排除するクラスター化インデックス。
次の問題は、すべてのベンダー (オラクルを除く) がモジュラー設計のかなり洗練されたエンジンを持っており、I/O は速度を得るために低レベルで非同期に処理されることです。I/O の単位はページです。通常、OLTP システムの場合は 2 ~ 8KB、DSS の場合は 8 ~ 64KB です。(行と列の問題を回避していることに注意してください。)したがって、行/列に関係なく、DSS エンジンは大量検索用に構築されています。これは、I/O 要求が少なく、大きなブロックでより多くのインデックス/データ行または列を取得できるためです。
「大規模な I/O」は、エクステント (8 ページ) とより大きな AllocationUnit (256 ページ) を 1 回の I/O 要求でメモリに読み込むことで実行できます。ただし、基本単位はページです。
行と列
- 行
- 各行はページ上の連続した単位であり、多数の行がページにパックされます。
- インデックスの場合、データ構造全体がキーの複合列であるため、それは実際には問題ではありません。インデックス エントリまたはレコードは小さなインデックス エントリ + ポインタであり、より多くのインデックス エントリが同じページにパックされます。
- 行数が少ない場合は非常に高速です。列集計の要約が遅い
。
- 桁
- 各列は、ページ上の連続した単位です。また、列は数百万のエントリ (行) になる可能性があるため、非常に多くのページに対して実行されます。
- インデックスは上記の行と同じです。列方向のナビゲーションが高速になるはずの特殊な形式のインデックスが追加されました。
- それらは柱状の集合体にとって驚異的です。列ベースのデータから行を構築するのが非常に遅い
エンジンに対して実行されるすべてのクエリは、インデックスをナビゲートし、上記のデータ ストレージ構造からデータの行/列を取得する必要があります。
結果は上記の乗算です。
小/大ブロックサイズ、倍
根底にある物理的構造、時代
行/列の向き
それはあなたが探していたものですか?OLTP/DSS の厳密な行指向エンジンである Sybase ASE の上記の一連の技術的な (ウォームでファジーではない) 図があります。興味があれば、私が手に入れることができます。
コメントへの対応
.
つまり、データベースの種類に関係なく、最終的にはページに要約されるということです。
はい。
この場合、データベースのクラスタリングがどのように行われるか。行形式でデータを格納するデータベースを考えてみましょう。このタイプのデータベースのクラスタリングを行っている場合、構造化されたテーブルはどのように正確に異なるノードに運ばれますか (複数のノードがある場合)。このテーブル構造はページにリンクされますか、それとも別のメカニズムを介してリンクされますか。
質問に答える前に、あなたに感謝しなければなりません。あなたのようなレベルの知識を持っている人にとって、あなたがその重要なポイントに到達し、その洞察を得たことは素晴らしいことです. シバキジャイ!
はい、これはクラスター化された DBMS の重要な設計上の問題であり、重要な制限の問題であり、クラスタリングに関連するさまざまな設計上の問題の中でも特に重要です。ベンダーがこの問題をうまく処理すれば、クラスターはうまく機能します。そうでない場合、クラスターは犬の朝食です。
IT のすべては物理法則に支配されています。無料のものはありません。機能のすべての機能には、コスト、処理、またはストレージがあります。MS のマーケティング パンフレットを除いて、魔法はありません。
優れたクラスター化された DB アーキテクチャ
クラスター化された DBMS をすべて知っているわけではありません。私は Sybase CE と Oracle RAC をよく知っています。Sybase IQ の実用的な知識。
- Oracle RACはずっと以前から存在しており、より成熟しています。この重大な問題をかなりひどく処理します。そのため、最終的にはそれ自体と競合することになり、元の見積もりよりもはるかに多くの CPU パワー (ノードではなくコア、CPU) が必要になります。ノードが多いほど、競合が多くなります。
.
Oracle の非 RAC アーキテクチャはくだらない、より正確には存在しないことに注意してください。そのため、RAC には土台となる土台があります。
.
言うまでもなく、安定性は死んだクマを吸う.
.
Sybase CEは 1 年しか経っていません。しかし、アーキテクチャは素晴らしく、この重大な問題を非常にうまく処理しています。SAN 上のページのバージョンは 1 つだけです。すべてのノードが SAN に接続されています。どのノードもページを読み書きできます。ノードはプライベート LAN によって接続されます (ネットワーク上の他のすべてで使用される通常のクライアント/サーバー LAN に加えて)。ノードは、ロックに加えて、ロードバランシングなどのためのノード間通信を調整します
。
結局のところ、同時実行性を最大にするには、Sybase CE を使用しても、データベースを論理的に分割する必要があります。これにより、各ノードのワークロードが分離され、異なるファイルパスにアクセスするか、共有データベースの物理領域が分離されます。
Sybase IQはすでに 100% 列指向です。それは彼らのDWオファリングです。すでに完全な負荷分散を行っています。クラスターとして使用できますが、上記の CE の意味でのクラスター化は使用できません。中に入れるべきだった
貧弱なクラスター化された DB アーキテクチャー
クラスター化された dbms の犬の朝食タイプは、愚かなことをします。いくつかをリストするには:
専用 DB サーバーに適していないクラスター
基本的にクラスターは一部のアプリケーションには最適ですが、専用の db サーバー (1 つの事実を 1 か所で管理、共有リソースをまとめて管理、ロックの競合はデータが 1 か所にあるため、1 か所で管理すると最も効率的) には愚かなアイデアです。 )。db サーバーにクラスターを推奨することは決してありません。
SANの問題と同じです。確かに、多くの人がデータベース ストレージを SAN 内に配置していますが、最高速度と、SAN に接続された他のサーバーの負荷の問題からの分離のために、ローカル ディスクに匹敵するものはありません。
VMWareの問題と同じ。確かに、多くの人が db サーバーを VMWare ホスト ユニットとして確立していますが、最高速度を得るには、VMWare のオーバーヘッドを取り除きます。シャーシ内の他のホスト ユニットの負荷の問題から分離するには、専用のハード ボックスに移動します。
DB ベンダーがクラスターにこだわる理由
ああ、そこには価値がありますが、今ではなく、将来です。AFAIC、Sybase アーキテクチャは時間の経過とともに優勢になり、他のすべてのアーキテクチャは道に迷うでしょう。すべてのベンダーは通常どおりコピーします。
Sybase CE の真の力は次のとおりです。
true 100% のアップタイム (クラスターにノードを追加し、メンテナンスのために古いノードを停止できる) および
完全に動的な負荷分散 (既存のノードが 4 x クアッド コアであるとします。一時的な 4 x クアッド コア ノードを追加し、古いノードを停止し、2 つのクアッド コアを挿入し、それを起動し、一時ノードを停止します) 60 秒間、どのキーボードにも指がない状態で、獣全体のバランスが再調整されます。
いくつかの単一ノード サーバーの毎晩のデータベース メンテナンス スケジュールをずらすことができるショップは、かなりの金額を節約できます。イン/アウトを切り替えるための追加のマシンがいくつかあるだけです。
データ ウェアハウスは少し異なります。それらはほとんど読み取り専用です。したがって、クラスターでホストすることは問題ありません (多くのリーダー ノード、1 つのライター ノードのみ、競合なし、ページが読み取られているときにページが書き込まれていることを気にする人はいません)。Sybase IQ はそのような製品です。
列指向の Sybase CE
Sybase IQ はすでに列指向であり、クラスタに展開できますが、前述の CE の意味でのクラスタリングはできません。列はページにマップされます。上記のGood Clustered Db Architectureに含める必要がありましたが、現在修正されています。
価値のある列指向と行指向を組み合わせたハイブリッドについては知りません。
しかし、その質問に対する完全な答えは、Sybase ASE や ASE/CE などの純粋な Db (DW ではない) を使用し、真の第 6 正規形データベースを実装することです。これは究極のノーマライゼーションであり、削減不可能な NF であり、速度やピボットの容易さなど、いくつかの実質的な利点があります。ページに列指向のストレージを提供します。SQL は 6NF を完全にはサポートしていないため、(格納された) 6NF 構造から 5NF 行を提供するビューを提供する必要があります。開発者が使用する SQL コードを生成できるように、カタログの拡張機能を作成しました。