ADC

DataStreamリファレンス

このリファレンスでは、MySQL プロトコルと TDS プロトコル、データベースバージョン、認証方法、DataStream 機能でサポートされる文字セットについて説明します。また、接続の状態を変更するトランザクションリクエストや特別なクエリをNetScalerがどのように処理するかについても説明します。

DataStream機能の監査ログメッセージを生成するようにNetScalerアプライアンスを構成することもできます。

サポートされているデータベースバージョン、プロトコル、認証方法

  MySQL データベース MS SQL データベース
データベースバージョン MySQL データベースバージョン 4.1、5.0、5.1、5.4、5.5、5.6、および 5.7。MySQL データベースバージョン 8.0、8.1、8.2 は、データベースユーザーのネイティブ認証が有効になっている場合にのみサポートされます。 MS SQL データベースバージョン 70、2000、2000SP1、2005、2008、2008R2、2012、2014 (ケルベロス認証サポート)。NetScaler パラメータ-mssqlServerVersion 2014を設定することで、2016 年、2017 年、2019 年、および 2022 年にバックエンド MS SQL サーバーを TDS 7.4 で構成できます。常時接続可用性グループは、MS SQL バージョン 2012 と 2014 でのみサポートされています。
プロトコル MySQL プロトコルのバージョン 10。MySQL プロトコルの詳細については、「 MySQL クライアント/サーバープロトコル」を参照してください 表形式データストリーム (TDS) プロトコルバージョン 7.1 ~ 7.4。TDS プロトコルの詳細については、表形式データストリームプロトコルを参照してください
認証方法 MySQL ネイティブ認証がサポートされています。 SQL サーバー認証と Windows 認証 (Kerberos/NTLM) がサポートされています。

文字セット

DataStream 機能は UTF-8 文字セットのみをサポートします。

リクエストを送信する際にクライアントが使用する文字セットは、データベースサーバーの応答で使用される文字セットとは異なる場合があります。charset パラメータは接続確立時に設定されますが、SQL クエリを送信することでいつでも変更できます。文字セットは接続に関連付けられているため、ある文字セットの接続に対するリクエストを別の文字セットの接続に多重化することはできません。

NetScalerアプライアンスは、クライアントから送信されたクエリとデータベースサーバーから送信された応答を解析します。

接続に関連する文字セットは、最初のハンドシェイクの後に次の 2 つのクエリを使用して変更できます:

SET NAMES <charset> COLLATION <collation>

SET CHARACTER SET <charset>
<!--NeedCopy-->

トランザクション

MySQL では、トランザクションは接続パラメータ AUTOCOMMIT または BEGIN: COMMIT クエリを使用して識別されます。AUTOCOMMIT パラメータは、最初のハンドシェイク中に設定することも、接続が確立された後に SET AUTOCOMMIT クエリを使用して設定することもできます。

NetScalerアプライアンスは各クエリを明示的に解析して、トランザクションの開始と終了を決定します。

MySQL プロトコルでは、応答には接続がトランザクションかどうかを示す 2 つのフラグ (TRANSACTION フラグと AUTOCOMMIT フラグ) が含まれます。

接続がトランザクションの場合、TRANSACTION フラグが設定されます。または、オートコミットモードがオフの場合、オートコミットフラグは設定されません。ADC アプライアンスは応答を解析し、TRANSACTION フラグが設定されているか AUTOCOMMIT フラグが設定されていない場合、接続の多重化は行いません。これらの条件が満たされなくなると、ADCアプライアンスは接続の多重化を開始します。

トランザクションは MS SQL でもサポートされています。

特別なクエリ

SET や PREPARE など、接続の状態を変更してリクエストの切り替えを中断する可能性のある特殊なクエリがあるため、これらのクエリは別の方法で処理する必要があります。

NetScalerアプライアンスは、特別なクエリを含む要求を受信すると、OK応答をクライアントに送信し、その要求を接続に保存します。

保存されたクエリと一緒にINSERTやSELECTなどの非特殊クエリを受信すると、ADCアプライアンスは、保存されたクエリがすでにデータベースサーバーに送信されているサーバー側の接続を探します。そのような接続が存在しない場合、ADCアプライアンスは接続を作成し、保存されたクエリを最初に送信し、次に非特殊クエリを含む要求を送信します。

SET、USE db、INIT_DB の特殊クエリでは、アプライアンスは特殊クエリに対応するサーバー側接続のフィールドを変更します。この変更により、サーバー側の接続をより適切に再利用できます。

各接続に保存されるクエリは 16 個だけです。

以下は、ADCアプライアンスの動作が変更された特殊クエリのリストです。

  • SET クエリー

    SET SQL クエリは、接続に関連する変数を定義します。これらのクエリはグローバル変数の定義にも使用されますが、現在のところ、ADCアプライアンスはローカル変数とグローバル変数を区別できません。このクエリでは、ADCアプライアンスは「ストアアンドフォワード」メカニズムを使用します。

  • <db> クエリを使う

    このクエリを使用して、ユーザーは接続に関連するデータベースを変更できます。この場合、 <db> ADCアプライアンスは送信された値を解析し、使用する新しいデータベースを反映するようにサーバー側接続のフィールドを変更します。

  • INIT_DB コマンド

    このクエリを使用して、ユーザーは接続に関連するデータベースを変更できます。この場合、 <init_db> ADCアプライアンスは送信された値を解析し、使用する新しいデータベースを反映するようにサーバー側接続のフィールドを変更します。

  • COM_PREPARE

    ADC アプライアンスは、このコマンドを受信するとリクエストの切り替えを停止します。

  • クエリを準備

    このクエリは、接続に関連するプリペアドステートメントを作成するために使用されます。このクエリでは、ADCアプライアンスは「ストアアンドフォワード」メカニズムを使用します。

監査ログメッセージのサポート

DataStream機能の監査ログメッセージを生成するようにNetScalerアプライアンスを構成できるようになりました。監査ログメッセージは、クライアント側とサーバー側の接続が確立、クローズ、またはドロップされたときに生成されます。記録して表示できるメッセージのカテゴリは ERROR と INFO です。クライアント側接続のエラーメッセージは「CS」で始まり、サーバー側接続のエラーメッセージは「SS」で始まります。必要に応じて追加情報が提供されます。たとえば、閉じた接続 (CS_CONN_CLOSED) のログメッセージには、接続 ID のみが含まれます。ただし、確立された接続 (CS_CONN_ESTD) のログメッセージには、接続 ID に加えて、ユーザー名、データベース名、クライアント IP アドレスなどの情報が含まれます。

DataStreamリファレンス