LoginSignup
0
1

More than 3 years have passed since last update.

SQLとNoSQL(Amazon DynamoDB)

Last updated at Posted at 2020-03-28

概要

  • Amazon DynamoDBの入門として、まずNoSQLとSQLの違いは何か、またDynamoDBでの仕組みはどうなっているかについてまとめました
  • 対象読者は、RDBは経験があるけどNoSQLとかはちょっとよくわかっていなくて気になっている方です。

SQLとNoSQL(Amazon DynamoDB)の比較

SQLとNoSQL概要

Oracle、DB2、SQL Server、MySQL、PostgreSQLなどのリレーショナルデータベースで使用するリレーショナルデータモデルへのアクセスにSQLが用いられてきた。2000年代半から後半にかけて他のデータモデルが採用され始め、これらの新しいクラスのデータベースとデータモデルを区別し、分類するためにNoSQL(Not only SQL)ができた。

以下では、SQLデータベース(リレーショナルデータベース)とNoSQLデータベース(とAmazon DynamoDB)の違いを示した。

最適なワークロード

リレーショナルデータベース

トランザクショなるで強固な一貫性をもつオンライントランザクション処理(OLTP)アプリケーション用に設計されている。オンライン分析処理(OLAP)やアドホッククエリやデータウェアハウスに適している。

NoSQLデータベース

低レイテンシーアプリケーションを含む多数のデータアクセスパターン用に設計されている。

Amazon DynamoDB

Amazon DynamoDBでは、ソーシャルネットワーク、ゲーム、メディア共有、IoTなどの、ウェブスケールアプリケーションに適している。

データモデル

リレーショナルデータベース

データを行と列で構成したテーブルに正規化する。テーブル、行、列、インデックス、テーブル間の関係などのデータベース要素は、スキーマによって厳密に定義される。テーブル間の関係によってデータベースの参照整合性が維持されている。

NoSQLデータベース

キー値、ドキュメント、グラフなどの様々なデータモデルを利用できる。これらのデータモデルはパフォーマンスと規模に応じて最適化されている。

Amazon DynamoDB

Amazon DynamoDBでは、全てのテーブルに、各データ項目を一意に識別するプライマリキーが必要だが、他の非キー属性のような制約はなくスキーマレスである。また、JSONドキュメントを含む構造化データまたは半構造化データを管理できる。

ACID特性

リレーショナルデータベース

  • 原子性(Atomicity)
    • トランザクションは必ず完全に実行されるか、全く実行されないかのどちらかになる
  • 一貫性(Consistency)
    • 一度トランザクションが実行されると、データが必ずデータベーススキーマに従う
  • 分離性(Isolation)
    • 同時発生したトランザクションが相互に独立して実行される
  • 耐久性(Durability)
    • 異常事態発生時に、異常時大発生前の最後の状態まで復旧できる

上記4つのACIDの特性がある。

NoSQLデータベース

ACID特性の一部を緩和することと引き換えに、水平方向に拡張(より多くのマシンを用いて拡張)できる柔軟なデータモデルを実現している。これにより、単一インスタンスの制限を超えて水平方向に拡張する必要のある、高スループット、低レイテンシーユースケースの優れた選択肢になっている

データアクセス

リレーショナルデータベース

データベース駆動型アプリケーションの開発を簡素化するためのツールが豊富だが、これらのツールは全て、データを保存および取得するための基準となるSQLを使用する。

Amazon DynamoDB

DynamoDBでは、AWSマネジメントコンソールやAWS CLIを使用してDynamoDBを操作し、アドホックタスクを実行できる。アプリケーションでは、AWS SDKを活用してDynamoDBを操作できる。

パフォーマンス

リレーショナルデータベース

ストレージに最適化されているので、通常はディスクサブシステムによって異なる。最善のパフォーマンスを実現するには、多くの場合は、クエリ、インデックス、テーブル構造の最適化が必要。

NoSQLデータベース

基盤となるハードウェアクラスターのサイズ、ネットワークレイテンシー、呼び出すアプリケーションに依存する。

Amazon DynamoDB

DynamoDBは、これらの実装の詳細からアプリケーションを隔離し、堅牢で高パフォーマンスなアプリケーションの設計と構築に集中できるようにされている。

拡張性

リレーショナルデータベース

ハードウェアの演算機能を増強してスケールアップするか、読み取り専用ワークロードのレプリカを追加してスケールアウトする。データベーステーブルが分散システムの複数のホストにまたがることは可能だが、この場合は追加の投資が必要になる。スケーラビリティに上限を課すファイル数とサイズが最大サイズになる。

NoSQLデータベース

分散型アーキテクチャを使用したアクセスパターンのスケールアウトに基づくパーティション化が可能で、これにより、ほぼ無限の規模でスループットを高め、一貫したパフォーマンスを維持することができる。

Amazon DynamoDB

DynamoDBでは、レイテンシーの増加なしでスループットの強化ができ、スループット要件を指定すると、その要件に対応するためな十分なリソースが割り当てられる。テーブル単位の項目数、およびそのテーブルの合計サイズに上限はない。

API

リレーショナルデータベース

データの保存および取得のリクエストは構造化クエリ言語(SQL)準拠のクエリを使用して伝えられる。これらのクエリはリレーショナルデータベースによって解析されて実行される。

NoSQLデータベース

アプリケーション開発者は、オブジェクトベースのAPIを使用して、データ構造の保存および取得を簡単に行うことができる。アプリケーションはパーティションキーによって、キーと値のペア、列セット、またはアプリケーションのシリアライズされたオブジェクトや属性を含む半構造化ドキュメントを調べる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1