IBM Cloudant ダッシュボードをより深く掘り下げる
IBM® Cloudant® for IBM Cloud® ダッシュボードは、IBM Cloudant の新規ユーザーと経験豊富なユーザーに、文書を追加、編集、削除する機会を提供します。 IBM Cloudant ユーザーは、ご使用のアプリケーションのユース・ケースに最適な索引付けと照会のオプションを絞り込むことができます。
目標
ダッシュボードを使用していくつかの基本的なインデックスを設定し、IBM Cloudantの各クエリ機構がどのように動作するかを確認します。
開始前に
このチュートリアルを開始する前に、IBM Cloudant でサービス・インスタンスを作成する必要があります。 入門チュートリアルの指示に従って作成することができます。
ステップ 1. データ・セット
-
books
という名前のデータベースを作成します。 -
次の例に示すように、図書館の本を表すいくつかのサンプル・データを作成します。
{ "_id": "BXP9G5ZQY9Q4EA13", "author": "Dickens", "title": "David Copperfield", "year": 1840, "pages": 723, "publisher": "Penguin", "url": "https://www.somurl.com/dc" }
-
IBM Cloudant ダッシュボードを使用して、前のステップのパターンに一致するいくつかの文書を引き続き追加します。
文書には、各書籍に関するメタデータを保持する単純な
key/value
のペア (著者と出版社) が格納されます。 この例では、以下の3つのユースケースを取り上げる:- ユーザーが既知の出版社と年により書籍を検索できるようにする照会機能。
- ユーザーが、記述子 (著者,タイトル,年,出版社) の 1 つ以上の組み合わせによって書籍を検索できるようにする汎用検索エンジン。
- 年別に出版された書籍の数を詳細に記載したレポート。
ステップ 2 出版社と年による書籍の照会 - IBM Cloudant Query
IBM Cloudant Query は、データベース全体の小さなスライスを見つけることができる照会言語です。 以下の照会では、2000 年に Penguin
によって出版された 10 冊の書籍を検索します。
{
"selector": {
"$and": [
{ "publisher": "Penguin" },
{ "year": { "$gt": 2000 } }
]
},
"limit": 10
}
照会には selector
オブジェクトが含まれています。このオブジェクトは、演算子とテキスト・フィールドを使用して、必要なデータのスライスを定義します。
$and
は、照会句の両方が満たされないと、文書が結果セットにならないことを意味します。{ "publisher": "Penguin" }
- 出版社は「Penguin」でなければなりません。{ "year": { "$gt": 2000 } }
- 年は 2000 年以降でなければなりません。$gt
は「より大きい」を意味します。
IBM Cloudant ダッシュボードで books
データベースを表示するときに「照会 (Query)」を選択すると、照会を試すことができます。 照会 JSON を貼り付けて、**「照会の実行」**をクリックします。
照会の実行
照会を試すには、以下の手順を実行します。
-
IBM Cloudant ダッシュボードに移動します。
-
前提条件セクションで作成したサービス・インスタンスを開きます。
-
作成したデータベースを開きます。
-
「照会」タブに移動します。
-
前のセクションの照会 JSON を「Cloudant Query」ウィンドウに貼り付けます。
-
**「照会の実行」**をクリックします。 以下の画面キャプチャーで結果を確認してください。
Window for running queries
IBM Cloudant は、基準を満たす文書を照合し、それを迅速に実行するように見えますが、問題点があります。IBM Cloudant は、この照会を処理するために索引を使用しません。つまり、データベースは答えを得るためにデータベース内のすべての文書をスキャンする必要があります。 このスキャンは、小規模なデータ・セットの場合は問題ありません。 しかし、データ・セットが絶え間なく拡大し続ける実動アプリケーションを実行している場合は、索引付けされていない照会に頼ることは絶対に避ける必要があります。
索引の作成
インデックスを作成するには、IBM Cloudantに、クエリで使用する publisher
フィールドと year
フィールドにインデックスを作成するように指示します。
-
IBM Cloudant ダッシュボードから、
books
データベースを選択します。 -
「設計文書」タブを選択します。
-
「設計文書」メニューから「新規索引 (New Indexes)」を選択します。
-
次の索引定義をコピーして貼り付けます。
{ "index": { "fields": [ "publisher", "year" ] }, "name": "publisher-year-index",indexingdashboard5 "type": "json" }
以下の画面キャプチャーの例を参照してください。
Window for creating indexes
fields
配列には、IBM Cloudant に索引付けさせるフィールドのリストが含まれます。
照会を繰り返すと、データベースのサイズが何百万文書に達しても、照会はより高速になり、速いまま維持されます。
索引付けは、IBM Cloudant に、すべての文書を順番に調べるよりもはるかに高速に必要なデータのスライスを見つけられるようにする、2 次データ構造を作成するように指示します。IBM Cloudant Query は、同じ順序の同じフィールドに基づく固定された照会に最適です。
詳しくは、 IBM Cloudant の資料の以下の詳細を参照してください。
この索引は publisher
と year
の両方を含む照会に便利ですが、別のフィールドを導入したり、照会をより複雑にしたりすると (例えば、$or
演算子を使用したりするなど)、この索引は使用されなくなります。 そうすると、データベースのフルスキャンに逆戻りです。
汎用検索機能の場合は、IBM Cloudant Search が必要です。これについては、次のセクションで説明します。
ステップ 3。 検索エンジンの作成 - IBM Cloudant Search
IBM Cloudant Search は Apache Lucene をベースにしており、豊富な照会を作成することを可能にする独自の照会言語を備えています。 以下の検索の例を参照してください。
publisher:Penguin AND (year:1972 OR year:1973) AND title:Crash
IBM Cloudant Query とは異なり、ユーザーは照会を実行する前に、索引付けするフィールドを指定する必要があります。IBM Cloudant Search の索引は、データベース内の文書ごとに一度だけ呼び出される JavaScript 関数を IBM Cloudant に提供することで定義されます。この関数が index
を呼び出すと、データが索引に追加されます。
-
IBM Cloudant ダッシュボードから、
books
データベースを選択します。 -
「設計文書」タブを選択します。
-
メニューから「新規検索索引 (New Search Index)」を選択します。
-
設計文書名を入力します。
-
索引名を入力します。
-
次のコードを検索索引関数に貼り付けます。
function (doc) { index("author", doc.author); index("publisher", doc.publisher); index("title", doc.title); index("year", doc.year); }
-
「標準アナライザー (Standard Analyzer)」を選択します。
New Search Index window
次に、索引付けされたフィールドの 1 つ、いくつか、またはすべてを AND 演算子や OR 演算子と組み合わせて、複雑な照会を構築することができます。
IBM Cloudant Search は、異なるフィールドの組み合わせを含む多くの検索ユース・ケースがある場合に最適です。
詳しくは、以下のリソースを参照してください。
- IBM Cloudant Search は、「アナライザー」を使用して、索引付けする前にテキストを前処理します。 期待する結果を確実に得るために、検索アナライザーについて学んでください。
- IBM Cloudant Search の資料
ステップ 4: データの集約 - MapReduce
IBM Cloudant 照会と IBM Cloudant 検索では、検索結果を 集約 できません。 言い換えれば、1973年に出版された本の数は? IBM Cloudantの MapReduce機能では、選択や集計に使用できるセカンダリインデックスを作成することができます。 MapReduceインデックスは、IBM Cloudantのようなものです。Searchのようなもので、JavaScript関数を提供することで作成される emit
-
IBM Cloudant ダッシュボードから、
books
データベースを選択します。 -
「設計文書」タブを選択します。
-
メニューから「新規ビュー (New View)」を選択します。
-
ドロップダウン・フィールドで新規文書が選択されたままにします。
-
「索引名 (Index name)」フィールドに名前を入力します。 この名前は新規ビューの名前です。
-
「削減 (オプション)」ドロップダウン・メニューから
_count
を選択します。 これにより、結果が カウントされます。 -
以下のコードをマップ関数フィールドに貼り付けます。
function (doc) { emit(doc.year, null); }
以下の画面キャプチャーのウィンドウの例を参照してください。
New View window 後続の MapReduce ビューでは、文書を年ごと (これが索引のキーであるため) に見つけることができます。 ただし、**「オプション」**プルダウンメニューから「削減」機能のチェック・ボックスを選択すると、索引は結果を集計し、キー (年) ごとにグループ化します。
Windows for running queries 次は、索引が結果を集約した後の結果の例です。
結果セット MapReduce ビューは、ユーザーが定義した
key/value
のペアを含む、データが順序付けられたビューを生成するのに最適です。 これらは、個々のキーや範囲照会の選択、またはキーによる集約のグループ化に使用できます。
詳しくは、IBM Cloudant の資料の以下のリソースを参照してください。