DB2のNoSQLによるJSONサポート機能(第1部): DB2のNoSQLによるJSONサポート機能の概要

アプリケーション環境が急速に変化するなか、さまざまなアプリケーション・レイヤー間でデータを保存・交換するための柔軟なメカニズムが必要となっています。JSON (Java™ Script Object Notation)はスキーマ設計のオーバーヘッドを削減し、データ加工を行う必要がないため、モバイル環境をサポートするインタラクティブなアプリケーションの構築のためには不可欠なテクノロジーとなっています。

DB2®のNoSQLによるJSONサポート機能を活用すると、開発者はMongoDBに基づいて作成したポピュラーなJSONベースのクエリー言語を使用することによって、IBM® DB2 for Linux®, UNIX®, and Windows®に保存されたデータを処理することができます。ドライバー・ベースの本ソリューションは実績のあるエンタープライズ機能と高い質のサービスを提供するRDBMSと連携し、JSONによるデータの柔軟な表示を実現します。DB2のNoSQLによるJSONサポート機能は、JSON文書を処理するにあたってコマンドライン・プロセッサー、Java API、および通信リスナーをサポートします。

本記事ではDB2のNoSQLによるJSONサポート・テクノロジーの概要について説明し、本シリーズのその他の記事では本テクノロジーの詳細機能についてチュートリアルを通じて説明します。

Bobbie J. Cochrane, Senior Technical Strategist, STSM, IBM

Bobbie Cochrane photoBobbie CochraneはIBMのInformation Management製品群の戦略イニシアチブ(NoSQL、クラウド、Web 2.0など)のリーダーを務めています。BobbieはこれまでIBMの研究成果や業界におけるイノベーション機能(PureXML、マテリアライズド・ビュー、トリガー、および制約など)を製品に取り込むことに取り組んでいます。主要なデータベース・カンファレンスでさまざまな学術記事や論文を発表し、トリガー、制約、キューブをサポートするSQL3の標準の定義にも深く関わっています。



Kathy A. McKnight, DB2 Runtime Architect, STSM, IBM

Kathy McKnight photoKathy McKnightはIBMのシニア・テクニカル・スタッフを務め、DB2 for Linux, Unix, and Windowsの稼働環境の構築を担当しています。Kathyは最初のリリースからDB2を担当し、DB2エンジンの多くの機能拡張(pureXMLや最新の例としてはJSONを含む)の設計とデリバリーを行っています。DB2のOracle互換性機能の設計とデリバリーにも携わっています。



2013年 8月 27日

はじめに

アプリケーション開発の新時代

現在発生しているさまざまな状況によって、これまでにない種類のアプリケーションが生まれています。モバイル・アプリケーションとソーシャル・アプリケーションが急速に台頭し、さまざまな用途のために使用されるなか、人間が電子的な手段によってさまざまなインタラクティブなやり取りを行うようになっています。クラウド・コンピューティングによってコンピューティング・リソースが簡単に入手できるようになり、ビッグデータ・テクノロジーの提供によって、インターネット、センサー、モバイル・デバイスから収集した大量のデータから知見を抽出できるようになりました。ユーザーのインタラクティブなやり取りのデータが入手できるようになり、コンピューティング・リソースに簡単にアクセスできるようになり、ビッグデータ・テクノロジーが発展したことによって、企業は以前に比べてはるかに正確に顧客の挙動とニーズを予測できるようになりました。このような状況によって、企業がより効果的に顧客に働きかけることができるビジネス・チャンスが生まれています。ソーシャル・メディアやモバイル・アプリケーションを使用する消費者は、さまざまなフォーム・ファクター(特にモバイル・デバイスを含む)を通じて簡単にアクセスでき、適切な情報を提供するアプリケーションを求めるようになっています。

このようなこれまでにないビジネス・チャンスに対応すべく、アプリケーション開発の新時代が生まれつつあります。アプリケーションの開発にあたって、設計から実装まで6カ月から9カ月またはそれ以上の期間が必要になることはもはや許されません。ビジネス上の問題やチャンスに対応するためにアプリケーションがスピーディーに開発され、多くのアプリケーションの寿命は短くなっています。ソリューションのスピーティーな提供を目的としてさまざまなテクノロジーが開発されています。ほとんどのテクノロジーで、JavaScriptとJSON(JavaScriptのデータ表示言語)が使用されています。このようなアプリケーション開発の新しい方法はベンチャー企業で最初に発生したもの、大企業や公共部門でも俊敏な開発を実現するためにより頻繁に使用されるようになっています。

このような新規のアプリケーションはまずモバイル・デバイスのために設計・提供され、ソーシャル・メディアとモバイル・デバイスにおけるインタラクティブなやり取りを促進します。企業はソーシャル・メディアとモバイル・デバイスによるこれまでにないインタラクティブなやり取りに参加するために、エンタープライズ・システムへのゲートウェイを迅速に提供する方法を模索しています。トランザクション・ベースの単純な世界からインタラクティブなやり取りを行う世界への移行が進んでいます。全社的なレコードを管理するシステムを拡張するにあたって、企業はインタラクティブなやり取りを促進するシステムを導入する必要があり、しかも堅牢性、プライバシー、セキュリティー、高可用性といった既存のエンタープライズ機能はそのまま維持しなくてはならないのです。IBMはDB2プラットフォームでJSONをサポートするにあたって、よく使用されるJSON APIとMongoDB APIを実装しました。

JSONとは?

JSON (JavaScript Object Notation)とは、IETF RFC 4627で規定された軽量なデータ交換形式のことを指します。JSONは必要最小限の機能を提供し、さまざまなプラットフォーム上で機能し、テキスト形式でデータを提供し、JavaScriptの一部であるため、実装が簡単で、データを読み取ることも簡単で、使用も簡単です。またほとんどの言語はJSONに簡単に対応できるため、JSONは特定の言語に依存しません。JSONを使用することによって、最新のプログラミング言語で作成された複数のプログラムの間でデータを交換することができます。しかもJSONはテキスト形式でデータを提供するため、人間とマシンがその内容を読み取ることができます。

以下は、JSON文書の単純な例を示しています。

リスト 1. リスト1. JSON文書の単純な例
{"isbn": "123-456-222",  
 "author": 
   [
    {
      "lastname": "Doe",
      "firstname": "Jane"
    },
    {
      "lastname": "Doe",
      "firstname": "John"
    }
   ],
 "title": "The Ultimate Database Study Guide",  
 "abstract": "What you always wanted to know about databases and were afraid to ask", 
 "price": 28.00, 
 "sales": 
    {"qty": 1234,
      "amt": 31532.50
    },
 "category": ["Non-Fiction", "Technology"],
 "ratings": [10, 5, 32, 78, 112]
}

JSONは最小限の一連のコンセプトを定義することによって、構造化データをさまざまなシステムで相互運用することを可能にします。JSONで重要なコンセプトはオブジェクトです。オブジェクトとは名前または値のペアをばらばらな順序でまとめたもので、その値はあらゆるJSON値を取ることができます。ほとんどのプログラミング言語に基づいてJSONを使用するにあたっては、以下の4つの重要な個別のコンセプトがあります。

  1. 文字列
  2. 数字
  3. ブーリアン
  4. 特別な“NULL”値

配列を使用することによって、値を一定の順序に基づいて並べることができます。この値は上記に列挙したJSONの4つのいずれかのデータ型に基づくJSON値を指します。JSONオブジェクトはネストすることができますが、通常はディープ・ネストは行われません。

JSONはJavaScriptによるプログラミング言語の一部であるものの、JSONそのものは特定の言語に依存しません。ほとんどの言語(新旧さまざまな言語を含む)は、JSONのコンセプトに簡単に対応する機能を持っています。例えば、hash-map、オブジェクト、構造体、レコード、連想配列は、JSONのオブジェクト型と関連付けられるデータ型であり、配列、ベクトル、リストの型はJSONの配列型と関連付けられます。

JSONを使用する理由とは?

「相互運用のために設定すべき項目が少なければ少ないほど、相互運用の効率が高まる」出典: JavaScript, The Good Parts, Doug Crawford

JSONは新時代のアプリケーションにぴったりのデータ交換形式です。JSONの人気が高まった理由としてはいくつかの要因が挙げられます。そのうち最も顕著な理由はJavaScriptがあらゆるプログラムで使用されるようになったことです。JavaScriptはブラウザー上で最も頻繁に使用され、スマートフォンで上でも起動します。最近のトレンドとして、サーバー側のJavaScriptフレームワーク(node.jsなど)の登場によって、サーバー側のアプリケーションでも頻繁に使用されるようになりました。

JSONに関してよく言われることは、JSONはテキスト・ベースであり位置に影響されないということですが、このような機能はXMLにもあります。では、なぜXMLに比べてJSONの人気が高まったのでしょうか?2011年のProgrammableWebの記事によると、新規のAPIの5分の1がXMLではなくJSONに基づいて作成されていたものの、2012年12月にはその比率は4分の1に伸びています(XMLよりJSONの重要性が増していることに関するブログの記事については参考文献セクションを参照)。さらに、影響力の高いビジネス(Box.netやYouTubeなど)の多くがXMLからJSONに移行しようとしています。これはいくつかの理由によるものです。まず、JSONの方がより単純で、オブジェクトの処理に向いています。さらに、JSONはデータ交換言語の機能に加えて文書のマークアップ言語の機能を提供しようとはしていません。XMLはマークアップ言語とデータ交換言語の両方の役割を果たそうとするため、人間にとって使いづらいものになっています。よりシンプルなためJSONはよりコンパクトで、データを保存し、ネットワーク上を移動し、モバイル・デバイスと組み込み型デバイス上で処理をする際のビット数が少なくて済みます。

こういった理由があるため、NoSQLの文書ストア(MongoDBやCouchDBなど)が使用する主なテクノロジーとしてJSONが活用されていることは当然と言えます。データベース・レイヤーでJSONをサポートすることによって、IBMは新時代のアプリケーションの開発者に柔軟なスキーマを提供し、俊敏な開発環境を提供します。さらに、JSONを活用することによって、開発者はさまざまなプログラミング言語間の連携を深め、アプリケーション・レイヤーからディスクまでモバイル・デバイスから提供されるデータを直接ネイティブ形式で保存することができます。この結果、データ加工とフィルタリングの際のオーバーヘッドを削減することができます。

図 1. 図1. DB2によるJSONサポート
DB2にJSONスクリプトを介して通信する装置

DB2のNoSQLによるJSONサポートとは?

DB2のNoSQLによるJSONサポートは、ドライバー・ベースのソリューションによってRDBMSのシステム環境(よく知られたエンタープライズ機能と高品質なサービスを提供)に基づいてJSONデータを柔軟に表記することができます。本ソリューションを活用するユーザーは、JSONのプログラミング・パラダイム(非常にポピュラーかつ生産性の高いJSONのデータ・ストアとして使用されているMongoDBのデータ・モデルとクエリー言語に基づいて構築されている)を使用してDB2で最新のアプリケーションのデータ・ニーズに合致するプログラムを開発することができます。JSONのデータはBSON (Binary JSON)と呼ばれるバイナリー形式で保存されます。BSONは軽量な形式で、簡単にスキャンができ、効率的に符号化・復号化を行うことができます。さらに、MongoDBはアプリケーション開発者がよく使用するその他のデータ型(日付など)にもネイティブ・サポートを提供します。DB2のNoSQLによるJSONサポートには、このような機能強化が反映されています。

DB2のNoSQLによるJSONサポートを使用すると、ユーザーはJSONデータをさまざまな方法で処理することができます。まず、コマンドライン・シェルを使用することによってJSONデータを管理し、インタラクティブに検索することができます。第2に、IBMが提供するJSON用Javaドライバーを使用することによってJavaプログラムのデータをプログラムに基づいて保存・検索することによって、SQLアクセスを行う場合と同じJDBCドライバーに基づいてJSONデータにアクセスすることができます。最後に、MongoDBプロトコルを実装するあらゆるドライバーを使用することができます。この結果、C、C++、およびPerlなどの従来の言語に加えて幅広い最新の言語(node.js、PHP、Python、およびRubyなど)を使用してDB2のNoSQLによるJSONストアにアクセスすることができます。

これらの機能については、以下の関連記事でより詳細に説明します。


DB2によるNoSQLのJSONサポートの概要

以下の図は、JSONによるAPIサポートの設定と制御フローを示しています。

図 2. 図2. DB2によるJSONサポートの概要
DB2によるJSONサポートの概要図

DB2のNoSQLによるJSONサポートのためのコマンドライン

The DB2のNoSQLによるJSONサポートのためのコマンドラインとは、JSON文書に対して管理コマンドを実行し、JSON文書に対してクエリーと更新の処理を実行するコマンド・シェルのことを刺します。本コマンドラインは、DB2のCLPインターフェースとよく似ています。

本コマンドラインに関するより詳細な情報を確認するには、「DB2のNoSQLによるJSONサポート機能(第2部): コマンドライン・プロセッサーを使用する」を読んでください。

DB2のNoSQLによるJSONサポートのためのJava API

The DB2のNoSQLによるJSONサポートのためのJava APIは、JSON文書の保存・抽出・操作のための一連の手法を提供します。本APIを通じてネイティブのJavaアプリケーションが直接これらの手法を呼び出すことによって、データベースに含まれる文書を処理することができます。DB2がデータ・ストアであるため、本APIは手法を呼び出すにあたってリクエストされた処理をSQL文に変換します。

本Java APIに関するより詳細な情報を確認するには、「DB2のNoSQLによるJSONサポート機能(第3部): Java APIを使用する」を読んでください。

DB2のNoSQLによるJSONサポートのための通信リスナー

The DB2のNoSQLによるJSONサポートのための通信リスナーとは、Mongo通信プロトコルを受け付けるサーバー・アプリケーションのことを指します。本リスナーはMongoDBアプリケーションとDB2の間のミッド・ティアのゲートウェイ・サーバーとして機能します。本リスナーはDB2のデータ・ストアにアクセスするために、DB2のNoSQLによるJSONサポートのためのAPIを活用します。ユーザーはさまざまなアプリケーション・プログラミング言語(Java、node.js、PHP、Rubyなど)を使用して作成したMongoDBアプリケーションを実行することもできれば、MongoDB CLIを使用してDB2とコミュニケーションすることもできます。

通信リスナーに関するより詳細な情報を確認するには、「DB2のNoSQLによるJSONサポート機能(第4部): 通信リスナーを使用する」を読んでください。


結論

この記事では、開発者がJSONをサポートするクエリー言語(MongoDBに基づいて構築)を使用してアプリケーションを作成できるDB2のNoSQLテクノロジーの概要について説明しました。本テクノロジーを活用することによって、IBM DB2 for Linux, UNIX, and Windowsに保存されたデータを処理することができます。

DB2がJSONをサポートすることによって、開発者はDB2が実現する信頼性の高い情報基盤を活用したうえで俊敏なシステム開発を実現することができます。ユーザーは新時代のアプリケーションに求められる俊敏なパラダイムを活用するにあたって既存のDB2システムの置き換えを行う必要はありません。DB2 10.5は、同一のストレージ・エンジン上でリレーショナル・データ、カラムナー・データ(DB2 BLU)、XMLデータ、およびJSONデータを処理することができる初めてのシステムです。NoSQLが提供するJSONベースのパラダイムと柔軟なスキーマを活用することによって、全社的なレコードを管理するシステムにインタラクティブなやり取りを促進するシステムの機能を追加するための新規アプリケーションを迅速に構築することができ、ポピュラーなリレーショナル・アプリケーションを活用したうえでDB2 BLUのカラムストア機能によってアナリティクスのために迅速なデータ・ストレージを実現できます。そのうえで、既存のDBMS機能を引き続き活用できるため、既存のスキルとツールを活用することができます。

本テクノロジーのダウンロード・イメージにアクセスするには、参考文献セクションを参照してください。

参考文献

学ぶために

製品や技術を入手するために

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management, Open source, Java technology, Mobile development
ArticleID=940374
ArticleTitle=DB2のNoSQLによるJSONサポート機能(第1部): DB2のNoSQLによるJSONサポート機能の概要
publish-date=08272013