DynamoDBを試してみました

dynamodb-logo.png
あけましておめでとうございます。ウィザードの石井です。
DynamoDBとはAmazon Web Servicesが提供するフルマネージドのNoSQLサーバーです。
今回はAWS SDK for Javaを用いてDynamoDBの操作を行ってみます。

概要

Java用のDynamoDBのAPIは3種類ありますが、今回は高レベルAPIを使用します。
ORMなのでオブジェクト指向に慣れ親しんでいる方なら使いやすいかと思います。
事前にAWS SDK for Java、また入出力にはLambdaを使用するためAWS Lambda Java Function Runtimeを導入しておく必要があります。
例として、「The Game Awards 2015」の受賞作品をDynamoDBに格納し、取得するという処理を実装してみます。

テーブルの作成

まず、AWSのコンソールからテーブルを作成しておきます。
テーブル名はTheGameAwardsNominees、プライマリキーはcategory、ソートキーはtitleとします。

モデルの実装

次に、モデルの基底クラス及び先ほどのテーブルに対応させるTheGameAwardsNomineesモデルを実装します。
以下になります。


クラスに対してDynamoDBのモデルであることを示すDynamoDBTableアノテーションを指定します。
DBの項目名に合わせたゲッターとセッターを作成し、そのゲッターに上記のようにアノテーションを指定します。
DynamoDBAttributeは必須ではありませんが、ここではわかりやすさを重視しています。
各アノテーションでattributeNameを指定することで、実際の項目名とは違うメソッド名とすることもできます。

Lambdaハンドラの実装

最後に、Lambdaハンドラを実装します。
入力されたJSONにsave項目があれば保存処理、query項目があれば検索処理という流れになっています。
AWSの日本語ドキュメントには詳しく書かれていませんが、リクエストやレスポンスとして使用できる型には
文字列やPOJOの他、コレクションや、POJOのプロパティとして更にPOJOを持たせたりと柔軟に対応できるようです。
その柔軟性を利用して今回はTheGameAwardsNomineesモデルをPOJOとして流用しています。
以下になります。

動作確認

Lambdaのコンソールから以下のJSONを入力し、適切に保存・検索ができれば完了です。

まとめ

特にSQLをよく使われていた方からするとDynamoDBのNoSQLにはかなり抵抗があると思いますが、私が使ってみた感想としては洗練されているという印象でした。
SQLのように多機能とは言い難いのですが、これからは選択肢の一つとしてマスターしておきたいところです。
APIもわかりやすく作られていて、勘で作ってみてもどうにかなるという感じです。(あまり良くないやり方ですが)
最近は何を始めるにも環境が整っていて始めやすいですね。

関連記事

  1. 3分あれば脱ダラリーマン術

  2. 「そろそろ、好きな仕事で起業してみたいな」って思っている方へ、レジェン…

  3. 2014年!デジタル・IT分野の商品、サービスのトレンド予想をしてみた…

  4. 人は何故走るのか? その7

  5. 神楽坂駅前に現れたスペシャリティストア「la kagu(ラカグ)」に行…

  6. 通常の3倍仕事が速くなる思考術

  7. cakephpのページング時の検索条件の引き継ぎ

  8. 『米国で噂Appleの秘密兵器「iBeacon」でO2Oサービスの企画…

制作実績一覧

最近の記事 おすすめ記事
PAGE TOP