第5章 ファット JAR としての仮想データベースの作成


Teiid Springboot スターターを使用して、仮想化ファイルを Fat JAR として作成できます。JAR を Maven リポジトリーに公開し、YAML ベースのカスタムリソースを使用して仮想データベースを OpenShift にデプロイできます。Teiid Spring Boot スターターに関する詳細は、https://github.com/teiid/teiid-spring-boot を参照してください。

Spring Boot Maven プラグインは、単一の JAR ファイルにすべてのアプリケーションコードおよび依存関係が含まれる自己完結型 Uber JAR または fat JAR を作成します。

プロジェクトのリソースファイル(DDL ファイルや application.propertiesなど)で仮想データベースを定義し、pom.xml ファイルで仮想データベースを Spring Boot Java 実行可能ファイルとしてビルドするために必要な依存関係を指定します。ビルドを実行すると、Maven は pom.xml ファイルを読み込み、そのコンテンツを解決して、外部リソースをビルドに組み込みます。

プロジェクトをビルドすると、仮想データベースを Spring Boot Java 実行可能ファイルとして作成します。作成された実行ファイルをローカルでテストできます。

ローカルテストが完了したら、JAR ファイルを Maven リポジトリーにデプロイできます。FAT JAR を Maven リポジトリーで利用可能になると、仮想データベースを OpenShift にデプロイするのと同様に YAML ベースのカスタムリソースを使用できます。

ファット JAR として仮想データベースを作成する利点
  • 仮想データベースと設定を表す DDL コード間のクリーン分離を確立します。
  • OpenShift 外の仮想化のローカルテストを提供します。当然ながら、OpenShift 環境に依存する他の機能、キャッシュ、認証、およびその他の機能はローカルでは機能しません。
  • プロジェクトの一部としてユーザー定義の関数(UDF)、カスタム翻訳者などの拡張機能をサポートするため、自動的にランタイム仮想データベースに組み込まれます。
  • 複数の環境へのデプロイメントに適しています。
  • バージョン管理は、プロジェクト全体のレベルで実行されます。
ファット JAR として仮想データベースを作成する際の欠点
  • Java、Maven、Teiid Spring Boot スターター、Spring、および Teiid に関する作業知識が必要です。

前提条件

  • Java 開発、Maven、Teiid Spring Boot スターター、Spring、および Teiid に関する作業知識がある。
  • Maven 3.2 以降がインストールされている。
  • JDK 11(Java Platform、Standard Edition 11 Development Kit)以降がインストールされている。
  • 互換性のあるデータソースがあり、OpenShift クラスターがアクセスできる。
  • 仮想データベースを構築するために必要な依存関係を指定する pom.xml ファイルがある。
  • データソースのドライバーが公開 Maven リポジトリーから利用できない場合は、ドライバーをダウンロードし、ローカルの Maven リポジトリーにデプロイしています。
  • Data Virtualization Operator は、仮想データベースのビルド依存関係が含まれる Maven リポジトリーにアクセスできます。
  • 作成する仮想データベースの DDL ファイルがあるか、SQL コードを作成し、DDL ファイルを作成する方法を把握している。

手順

  1. 仮想データベースの以下のディレクトリー構造で Java Maven プロジェクトを作成します。
dv-customer-fatjar/
├── pom.xml
└── src
    └── main
        ├── java
        │   └── io
        │       └── integration
        │           ├── Application.java
        │           └── DataSources.java
        └── resources
            ├── application.properties
            └── vdb.ddl
  1. pom.xml で、仮想データベースの構築に必要なリポジトリーの場所、ドライバー、およびユーザーの認証情報を定義します。
  2. 仮想データベースプロジェクトのアプリケーションライブラリーで、Java アプリケーションファイル Application.javaを作成します。
  3. 同じディレクトリーに、Datasourcess.java クラスファイルを追加し、仮想データベースが接続する各データソースに bean メソッドを追加します。postgreSQL データベースと連携するように設計された Datasources.java ファイルの例は、「Datasources.java ファイルのサンプル」 を参照してください。
  4. /src/main/resources に、application.properties ファイルとデータソースの接続プロパティーを追加します。詳細は、「アプリケーションプロパティーの指定」 を参照してください。
  5. /resources/vdb.ddl で DDL ステートメントを追加して、ビューを含む仮想データベースの構造を指定します。たとえば、vdb.ddlです。

    以下の例は、postgreSQL データソースを使用する仮想データベースの DDL ファイルのサンプルを示しています。

    例: vdb.ddl

    CREATE DATABASE customer OPTIONS (ANNOTATION 'Customer VDB');
    USE DATABASE customer;
    
    CREATE FOREIGN DATA WRAPPER postgresql;
    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;

    DDL を使用して仮想データベースを定義する方法の詳細は、『Data Virtualization リファレンスガイド』の「 DDL metadata for schema objects 」を参照してください。仮想データベースの完全な DDL を定義する方法については、本書の対象外となります。

  6. 仮想データベースアーティファクトをビルドします。端末を開き、以下のコマンドを入力します。

    mvn clean install

    このコマンドは、ターゲットリポジトリーに ${project.name}-$2020.Q1.vdb ファイルを生成します。

  7. 以下のコマンドを入力して、アーティファクトをリモートリポジトリーにデプロイします。

    mvn clean install deploy

Maven リポジトリーで仮想データベースアーティファクトが利用可能になった後に、YAML ベースのカスタムリソースを使用して仮想データベースを OpenShift にデプロイできます。

5.1. Datasources.java ファイルのサンプル

Datasources.java ファイルは、データソースへの接続を表すクラスを追加します。このファイルは、ConfigurationProperties 引数(spring.datasource.sampledb)にプレフィックスも確立します。この接頭辞は、application.properties ファイルに指定するデータソースプロパティーの名前で使用する必要があります。

Datasources.java で複数のデータソースを定義するには、それぞれが独自のプレフィックス指定を持つ複数のクラスを追加します。それぞれの場合も、対応するエントリーを DDL ファイルおよび CR ファイルの データソース プロパティーに追加する必要があります。

Java Bean を DDL ファイルに定義されたデータソースに関連付けるには、Bean 名は DDL ファイルの SERVER および resource-name プロパティーの名前と同じである必要があります。たとえば、以下のサンプルファイルは sampledb という名前の PostgreSQL データベースへの接続を確立します。これは、DDL ファイルでデータソースの SERVER オブジェクトおよびその resource-name 定義に割り当てられる名前です。

package com.example;

import javax.sql.DataSource;

import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DataSources {

    @ConfigurationProperties(prefix = "spring.datasource.sampledb") 1
    @Bean
    public DataSource sampledb() {    2
        return DataSourceBuilder.create().build();
    }

}
1
プレフィックスは、application.properties ファイルで定義するプロパティーに割り当てる接頭辞と一致する必要があります。
2
プレフィックス定義の sampledb と メソッド name は、仮想データベースの DDL ファイルで定義される SERVER および resource-name オブジェクトの名前と一致する必要があります。Spring Boot フレームワークは、Datasources.java ファイルのメソッド名と DDL ファイルのデータソースの名前を自動的に関連付けます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.