BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AmazonがDynamoDB NoSQLデータベースでのJSONサポートを支援

AmazonがDynamoDB NoSQLデータベースでのJSONサポートを支援

原文(投稿日:2014/10/15)へのリンク

Amazon Web Serviceチームは先週,同社のDynamoDB NoSQLデータベースサービスを変更して,JSONサポートの改善,スケーラビリティ改善,無料利用枠の拡大を行った。AWS SDKを使用して,最大25GBという無償ストレージの範囲内で,大規模なJSONドキュメントの保存やインデックス生成,クエリ,アップデートなどの操作が可能である。

AWSは今回,DynamoDB - 従来はキーバリュー型のNoSQLストアと見なされていた - がMongoDBなどと同様の,ドキュメントストアとしての条件を備えるようになったとする,同社の考えを公開したブログ記事に示した

今回の新たなドキュメント指向サポートはAWS SDK内に実装され,DynamoDBの新しいデータ型をいくつか利用しています。ドキュメントをサポート(現在はAWS SDK for Java, SDK for .NET, SDK for Rubyの他,SDK for JavaScriptのエクステンションでブラウザ内でも利用可能)することによって,JSONデータあるいはネイティブ言語のオブジェクトを,DynamoDBのネイティブなデータ型に容易にマップできるようになると同時に,ドキュメントの構造を基本としたクエリがサポートされています。

今回の機能追加によって,DynamoDBは本格的なドキュメントストアに生まれ変わります。AWS SDKを使用することで,ネスト構造などの複雑なJSONドキュメントの"形状"を維持しながら,DynamoDBテーブルに簡単に保存できるようになります。さらに新しいデータ型には,非常に薄い変換レイヤを用意するだけで,HTMLやXMLなどその他のデータを保存することも可能です。

この新機能の実装は,すべてのAWS SDKに共通したものではない。またJSONはトランスポートプロトコルとして使用されるだけで,データそのものをJSONドキュメントとして保存しているのではない点にも注意が必要だ。Java SDKには,JSONエンコードされた文字列を直接DynamoDBデータベースレコードにロードする機能が提供されているが,.NET DSKを使う開発者は,ドキュメントの構築に(新しい)オブジェクトモデルを使用する必要がある。オブジェクトモデルでのNumberやString,Binaryといったスカラデータ型の提供に加えて,ListとMapというドキュメント指向のデータ型が導入された。Listは"JSONの配列と同様な,値の順序付きコレクション",Mapは"JSOBのオブジェクトに相当する,名前と値のペアの順序のないコレクション"と説明されている。

AWSのCTOであるWerner Vogels氏はブログ記事で,DynamoDBの歴史を振り返って,JSONサポートの欠如が開発者に与えてきた影響について理解を示した。

JSONドキュメントをDynamoDBに格納することはローンチ当初から可能でしたが,これらのドキュメントに格納と取出以外の操作を行うのは困難でした。JSONドキュメントの深くに埋め込まれた,ネストした属性には直接アクセスできませんでした。深くネストした属性を見ることができないことが,DynamoDBの備える驚異的な機能の一部を損ねていたのです。

今後は,JSONのストアとクエリを行うために,2つの選択肢があります。a) 内容の分からないJSONブロブを挿入する方法。開発は早いが,DynamoDBの重要な機能が利用できない。b) JSONオブジェクトそのものを属性に分解する方法。プログラミングの労力を要するが,将来的には有利。

DynamoDBの新たなJSON機能はドキュメントの格納だけでなく,検索操作にも対応する。JSONドキュメントをAWS UIコンソールに表示することも可能だが,開発者の興味があるのは,SDK経由でドキュメント,あるいはドキュメントの一部の取り出しや更新を行う機能の方だろう。AWSはドキュメントサイズの制限を64KBから400KBに上げると同時に,単一アクションの"容量単位"の量を2倍以上あるいは半減可能にすることで,スケーリング上の制限も緩和している。Amazonはさらに,無料使用枠で利用可能なDynamoDBのストレージ容量も大幅に増やした。これまでの100MBのストレージと10ユニットの読み込み容量から,25GBと25ユニットの読み込み/書き込み容量が無料で利用できるようになる。AWSによると,"15,000人のプレーヤがモバイルゲームを実行する,あるいは1日あたり500,000インプレッションをサービスする広告配信プラットフォームを実行する"のに十分なリソースだ。

今回のAWSアップデートはおそらく,JSONフレンドリなアプリケーションサービスに対する,開発者からの要求の増加に対処したものであり,GigaOmが伝えるように,MongoDBのような成熟したサービス,あるいはGoogleやMicrosoftの新サービスの勢いを削ぐ上でのチャンスともなる。大規模スケールでの稼働に血道を上げるこれらのNoSQLサービスへのささやかな皮肉なのだろう,Vogel氏は "これで開発者は,スケーラビリティに最適化されたデータストアと,フレキシビリティに最適化されたデータストアとの間で選択を強いられることはなくなりました" と評している。

この記事に星をつける

おすすめ度
スタイル

BT