Amazon DynamoDBとNoSQLについて
はじめに
本記事では、AWS(Amazon Web Services)より提供されているAmazon DynamoDBと、その特徴でもあるNoSQLについて触れていきたいと思います。
まずはAmazon DynamoDBの概要について簡単に
Amazon DynamoDBとは、完全マネージド型のNoSQLデータベースサービスです。基本的なSQLを利用すると、クラスタ管理などもおこなわなければならず手間がかかる事が多いですが、これはデータベースソフトウェアではなく、あらゆる操作が自動的におこなわれるデータベースサービスです。
使用者は構築・運用などの管理をする必要がなく、使いたい時にテーブルを作りコードを書いたり、1秒あたりに処理するリクエスト容量を指定すれば、他はDynamoDBによって自動的に処理される、といった開発者に優しく使いやすいサービスです。
それでは、まずはこのNoSQLについてより詳しく見ていきます。
NoSQLとは
NoSQLとは、業界を長く牽引してきたデータベース方式である、リレーショナルデータベース(RDBMS)では解決できないような内容をこなしていくためのデータベースの総称です。ちなみにAWSから提供されているデータベースサービスは4つあり、そのうち2つのサービスがこのNoSQLです。NoSQLといっても、種類は様々で一言で特徴をまとめあげる事はできません。
まずはNoSQLの代表的な種類として、以下の4つ挙げる事ができます。またこの中からAmazon DynamoDBがどれに属しているかはそれ以降にご紹介します。
NoSQLの種類
- キーバリューストア
文字通り、キーとバリュー(値)のみといった単純な構造です。
単純な構造ゆえに、高速なパフォーマンスを提供する事ができます。
代表的なもの:Radis、Riak - カラム指向データ
通常のDBMSではデータを行単位で保持する「行」指向で考えられますが、
カラム指向としては、新たなデータを列単位で追加していくような指向性を持つもので、ログなどの大量のデータを解析する事などに向いています。
代表的なもの:Cassandra、HBase - ドキュメント指向データベース
JSONやXML等、不定形なデータ構造を取り入れることができ、開発者が普段アプリケーションコードとして使用しているものと同じドキュメント形式でデータベースに保存し、クエリする事ができます。
代表的なもの:MongoDB、CouchDB - グラフ型データベース
データ間を相互に結び付け、データ同士の関係をグラフ化する方法で、SNSなどの人間関係など、ものごとのつながりに着目したデータを管理する事に適しています。
代表的なもの:Neo4j、Titan
NoSQLのメリットは、このように様々な特徴をもつ種類の中から、それぞれの用途に合ったツールを選ぶことができ、またその特徴をしっかりと活用する事でより適性なデータベース管理に繋げていく事ができます。
Amazon DynamoDBはこの中でも主にキーバリューストア(カラム指向)のタイプに属します。それでは以下からはAmazon DynamoDBの特徴を紹介していきます。
Amazon DynamoDBの特徴
特徴1:フルマネージドで高信頼性
保存されるデータは、パテーションごとに3か所のデータセンター(アベイラビリティゾーン)にコピーされ保管されます。そのため万が一どれか1か所に何かあったとしても残りのコピーがあるため安心です。また、ストレージはデータ量とアクセス量に応じ十分な数のハードウェアに自動的にパテーショニングされるため、一貫したパフォーマンスを実現する事ができます。
特徴2:プロビジョンドスループットという機能
テーブルごとの書き込み(Write)・読み込み(Read)に対し、必要なスループットキャパシティを割り当てる事ができ、またそのあとにアプリケーションのユーザーが増えるなど、元の設定からアクセス量が変わった場合はデータベース運用中でもオンラインで必要な容量を追加で設定しなおす事ができます。
特徴3:容量制限のないストレージキャパシティ
もちろんストレージの容量追加により料金はかかりますが、そのキャパシティには基本的に上限が無いという事で、どれだけでも容量を増やす事ができます。またデータ容量の増加に伴ったディスクやノードの増設といった作業も全く不要となります。
料金
Amazon DynamoDBの料金体系については、読み書きによる容量といったキャパシティユニットやストレージ容量、転送容量により、簡単に言えば使ったら使った分だけというようなかたちです。詳しい料金やオプションなどは公式サイトを是非参考にしてみてください。
おわりに
いかがでしたでしょうか。開発者は作るものに合ったシステムを取り入れ、活用していく事が重要です。私自身データベースに関する知識はまだ多くはありませんが、今回のAmazon DynamoDBに対する知識以外にも、様々なツールごとの特徴をを知る事で選択の幅を広げていいければと思います。最後まで読んでいただきありがとうございました。