IBM Cloud Docs
クラウド・データ用の SQL データベース

クラウド・データ用の SQL データベース

このチュートリアルでは、費用が発生する場合があります。 コスト見積もりツールを使用して、予測使用量に基づいてコスト見積もりを生成します。

このチュートリアルでは、SQL (リレーショナル) データベース・サービスをプロビジョンする方法について説明します。 管理者は、表を作成し、大きなデータ・セット (都市情報) をデータベースにロードします。 次に、Web アプリケーション「world訴えた」を IBM Cloud® Code Engineにデプロイします。 このアプリを使用すると、通常のユーザーはクラウド・データベースからレコードを検索できます。 このアプリケーションは、 Flask フレームワークを使用して Python で作成されます。

アーキテクチャー図
図 1. チュートリアルのアーキテクチャー・ダイアグラム

目標

  • SQL データベースをプロビジョンする
  • データベース・スキーマ (表) を作成し、データをロードします
  • 事前作成されたコンテナー化アプリを Code Engine にデプロイします。
  • アプリとデータベース・サービスを接続する (資格情報を共有する)
  • クラウド・データベースのモニター、保護、バックアップ & リカバリー

開始前に

このチュートリアルでは、以下が必要です。

  • IBM Cloud CLI ( Code Engine プラグインを使用)
  • git は、ソース・コード・リポジトリーを複製します。

これらのツールがインストールされないようにするには、 IBM Cloud コンソールから Cloud Shell を使用できます。

ご使用のオペレーティング環境でこれらのツールをダウンロードおよびインストールするための手順は、チュートリアルの概説ガイドに記載されています。

  1. このチュートリアルの Github リポジトリー を複製し、そのディレクトリーに移動します。 端末で、以下の行を実行します。
    git clone https://github.com/IBM-Cloud/cloud-sql-database.git
    cd cloud-sql-database
    
  2. GeoNames にアクセスし、ファイル cities1000.zipをダウンロードして解凍します。 この中には、人口が 1000 人を超える市区町村に関する情報が入っています。 これをデータ・セットとして使用します。

SQL データベースをプロビジョンする

まず、 Db2 Warehouse on Cloud サービスのインスタンスを作成します。

  1. IBM Cloud® コンソール にアクセスします。 上部ナビゲーション・バーの 「カタログ」 をクリックします。
  2. 左側ペインの 「データベース」 をクリックして、「Db2 Warehouse」 を選択します。
  3. 「Flex One」 プランを選択し、提示されたサービス名を 「sqldatabase」 に変更します (後でこの名前を使用します)。 データベースのデプロイメントのリソース・グループとロケーションを選択します。
  4. 「作成」 をクリックします。 プロビジョニングが開始されます。
  5. 「リソース・リスト」 で、 「データベース」 の下で新規インスタンスを見つけて、それが使用可能になるまで待ちます (ページの最新表示が必要になる場合があります)。 Db2 Warehouse on Cloud サービスに関するエントリーをクリックします。
  6. 「コンソールを開く」 をクリックして、データベース・コンソールを起動します。

表を作成する

サンプル・データをデータを格納する表が必要です。 コンソールを使用して表を作成します。

  1. Db2 Warehouse on Cloud のコンソールで、左上のメニュー・アイコンをクリックしてから、ナビゲーション・バーの 「SQL の実行」 をクリックします。
  2. 「Untitled-1」 タブの横にある 「+」 記号 (「Add a new script」) をクリックします。
  3. 「ファイルから」 をクリックし、以前にローカル・ディレクトリーに複製した GitHub リポジトリーからファイル cityschema.txt を選択して開きます。
  4. 「すべて実行 (Run all)」 をクリックして、ステートメントを実行します。 成功メッセージが表示されるはずです。

データをロードする

表「cities」が作成されたので、その中にデータをロードします。 これは、ローカル・マシン、クラウド・オブジェクト・ストレージ (COS)、 Amazon S3 インターフェースなど、さまざまな方法で行うことができます。 このチュートリアルでは、マシンからデータをアップロードします。 このプロセスの中で、表の構造とデータ形式をファイル内容に完全に対応するように合わせます。

  1. Db2 Warehouse on Cloud のコンソールで、左上のメニュー・アイコンをクリックし、ナビゲーション・バーの 「データ」 をクリックします。

  2. 「ソース」 として、 「マイ・コンピューター」 の選択を保持します。

  3. 「ファイル選択」 で、 「ファイルをここにドラッグするか、ファイルを参照する」 をクリックして、このガイドの最初のセクションでダウンロードしたファイル「cities1000.txt」を見つけて選択します。

  4. 「次へ」 をクリックして、 「スキーマ」 を選択した 「ターゲット」 の概要に移動します。 スキーマ 「BLUADMIN」 を選択してから、表 「都市」 を選択します。 もう一度 「次へ」 をクリックします。

    この表は空ですので、既存のデータに追加するか既存のデータを上書きするかは関係ありません。

  5. 次は、ロード・プロセスでファイル「cities1000.txt」のデータを解釈する方法をカスタマイズします。 まず、このファイルにはデータしか入っていないので、「最初の行をヘッダーとする (Header in first row)」 を無効にします。

  6. 次に、区切り文字として 「0x09」 と入力します。 これは、ファイル内の値がタブ (タブ文字) で区切られていることを意味します。

  7. 最後に、日付形式として「YYYY-MM-DD」を選択します。 これで、すべてがこの画面キャプチャーに表示されているものと類似したものになります。

    サンプル・データを示す画面キャプチャー
    サンプル・データを示す画面キャプチャー

  8. 「次へ」 をクリックすると、ロード設定の確認画面が表示されます。 同意して 「ロードの開始 (Begin Load)」 をクリックし、「CITIES」 表へのデータのロードを開始します。 進行状況が表示されます。 データがアップロードされれば、ほんの数秒でロードは完了するはずです。いくつかの統計が表示されます。

  9. 「表の表示 (View Table)」 」をクリックしてデータを参照します。 スクロールダウンするか、列名をクリックして、ソート順を変更することもできます。

ロードされたデータを SQL を使用して確認する

データがリレーショナル・データベースにロードされました。 エラーはありませんでしたが、いくつかの簡単なテストを実行する必要があります。 組み込みの SQL エディターを使用して、いくつかの SQL ステートメントを入力し、実行します。

  1. 左側のナビゲーションで、 「SQL の実行」 をクリックして SQL エディターに戻ります。 「+」 記号 ( 「新規スクリプトの追加」 ) をクリックし、「新規作成」 をクリックして、新しいエディター・タブを作成します。

    組み込みの SQL エディターの代わりに、デスクトップまたは Db2 Warehouse on Cloud のサーバー・マシンで、クラウド・ベースや従来型の SQL ツールを使用することもできます。 接続情報は、左側のナビゲーションの 「管理」 メニューにあります。

  2. エディターで、以下の照会を入力またはコピーします。

    select count(*) from cities;
    

    照会のテキストを選択し、 「すべて実行」 の横のドロップダウンで 「選択した項目を実行」 を選択します。 結果のあるセクションには、ロード・プロセスによって報告されたのと同じ行数が表示されます。

  3. 「SQL エディター」で、次のステートメントを新しい行に入力します。

    select countrycode, count(name) from cities
    group by countrycode
    order by 2 desc;
    

    上記のステートメントのテキストにマークを付けて、 「選択した項目を実行」 ボタンをクリックします。 このステートメントのみが実行され、いくつかの国別統計が結果セクションに返されます。

  4. 最後に、以下のステートメントを同様に実行して、カリフォルニアのサンフランシスコに関する詳細を取得します。

    select * from cities
    where name='San Francisco'
    and countrycode='US';
    

アプリケーション・コードをデプロイする

端末に戻ります。 次に、事前作成されたコンテナー・イメージを使用して、アプリケーション・コードをデプロイします。 アプリケーション・コードを変更し、コンテナー・イメージを自分でビルドすることができます。 詳しくは、 GitHub リポジトリーの手順 を参照してください。

  1. ログインしていない場合は、 ibmcloud login または ibmcloud login --sso を使用して対話式にログインします。 リージョンとリソース・グループを、データベースがプロビジョンされている場所に設定します。 RESOURCE_GROUP および REGION を適宜置き換えます。

    ibmcloud target -g RESOURCE_GROUP -r REGION
    
  2. sqldatabase という名前の新規 Code Engine プロジェクトを作成します。

    ibmcloud ce project create --name sqldatabase
    

    新規プロジェクトをアクティブ・プロジェクトとして選択します。

    ibmcloud ce project select --name sqldatabase
    
  3. 次に、 worldシティーという名前のアプリをデプロイします。

    ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
    
  4. 最後に、既存の Db2 Warehouse on Cloud データベースとアプリケーションの間のサービス・バインディングを作成します。

    ibmcloud ce application bind --name worldcities --service-instance sqldatabase
    

    バインディングが作成されると、新しいアプリ・リビジョンが開始されます。

  5. これで、アプリの状況の詳細を確認し、URL を取得することができます。

    ibmcloud ce app get --name worldcities
    

    出力で、 URL で始まる行を探します。 表示される URL には、 https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud のようなパターンが必要です。 リンクをクリックしてアプリにアクセスします。 アプリの詳細を取得するもう 1 つのオプションは、 Code Engine コンソールにアクセスすることです。

セキュリティー、バックアップ & リカバリー、モニタリング

Db2 Warehouse on Cloud は、マネージド・サービスです。 環境の保護、日常的なバックアップおよびシステムのモニタリングは、IBM が行います。 エンタープライズ・プランの 1 つを使用している場合、 アクセスを管理するためのいくつかのオプション と、 拡張データ暗号化 を構成するためのいくつかのオプションがあります。

従来の管理オプションに加えて、 Db2 Warehouse on Cloud サービスは、モニター、ユーザー管理、ユーティリティー、ロード、ストレージ・アクセスなどのための REST API も提供します

アプリをテストする

ロードしたデータ・セットに基づいて市区町村情報を表示するこのアプリは、最小限に切り詰められています。 このアプリは、1 つの市区町村名 (名前には大/小文字の区別があります) といくつかの事前構成された市区町村を指定できる検索フォームを表示します。 これらは、/search?name=cityname (検索フォーム) または /city/cityname (直接指定された市区町村) のいずれかに変換されます。 どちらの要求もバックグラウンドでは同じコード行で処理されます。 cityname は、セキュリティー上の理由から、パラメーター・マーカーを使用して準備済み SQL ステートメントに値として渡されます。 行がデータベースから取り出され、HTML テンプレートに渡されてレンダリングされます。

クリーンアップ

チュートリアルで使用したリソースをクリーンアップするには、以下の手順を実行します。

  1. IBM Cloud® リソース・リストにアクセスします。
  2. Code Engine セクションで、プロジェクト sqldatabase を見つけます。 3 つのドットをクリックし、 「削除」 を選択して、プロジェクトとそのアプリケーションを削除します。
  3. 「データベース」 の下でデータベース sqldatabase を見つけます。 再度、3 つのドットをクリックし、 「削除」 を選択してデータベースを削除します。

リソースによっては、即時に削除されずに保持される場合があります (デフォルトでは 7 日間)。 リソースを完全に削除して再利用することも、保存期間内に復元することもできます。 リソースの再利用を使用する方法については、この資料を参照してください。

チュートリアルを発展させる

このアプリを機能拡張しますか? 以下にいくつかのアイデアを示します。

  1. 代替名をワイルドカード検索できるようにする。
  2. 特定の国および特定の人口値の市区町村のみを検索する。
  3. CSS スタイルを置換し、テンプレートを拡張して、ページ・レイアウトを変更する。
  4. 新しい市区町村情報のフォーム・ベースの作成を許可するか、既存のデータ (母集団など) の更新を許可します。

関連コンテンツ