大きなアイテムその中でもJSONデータサポートは注目のアップデートです。これは具体的にどういうことか説明します。DynamoDBはスキーマレスのNoSQLです。これまで、カラム(属性)には単一データまたはセット(重複を許さない配列)が格納できました。入れ子構造は格納できませんでした。JSONデータのサポートとは、この入れ子構造が取り扱えるようになったということです。MongoDBのように、JSON形式のデータをそのままデータベースに格納できるようになったのです。既存ODMライブラリに手を加えて対応させたnode.js向けのODMライブラリにはいくつかあります。その中でもいい感じのライブラリです。残念ながら、あまり精力的にメンテナンスされてるとは言いがたく、今回のアップデートに対してもまだ対応していない様子です。そこで、自分で対応させてみることにしました。フォークしたものがこちらにあります:noradaiko/vogelsいちおうプルリクしてありますが、マージされるのを待てません笑vogelsの使い方まずは基本的な使い方をドキュメントから引用してざっくり説明します。次に、入れ子構造のデータを扱うための方法を説明します。SDKのキーをファイルから設定します。require('vogels');vogels.AWS.config.loadFromPath('credentials.json');もちろん直接値を渡して設定もできます。acc.get('email'));});簡単ですね!クエリやセカンダリインデックスなどの使い方はドキュメントを参照してください。入れ子構造の取り扱い方ここからが本題です。DynamoDBでは、MapとListという新しいデータ型を追加することで入れ子構造の格納を実現しています。先述の通り、vogelsではスキーマを定義して、それに合わせたデータを出し入れします。vogelsで入れ子構造を取り扱うには、このスキーマをMapとListを使用して定義します。MapMapはJavaScriptでいうオブジェクトです。以下の例をみてください。console.log);この例では、Photoモデルのlocation属性がMap型として定義されています。中身には、場所に関するデータが格納されています。単純ですね!もちろん、このlocationの中身もスキーマで定義できます。});});Mapの中に更にMapを格納することもできます。Mapの中身のスキーマを定義しなかった場合、未定義となり制約は与えられず、自由なフォーマットのデータが格納できます。ListListはJavaScriptでいう配列です。使い方は以下のとおり。console.log);こちらも直感的ですね。Listの各要素の形式が同じで尚且つMap型の場合は、以下のように要素のスキーマを定義できます。});});MongoDBとの併用はかなりイケてる?JSON形式のドキュメントがそのまま格納できるDBMSとして、有名なのはMongoDBです。今回のJSONサポートによって、DynamoDBはMongoDBと同じフォーマットでデータを取り扱えるようになりました。これは、「併用しやすい」という事です。併用すると何が嬉しいか、考えてみます。DynamoDBは運用コストが低くスケーラビリティが高いのがウリのデータベースです。その代わり、検索の柔軟性を犠牲にしています。それに対してMongoDBは検索の柔軟性が高いのが強みです。DaaSは価格が高いし自分で運用するのは大変です。DynamoDBとMongoDBを併用することによって、互いの弱みを補い合えるかもしれません。MongoDBを既に使っていた人にとっては、すごい良いニュースではないでしょうか。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。Blog.投稿先:キャンセル%d人のブロガーが「いいね」をつけました。