by 疋田 圭介 | August 10, 2016

JSON やXML データをドライバーでJDBC, ODBC, ADO.NET で利用する方法

多くのモダンデータストアはJSON かXML ベースのWeb API を通じて利用されます。すでに長く使われてスタンダートとして安定しているフォーマットです。 ただし、カスタム業務システムや帳票・BI などの各種ツールでは、RDB を基本としたデータソース・フォーマットにしか対応していないというケースが多いのではないでしょうか? 今後も使っていくシステムではあるけれど、改修を行うのにもコストがかかるし、エンジニアもJSON の修得には時間が。そんなとき頼りになるCData のJDBC, ODBC, ADO.NET ドライバーですが、生憎自分が使いたいWeb API のドライバーが製品化されていない。 そんな時に頼りになるのがCData JSON Driver、CData XML Driver です。これらのドライバーは、ユーザーがJSON およびXML フォーマットで提供されているWeb API に対してカスタムスキーマを設定することでデータドライバーとして利用することができるものです。 スキーマ設定はちょっと上級者向けですが、組織内で一人がスキーマ定義を行えば、同じスキーマファイルを利用して、組織・コミュニティ全員がWeb API を開発環境および、BI, 帳票ツール、Excel から使えるようになります。

使いたいJSON, XML データのモデル化

正しくJSON またはXML をデータベースとして読むためには、「テーブル」として表示させたい各エンドポイントに対してスキーマを定義します。 初めてテーブル名を決めます。次にパースしたいJSON/XML エレメント毎に名前をふっていきます。 そして「テーブル」のユニークなプライマリーキーとなるエレメントを定義し、繰り返しとなるエレメントを定義して「行」に均し、パースするリソースの位置を定義します。

例として次のJSON データを見てみましょう:

{
  "person": [
    {
      "id": 1754,
      "name": "Joe Smith",
      "address": {"street": "9th Street", "city": "New York", "state": "NY"},
      "children": ["John", "Sarah", "Elizabeth"],
      "birthday": "1960-01-01"
    },
    {
      "id": 1755,
      "name": "Jane Doe",
      "address": {"street": "8th Avenue", "city": "New York", "state": "NY"},
      "children": ["Adam", "Bailey"],
      "birthday": "1960-07-01"
    },
    ...
  ]      
}

このJSON を下のようにスキーマ定義します:



  <attr name="ID"             xs:type="int" key="true" other:xPath="id" /> 
  <attr name="Name"           xs:type="string"         other:xPath="name" />
  <attr name="Address_Street" xs:type="string"         other:xPath="address/street" />
  <attr name="Address_City"   xs:type="string"         other:xPath="address/city" />
  <attr name="Address_State"  xs:type="datetime"       other:xPath="address/state" />
  <attr name="Child1"         xs:type="string"         other:xPath="children[0]" />
  <attr name="Child2"         xs:type="string"         other:xPath="children[1]" />
  <attr name="Child3"         xs:type="string"         other:xPath="children[2]" />


<rsb:set  attr="RepeatElement"  value="/json/person/" />
<rsb:set  attr="uri"            value="PersonData.json" />

Read / Write 処理の設定

スキーマのカラム定義を作成したら、次はスキーマに様々なスクリプトを書き込むことで、必要なSQL クエリ(SELECT, INSERT, UPDATE, DELETE) が使えるようにしましょう。

Operation SQL Equivalent Schema Method
Read SELECT GET
Create INSERT POST
Update UPDATE MERGE
Delete DELETE DELETE

例えば、テーブルにフルRead/Write 機能を追加したい場合には、以下のようなスクリプトをスキーマに追加する必要があります:

  
    
      <rsb:push />
    
  
    
  
    
      <rsb:push />
    
  
    
  
    
      <rsb:push />
    
  

  
    
      <rsb:push />
    
  

これで、定義したスキーマにおいて、指定されたURI でデータを処理できるように設定ができました。さらに複雑なクエリ(ソートや、グルーピングなど)は 製品ヘルプの"Modeling XML Data" 項を参照してください: (JSON, XML)

JSON/XML データをデータベースとして使いましょう!

ADO.NET 版では、Visual Studio に統合して.NET アプリケーション開発(Entity Framework 6も可)で、JDBC 版はEclipse のようなIDE から開発での利用や多様なETL, ツールから、ODBC はTableau, PowerBI, Qlik などの各種ツールで利用できます。 各エディションのJSON/XML ドライバーをダウンロードして、作成したスキーマファイルを任意の位置に配置して、接続設定画面でスキーマファイルを参照する設定をおこなうだけ。

是非、30日の無償評価版 (JSON, XML) を是非お試しください。



 
 
ダウンロード