Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

AWSのDynamoDBについてまとめています。

AWSのDynamoDBは、NoSQLデータベース 大容量で高速読み書きが可能な非リレーションDB

Amazon DynamoDB は、NoSQLデータベース。key-valueとドキュメントデータモデルをサポートしています。Amazon DynamoDBは、ペタバイトレベルの大容量データの読み書きが可能なデータベース。通常のリレーショナルデータベースなら、高負荷で処理時間がかかりすぎるような、1秒あたり数千万の読み込み・書き込みリクエストに対応できます。大容量データのデータをリアルタイムレスポンスでアクセスすることが求められるインターネットアプリケーションなどに最適です。

関連)Amazon DynamoDB(マネージド NoSQL データベース)| AWS

NoSQLデータベースでは、キー値とドキュメントと呼ばれるデータがペアになって格納されます。以下は、書籍情報のJSON形式ドキュメントの例です。

[
    {
        "year" : 2013,
        "title" : "Turn It Down, Or Else!",
        "info" : {
            "directors" : [ "Alice Smith", "Bob Jones"],
            "release_date" : "2013-01-18T00:00:00Z",
            "rating" : 6.2,
            "genres" : ["Comedy", "Drama"],
            "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
            "actors" : ["David Matthewman", "Jonathan G. Neff"]
        }
    },
    {
        "year": 2015,
        "title": "The Big New Movie",
        "info": {
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
]

NoSQLデータベースは、商品カタログのようなデータごとに属性が異なるデータを保管するのに向いています。例えば商品データベースに「食品」と「パソコン」のデータを格納する場合、「食品」なら原材料や賞味期限といった属性が必要になりますし、「パソコン」なら、CPUやメモリのスペック、ディスク容量や対応OSといった属性が必要になります。このように異なった属性数を持つデータを1つのデータベースに格納できるため、高速で読み込みが可能なんですね。

属性数のことなる情報を1つの「ドキュメント」としてまとめて格納することで、テーブル構造を変えることなく、全てのデータを同一のデータベースに格納できます。

参考)ドキュメントデータベースとは? | AWS

AWS DynamoDBの料金

DynamoDB には「オンデマンド」と「プロビジョニング済み」という 2 種類のキャパシティーモードがあります。

オンデマンドは、テーブルに対して実行したデータの読み取り・書き込みに対して課金されます。実行した処理の分だけ支払いが発生するモードです。プロビジョニング済みモードは、1秒あたりの読み込みと書き込みの回数を指定する方式。読み書きの速度を調整することで発生するコストをコントロールできます。

アプリケーショントラッフィクが予測できない場合や、使った分のみ支払うほうが都合が良い場合はオンデマンドモードが良いでしょう。アプリケーションのトラフィックが予測できる場合は、トラフィック変化の割合がゆるやかな場合はプロビジョニング済みモードでコストが節約できます。

関連)料金 – Amazon DynamoDB | AWS

オンデマンドモードで、リージョンが米国東部(オハイオ)の場合、読み書きに発生する料金は以下のとおりです。

月間355万回の書き込みで、4.44USD(100 万回あたり 1.25 USD × 3.55)、355万回の読み取りで0.89 USD (100 万回あたり 0.25 USD × 3.55)となります。

AWSの見積もりツールで、具体的な金額の見積もりが可能です。見積もりに必要な情報は、DynamoDBの機能、データストレージの容量、読み込み、書き込みの設定です。

参考)AWS Pricing Calculator

【関連記事】
AWSの見積もりは、AWS Pricing Calculatorで自動計算 ユースケースから流用も可能

AWS Dynamoの使い方

Amazon Dynamoへのデータ書き込みやデータ読み取りは、対応したプログラミング言語を使ってAPI経由で実行可能です。

以下は、Pythonを使ってデータを格納する例です。boto3モジュールを使用して、書籍情報をDynamoDBに書き込んでいます。

import boto3

dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
table = dynamodb.Table('Books')

with table.batch_writer() as batch:
    batch.put_item(Item={"Author": "John Grisham", "Title": "The Rainmaker",
        "Category": "Suspense", "Formats": { "Hardcover": "J4SUKVGU", "Paperback": "D7YF4FCX" } })
    batch.put_item(Item={"Author": "John Grisham", "Title": "The Firm",
        "Category": "Suspense", "Formats": { "Hardcover": "Q7QWE3U2",
        "Paperback": "ZVZAYY4F", "Audiobook": "DJ9KS9NM" } })
    batch.put_item(Item={"Author": "James Patterson", "Title": "Along Came a Spider",
        "Category": "Suspense", "Formats": { "Hardcover": "C9NR6RJ7",
        "Paperback": "37JVGDZG", "Audiobook": "6348WX3U" } })
    batch.put_item(Item={"Author": "Dr. Seuss", "Title": "Green Eggs and Ham",
        "Category": "Children", "Formats": { "Hardcover": "GVJZQ7JK",
        "Paperback": "A4TFUR98", "Audiobook": "XWMGHW96" } })
    batch.put_item(Item={"Author": "William Shakespeare", "Title": "Hamlet",
        "Category": "Drama", "Formats": { "Hardcover": "GVJZQ7JK",
        "Paperback": "A4TFUR98", "Audiobook": "XWMGHW96" } })

以下は、pythonでデータを読み出すPythonコードの例です。Author=John Grisham、Title=The Rainmakerのデータを読み込み、表示しています。

import boto3

dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
table = dynamodb.Table('Books')

resp = table.get_item(Key={"Author": "John Grisham", "Title": "The Rainmaker"})

print(resp['Item'])

実行結果は以下のようになります。

$ python get_item.py
{'Title': 'The Rainmaker', 'Formats': {'Hardcover': 'J4SUKVGU', 'Paperback': 'D7YF4FCX'}, 'Author': 'John Grisham', 'Category': 'Suspense'}

AWS DynamoDBのまとめ

ポテパンダの一言メモ
  • Amazon DynamoDBはNoSQLデータベースサービス
  • データベースへの書き込みと読出しはプログラミング言語からAPI経由で実行可能
  • 料金体系は、オンデマンドとプロビジョニング済みモードの2つが選べる

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。