CData Data Drivers を機能に分解してメリットを確認

**「CData Drivers は、SaaS, NoSQL DB, Web サービスへの接続をODBC、JDBC などの標準インターフェースに統一します。」**という製品の概要説明をもう少し細かく機能に砕いてそのメリットを改めてまとめてみました。
- ![20170919-2017-refresh.png](https://qiita-image-store.s3.amazonaws.com/0/116843/8d43f319-fd08-0baa-905d-7e6bac68dbf6.png)

#CData Driver を機能に分解
大きく分けて、CData Drivers は以下の4つの機能を持ちます。
![CData Drivers 機能.png](https://qiita-image-store.s3.amazonaws.com/0/116843/38a8a3d2-3680-7ff8-3b11-1ed8d1329855.png)
##テーブル化
**既存アプリ/ツール、エンジニアが分析・活用しやすいテーブルデータに変換**
![スライド3.PNG](https://qiita-image-store.s3.amazonaws.com/0/116843/a3d3096f-2fbc-182d-c088-2e52ca506e61.png)

RDB はテーブルデータを扱います。すでにRDB がビジネスアプリケーションのDB の主流となって幾十年。そして世界中で最も使われているビジネスソフトと言えるExcel もテーブルデータです。やっぱり、人間の目で扱うデータは二次元のテーブルデータがしっくりきます。
ところかWeb API で帰ってくるデータは、JSON やXML という形式のデータです。しかもセンサーデータや行動履歴データ、SNS などで使われるデータはテーブルデータではなく、非構造データであることが多いです。
一方、アナリティクスツール、ETL などのデータ連携ツールは、基本的にはテーブルデータを扱うように設計されています。データ活用には、非構造・非テーブルのデータをスキーマがあるテーブルデータに変換する必要があります。
CData Drivers では、各API のエンドポイントから返されるデータをスキーマの付いたテーブルに変換します。エンドポイントの形が決まっているサービスでは、すでにCData Driver 中にプリセットでスキーマが組まれています。Salesforce、DynamicsCRM やkintone のようにカスタムエンティティが多いサービス、元々非構造データが格納されているNoSQL DB の場合には、CData Drivers がスキーマの自動検出を行います。

##標準SQL エンジン-Read Only ではなく、フルCRUD+多彩なクエリ
**一番使われているクエリ言語である標準SQL に対応、GUI からの自動生成クエリにも対応**
Web API は、それぞれクエリ方法が異なります。どこまでのフィルタリングができるか？、集計が可能か？、構文は？などすべて異なります。では、BI ツールなどからのクエリにそれぞれ別のクエリ方法を実装しなければならないのでしょうか？ **CData Drivers では標準SQL でのクエリを可能にします。**

Java、C#、Python、C++、Ruby など多様な開発言語がありますが、クエリ言語は開発言語を跨いで「SQL」が標準です。BI ツールやETL ではGUI からアプリ内でSQL クエリを自動生成しています。自動生成されるクエリは当然、標準SQL クエリです。CData Drivers を使えば自動生成クエリをそのままクラウドサービスへのクエリに使うことができるため、既存ツールとの相性は抜群です。

ドライバーでは、フィルタリングなどは最大限、元となるAPI の側で行いつつも、API だけではサポートしていないJOIN や集計関数、一度に取得できるレコード制限などをドライバー側で吸収することによって、ユーザーにはSQL クエリと同様のインターフェースを提供します。

[例：JDBC Drivers for Salesforce の対応クエリ](http://cdn.cdata.com/help/GFC/jdbc/pg_overview.htm)

 
##標準インターフェース（JDBC、ODBC、ADO.NET、FireDAC）
**既存のBI、ETL、DWH などのツールでカスタム不要で使用可能**
クエリだけではなく、より高度にデータを扱う為の抽象化フレームワークが、JDBC、ODBC、ADO.NET、FireDAC です。そしてこれらの技術は、アプリケーションから異なるデータソースを効率よく扱う為に、既存のアプリケーションやツールの多くに組み込まれています。カスタムアプリでは、IDE からフレームワークが利用可能です。BI ツール、ETL ツール、DWH 、ワークフローツールなどでもDB にアクセスするために標準のJDBC やODBC のデータ接続口を準備しているものが大多数です。
![カスタムドライバー.png](https://qiita-image-store.s3.amazonaws.com/0/116843/0c28b4a1-265a-ef8d-2370-211e39acbd7b.png)

CData Drivers はこのような標準のデータアクセスインターフェースに完全準拠したドライバーを提供しています。既存のJDBC、ODBC などの抽象化レイヤーを同じように使ってクラウド連携が可能になり、データ連携のアーキテクチャがシンプルになります。EntityFramework など高度なフレームワークを使ってデータ連携開発が可能になります。
- **ODBC:** ユニコードベース32/64-ビット。ODBC 3.8 準拠。Windows、Mac、Linux に対応。
- **JDBC:**: ピュアJava タイプ4/5 JDBC Drivers。JDBC 3.0 および4.0 をサポート。
- **ADO.NET:** 100% フルマネージド ADO.NET ライブラリ。Entity Framework (EF 5 & 6)、ADO.NET 2.0、LINQ to Datasets をサポート。

CData では、これらの標準テクノロジのラッパー生成には自動化フレームワークを使っています。


[Tableau 標準ODBC でのkintone 接続例](https://qiita.com/jonathanh/items/517a76ac9e4b1879b75b)
[Talend 標準JDBC でのCassandra 接続例](https://www.cdata.com/jp/kb/tech/cassandra-jdbc-talend.rst)
[Microsoft Access 標準ODBC でのSalesforce 接続例](http://www.cdata.com/jp/kb/tech/salesforce-odbc-access-linked-tables.rst)


##セキュリティ、ネットワーキング、管理機能
Web API へのアクセスで頭を悩ます部分に様々な認証方法への対応があります。さらにエンタープライズのデータ連携では、さまざまな要件が求められます。
- ファイアウォールやプロキシ
- キャッシング
- ログ管理
このような要件にCData Drivers では、標準接続プロパティで全データソースに渡り統一対応をしています。エンジニアはCData 製品を使えば、すべてのデータソースに対して同じ方法で上記機能を扱うことが可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/116843/938f7b83-4ca6-f993-b5d2-c670e7ecbbf6.png)

元々CData はネットワーキング、セキュリティコンポーネントを1990年代から提供している/n software から派生した会社であり、20年以上に渡る/n software の技術を製品内で使っています。

このように、Data Driver でのクラウドデータへのアクセスは、大変メリットが多いものと感じてもらえればうれしいです。