インメモリコンピューティング

ハードウェア経済性が向上し、ソフトウェアイノベーションが進み、SAP はインメモリービジネスアプリケーションによるリアルタイムエンタープライズのビジョンを実現できるようになりました。
過去:ディスク中心の単一処理プラットフォーム
データ量が増加すると、データ転送で大きなボトルネックが発生します。たとえば、ストレージディスクからサーバへの入出力 (I/O) 転送速度は、データボリュームに追いついていません。また、ディスク中心のコンピューティングは、データ管理においても深刻なボトルネックを引き起こします。その結果、オンライントランザクションとバッチプロセスの遅延が発生しています。
そのような過去のパフォーマンスボトルネックを克服するために、IT システムは非常に複雑な分散アーキテクチャになっています。この分散化された設計により、ビジネスユーザの柔軟性が損なわれ、すべてのビジネスデータの同期を維持するために多大なコストがかかっていました。
現在:インメモリーテクノロジーによって主導される低遅延コンピューティング
上記の課題の解決策は、すべてのビジネスデータを 1 カ所に集約し、すべてのビジネスユーザが 24 時間 365 日利用できるようにすることですが、最新のハードウェアが利用可能になるまでは実現できませんでした。最新のハードウェアアーキテクチャによってインメモリコンピューティングが可能になったことで、この新しいアーキテクチャをサポートするべく、SAP HANA が一から構築されました。
ローストアとカラムストア
SAP HANA は、ACID 準拠のインメモリデータベースです。ACID は、データベースがサポートする原子性 (Atomicity)、一貫性 (Consistency)、分離 (Isolation)、および永続性 (Durability) の頭文字です。これはデータベースの主要な要件であり、ミッションクリティカルなアプリケーションに対して 100% の信頼性を確保します。データベースは、複数のテーブルで多数の同時更新がある場合でも、データの正確性と整合性を保証する必要があります。
従来のデータベースシステム (インメモリテクノロジなし) は、1 つのワークロード (OLTP または OLAP) に焦点を当てています。SAP HANA は、トランザクションワークロードと分析ワークロードを非常に適切に処理するため、これは変化しました。SAP HANA データベースではデータが列形式で格納されるため、データを DRAM で CPU へのアクセスに最適な方法で整理します。

分析アプリケーションからデータベースに送信されるクエリは、多くの場合、テーブル内のデータ全体ではなく、サブセットのみを必要とします。通常、必要な列の数は限られています。カラムストアでは必要なカラムのみが検索されるため、メモリ内での不要な検索アクティビティを回避できます。
SAP HANA は、カラムストアを使用してデータのカラムをすばやくスキャンするため、通常追加の索引は必要ありません。そのため、索引を絶え間なく登録、削除、および再構築する必要がなくなり、複雑さの軽減に役立ちます。カラムストアテーブルは、各コアで別のカラムを処理できるため、並列処理に適しています。
カラムストアは分析処理 (OLAP) に最適と考えられていますが、デルタストアを含めることで、カラムストアもトランザクション処理 (OLTP) に最適なパフォーマンスを実現できます。書込用に最適化されているデルタストアを各カラムストアテーブルに追加することで、カラムテーブルは読込操作と書込操作の両方で高速性を発揮できます。
SAP HANA のカラムストアテーブルとローストアテーブル
SAP HANA データベースでは、カラムベースのテーブルとローベースのテーブルの両方がサポートされています。ただし、テーブルストレージはカラムテーブルに対して最適化されています。テーブルの登録時には、ユースケースに応じて、テーブルをカラムストアとローストアのどちらにするかを決定する必要があります。
カラムテーブルは、次の場合に使用します。
- 少数の列に対して集計を実行する。
- 少数の列のみの値に基づいて検索を実行する。
- テーブルには多数の列があります。
- テーブルに多くの行があり、主に列の演算を実行する。
- 高い列圧縮率を実現する必要がある。
カラムストアで格納されるテーブルは、読込用に最適化されます。カラムストアテーブルの圧縮率は、ローストアで格納されるテーブルよりも優れています。また、SAP HANA データベースの一部の機能 (パーティショニングなど) はカラムテーブルでのみ利用できます。
カラムベースのストレージはバルク更新を使用する大きいテーブルに使用されます。ただし、圧縮カラムテーブルでは、ローテーブルよりも更新および挿入のパフォーマンスが低下します。SAP は、デルタストアを導入することで、カラムテーブルの更新と挿入の低パフォーマンスという課題に対処しました。各テーブルには、書込用に最適化された圧縮されていないデルタストアが追加されています。これにより、カラムテーブルの読込および書込機能が高速になります。
SAP HANA データベースでは、ローテーブルをカラムテーブルと結合できます。ただし、同じストレージタイプのテーブルを結合するほうが効率的です。
ローテーブルは、次の場合に使用します。
- 一度に複数の単一レコードを処理するか、多数の選択および更新を行う必要がある。
- レコード全体にアクセスしたい。
- 列に主に固有値が含まれている。
- 集約や高速検索の必要がない。
- 行数が少ない。
ローストアテーブルは、ほとんどが小さなテーブルで、単一の更新処理が頻繁に行われます。ローストアテーブルは、SAP HANA データベースの起動時にメモリに完全にロードされます。ローストアテーブルには、読込パフォーマンスを改善するためのインデックスがあります。インデックスは、SAP HANA データベースが起動するたびに再登録されるため、常に最適な状態にあります。
既存のテーブルのストレージタイプを別のタイプに変更することもできます (ALTER TABLE ALTER TYPE)。

