製品をチェック

SingleStore Driver の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

SingleStore アイコン SingleStore JDBC Driver 相談したい

SingleStore データを組み込んだパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。

Apache Camel を使用してSingleStore のデータと連携

Apache Camel のルーティングとCData JDBC Driver を使用してSingleStore のデータをディスク上のJSON ファイルにコピーするシンプルなJava アプリを作成。

加藤龍彦
デジタルマーケティング

最終更新日:2022-01-13

こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。

Apache Camel は、データを消費または生成するさまざまなシステムを統合できる、オープンソースの統合フレームワークです。CData JDBC Driver for SingleStore と組み合わせることで、リアルタイムSingleStore のデータと連携するCamel ルートを使用するJava アプリを作成できます。この記事では、SingleStore のデータをJSON ファイルに接続、クエリ、及びルーティングするアプリをNetBeans で作成する方法について説明します。

ビルトインの最適化されたデータ処理により、CData JDBC Driver は、リアルタイムSingleStore のデータとやり取りする際に比類のないパフォーマンスを提供します。SingleStore に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作をSingleStore に直接プッシュし、組み込まれたSQL エンジンを利用してサポートされていない操作(主にSQL 関数とJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータソース型を使用してSingleStore のデータを操作および分析することができます。

新しいMaven/Java プロジェクトを作成する

以下の手順に従って、新しいJava プロジェクトを作成し、適切な依存関係を追加します。

  1. NetBeans を開き、新しいプロジェクトを作成します。
  2. カテゴリリストからMaven を選択し、プロジェクトリストからJava Application を選択して、「Next」をクエリします。
  3. プロジェクトに名前を付け、他のプロパティを調整して「Finish」をクリックします。
  4. ソースパッケージで新しいJava クラス(ここではApp.java を使用)を作成し、クラスにmain メソッドを追加します。

プロジェクトの依存関係を追加する

プロジェクトが作成されたら、アプリからリアルタイムSingleStore のデータを操作するために必要な依存関係を追加できるようになります。まだMaven を環境にインストールしていない場合、CData JDBC ドライバのJAR ファイルをプロジェクトに追加するのに必要なため、インストールしてください。

Maven を使用してCData JDBC Driver for SingleStore をインストールする

  1. SingleStore 用のCData JDBC Driver をダウンロードしてパッケージを解凍し、JAR を実行してドライバーをインストールします。
  2. Maven を使用し、コネクタとしてJDBC Driver をインストールします。
    mvn install:install-file
    	-Dfile="C:\Program Files\CData\CData JDBC Driver for SingleStore 2019\lib\cdata.jdbc.singlestore.jar"
    	-DgroupId="org.cdata.connectors"
    	-DartifactId="cdata-singlestore-connector"
    	-Dversion="19"
    	-Dpackaging=jar
    

JDBC Driver をインストールしたら、プロジェクトに依存関係を追加できます。依存関係を追加するには、pom.xml を編集するか、依存関係にあるフォルダを右クリックして「Add Dependency」をクリックします。各依存関係のプロパティは以下の通りですが、「Add Dependency」ウィザードの「Query」ボックスに依存関係の名前を入力することで使用可能なライブラリを検索できます。

Selecting a dependency

必要な依存関係

DependencyGroup IDArtifact IDVersion
camel-coreorg.apache.camelcamel-core3.0.0
camel-jacksonorg.apache.camelcamel-jackson3.0.0
camel-jdbcorg.apache.camelcamel-jdbc3.0.0
camel-jsonpathorg.apache.camelcamel-jsonpath3.0.0
cdata-singlestore-connectororg.cdata.connectorscdata-salesforce-connector19
commons-dbcp2org.apache.commonscommons-dbcp22.7.0
slf4j-log4j12org.slf4jslf4j-log4j121.7.30
log4jorg.apache.logging.log4jlog4j2.12.1

Camel を使用してJava アプリでSingleStore のデータにアクセスする

必要な依存関係を追加したら、Java DSL(Domain Specific Language)を使用してリアルタイムSingleStore のデータにアクセスできるルートを作成できます。以下はコードの一部です。サンプルプロジェクト(zip ファイル)をダウンロードして以下を実行してください。(TODO コメントに注意してください。)

必要なクラスをメインクラスにインポートすることから始めます。

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.support.SimpleRegistry;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.log4j.BasicConfigurator;

次に、main メソッドでロギングを構成し、新しいBasicDataSource を作成してレジストリに追加し、新しいCamelContext を作成して、最後にコンテクストへのルートに追加します。この例では、SingleStore のデータをJSON ファイルにルーティングします。

ロギングを構成する

BasicConfigurator.configure();

BasicDataSource を作成する

BasicDataSource を作成し、ドライバークラス名(cdata.jdbc.salesforce.SalesforceDriver)とURL(必要な接続プロパティを使用)を設定します。

データに接続するには、次の接続プロパティが必要です。

  • Server:SingleStore データベースをホスティングしているサーバーのホスト名またはIP アドレス。
  • Port:SingleStore データベースをホスティングしているサーバーのポート。

また、オプションで以下を設定することもできます。

  • SingleStore:SingleStore Server に接続する場合のデフォルトデータベース。設定されていない場合、すべてのデータベースのテーブルが返されます。

標準認証

標準認証で認証するには、次を設定します。

  • User:SingleStore サーバーに認証する際に使われるユーザー。
  • Password:SingleStore サーバーに認証する際に使われるパスワード。

統合セキュリティを使用した接続

標準のユーザー名とパスワードを提供する代わりに、Windows 認証を介して信頼されたされたユーザーをサーバーに認証できます。

SSL 認証

SSL 認証を活用してセキュアなセッションを介してSingleStore データに接続できます。次の接続プロパティを設定し、データに接続します。

  • SSLClientCert:クライアント証明書のための証明書ストア名に設定。クライアントとサーバーの両方のマシンでトラストストアとキーストアが保持される2-way SSL の場合に使用されます。
  • SSLClientCertPassword:クライアント証明書ストアがパスワードで保護されている場合、この値をストアのパスワードに設定します。
  • SSLClientCertSubject:TLS/SSL クライアント証明書のサブジェクト。ストア内の証明書を検索するために使用されます。
  • SSLClientCertType:クライアントストアの証明書タイプ。
  • SSLServerCert:サーバーが受け入れ可能な証明書。

SSH 認証

SSH を使用して、セキュアにリモートマシンにログインできます。SingleStore データにSSH 経由でアクセスするには、次の接続プロパティを設定します。

  • SSHClientCert:クライアント証明書のための証明書ストア名に設定。
  • SSHClientCertPassword:クライアント証明書ストアがパスワードで保護されている場合、この値をストアのパスワードに設定します。
  • SSHClientCertSubject:TLS/SSL クライアント証明書のサブジェクト。ストア内の証明書を検索するために使用されます。
  • SSHClientCertType:クライアントストアの証明書タイプ。
  • SSHPassword:SSH サーバーに認証するためのパスワード。
  • SSHPort:SSH 操作に使用するポート。
  • SSHServer:認証しようとしているSSH 認証サーバー。
  • SSHServerFingerPrint:接続先のホストの検証に使用するSSH サーバーのフィンガープリント。
  • SSHUser:SSH サーバーに認証するためのユーザー名。
BasicDataSource basic = new BasicDataSource();
basic.setDriverClassName("cdata.jdbc.singlestore.SingleStoreDriver");
basic.setUrl("jdbc:singlestore:User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;");

CData JDBC ドライバには、接続URL の構成に役立つ組み込みの接続文字列デザイナーが含まれています。

組み込みの接続文字列デザイナ

JDBC URL の構築については、SingleStore JDBC Driver に組み込まれている接続文字列デザイナーを使用してください。JAR ファイルをダブルクリックするか、コマンドラインからjar ファイルを実行します。

java -jar cdata.jdbc.singlestore.jar

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

BasicDataSource をレジストリに追加し、CamelContext を作成する

SimpleRegistry reg = new SimpleRegistry();
reg.bind("myDataSource", basic);

CamelContext context = new DefaultCamelContext(reg);

CamelContext にルーティングを追加する

以下のルーティングでは、timer コンポーネントを使用して一度実行し、SQL クエリをJDBC Driver に渡します。結果はJSON として整理され、(きれいに印刷できるようにフォーマットされて)file コンポーネントに渡され、JSON ファイルとしてディスクに書き込まれます。

context.addRoutes(new RouteBuilder() {
	@Override
	public void configure() {
		from("timer://foo?repeatCount=1")
			.setBody(constant("SELECT * FROM Account LIMIT 10"))
			.to("jdbc:myDataSource")
			.marshal().json(true)
			.to("file:C:\\Users\\USER\\Documents?fileName=account.json");
	}
});

CamelContext ライフサイクルを管理する

ルートを定義したら、CamelContext を開始してライフサイクルを始めます。この例では、10 秒待機してからコンテクストをシャットダウンします。

context.start();
Thread.sleep(10000);
context.stop();

無償トライアル、サンプルプロジェクト、テクニカルサポート

これで、Camel を使用してSingleStore からJSON ファイルにデータをルーティングするJava アプリケーションを使用できるようになりました。CData JDBC Driver for SingleStore の30日の無償評価版と、サンプルプロジェクトをダウンロードして(TODO コメントに注意して)、Apache Camel でリアルタイムSingleStore のデータの操作を開始します。ご不明な点があれば、サポートチームにお問い合わせください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。