スキーマ検出とインデックス
スキーマ検出とインデックス
本製品 は、スキーマおよびインデックスを決定するための異なるモードを提供します。以下に、いくつかの設定例を示します。
TableSupport=None
テーブルを検索してカラムを検出するすべてのクエリを無効にします。スキーマファイルで定義されたテーブルのみが報告されます。TypeDetectionScheme は無視されます。 ドライバーは、Location ディレクトリにあるスキーマファイルのみを使用します。スキーマファイルなしでこのオプションを使用すると、利用可能なテーブルがなくなります。
TableSupport=Basic
SELECT `bucket`, `scope`, name FROM system:keyspaces
ドライバーは利用可能なバケットを検出しますが、その中で子テーブルを探すことはしません。 これは、スキーマ検出の時間を削減したい場合、またはバケットにプライマリインデックスがない場合にお勧めします。
TableSupport=Full
SELECT `travel-sample`.* FROM `travel-sample` LIMIT 100
ドライバーは利用可能なバケットを検出し、それらの各バケットの内側を見て子テーブルを探します。これにより、ネストされたデータにアクセスする最も柔軟な方法が提供されますが、サーバー上の各バケットにプライマリインデックスがあることが必要です。
TypeDetectionScheme=None
ドライバーはフレーバー検出やカラムタイプの検出は行いません。カラムは常にVARCHAR として報告されます。子テーブルは、TableSupport の設定に応じてスキャンされます。
TypeDetectionScheme=RowScan
ドライバーは、バケットからドキュメントのサンプルを読み出し、データ型を決定します。フレーバー検出は行いません。
TypeDetectionScheme=Infer
NQ1QL INFER ステートメントを使用して存在するテーブルとカラムを判断します。これはDocType よりも柔軟なフレーバー検出を行いますが、Couchbase Enterprise でのみ利用可能です。
TypeDetectionScheme=DocType
SELECT META(`travel-sample`).id AS `Document.Id`, `travel-sample`.* FROM `travel-sample`
各バケットをチェックして、ドキュメント内の"docType" フィールドのさまざまな値を探すことでテーブルを検出します。 例えば、バケットbeer-sample に"docType" = 'brewery' および"docType" = 'beer' のドキュメントが含まれている場合、beer-sample、beer-sample.brewery、beer-sample.beer の3つのテーブルが生成されます。 RowScan と同様に、各フレーバーのドキュメントのサンプルをスキャンし、各フィールドのデータ型を決定します。