【DynamoDB入門~0~】DynamoDBについて紹介
初めまして、株式会社エムアイ・ラボでエンジニアをしている者です。
弊社ではDynamoDBを開発に使用する機会が多く、これに対しての理解度が開発のベロシティ・クオリティに大きく関わってきます。
そこで今後数回に渡ってDynamoDBについて纏めていきます。
今回はDynamoDBについての紹介を行います。
DynamoDBについて
NoSQL
MySQLやPostgreSQLのようなRDBSM(Relational DataBase Management System)とは違い、NoSQL(Not Only SQL)と呼ばれるデータベースになります。
SQL(Structured Query Language)を直訳すると「構造化問い合わせ言語」になります。
つまりNoSQLは「構造化問い合わせ言語だけじゃない」という意味になり、RDBSM以外のデータベースを広く指す言葉になっています。
RDBMSとNoSQLの違い
厳密にはこれだけではないのですが、非常に簡単に言いますと、
RDBMS
- メリット:SQLと設計次第でどんな要件にも耐えられる
- デメリット:設計をしっかりやらないとパフォーマンスが落ちやすい
NoSQL(DynamoDB)
- メリット:数十万、数百万のレコード数でも(基本的には)動作が非常に軽快。APIで操作するのでSQLを知らなくても使用できる
- デメリット:検索条件の制限が大きく、設計をよく考える必要がある。雑に設計すると取得できないデータが発生し、最悪はテーブルの作り直しになることもある
KVSで管理
KVS(Key Value Store)は、保存したいデータ(value)とそれのタイトル(key)をペアで管理するデータ管理方式の一種です。
{
"name": "Taro",
"favoriteFood": "daizu"
}
上記の"name"がkeyで、"Taro"がvalueです。"favoriteFood"がkeyで、"daizu"がvalueです。
DynamoDBではこのような形でデータが保存されていきます。
APIを叩いて操作
基本的にSQLで操作するRDBSMとは違い、DynamoDBは基本的にはAPI(Application Programming Interface)を叩いて操作します(SQLで操作出来るようにするライブラリも存在します)
操作方法(1)GUIで操作
AWSのコンソールから操作出来ます。
しかし操作をコード化しないとマニュアル操作を挟む必要が出てくるので、ちょっとした調整も含めてGUIで操作することは(弊社では)殆ど無いです。
操作方法(2)コマンドラインで操作
AWSから提供されているコマンドラインツールを使用します。
その中のAWS CLI(Command Line Interface)はデータの集計を実施するときなどで一時的に使うことがあります。
操作方法(3)ソースコードで操作
AWSから各言語ごとに提供されているSDK(Software Development Kit)を利用します。
こちらを使うことが多いと思います。
弊社ではTypeScript + node.jsがメインなので、AWS SDK for JavaScriptを使用しています。
フルマネージドサービスである
フルマネージドサービスとは、サービスの提供側が保守管理を全て代行してくれるサービスのこと。
サーバーの管理や障害などを一切気にせず、開発やサイト運営などの生産性の高い業務に集中することが出来ることが大きなメリットです。
まとめ
今回はDynamoDBについて紹介を行いました。
最後に今回のまとめを記載します。
- KVSでデータ管理するNoSQLのフルマネージドデータベース
- 動作が軽快
- SQLではなく、APIで操作する
次回は実際にデータを取得してみます。
採用情報
エムアイ・ラボでは一緒に働くメンバーを募集しています。
ぜひお気軽にご連絡ください!
まずはオンラインでカジュアルにお話ししてみませんか?
Wantedlyアカウントをお持ちでない方はTwitterのDMからでも大丈夫です。
お待ちしております。
Discussion