データベースの使用

Objective

After completing this lesson, you will be able to 開発時に使用する SQLite データベースの設定

データベースサポート

サポートされているデータベースの探索

CAP Node.js ランタイムでは、さまざまなデータベースに対して即座に利用可能なサポートが提供されます。

サポートされているデータベースについては、ビデオを視聴してください。

Auto-Wired 設定

CAP では、いわゆる cds-plugin 手法を使用して、データベースをアプリケーションに統合します。基本的に、これらのデータベースプラグインは、CAP が特定のデータベースに接続して特定のデータベースと対話できる Node.js パッケージであり、追加の設定は必要ありません。サポートされている各データベースには、対応する cds-plugin パッケージがあります。

注記

CAP のプラグインメカニズムにより、package.json で設定されたプロジェクトの依存関係で、cds-plugin.js というモジュールを含むパッケージが検索され、使用可能な場合はそれがロードされます。その主な利点は、この機能をプロジェクトに追加すること (この場合はデータベースなど) には、単純な npm add のみが必要であることです。

これらのデータベースプラグインを使用することで、開発者はアプリケーションコードを変更しなくても、開発時と本稼働時に異なるデータベースを簡単に切り替えることができます。

開発用に SQLite を自動的に設定するには、ターミナルで以下のコマンドを使用して、対応するデータベースパッケージをインストールします。

Code Snippet
1
npm add @cap-js/sqlite -D

SAP HANA Cloud for production を使用するには、以下のコマンドを実行します。

Code Snippet
1
npm add @sap/cds-hana

カスタム設定

Node.js データベースパッケージでは、cds-plugin メカニズムを介して設定された設定デフォルトによって自動的にワイヤリングされます。アプリケーションのパッケージで提供されるデフォルト設定を使用するか、個別のプロパティを上書きすることができます。これを行う方法については、この Learning Journey の後半で説明します。

有効なデータベース設定を確認するには、図 " 有効設定の検査 " に示すように、プロジェクトのルートフォルダにある cds.requires.db キーに対して cds env コマンドを実行します。

コマンドによって返される設定オプションは以下のとおりです。

  • impl - CAP データベースサービスの実装のモジュール名
  • credentials - DB 固有の設定 (最も一般的な URL) を持つオブジェクト
  • kind - プリセットの名前 (sqlite、hana など)

初期データ

CAP アプリケーションに対して作成されたデータベーステーブルに初期データを入力できます。

アプリケーションの起動直後にこれらのテーブルに初期データをロードするには、以下の手順に従います。CDS モデルを介して定義されたテーブルごとに、CDS モデルの対応するエンティティ定義の完全修飾名と一致するファイル名で .csv ファイルを登録します。表面的な理由から、オプションでドット (.) ではなくダッシュ (-) を使用することができます。

たとえば、ここで説明するシナリオでは、モデルエンティティ com.sap.learning.Authors および com.sap.learning.Books に対してファイル com.sap.learning-Authors.csv および com.sap.learning-Books.csv を作成することができます。

登録された .csv ファイルには、標準 CSV を入力する必要があります。そのため、図 "初期データの提供" の例に示すように、列タイトルは CDS モデルで宣言された要素名に対応している必要があります。

.csv ファイルの場所

多くの場合、サンプルデータと実際の初期データを区別する必要があります。CAP では、これは 2 つの場所で初期データを提供できるようにすることでサポートされます。

test/data フォルダに作成された .csv ファイルは、アプリケーションが本稼働で実行されていない場合にのみデプロイされます。そのため、このフォルダを使用して、テストおよびデモのサンプルデータを保存することができます。

一方、db/data フォルダに作成された .csv ファイルは、本稼働環境を含むすべての環境にデプロイされます。そのため、このフォルダは、初期設定データやコード一覧のデータなどに適しています。

.csv ファイルの生成

ターミナルで以下のコマンドを入力すると、CDS モデルを介して定義されたテーブルの db/data フォルダに、対応する .csv ファイルが作成されます。

Code Snippet
1
cds add data

生成されたファイルにはまだデータは含まれていませんが、CDS モデルに基づく列タイトルが含まれています (図モデル化されたエンティティ用に生成された .csv ファイルの例を参照)。

開発での SQLite の使用

SAP では、開発およびテスト時にできるだけ多くの SQLite を使用することを強くお奨めします。CAP では、このデータベースの広範なサポートが提供されるため、プロジェクトの開発が迅速化され、コストが最小限に抑えられます。

この Learning Journey では、この推奨事項に従い、開発時に SQLite をデータベースとして使用します。本稼働用のデータベースとして SAP HANA Cloud に切り替える方法については、CAP 文書を参照してください

注記

SAP Business Application Studio では、SQLite がすでにインストールされており、直接使用することができます。開発環境として VS Code を選択した場合は、SQLite がローカルにインストールされていることを確認する必要があります。

設定

前述のように、開発に SQLite を使用するには、ターミナルで以下のコマンドを実行する必要があります。

Code Snippet
1
npm add @cap-js/sqlite -D

このコマンドにより、package.json ファイルに以下のような依存関係が追加されます。

インメモリデータベース

@cap-js/sqlite パッケージでは、cds-plugin 手法を使用して、アプリケーションのインメモリ SQLite データベースがデフォルトで自動設定されます。これは、cds watch を使用してアプリケーションを起動すると、ログ出力で確認できます。

ヒント

インメモリデータベースの使用は、テストドライブおよびテストパイプラインで最も推奨されるオプションです。

注記

インメモリ SQLite データベースはそのデータをファイルシステムに保存しないため、cds watch で起動したサーバが停止するとすぐに、すべてのデータ変更が失われます。

永続データベース

永続的な SQLite データベースを使用することもできます。これを行うには、以下のステップを実行します。

  1. package.jsondb 設定で、以下のようにデータベースファイル名を指定します。

    要約すると、この設定は CAP フレームワークに、開発時に、プロジェクトのルートにある db.sqlite というファイルにある SQLite データベースを使用する必要があることを示します。

  2. ターミナルで以下のコマンドを実行します。
    Code Snippet
    1
    cds deploy

これにより、以下が行われます。

  1. 指定した名前のデータベースファイルをプロジェクトのルートフォルダに作成します。
  2. データベースで CDS モデルに従ってテーブルとビューを登録します。
  3. 提供された .csv ファイルから初期データを入力します。

これにより、サーバは起動時にインメモリデータベースをブートストラップするのではなく、この準備済データベースを使用します。これは、cds watch を使用してサーバを起動すると、ログ出力に表示されます。

注記

モデルまたはデータを変更する場合は、必ずデータベースを再デプロイしてください。これを行うには、cds deploy を再度実行します。

Drop-Create スキーマ

cds deploy を使用して永続データベースを再展開すると、最初にすべてのテーブルとビューが削除されてから、再作成されます。これは、スキーマ変更が非常に頻繁かつ広範囲に行われる開発環境に最適です。

スキーマの進化

ただし、cds deploy は、永続データベースの自動スキーマ展開もサポートしています。この場合、変更されたテーブルは、再デプロイ時に単に削除および再作成されません。代わりに、ALTER TABLE を使用して変更が適用されます。

ただし、スキーマの自動展開では、潜在的なデータ損失のない変更のみが許可されることに注意してください。スキーマの進化の詳細については、CAP 文書を参照してください。文書のリンクされているセクションは、PostgreSQL データベースを参照しています。ただし、そこにある情報は、永続データベースを含む SQLite にも適用されます。

デモおよび演習:開発用の初期データを使用した永続 SQLite データベースの設定

注記

演習問題として、SAP Business Application Studio で、以下のデモのステップバイステップの手順を実行します。

演習の開始点として、サービスが正常に完了した場合は前の演習問題 "サービスの定義" の結果を使用します。または、以下の GitHub リポジトリのブランチ 3_service_definition を開始点として使用することもできます。

https://github.com/SAP-samples/cap-development-learning-journey

シミュレーションの完全な実装は、GitHub リポジトリの 4_SQLite_database ブランチにあります。

リポジトリのコンテンツとその使用方法の詳細については、ここを参照してください。

ビデオを視聴して、開発用の初期データを使用して永続的な SQLite データベースを設定する方法を確認してください。