表記イベントに参加していました。
https://awsbasics.connpass.com/event/225581/
通常は月曜と土曜に開催され、特に土曜日は新サービス系のハンズオンなのですが、
今回は試しにメジャーなサービスをハンズオンするという趣向です。
もともと歩留まりの悪さがこのイベント自体の課題となっており、
温故知新編は歩留まり50%を切ったら次回開催がないという条件付きです
(50%超えたようなので、次回はある模様)。
内容はいつもの土曜日と少し違って、Googleフォームの無記名アンケートからスタート。
DynamoDBは情報が世の中に氾濫しすぎてて、実際に利用者は何が届いてて
何が届いていないのかを把握したいとのこと。
個人的にメジャー系の公式ハンズオンが減ってるなと薄ら思っていたのですが、
やっぱりみんなそうだったのね。
本編は座学の後、
https://aws.amazon.com/jp/getting-started/hands-on/create-manage-nonrelational-database-dynamodb/
に従ってハンズオンを進めて、最後にLTという流れでした。
こちらのスペックは、DynamoDBは月曜日の講義である程度見聞きしている程度で、
RDS,Aurora,DynamoDBの違いがやっとわかり始めたかどうかというところ。
以下、いつも通り技術的な詳細は誰かが書いてくれると信じて、自分はわからんなりに
質疑応答とハンズオン中の留意点で拾えた分をメモしてみます。
[座学]
- DynamoDBは費用の見積が難しい
RDSやEC2はCPUやメモリで課金されるのに対して、DynamoDBは割り当てられる読み書きのキャパシティに応じて課金される。
→オンデマンドにするとよい - NoSQLはRDB以外すべてを指し、明確な定義はないため、NoSQLの話題を扱うときはどの文脈(キーバリューことなのかなど)で話がなされているのかを識別する必要がある
- インデックス必須。これがないと検索対象になってくれない。ただし、インデックスを作っただけでキャパシティを消費する。なんでもかんでもインデックス貼ればいいもんでもない
[ハンズオン]
- リージョンはバージニア北部前提
- 環境構築時のBoto3インストールはpipではなくpip3コマンド読み替えること
- create_table.pyの実行には10分弱程度の時間がかかる(多くの人が同時に実施したため?)
- update_item.pyの冒頭に下記を入れること
import boto3 dynamodb = boto3.resource('dynamodb', region_name='us-east-1') table = dynamodb.Table('Books')
- Amazon DynamoDB Accelerator (DAX)
何かしらのキャッシュの機構っぽい
https://aws.amazon.com/jp/dynamodb/dax/ - SQLによるフルスキャンは、読み込む必要のないデータまでスキャンしに行くため、課金が恐ろしいことになる
[LT]
- DynamoDBとLambdaの話
DynamoDB DataMapper※を使えばAPIの制限(putが25件、getが100件)を超えたときの
リトライ処理を楽に書けそうとのこと。
※これのことっぽい
https://awslabs.github.io/dynamodb-data-mapper-js/packages/dynamodb-data-mapper/
[質疑応答]
- プロビジョンドにするといいケースってどんなときなのでしょうか?
→あまりない。大規模にDynamoDBを使っているとオンデマンドが
追い付かなくなることがある(サポートにアドバイスを求めるべし) - 25件のリミットというのはハードリミットで引き上げ不可なのでしょうか
→あかんぽい
[その他]
https://www.slideshare.net/AmazonWebServicesJapan/20170809-black-belt-dynamodb