多くの方はデータベースといえば、リレーショナル・データベース(RDB)を思い浮かべることでしょう。行と列のある表形式のデータと、それぞれの関連を情報として持ったデータベースで、Oracleが一番メジャーでしょうか。
でも、データベースはこれだけじゃありません。他にもいろいろものがあるんです。
その中でも、キーバリューストアー(KVS)というものをご存知でしょうか?
データの名前(Key)と値(Value)からできたシンプルなもので、大量のデータを素早く扱うことができます。代表例としては、スマホゲームなどで多く使われており、大量のユーザーがリアルタイムにアクセスするようなケースに向いているようです。
さて、そのKVSをちょっと便利に拡張したものとして、Amazon のサービス「DynamoDB」というものを今回は取り上げてみましょう。
「DynamoDBって何?」という方にはこちらの記事もおすすめです。
なお、ASTERIA Warpでも先日エクスペリメンタルビルドを発表してたりもします。
そんなわけで、今回はDynamoDBにつないでみます。
まずはDynamoDBのテーブルを作ります。
DynamoDB は、Keyを2つ持てるのが特徴となります。
「ハッシュ」と「レンジ」というものですが、ハッシュの方はデータをクラス分けできるようなもの、レンジは範囲なので、日時などを指定するのが一般的でしょうか。
そこで、今回は「震源地」を「ハッシュ」、「地震の発生日時」を「レンジ」としてテーブルを作成しました。
それ以外の項目はデータを入れる際に柔軟にやってくれるのでそのまま進みましょう。
上記以外にも設定項目はありますが、本ブログの趣旨ではないので詳しく知りたい方はAWSのページをご覧ください。
今回のデータは、以前「Tableauとつないで地震情報を見てみた」の記事で使ったものと同じ、地震情報を入れてみたいと思います。
フローは前のものをコピーして、最後の保存先をDynamoDBにしただけです。
データを入れるときに柔軟にやってくれると書いて、先送りにしたデータの項目ですが、ハッシュとレンジ以外は、DynamoDBのコンポーネントに渡したストリームがそのまま使われます。
要するに最初の2項目はハッシュとレンジに設定した項目名と合わせ、それ以外は何でも入るので、好きに使っていただいてOKです!
なので、「データベース設計などで今後拡張されるかもしれないしー」とか悩んだりしなくて良いわけです。
ただ項目名に使えるのはアルファベットと一部記号だけみたいなので、そこは気をつけましょう。
実行してAWSのコンソールから見てみると、ストリームの項目が追加されているのがわかります。
1週間前から「震度(shin-do)」の項目が追加された想定で、ストリームに追加して実行してみました。
列が追加され、直近の7日間のレコードにデータが差し込まれました。
このような感じで、テーブル設計を気にせずストリームを変えるだけで保存されるデータを変えていくことができます。
続いてデータを取得する方も作ってみましょう。
欲しいデータ項目をストリームに設定すればそのデータを取得できます。
ハッシュとレンジに対しては簡単な検索条件をつけることも可能です。
フローとしては上記のようにだいぶ簡単なもので十分です。
実行するとレコードで返ってくるので、他のシステムと連携するなり、この先はASTERIA Warpをお使いの方でしたら簡単にできますね。
なかなかKVSに触れる機会はないかもしれませんが、ASTERIA Warpを使えば簡単ですし、項目の増減にもマッピングの差し替えだけで対応できます。
企業向けのシステム構築をご検討中の方、データベースはRDBで進めることが多いのではないかと思います。
でももし新規でシステムを考えているのであれば、ほんとにそれってRDBが最適なの?とちょっと考えてみるのもいいかもしれません。
もしかしたら、より効率的なシステムが作れるかもしれません。
ASTERIA Warpを使えば、その構築も簡単です。
是非、新しい技術も試してみてください!
ASTERIA Warpシリーズ担当のシニアプロダクトマネージャー。ホワイトペーパーの執筆のほか、開発経験を活かしたASTERIA Warpを使ったデモ作成等を実施。
Related Posts
ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。
アステリア製品デベロッパー同士をつなげ、技術情報の共有やちょっとしたの疑問解決の場とすることを目的としたコミュニティです。