4.3 クイック・スタート
この項では、簡単な設定およびタスクのリストを使用して、SQLclプロジェクト機能を紹介します。クイック・スタートでは、次のことを説明します:
- 新しいプロジェクトを初期化する方法(
demo
という単一のスキーマを持つアプリケーションの場合)。 - スプリントの一部として実行する作業:
- チケット-1
- 標準サンプルの
dept
表およびemp
表の作成 - 表へのサンプル・データのロード
- 標準サンプルの
- チケット-2
email
という名前の列のemp
表への追加- get_display_nameという名前の新しいファンクションの追加
- チケット-1
- リリースを完了し、アーティファクトを生成してデプロイする方法。
トピック
4.3.1 前提条件
このクイック・スタートには、次の前提条件があります:
demo
スキーマを事前に作成して、2つのデータベースDEV
およびPROD
を作成する必要があります。SQLclからdemo
ユーザーとして接続する必要があります。create user demo identified by demo; grant resource to demo; grant connect to demo; grant create view to demo; alter user demo quota unlimited on system;
- SQLclでは、
demo-dev
とdemo-prod
の2つの名前付き接続が必要です。次の例は、SQLclで名前付き接続を追加および管理する方法を示しています。-Add a new named connection -Note: -savepwd is an optional parameter to save the password. SQL> conn -savepwd -save demo-dev demo/demo@//myserver.com:1521/mypdb -List current connections SQL> connmgr list -To connect to a named connection SQL> conn -name demo-dev
4.3.2 仮定
このクイック・スタートでは、次のとおり仮定しています:
demo-project
という名前のGitプロジェクトを使用します。リポジトリ内の作業はすべて"ローカル"のみであり、このデモにはリモート・サーバー(GithubやGitlabなど)は必要ありません。
- チケット(または発行)という用語は、通常、Jiraなどのシステムで追跡される作業単位を指します。
- SQLclは、
host
コマンドを使用してオペレーティング・システム・レベルのコマンドを実行できます。- たとえば、
host date
はシステム日付を出力します。 - hostコマンドのショートカットは
!<cmd>
です。たとえば、!date
はhost date
と同等です。 - このデモでは、多くの
host
コマンドを使用しています。毎回SQLclを終了したり入らなくてもよいように、!
ショートカットを使用してSQLcl内で直接実行します。
- たとえば、
4.3.3 プロジェクト設定
Gitリポジトリを作成します。
ノート:
このデモでは、ローカルGitリポジトリを使用します。ほとんどの場合、リモートGitリポジトリからのクローンが起点として使用されます。-Create and go into new folder
mkdir demo-project
cd demo-project
-Start SQLcl
sql /nolog
-Initialize git repo
SQL> !git init --initial-branch=main
SQLclプロジェクトのリポジトリを初期化します。
-The schema that is used for this demo is called "demo".
SQL> project init -name demo_project -schemas demo
------------------------
PROJECT DETAILS
------------------------
Project name: demo_project
Schema(s): DEMO
Directory: /private/tmp/demo-project
Connection name:
Project root: demo-project
Your project has been successfully created
-Root folder now looks like:
- .
- ├── .dbtools
- │ ├── filters
- │ │ └── project.filters
- │ ├── project.config.json
- │ └── project.sqlformat.xml
- ├── README.md
- ├── dist
- │ ├── README.md
- │ └── install.sql
- └── src
- ├── README.md
- └── database
- ├── README.md
- └── demo
-Add and commit the initial files to the repository
SQL> !git add --all
SQL> !git commit -m "initial"
[main (root-commit) 5fa6ebd] initial
9 files changed, 188 insertions(+)
create mode 100644 .dbtools/filters/project.filters
create mode 100644 .dbtools/project.config.json
create mode 100644 .dbtools/project.sqlformat.xml
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 dist/README.md
create mode 100644 dist/install.sql
create mode 100644 src/README.md
create mode 100644 src/database/README.md
4.3.4 チケット-1
実際には、ほとんどの開発が、JiraやGitHubなどのプロジェクト管理システムでチケットの一部として行われます。この項では、ticket-1
が作成され、次の要件があります:
emp
表およびdept
表を作成します。- 初期データを追加します。
次のステップで、操作を実行します:
-
ticket-1
という名前のGitブランチを作成してチェックアウトします。 -
データベース・スキーマに表を作成します。
-
スキーマからプロジェクトの
src
フォルダにオブジェクトをエクスポートします。 -
プロジェクトの
dist
フォルダに変更を登録します。- 変更は、機能ブランチとメイン・ブランチを比較することで自動的に検出されます。
- 変更は、
ticket-1
の一部として次のリリースで作成されます。 - 変更は、Liquibaseの変更ログまたは変更セットとして取得されます。
-
emp
表およびdept
表の初期データをロードするカスタム・スクリプトを追加します。 - 変更をコミットしてマージし、チケットを完了します。
ステップ
4.3.5 チケット-2
最初のチケットが完了したので、TICKET-2
から作業を開始できます。このチケットの目的は、ソフト・オブジェクト(つまり、パッケージ、ビューなどの再実行可能なオブジェクト)の作成とともに自動DDL管理を明らかにすることです。
TICKET-2には次の要件があります:
- 新しい列
emp.email
を追加します。 - 新しいファンクション
get_display_name
を追加します。
ステップは次のとおりです:
ticket-2
というGitブランチを作成してチェックアウトします。emp
表を変更し、データベースに新しい列を追加します。emp
表をエクスポートします。これにより、src/.../tables/emp.sql
ファイルの新しい表構造が表示されます。project stage
コマンドを実行して、alter table文を登録します。- データベースに新しいファンクション
get_display_name
を作成し、project export
を実行します。 project stage
コマンドを再実行して、get_display_name
ファンクションを組み込みます。- 変更をコミットしてマージし、チケットを完了します。
ステップ
4.3.6 最終ステップ
スプリントの完了後に、次の操作を実行する必要があります:
- リリースの生成(
project release
)release
コマンドでは、dist/next
フォルダの名前がリリース名(次の例では1.0.0)に変更され、次のスプリントの変更に備えて新しい(空の)dist/nextフォルダ
が生成されます。
- アーティファクトの生成(
project gen-artifact
)gen-artifact
では、単一のinstall.sqlファイルを含むzipファイルが作成されます。このファイルは、dist
フォルダ内の様々なサブフォルダをすべて指します。この例では、1つのフォルダ(1.0.0)のみが含まれています。時間の経過とともに、アーティファクトには追加のリリースが含まれるようになります。これは、Liquibaseが任意の時点からアップグレードできるようにするためです。
- アーティファクトのデプロイ(
project deploy
)。deploy
コマンドでは、アーティファクトを受け取り、環境を最新バージョンにアップグレードします。たとえば、アーティファクトにバージョン1から10が含まれており、現在の環境がバージョン8の場合、インストーラは現在の状態を自動検出し、バージョン9およびバージョン10に関連する変更のみを実行します。
4.3.6.1 リリース1.0.0の生成
dist/next
の内容がリリース名に移動します。たとえば、リリース1.0.0を生成する場合、dist/nextはdist/1.0.0となります。- 次のリリースの次の作業セット用にオープン状態の新しい
dist/next
フォルダが作成されます。
4.3.6.2 アーティファクトの生成
アーティファクトには、デプロイメントがインスタンスの現在のバージョンと、最新に更新するために実行する必要があるリリースを自動的に検出できるようにするすべてのリリースが含まれています。SQLclは、zipファイルとしてアーティファクトを生成します。デフォルトでは、このファイルは時間の経過とともに大きくなる可能性があるバイナリ・ファイルであるため、Gitリポジトリには含まれません。
ノート:
アーティファクトは、JFrogのArtifactoryなどのアーティファクト・リポジトリに格納する必要があります。アーティファクトを次のように生成します:
SQL> project gen-artifact -version 1.0.0
Your artifact has been generated demo_project-1.0.0.zip
これで、アーティファクト・ディレクトリには次のアーティファクトが含まれています:
├── artifact
│ └── demo_project-1.0.0.zip
デフォルトでは、アーティファクト・ディレクトリは.gitignoreファイルに含まれており、リポジトリには追加されません。これらをアーティファクト・リポジトリ(JFrogなど)に移動することをお薦めします。