PR

【ABAP】オープンSQL/ネイティブSQLの違いを3分で

ABAP

オープンSQL(OpenSQL)とネイティブSQL(NativeSQL)とは何か?何が違うのか?

本ページでは、ABAPにおけるデータベース操作の際に必要となるオープンSQL/ネイティブSQLという基本知識について初心者向けに分かりやすく解説します。

初心者のうちはオープンSQLだけ知っておけば困ることはありませんが、ABAPerとして知っておきたい重要な内容です。

このページで学べる内容
  • オープンSQLとは?
  • データベースインターフェースの仕組み
  • ネイティブSQLとの違い
  • オープンSQLのメリット・デメリット

SAPエンジニアを目指す方であれば、知っておきたい重要知識です。是非最後までご覧ください。

スポンサーリンク

オープンSQL(OpenSQL)とは?

オープンSQL(OpenSQL)とは、ABAPとデータベース間に存在するデータベースインターフェースという機能を介してデータベースを操作するSQLのことです。

blank
OpenSQL vs NativeSQL

ネイティブSQLとの違いは、データベースインターフェースを介すか介さないかの違い。この1点のみです。

データベースインターフェースとは?

それでは、データベースインターフェースとは一体どのような機能なのか?簡単に言えば、データベースインターフェースとは、アプリケーションサーバとデータベースサーバの「翻訳機」のような機能です。

SAPの "データベース" と一言にいっても、SAPがサポートしているデータベースは多岐にわたります。代表的なもので「Microsoft SQL Server 」や「Oracle 」などがありますが、その他にもマイナーなデータベースまで幅広く利用することが可能です。

したがって、本来はそれぞれのデータベースサーバの分類に応じて発するべき命令(SQL文)も製品に合わせて微妙に調整が必要になります。

そんな面倒を解決してくれるのがデータベースインターフェースです。データベースインターフェースは、アプリケーションサーバから発せられる命令を「どのようなデータベースにも通じる言語へと翻訳」します。

どんなデータベースサーバを使っていたとしても、このデータベースインターフェースを介せば(つまりOpenSQLを利用すれば)、特段データベースサーバの分類を意識せずに目的とするデータを取ってきたり、編集することが可能となります。

オープンSQL:5つのメリット

ABAPにおけるSELECT文INSERT文などはすべてオープンSQLに分類されます。

わざわざネイティブSQLを利用するメリットがあまり存在しないことから、通常はオープンSQLでデータベース操作を行う場合が圧倒的多数。ここでは、オープンSQLとネイティブSQLの違いを比較しながら、オープンSQLのメリットを解説します。

オープンSQLのメリット
  • データベースに依存しないSQLの記述が可能
  • テーブルバッファリングが利用可能
  • クライアントを意識する必要がない
  • ABAPの構文チェック機能が利用できる
  • データの整合性を担保できる(LUW)

1つ1つ、メリットを深堀して解説します。

メリット1:データベースに依存しないSQL

まず、1つ目。オープンSQLには、データベースに依存せずに命令を発することができるという利点があります。

オープンSQLでは、発せられた命令はデータベースインターフェースを通して自動的に各データベースに合致するSQL文に翻訳されてから、データベースサーバに送信されます。

画像に alt 属性が指定されていません。ファイル名: 37b0372c73fa27e3c1c73f34708ce298.png

したがって、オープンSQLで動作するABAPプログラムはデータベースに依存しません。後述しますが、ネイティブSQLのようにわざわざデータベースごとの調整を行う必要がありません。

メリット2:テーブルバッファリングが利用可能

オープンSQLを利用すれば、バッファリングされたテーブルからデータを読み込むことができます。

逆に言えば、ネイティブSQLの場合はテーブルバッファリングの仕組みを利用することができないということです。

したがってデータベースサーバの負荷を減らし、読み取り速度を大幅に向上させることができます。

テーブルバッファリングとは?

簡単に言えば、テーブルバッファリングとは、データベース上のレコードをアプリケーションサーバー上にミラーリング(複製)しておくこと。

データベースサーバで処理を行う必要がなく、アプリケーションサーバー上でレコードの処理を行うので、パフォーマンス(処理速度)が大幅に向上するSAPの仕組みです。

詳しくは、以下の記事で詳しく解説しておりますので合わせてご覧ください。

メリット3:クライアントを意識する必要がない

OpenSQLのメリットの2つ目は、クライアントを意識する必要がないという点です。

SAPシステムは複数のクライアントで構成されているため、本来であればSQLもクライアントを意識して発行する必要があります。

つまり、どのクライアントのデータなのか?を意識する必要があるということ・・・。

その区別を行う必要がない点でOpenSQLに利があります。

OpenSQLを利用すれば、明示的に処理対象のクライアントを指定しなければ、自動的にプログラムが実行されるクライアントに紐づくデータの処理(自動クライアント処理)が行われます。

ネイティブSQLを利用する場合、SELECTしたいデータはどのクライアントのデータであるか?を必ず指定する必要があります。

メリット4:ABAPの構文チェック機能が利用できる

オープンSQLはABAP言語の一部という位置づけです。つまり、ABAPの構文チェック機能を利用することが可能です。(その分コーディングミスが減ります。)

一方で、ネイティブSQLは、ABAPの一部という位置づけではありません。ネイティブSQLを利用する際は、ABAP命令で「ネイティブSQL用」のプログラム領域を作り、その領域の中でネイティブSQLが動作する形となるため、ネイティブSQLでは構文チェック機能を利用することができません

厳密に説明すると、通常のABAP命令とOpenSQLの構文ルールは厳密には異なります。

ABAP命令では許容された文法が、OpenSQLではエラーとなる場合も存在します。

メリット5:LUW

OpenSQLを利用することで、データの整合性の維持が比較的容易になります。SAPが用意しているデータ担保の仕組みを介することが可能です。

LUWとは?

LUW(作業論理単位)とはデータが1つの状態からまた別の状態に移る間のことを指します。

LUW

LUWは、これ以上分割することができないデータベース更新の単位。つまり、データベースは「変更前」の状態か「変更後」の状態のいずれかしか保持せず、例えばINSERT命令DELETE命令等でレコードを追加・削除中にエラーが起きて中途半端にデータ更新が行われた ”中間状態” にはなりえないという概念です。

ネイティブSQLのメリット

では、逆にネイティブSQLを利用するのはどのようなシーンでしょうか?

ネイティブSQLを利用するには、データベース製品ごとの特性や制約を踏まえてコーディングする必要があるため、基本は避けたい記述方法ですが、実はネイティブSQLでしか実現できないことも存在します。

その代表例が、ABAPディクショナリで定義していないテーブルの操作です。

ネイティブSQLのメリット:オープンSQLではできないことができる

例えば、SAPと他システムが共存しているような業務システムの場合。

ネイティブSQLを利用すれば、直接他システムのデータベースを操作することが可能になります。システム間のインターフェースや、データレプリケーションなどの機能を実現する場合にネイティブSQLが利用されます。

直接対抗システムのデータベースにINSERTしたりDELETEしたり、ということができます。

つまり、ABAPディクショナリで登録されていないテーブルに対する操作を行う1つの方法としてネイティブSQLが利用されるということ。ただし、やはりそれ以外の場合では、できるだけオープンSQLを利用するのが簡単ですし可読性の高いソースコードとなるため、基本はオープンSQLを利用するのが鉄則です。

SAP / ABAPを1から学習したい方は

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

タイトルとURLをコピーしました