第3章 カスタムリソース(CR)に DDL ステートメントを埋め込むことで仮想データベースの作成
DDL ステートメントをカスタムリソースファイル内に直接追加することで、仮想データベースの構造を定義できます。デプロイメント時に、Operator は Source-to-Image(S2I)を仮想データベースアーティファクトで検出する依存関係に基づいて OpenShift 上でビルドします。ビルドの失敗を防ぐには、JDBC ドライバーの依存関係など、仮想データベースが必要とする依存関係がビルド時に見つけられるようにします。
- CR で DDL を使用して仮想データベースを作成する利点
- シンプルかつ最小的。
- 仮想化のコードおよび設定には単一のファイルがあります。別個の CR ファイルを作成する必要はありません。
- 管理が容易になります。
- CR で DDL を使用して仮想データベースを作成する欠点
- カスタムリソース(CR)ファイルに仮想データベースの DDL を埋め込むと、ファイルが大きくなります。
- DDL は CR YAML ファイルに組み込まれているため、DDL と設定の他の側面を個別にバージョンすることはできません。
- 複数の環境にデプロイする場合、プロパティーを設定マップまたはシークレットに保存し、カスタムリソースから独立させる必要があります。
前提条件
- Data Virtualization Operator がインストールされている OpenShift クラスターへの開発者または管理者アクセスがある。
- 互換性のあるデータソースがあり、OpenShift クラスターがアクセスできる。
- Data Virtualization Operator は、仮想データベースのビルド依存関係が含まれる Maven リポジトリーにアクセスできます。
- ログイン認証情報など、データソースの接続設定に関する情報が必要です。
- 作成する仮想データベースの DDL ファイルがあるか、またはデータベースを設計するために SQL コードを作成する方法を把握している。
手順
YAML 形式で CR テキストファイルを作成し、これを .yaml または .yml 拡張子(
dv-customer.yaml
など)で保存します。以下の例は、postgreSQL データソースを使用する仮想データベースの CR に追加する要素を示しています。
例: dv-customer.yaml
apiVersion: teiid.io/v1alpha1 kind: VirtualDatabase metadata: name: dv-customer spec: replicas: 1 1 env: 2 - name: SPRING_DATASOURCE_SAMPLEDB_USERNAME value: user - name: SPRING_DATASOURCE_SAMPLEDB_PASSWORD value: mypassword - name: SPRING_DATASOURCE_SAMPLEDB_DATABASENAME value: sampledb - name: SPRING_DATASOURCE_SAMPLEDB_JDBCURL value: jdbc:postgresql://postgresql/$(SPRING_DATASOURCE_SAMPLEDB_DATABASENAME) build: source: dependencies: 3 - org.postgresql:postgresql:42.1.4 ddl: | 4 CREATE DATABASE customer OPTIONS (ANNOTATION 'Customer VDB'); USE DATABASE customer; CREATE SERVER sampledb TYPE 'NONE' FOREIGN DATA WRAPPER postgresql; CREATE SCHEMA accounts SERVER sampledb; CREATE VIRTUAL SCHEMA portfolio; SET SCHEMA accounts; IMPORT FOREIGN SCHEMA public FROM SERVER sampledb INTO accounts OPTIONS("importer.useFullSchemaName" 'false'); SET SCHEMA portfolio; CREATE VIEW CustomerZip(id bigint PRIMARY KEY, name string, ssn string, zip string) AS SELECT c.ID as id, c.NAME as name, c.SSN as ssn, a.ZIP as zip FROM accounts.CUSTOMER c LEFT OUTER JOIN accounts.ADDRESS a ON c.ID = a.CUSTOMER_ID; mavenRepositories: 5 central: https://repo.maven.apache.org/maven2
- 1
- デプロイするインスタンスの数を指定します。デフォルト設定は 1 です。
- 2
- この仮想化の設定プロパティを指定します。主にデータソースに接続する設定となります。この例のプロパティーは、PostgreSQL データベースへの接続に適用されます。サポートされるデータソースとそのプロパティーに関する情報は、「互換性のあるデータソース」 を参照してください。
- 3
- GAV 形式の Maven 依存関係 JAR ファイルの一覧(groupId:artifactid:version)を指定します。これらのファイルは、データソースの JDBC ドライバーファイルとカスタム依存関係を定義します。通常、Operator ビルドはパブリック Maven リポジトリーで利用可能なライブラリーを自動的に追加します。
- 4
- DDL 形式で仮想データベースを定義します。DDL を使用して仮想データベースを定義する方法の詳細は、『Data Virtualization リファレンスガイド』の「 DDL metadata for schema objects 」を参照してください。完全な DDL の定義については、本書では扱いません。
- 5
- 依存関係やその他の仮想データベースを含むプライベートまたはパブリック以外のリポジトリーの場所を指定します。複数のリポジトリーを指定できます。
YAML ファイルの作成後に、Data Virtualization Operator を実行して仮想データベースを OpenShift にデプロイできます。詳細は、6章Data Virtualization Operator の実行による仮想データベースのデプロイ を参照してください。
3.1. DDL アーティファクトをデプロイするための CR の作成
DDL を直接 CR に組み込み、仮想データベースを作成する場合、Data Virtualization Operator がデプロイメントに使用する CR がすでに存在します。DDL アーティファクトの CR の詳細は、3章カスタムリソース(CR)に DDL ステートメントを埋め込むことで仮想データベースの作成 を参照してください。
CR で Data Virtualization Operator を実行し、仮想データベースを生成し、これを OpenShift にデプロイします。