SAP HANA の理解

インメモリテクノロジーの必要性の説明

Objective

After completing this lesson, you will be able to インメモリアプリケーションプラットフォームとしての SAP HANA の説明

SAP HANA インメモリーテクノロジー

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

この図は、過去のコンピュータメモリおよびストレージアーキテクチャの進化を、マルチコア、マルチレベル、並列の各システムに示しています。

ハードウェア経済性が向上し、ソフトウェアイノベーションが進み、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 へのアクセスに最適な方法で整理します。

この図は、最適化された CPU 読み込みパフォーマンスのために、DRAM のローワイズデータストレージとカラムワイズデータストレージを比較します。

分析アプリケーションからデータベースに送信されるクエリは、多くの場合、テーブル内のデータ全体ではなく、サブセットのみを必要とします。通常、必要な列の数は限られています。カラムストアでは必要なカラムのみが検索されるため、メモリ内での不要な検索アクティビティを回避できます。

SAP HANA は、カラムストアを使用してデータのカラムをすばやくスキャンするため、通常追加の索引は必要ありません。そのため、索引を絶え間なく登録、削除、および再構築する必要がなくなり、複雑さの軽減に役立ちます。カラムストアテーブルは、各コアで別のカラムを処理できるため、並列処理に適しています。

カラムストアは分析処理 (OLAP) に最適と考えられていますが、デルタストアを含めることで、カラムストアもトランザクション処理 (OLTP) に最適なパフォーマンスを実現できます。書込用に最適化されているデルタストアを各カラムストアテーブルに追加することで、カラムテーブルは読込操作と書込操作の両方で高速性を発揮できます。

SAP HANA のカラムストアテーブルとローストアテーブル

SAP HANA データベースでは、カラムベースのテーブルとローベースのテーブルの両方がサポートされています。ただし、テーブルストレージはカラムテーブルに対して最適化されています。テーブルの登録時には、ユースケースに応じて、テーブルをカラムストアとローストアのどちらにするかを決定する必要があります。

カラムテーブルは、次の場合に使用します。

  • 少数の列に対して集計を実行する。
  • 少数の列のみの値に基づいて検索を実行する。
  • テーブルには多数の列があります。
  • テーブルに多くの行があり、主に列の演算を実行する。
  • 高い列圧縮率を実現する必要がある。

カラムストアで格納されるテーブルは、読込用に最適化されます。カラムストアテーブルの圧縮率は、ローストアで格納されるテーブルよりも優れています。また、SAP HANA データベースの一部の機能 (パーティショニングなど) はカラムテーブルでのみ利用できます。

カラムベースのストレージはバルク更新を使用する大きいテーブルに使用されます。ただし、圧縮カラムテーブルでは、ローテーブルよりも更新および挿入のパフォーマンスが低下します。SAP は、デルタストアを導入することで、カラムテーブルの更新と挿入の低パフォーマンスという課題に対処しました。各テーブルには、書込用に最適化された圧縮されていないデルタストアが追加されています。これにより、カラムテーブルの読込および書込機能が高速になります。

SAP HANA データベースでは、ローテーブルをカラムテーブルと結合できます。ただし、同じストレージタイプのテーブルを結合するほうが効率的です。

ローテーブルは、次の場合に使用します。

  • 一度に複数の単一レコードを処理するか、多数の選択および更新を行う必要がある。
  • レコード全体にアクセスしたい。
  • 列に主に固有値が含まれている。
  • 集約や高速検索の必要がない。
  • 行数が少ない。

ローストアテーブルは、ほとんどが小さなテーブルで、単一の更新処理が頻繁に行われます。ローストアテーブルは、SAP HANA データベースの起動時にメモリに完全にロードされます。ローストアテーブルには、読込パフォーマンスを改善するためのインデックスがあります。インデックスは、SAP HANA データベースが起動するたびに再登録されるため、常に最適な状態にあります。

既存のテーブルのストレージタイプを別のタイプに変更することもできます (ALTER TABLE ALTER TYPE)。

アプリケーションプラットフォームとしての SAP HANA

SAP HANA は設計が異なります。すべてのデータがインメモリおよび圧縮カラム形式で保存されます。

SAP HANA の設計はこれとは異なるため、合計、インデックス、マテリアライズドビュー、集約は必要ありません。これにより、データベースフットプリントが削減されます。すべては、オンデマンドおよびメインメモリで計算されます。このプロセスにより、企業は同じ SAP HANA データベースシステムでオンライントランザクション処理 (OLTP) と分析アプリケーション (OLAP) を同時に実行できます。これにより、あらゆるタイプのリアルタイム処理、特定のクエリ、および分析が可能になります。

また SAP は、カラム型データベースのあらゆる既知の問題に対処するために、同時実行性 (SAP HANA では MVCC を使用)、行レベルでの挿入と更新パフォーマンス (SAP HANA ではデルタストアのような各種メカニズムを使用) などのソリューションを構築しました。さらに、SAP HANA 内にエンジンも追加することで、以下の機能を提供できるようになりました。

SAP HANA では、以下のオープン標準がサポートされています。

  • Representational State Transfer (REST)

  • JavaScript Object Notation (JSON)

  • OLE DB for OLAP (ODBO)

  • MultiDimensional eXpressions (MDX)

  • Open Database Connectivity (ODBC)

  • Java Database Connectivity (JDBC)

SAP HANA プラットフォーム

SAP HANA プラットフォームは、データベース、データ処理、およびアプリケーションプラットフォームの各機能を組み合わせたものです。予測計画、テキスト、空間、およびビジネス分析のためのライブラリを提供し、ビジネスをリアルタイムで運用できるようにします。

この図は、SAP HANA プラットフォームのアーキテクチャとその主要なコンポーネントおよび機能を示しています。

SAP HANA はインメモリデータベース管理システムですが、特定のユースケースのための多くの追加機能も含まれています。その例としては、空間処理、検索、テキストマイニング、および統合ライブラリがあります。これらの機能の一部は、SAP HANA で従来のアプリケーションを実行する場合に使用することができます。その他は、まったく新しいインメモリアプリケーションで使用されます。

  • 仮想オンライン分析処理 (OLAP):

    分析目的で大量のデータを処理し、複雑な計算、モデリング、データマイニングをサポートします。

  • データ仮想化:組織、アプリケーション、データストレージの境界を越えてデータにアクセスして、ビジネスを完全に可視化します。

  • テキスト分析: 文書内のエンティティを検出および分類するための全文検索インデックスによって機能が有効化され、多くのエンティティタイプ、分析、および言語がサポートされます。

  • 検索: ほぼすべての可視データ型の単一または複数の列に対する検索、および標準の文字列検索がサポートされます。

  • 地理空間: ビジネスの空間データを分析し、地理空間アプリケーション、地理コンテンツおよびサービスを構築します。

  • グラフ: グラフ処理のサポートにより、SAP HANA システムに保存されているデータに対して一般的なグラフ操作を実行することができます。

  • Web: Web ベースの開発ワークベンチ (追加ツールのインストールなし)

これらの機能により、これまでなかったシナリオやユースケースを実現できます。従来のアプリケーションを SAP HANA で実行すると、従来のディスクベースの DBMS と比較して、すでに大きな利点があります。SAP HANA の革新的なデータモデルとアーキテクチャにアプリケーションを適応させることで、利点がさらに包括的になり、まったく新しいビジネスシナリオが可能になります。

ユーザは SAP HANA を多様なシナリオで使用します。最適化の可能性に加えて、SAP HANA をシステムランドスケープに統合する方法は、システムアーキテクチャ、管理、運用、セキュリティなどの側面にも影響します。そのため、シナリオを議論するにあたっては、すべての関係者を含めることが重要となります。

SAP HANA 拡張アプリケーションサービスアドバンストモデル

SAP HANA 拡張アプリケーションサービスアドバンストモデルは、データ集約型のネイティブアプリケーションの開発と実行に役立つ包括的なプラットフォームを提供します。

SAP HANA は、インメモリアーキテクチャと並列実行機能を活用して、SAP HANA で効率的に実行されるデータ集約型のネイティブアプリケーションの開発および実行のための包括的なプラットフォームとして機能します。適切に構造化されているため、アプリケーションはデータソースとの統合により、SAP HANA によって提供されるパフォーマンスの向上によって得ることができます。

SAP HANA 拡張アプリケーションサービスアドバンストモデルは、Java や Node.js など、複数のプログラミング言語や実行環境をサポートする多言語のアプリケーションプラットフォームです。一方、SAP HANA 拡張アプリケーションサービスクラシックモデルの JavaScript は、Node.js ランタイムで実行されるフレームワークでサポートされています。

簡単に言うと、SAP HANA 拡張アプリケーションサービスアドバンストモデルは基本的に、オープンソースの Platform-as-a-Service (PaaS) である Cloud Foundry に、SAP が提供する多数の微調整と拡張が加えられたものです。これらの SAP 拡張には、以下が含まれます。

  • SAP HANA データベースとの統合

  • OData サポート

  • SAP HANA 拡張アプリケーションサービスクラシックモデル (XSC) との互換性

  • アプリケーションのセキュリティを向上させるために設計された追加機能

SAP HANA 拡張アプリケーションサービスアドバンストモデル (XSA) では、複数のマイクロサービスで構成されるビジネスアプリケーションもサポートされます。これらは個別の Cloud Foundry アプリケーションとして実装され、総合してマルチターゲットアプリケーション (MTA) とも呼ばれます。MTA は Cloud Foundry アプリケーションに相当する複数のモジュールを含みます。

この図は、アプリケーションランタイム、データベース、デバイス/ブラウザ統合などのコンポーネントを含む、SAP の XS Advanced のアーキテクチャを示しています。

SAP HANA 拡張アプリケーションサービスエンジン

SAP HANA 拡張アプリケーションサービスは、SAP HANA ベースのネイティブ Web アプリケーションのアプリケーションサーバです。SAP HANA システムとともにインストールされ、開発者は追加のアプリケーションサーバを実行しなくても、SAP HANA ベースのアプリケーションを記述して実行することができます。SAP HANA 拡張アプリケーションサービスは、管理、ライフサイクル管理、開発など、SAP HANA に付属する Web ベースのツールを実行するためにも使用されます。

SAP HANA 拡張アプリケーションサービスクラシックモデル上のサーバ

SAP HANA 拡張アプリケーションサービスの従来のモデルは、SAP HANA 拡張アプリケーションサービスの元の実装です。SAP HANA 拡張アプリケーションサービスの従来のモデルにあるサーバは、個別のサーバプロセスとして実行することも、インデックスサーバ内に埋め込むこともできます。

SAP Web ディスパッチャは、システムデータベースのホスト上で個別のデータベースサービスとして実行され、クライアントからの受信 HTTP 要求を仮想ホスト名に基づいて適切な XS クラシックサーバにルーティングするために使用されます。これはネットワーク設定の一部です。システム内部 Web ディスパッチャに加えて、負荷分散用の外部 Web ディスパッチャを実装することができます。テナントデータベースでの負荷分散については、SAP Web ディスパッチャの使用に関するセクションを参照してください。

注記

SAP HANA XS クラシックおよび SAP HANA リポジトリは、SAP HANA に対して非推奨になりました。SAP ノート 2465027 - SAP HANA 拡張アプリケーションサービスクラシックモデルおよび SAP HANA リポジトリの非推奨化 (Deprecation of SAP HANA extended application services, classic model, and SAP HANA Repository) も参照してください。さらに、SAP ノート 2695472 - SAP HANA XS クラシック、SAP HANA リポジトリ、SAP Cloud Platform、SAP HANA サービスに関するステートメント (Statement on SAP HANA XS Classic and the SAP HANA Repository and SAP Cloud Platform, SAP HANA Service) も参照してください。

SAP HANA 拡張アプリケーションサービスアドバンストモデルのランタイム

開発、モデリング、およびツール向けの SAP HANA 拡張アプリケーションサービスは変更される予定です。今後は、SAP HANA 拡張アプリケーションサービスアドバンストモデル (XSA) をベースにしていきます。SAP HANA 拡張アプリケーションサービスのアドバンストモデルは、SAP HANA 内のアプリケーションサーバアーキテクチャの進化を表します。これは、強みを基礎とし、SAP HANA 拡張アプリケーションサービスの従来のモデルの範囲を拡大します。

SAP HANA 拡張アプリケーションサービスのアドバンストモデルのランタイムは、プラットフォームサービスおよびアプリケーションを実行するための複数のプロセスで構成されます。個々のサービスの詳細については、SAP HANA 管理ガイドを参照してください。

SAP HANA 拡張アプリケーションサービスのアドバンストモデルのランタイムは、専用ホストで実行されるか、または同じホスト上の他の SAP HANA コンポーネントとともに実行されます。

注記

新しいアプリケーションを開発する顧客とパートナは、SAP HANA 拡張アプリケーションサービスアドバンストモデル (XSA) を使用することをお奨めします。SAP HANA 拡張アプリケーションサービスの従来のモデルから既存のアプリケーションを移行して新しい拡張実行時環境で実行する場合は、最初に SAP HANA 拡張アプリケーションサービスアドバンストモデルのインストール済バージョンで使用可能な機能をチェックします。SAP HANA 拡張アプリケーションサービスのアドバンストモデルの機能が、移行する従来のアプリケーションの要件を満たしている場合は、移行プロセスを開始することができます。詳細については、SAP HANA XS アドバンスト移行ガイドを参照してください。

追加情報ソース

その他の SAP HANA 文書や情報については、以下のリソースを参照してください。

SAP HANA データベース管理のカリキュラム

以下のコースは、SAP HANA データベースシステム管理の領域で C_DBADM_2404 認定を受けるための前提条件です。