はじめに
こんにちは。さとたいです。
今回は記事のタイトルにある通り、RDBとNoSQLの違いを調べてまとめようと思います。
なんとなく違いは判るんだけど、説明してといわれると言葉に詰まりそうだな~と思ったのでこの記事でしっかりまとめていきます。
NoSQL・RDBとは
データベースの分類。他にも種類があるみたいだが、今回はNoSQLとRDBだけ調べてみる。
RDB
概要
ざっくり「データを表形式で扱い、表同士をくっつけたりできるデータベース」て感じ。
データのやり取りはSQLを使って行い、複雑な条件検索などが可能なためデータ操作性が高くなっている。
例えば、Oracle、MySQL、PostgreSQL などが該当する。
向き不向き
外部キーや制約によりデータの整合性を保ちやすく、SQLで高度な検索・集計が可能で、トランザクション管理にも優れているが、スキーマが変更に弱く、スケールアウトが難しいという欠点がある。
また、複雑なJOINは性能低下の原因となり、非構造データの扱いもあまり得意じゃない。
NoSQL
概要
これはざっくり、「RDB以外のデータベースを指すもの」てことらしい。汎用的な言葉なのね。
従来のRDBでは扱いきれないビッグデータや画像データといったデータを扱うことができる。
RDBの問題点を補う機能を持っているのがNoSQLって考え方も分かりやすくていいかも。
向き不向き
低レイテンシー・高スループットで高速処理が可能、分散やスケールアウトが容易で大量データに強く、複製による高可用性も実現できるが、一貫性の維持が難しく、複数レコードにまたがるトランザクションやJOIN処理が苦手。また、複雑な検索や分析ではRDBより劣るときあり。
ユースケースで理解する
RDB
1. ECサイトや注文管理システム
顧客・商品・注文・支払いなど、複数データが正確に連携する必要があり、トランザクションと整合性が非常に重要なため。
売上集計・人気商品ランキングなどの複雑な集計SQLも容易に実行できる。
2. 銀行システムや会計・給与システム
金額データの正確性や履歴管理、厳密な更新処理(ACID特性)が必要なため。
監査や法令対応のために必要な履歴管理・検索・証跡管理もSQLで厳密に行える。
NoSQL
1. セッション情報を一時的に保存しておくためのセッションストア
キーバリューによるシンプルな管理で、低レイテンシーで高速アクセスが可能なため。
また、分散配置しやすいためアクセス急増時でもサーバーを追加するだけでスケール対応できる。
2. 動画プラットフォームのコンテンツ管理
動画のタイトル・説明・タグ・再生数・コメント・評価など、項目が多く、将来的な追加や変更が頻繁に発生するため柔軟性が必要。
まとめ
NoSQLとRDBを調べみて、改めてどんな違いがあるか考えると、
RDBは「正確さ・整合性重視」/NoSQLは「速さ・拡張性重視」という違いがあるのかなと思いました。
また、NoSQLはRDB以外のことを指すことも知れたのが大きいです。
今回の記事を書いたことで、それぞれの説明もできるようになったと思うし、NoSQLが出てきたときは中身をしっかり確認しようという意識がわきました。
今回の記事書いてよかったです!!