DB設計ガイドライン
Database Design Guidelines
DB設計に関するガイドラインとして、PostgreSQL設計ガイドラインとDynamoDB設計ガイドラインの2本を提供する。各文書の位置づけと前提は本ページの各セクションを参照。
免責事項
本ガイドラインはPostgreSQLを使用する開発者向けに、DBのテーブルやカラムの命名・型桁・制約などのスキーマ管理に加え、履歴・排他制御・マルチテナント対応などアプリケーション設計を含む内容についての設計標準を紹介する。これによりDB設計の主な論点/設計項目/設計観点を提供することで、開発者の考慮漏れを防ぐとともに、チームでの設計上の合意形成を手助けし、システム開発における標準ラインとなる設計手法を提供することでナレッジやツールの横展開を容易にすることを目指す。
作成にあたって以下の想定を持つ。
AWS が提供するフルマネージドな NoSQLデータベースサービスである、DynamoDBの技術選定・命名・データモデリング・パーティショニング・性能・費用・監視・運用・セキュリティなどの考慮すべき設計事項と推奨案をまとめる。
DynamoDB を利用してシステムを構築する全てのエンジニアおよびアーキテクトを対象とする。業務システムの開発を想定しており、開発スピードの優先度が高いPoCや、学習目的の趣味の開発は除く。数名以上の開発チームがあり、運用保守まで見据え、安定して動作することが求められるとする。
対象外となる事項は以下の通り。
| 用語 | 説明 |
|---|---|
| 読み込みキャパシティユニット(RCU) | 1秒あたりに読み込み可能なデータ量の単位 |
| 書き込みキャパシティユニット(WCU) | 1秒あたりに書き込み可能なデータ量の単位 |
| カバードクエリ | クエリ対象のすべての属性がインデックスに射影(プロジェクション)されており、テーブル本体への読み込み無しで結果を返せるクエリ |
| TTL (Time To Live) | アイテムに有効期限のタイムスタンプを設定し、期限が切れたアイテムを自動的にテーブルから削除する機能 |
| 未処理のアイテム (UnprocessedItems) | BatchGetItemやBatchWriteItemなどのバッチ処理で、プロビジョニングされたスループットの不足などにより、処理しきれなかったアイテム |
| 条件付き書き込み (Conditional Writes) | 特定の条件が満たされた場合にのみ書き込みを操作する仕組み |
| 冪等性 | 同じ処理を複数回実行しても、結果が常に同じになる性質 |
| DLQ (デッドレターキュー) | 処理に失敗したメッセージやイベントを隔離するためのキュー |
このアーキテクチャガイドラインの作成には多くの方々にご協力いただいた。心より感謝申し上げる。
PostgreSQL設計ガイドライン:
DynamoDB設計ガイドライン: