CData Software Blog

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

CDataまるわかりシリーズ 第三弾 CData Drivers - SaaSデータにSQLアクセス!?

CData桑島です。本記事はCDataまるわかりシリーズの第三弾、そして、CData Software User Group Advent Calendar 2019 12日目の記事です。

CDataまるわかりシリーズ は以下の構成となっています。

  1. CDataが生まれた背景
  2. CDataの製品ライン
  3. CData Drivers - SaaSデータにSQLアクセス!? (本記事)
  4. CData Sync - まるっとSaaSデータをDBに複製!?
  5. CData SQL Gateway - 仮想MySQL/SQLServerインスタンス!?
  6. CData API Server - RDBCSVファイルからWebAPIを生成!?

前回の記事、[CDataの製品ライン(https://www.cdatablog.jp/entry/maruwakari02)」では、CDataの製品ラインの一覧についてご紹介しました。本記事からは、製品毎の特徴や得意とするユースケースについて解説していきます。今回は、CData製品のコアテクノロジーともいえるCData Drivers製品、そして、各種ツールから利用できる専用コネクタについてご紹介します。

f:id:kuwazzy:20191211094258p:plain

CData Drivers とは

CData Drivers製品は、一言でいうと標準SQLでデータアクセスできるライブラリ製品です。 具体的にCData Drivers内部で行っている処理は、リクエストの「SQL -> APIリクエスト」変換とレスポンスの「JSON/XML -> テーブル形式」変換です。この変換により、SaaSやNoSQLといった通常だとSQLでのデータアクセスが出来ないデータソースにも、ツールやアプリケーションからは、仮想RDBのようにテーブル形式のデータとしてSQLでアクセスすることが可能となります。

f:id:kuwazzy:20191209184442p:plain

それでは、CData Drivers製品の特徴を掘り下げてみていきましょう。 f:id:kuwazzy:20191210191531p:plain

対応データソース

2019/12 現在、CData Drivers製品は約200のデータソース をカバーしています。なお、これらのデータソースは日々、加速度的に増えてます。リストにないデータソースについてもCData REST Driversという汎用的な製品もありますので、WebAPIを要する多くのアプリケーションに対してもSQLでのデータアクセスが可能となります。

f:id:kuwazzy:20191210154114p:plain

標準SQLでアクセス

標準SQLというのは、具体的にはANSIのSQL92準拠のSQL構文です。通常では、以下のデータ操作言語(DML)が利用できます。

構文 操作 CRUD
INSERT レコードの追加 C
SELECT レコードの選択 R
UPDATE レコードの更新 U
DELETE レコードの削除 D

上記CRUD操作は、データソース側のAPIの許容範囲での実装となっておりますので、読み取り(READ)専用のAPIを持つアプリケーションの場合にはSELECTしか出来ません。

なお、一部のデータソース(Salesforceなど)では、テーブルの作成などのデータ定義言語(DDL)や以下の拡張構文が利用出来ます。

構文 操作 備考
UPSERT 既存レコードの更新、新規レコードの追加
INSERT INTO SELECT 複数レコードの一括追加
UPDATE SELECT 複数レコードの一括更新
DELETE SELECT 複数レコードの一括削除
CREATE TABLE テーブルの作成
DROP TABLE テーブルの削除
ALTER TABLE テーブルの変更

RDBMSのデータソースと決定的に異なる点としては、トランザクション、いわゆる、Commit / Rollback 、そして、ロックによる排他制御は、RDBMS以外のデータソース(SaaS/NoSQLなど)の場合はサポートしていません。

メタデータ

アクセスできるのはデータの値だけではありません。データソース側のメタデータ、つまり、データベースでいうところの、テーブルのリスト、テーブルのフィールド定義、その型や桁数をデータと併せて取得することが可能です。

f:id:kuwazzy:20191212114245p:plain

Salesforceやkintoneといったカスタムのオブジェクト(テーブル相当)やフィールドが作成できるデータソースについては、事前にスキーマを取得するAPIをリクエストすることで最新のデータソース側にオブジェクト構造にあったメタデータ定義を作成します。また、NoSQLをはじめとするスキーマレスのデータソースの場合、データの内容からスキーマを自動検出する機能を持ち合わせているため、これらのデータソースもあたかもRDBMSと同じように構造化データとして扱うことができるようになっています。

標準化テクノロジー

CData Driversは、以下3つのテクノロジーで提供されており、データベースを操作する様々な言語から利用することが出来ます。

テクノロジー 言語 提供形式 備考
JDBC Java .jar Type 4 driver(Pure Java driver) / JDBC 3.0 およびJDBC 4.0 に準拠
ADO.NET C# / VB.NET .dll .NET Framework 2.0 以上をサポート / .NET Standard(.NET Core/Mono/Xamarin)対応
ODBC C / C++ / Go / Node.js / PHP / Python / R .dll / .dylib / .so 32-bit、64-bit アプリケーションをサポート / ODBC 3.8 準拠 / WindowsLinuxmacOSクロスプラットフォームで対応

また、ODBCJDBCといったデータアクセスインタフェースを標準規格に準拠しているライブラリなので様々なツールからもノーコードで利用可能です。

f:id:kuwazzy:20191209205241p:plain

エンタープライズ利用を想定した機能

本製品をはじめ、CData製品は企業利用を想定して開発しているので、以下のようなエンタープライズでのユースケースを想定した機能が標準で搭載されています。

プロキシサーバー経由でのデータソースへのアクセス

SaaSへアクセスする場合、社内のプロキシサーバ経由でのアクセスが必要な場合があります。CData Driversでは、全データソース共通的にシステムプロキシを自動で読み込む、または、明示的に設定することでプロキシサーバを経由したアクセスを可能としています。

認証・認可機能

データソース毎に認証方式が異なりますが、CDataDriverでは接続パラメータへ認証に必要なクレデンシャル情報をセットするだけ、OAuthなどの認証・認可フローが必要な場合にも組み込まれているため、個別の開発は不要となります。

ロギング機能

全てのテクノロジー、および、データソース にて共通したログファイルの出力が可能です。実際にデータソースのAPIへのリクエスト、および、レスポンス情報も取得できるますので、想定と異なる結果の場合に原因を特定するのに有効です。また、CData社のサポートに問い合わせる時に、本ログファイルを送付することで発生している問題を共有することが出来ます。

レベル 記録内容
1 クエリ、返された行数、実行開始とかかった時間、エラーが記録されます。
2 Verbosity 1に含まれるすべて、キャッシュクエリ、 および, HTTP ヘッダーなどリクエストに関する追加の情報が記録されます(該当する場合)。
3 2 に加えてリクエストとレスポンスの本文が記録されます。
4 3 に加えてデータソースとのトランスポートレベルの通信が記録されます。これには、SSL ネゴシエーションが含まれます。
5 データソースとのやり取りおよび問題のトラブルシューティングに役立つ追加情報も記録されます。これには、インターフェースコマンドが含まれます。

利用シーン

BIやAnalytics、ETLやEAIといったデータ系のツールやプラットフォームのうち、サーバー製品、もしくはセルフサービス型でインストール型のクライアント製品であれば、ほとんどのツールが、ODBC/JDBC/ADO.NETといったデータアクセスインタフェースを持っています。

こちらは、Tableau Desktopからの利用の例です。Tableau Desktop自体が既に多くのデータソース をサポートしていますが、汎用的なデータソースとしてODBC/JDBCの両方をサポートしています。このインタフェースを利用することでTableauDesktopが標準ではサポートしていないkintoneなどのデータソースをアドホックに読み込み可視化することが可能となります。 f:id:kuwazzy:20191210184316p:plain 一方でAsteriaなどのETL/EAIツールも標準でRDBを操作するコンポーネントが存在するので、JDBCなどのライブラリを配置することでRDBと同じようにSQLでアクセスすることが出来るようになります。 f:id:kuwazzy:20191210184345p:plain

専用コネクタ とは

CDataが提供する専用コネクタとは、データを取り扱うOffice・BI・ETLなどのツールからCData製品をシームレスに利用できるように、既存のCData Driversテクノロジーを内包したツール側の専用アドイン・コネクター・アダプター形式として提供される製品です。

f:id:kuwazzy:20191211093944p:plain

カテゴリ ツール CData製品名 備考
Office Excel CData Excel Add-Ins
BI Power BI CData Power BI Connectors DirectQueryが利用可能
Tableau CData Tableau Connectors
ETL/ESB SQL Server SSIS CData SQL Server SSIS Components
BizTalk Server CData BizTalk Adapters
Mulesoft AnyPoint CData Mulesoft AnyPoint Components
Program language PowerShell CData Powershell Cmdlets
Delphi FireDAC CData FireDAC Components

例えば、Excel Add-Insは、Excelのリボンに各クラウドサービスのデータに接続できるボタンが追加されて既存のExcelシートから容易にクラウドデータ連携が可能となります。

f:id:kuwazzy:20191211094048p:plain

SQL Serverにバンドルされて提供されるETL機能、SSIS(SQL Server Integration Service)では専用のコネクタとして既存の処理フローにクラウドデータ連携をインテグレート出来ます。

f:id:kuwazzy:20191211094127p:plain

まとめ

CData Drivers製品についてのまとめです。従来のRDBと同じODBC/JDBC/ADO.NETといったデータアクセス方式でSaaSやNoSQLなどのデータソース にアクセス出来るため、それらのアクセス方式で接続出来るツールやORMなどのライブラリからの利用に最適と言えます。また、標準SQLでのアクセスというのは、MS-AccessSQLServerOracleといったSQLに慣れ親しんだ業務ユーザやエンジニアにとっても大きなメリットとも言えます。一方で、ODBC/JDBC/ADO.NETのライブラリとしての提供であるため、ライブラリ単体でのデータ連携は出来ません、他のツールやプログラムから呼ばれてはじめて動作します。また、ツール側にそれらのインタフェースがない場合も利用出来ないという弱点もあります。

f:id:kuwazzy:20191210183634p:plain

次回

次回は「第四弾 CData Sync - まるっとSaaSデータをDBに複製!?」と題してお送りします。