CData Software Blog

クラウド連携のCData Software の技術ブログです。

Actian Zen (PSQL v13) から Web APIを自動生成してみる:CData API Server

こんにちは。CData Software Japan リードエンジニアの杉本です。

今日は Actian Zen(PSQL v13)というIoTなどでもよく利用されているデータベースからAPIを生成する方法を紹介します。

Actian Zen とは?

Actian社が提供するデータベース製品です。もともとはBtrieve、Pervasive といった名称で提供されていましたが、最新版からは Actian Zen という名前でリリースされています。

www.actian.com

f:id:sugimomoto:20191114164436p:plain

日本では株式会社エージーテック社が取り扱っており、以下のように特徴が紹介されています。

Actian Zen Embedded Database(以降、Actian Zen) は、世界中で最も信頼性に優れ、フットプリントが小さく、メンテナンスが少ない上、高度なパフォーマンスを提供するデータベース管理システム(DBMS)です。Actian Zen は、NoSQL と SQL 2つのアクセスメソッドにより、パフォーマンスと標準アクセスの完璧な融合を実現します。管理者不要の設計と高い下位互換性は、ISV の負荷となるサポート費用の問題を軽減します。

www.agtech.co.jp

Code Zineで紹介されている以下の記事もわかりやすいですね。

enterprisezine.jp

API実現イメージ

この記事では、以下のようなActian ZenのサンプルテーブルからCData API Serverを使って、Full CRUDなWeb APIを自動生成する方法を解説します。

f:id:sugimomoto:20191114164445p:plain

以下のように任意のプログラムやPostmanなどを通じてテーブルのデータを取得・更新・削除できるようになります。

f:id:sugimomoto:20191114164452p:plain

また、CData API ServerではAPIドキュメントも自動生成されるので、利用ユーザーと仕様を共有することが簡単にできます。

f:id:sugimomoto:20191114164643p:plain

Actian Zenのインストール

Actian Zenは日本のエージーテック社から評価版を入手できます。以下のURLから評価版申し込みを実施し、インストーラーを入手してください。

www.agtech.co.jp

f:id:sugimomoto:20191114164500p:plain

なお、今回の記事では、Windows Server 2016で実施していますが、API ServerそのものはCross Platformに対応しているので、Linux上でも動かすことが可能です。

Actian Zenをインストール後、以下のようにPSQL Control CenterでDEMODATAのデータベースが表示できるようになっていれば、Actian Zen側の環境準備は完了です。

f:id:sugimomoto:20191114164445p:plain

CData API Serverのインストール

CData API Serverは以下のURLからトライアルを入手可能です。

https://www.cdata.com/jp/apiserver/

なお、デフォルトではActian Zenへの接続用コネクターADO.NET)が含まれていないため、API Serverと合わせてインストールします。

CData API Serverのインストールは、インストーラーを立ち上げて、ダイアログに従って進めるだけで、簡単にインストールが可能です。

f:id:sugimomoto:20191114164515p:plain

途中、API Serverのログインパスワードの入力を求められるので、忘れてしまわないように注意しましょう。

f:id:sugimomoto:20191114164520p:plain

インストール後、以下のようにAPI Serverの管理画面がブラウザで表示されます。先程入力したパスワードとユーザー「admin」を指定して、ログインします。

f:id:sugimomoto:20191114164524p:plain

ログイン後、「情報」タブに移動し、「30日の評価版をアクティベート」をクリックして、トライアルライセンスを有効にします。

f:id:sugimomoto:20191114164532p:plain

次に、Actian Zenの接続コネクタを入手します。以下のURLからBtrieve ADO.NET Providerのトライアルをダウンロードしてください。名称が旧名になっていますが、Actian Zenでも利用可能です。

https://www.cdata.com/jp/drivers/btrieve/ado/

インストールはAPI Serverと同じように、ダイアログに従って進めていくだけでインストールできます。

f:id:sugimomoto:20191114164540p:plain

以上で、環境のセットアップは完了です。

Actian Zen から API を生成

それでは、実際にActian ZenからAPIを生成してみたいと思います。

API Serverでは「設定」タブから、各種APIの構成を行うことが可能です。

まず、Actian Zenへの接続情報を設定しましょう。「接続」をクリックし、新しい接続の追加から「Btrieve」を選択します。

f:id:sugimomoto:20191114164546p:plain

同じサーバーにActian Zenが存在する場合は、Databaseのフォルダパスを指定するだけでOKです。以下のように「C:/ProgramData/Actian/PSQL/Demodata」といった形で指定のDatabaseフォルダパスを入力し、接続テストをクリックしてください。

「接続に成功しました」が表示されればOKです。「変更を保存」をクリックします。

f:id:sugimomoto:20191114164554p:plain

次に、対象のテーブルからAPIを生成します。「リソース」タブに移動し「リソースを追加」をクリックします。

f:id:sugimomoto:20191114164600p:plain

データ接続の一覧から先程作成したActian Zenへの接続を選択し

f:id:sugimomoto:20191114164607p:plain

対象のテーブルを選択します。今回はPersonテーブルを指定してみました。

f:id:sugimomoto:20191114164614p:plain

最後にこのAPIに対して許可する操作、および対象とするカラムを選択します。最後に保存をクリックすると、自動的にAPIが生成されます。

f:id:sugimomoto:20191114164620p:plain

最後にAPIアクセス用のユーザーを作成します。「ユーザー」タブに移動し「+追加」をクリック

f:id:sugimomoto:20191114164627p:plain

任意の名称と操作権限を設定し、保存します。

f:id:sugimomoto:20191114164632p:plain

ユーザーを作成すると、以下のように認証トークンが生成されます。これは後ほどAPIアクセス時に利用するので、控えておいてください。

f:id:sugimomoto:20191114164637p:plain

生成したAPIにアクセス

それでは、実際に生成したAPIにアクセスしてみましょう。「API」タブに移動することで、APIの構成情報および仕様を確認することができます。

今回生成したAPIは「CData_DEMODATA_Person」で構成されています。

f:id:sugimomoto:20191114164643p:plain

このまま、対象のAPIURLをクリックすると、GETリクエストが行われ、以下のようにActian ZenのデータをJSONで取得できることが確認できます。

f:id:sugimomoto:20191114164650p:plain

もちろん、Postmanのようなアプリケーションから実際にAPIリクエストも試すことが可能です。外部のアプリケーションからは認証情報としてHTTPヘッダーに「x-cdata-authtoken: 認証トークン」を指定する必要があります。

例えば、以下ようにPostmanで入力すると

GET /api.rsc/CData_DEMODATA_Person/ HTTP/1.1
Host: localhost:8153
x-cdata-authtoken: 4p3I7y6a7E4q8p4N0k7k
Host: localhost:8153

このようにAPIにアクセスすることができます。

f:id:sugimomoto:20191114164659p:plain

同様にPOSTでレコードの作成、PATCHでレコードの更新、DELETEでレコードの削除を行うことができます。

リクエスト方法は生成されたAPIリファレンスを参照してみてください。

また、API ServerではODBCJDBCADO.NETといった各種SDK、クライアントツールを使用することができます。BIツールやETLツールとの接続にも利用できるので、ぜひ試してみてください。

f:id:sugimomoto:20191114164706p:plain