NoSQL(Not only SQL)とは?
大量にある多様な非構造化データを高速に処理するための言語です。
「Not only SQL」の略で、SQL以外でもデータを扱えることを強調しています。
近年の動向
データ量が増加している
たくさんユーザーがいるWebサービスであれば、数十テラバイトのデータがやり取りされることは珍しくないです。
処理速度が増加している
インターネットの高速化や、スマホの普及により高速化された。結果として秒間に何万ものアクセスがあるサイトも珍しくはないです。
多様性が増加している
ソーシャルメディアのデータや、マルチメディアなバイナリデータや、XML、JSONなど。
NoSQLの種類
キーバリュー型
データをデータを識別する鍵(キー)と、それに対応する値(バリュー)で扱う非常にシンプルなタイプのデータベース。
OSSでいえば「Redis」、「Memcache」、AWSのサービスで言えば「ElasticCache」、「DynamoDB」が該当します。
カラム指向型
RDBが行単位でデータを扱うのに対して、カラム指向型はデータを1列(カラム)単位で扱う。
行の追加や削除などの処理は苦手ですが、列で考える集計処理などは得意。
OSSでいえば「HBase」、AWSのサービスで言えば「RedShift」が該当します。
ドキュメント指向型
XMLやJSONなどのように半構造化されたドキュメント形式のデータを扱うデータベース。
XMLやJSONなどを扱うアプリはそのままデータを格納できる。
OSSでいえば「MongoDB」、AWSのサービスで言えば「DocumentDB」が該当します。
グラフ型
ノード、エッジ、プロパティから構成されるグラフ構造でデータを格納するデータベースです。
Facebookの友達関係の追加、削除などネットワークを扱うアプリで使うと便利。
OSSでいえば「Neo4j」、AWSのサービスで言えば「Neptune」が該当します。
NoSQLのメリット
多様で大量の非構造化データを高速に処理することができる。
安価なサーバーを並列につなげてパフォーマンスを向上させることができる。(スケールアウト)RDBの場合は、サーバーの数を増やすとデータの整合性をとることが難しくなるので、パフォーマンスを上げたい場合は、サーバーの数を増やすのではなく性能を上げる必要があります。(スケールアップ)
NoSQLのデメリット
ACID特性(要はトランザクションとかで行うデータ間の整合性など)を維持する機能が弱いこと。
この記事へのコメントはありません。