プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Webサービス開発
  • 【AWS】モダンなDB設計
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】モダンなDB設計

01.01

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

昨今のDB設計は一昔前に比べると変わってきています。

従来の要件 新しい要件
ユーザー数 10万 100万
データ量 GB〜TB TB〜EB
場所 社内 グローバル
パフォーマンス 秒 ミリ秒/マイクロ秒
リクエスト数 万 百万
アクセス手法 社内サーバー モバイル/IoT
拡張 スケールアップ スケールアウト
支払い 前払い 従量課金制度
開発者のアクセス頻度 日次/週次/月次 APIアクセス

昨今必要な考え方

用途に合わせて選ぶデータベースを変える必要性が発生してきている。下記のような種類がある。

  • リレーショナル
  • キーバリュー
  • ドキュメント
  • インメモリー
  • グラフ
  • 時系列
  • 台帳

リレーショナル(Amazon RDS)

マネージドサービス

Aurora

Amazonがクラウドを使いこなすために設計した全く新しいDBエンジン、MySQLとの互換性があります。

Community

Commerical

キーバリュー(Dynamo DB)

マネージドサービス、NoSQL

Redis

Memcached

ドキュメント(Amazon DocumentDB)

  • マネージドサービス、JSONやXML等の不定形なデータ構造に対応する。
  • MongoDBに互換性があります。
  • 複雑なデータモデリングを容易に表現することが可能です。
  • 読み取り件数を数百万/秒までスケールすることが可能です。

頻繁に変更される属性情報

  • Amazon.comの商品属性情報
  • アプリケーションログ
  • デバイスログ

RDBではスキーマ設計が必要

ドキュメントDBはRDBに比べて楽です。スキーマを事前に決められないデータを格納するのに効果的です。

  • 全ての属性情報定義は難しい。
  • 属性を定義しないとINSERTできない。

インメモリー(Amazon ElasticCache)

特徴

  • マネージドサービス
  • KVS(キーバリューストア)
  • 最大限メモリで処理するので短いレイテンシで応答ができます。
  • 短い応答時間が期待できる。

リアルタイム性の高いアプリケーション

  • レイテンシ・クリティカルな処理
  • Webサイト・ゲーム・デバイス等

RDBではマイクロ秒レベルのレイテンシが難しい

  • ディスクベースの処理ではレイテンシに限界がある。
  • スキャンや結合にコストがかかる。(RDBの柔軟なSQLにはコストがかかる。)

キャッシュが可能

  • 障害時のデータ消失リスクを許容できる。
  • インメモリのために障害によるデータ損失のリスクがある。
  • 非同期レプリケーションでも可能

ユースケース

  • データキャッシュ
  • 推論キャッシュ
  • クエリキャッシュ

グラフ(Amazon Nepture)

マネージドサービス、データ同士を相互に結び付けてデータ同士の関係をグラフという形で表します。複雑な関係性を表すのに使われます。多:多の関係を示します。

時系列(Amazon TimeStream)

マネージドサービス

台帳(Amazon QLDB)

マネージドサービス

スポンサーリンク
  • 2021 01.01
  • miyabisan2
  • コメントを書く
  • Webサービス開発
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2019 12.08

    【Web開発】「戻る」操作について

  2. 2018 07.15

    【Web開発】「polyfill(ポリフィル)」とは?、トランスパイルとの違いなども。

  3. 2019 12.07

    【Web開発】「ページング機能」の設計

  4. 2018 07.15

    【Web開発】「REST-API(RESTful)」とは?

  5. 2019 12.07

    【Web開発】「一覧画面」の設計について

  6. 2020 11.29

    【SEO】SEOとURLの関係、サイトマップ、OGP

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【AWS】「アーキテクチャ」の種類(モノリシック、SO…

【AWS】「AWS Well-Architected …

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー