- Not only SQL(あるいはNon-relational)の略。テーブル形式に縛られないデータベースの総称で、キーバリュー・ドキュメント・カラム・グラフの4種類がある
- 水平スケールが容易でペタバイト規模のデータを高速処理できるのが最大の強み。WebサービスやSNSの大量データ処理に広く使われる
- スキーマを事前に定義しなくてよい柔軟性があるが、トランザクションの保証がRDBMSより弱いため、用途に合わせてRDBMSと使い分けることが重要だ
【深掘り】これだけ知ってればOK!
NoSQLが注目された背景はWebサービスの規模爆発だ。Facebookが数十億人分のプロフィールを管理する、Twitterが毎秒数十万ツイートを書き込む、といった規模にRDBMSのVERTICAL SCALE(スケールアップ)では限界が来た。NoSQLはサーバーを横に増やすだけでほぼ線形にスケールする水平スケールで対応できる。
RDBMSとNoSQLの使い分け判断軸を整理しよう。ACID準拠が必要な金融取引・在庫管理・会計処理はRDBMS一択だ。スキーマが頻繁に変わるコンテンツ管理・大量のセッションデータ・リアルタイムのランキング処理・時系列ログの大量蓄積はNoSQLが有利な用途だ。多くの本番システムではRDBMSとNoSQLを組み合わせて使う。
近年はNoSQLとRDBMSの境界が曖昧になりつつある。PostgreSQLはJSON型に対応してドキュメントDBのように使え、MongoDBはトランザクション機能を追加した。クラウドのNewSQL(Google Spanner・Amazon Aurora)は水平スケールとACIDを両立する第3の選択肢として台頭している。
よくある誤解
NoSQLはSQLを使えないという誤解
NoSQLとはSQLを使わないという意味ではなく、Not only SQL(SQLだけに限らない)という意味だ。CassandraはCQL(Cassandra Query Language)というSQL似の言語を使い、MongoDBでもSQL変換ツールが提供されている。
NoSQLはRDBMSより優れているという誤解
「優れている」のではなく「用途が異なる」が正確だ。トランザクション整合性・複雑なJOIN・標準SQLが必要な用途ではRDBMSが適切だ。大規模・高速・柔軟なスキーマが必要な用途ではNoSQLが適切だ。
会話での使われ方

セッション管理はRedisで持ったほうがRDBMSへの負荷が下がりますよ。今のMySQLがボトルネックになってますし。
バックエンドエンジニアがアーキテクチャ改善を提案している場面。




MongoDBにしたらスキーマ変更のマイグレーション作業がなくなって開発スピードが上がりました。
スタートアップのCTOがプロダクト開発での経験を話している場面。




NoSQLって何でもできそうに見えますが、金融系のトランザクションはRDBMSじゃないとダメですよね?
技術選定の相談で新人エンジニアがベテランに確認している場面。
【まとめ】3つのポイント
- 「RDBMSの制約を外した水平スケール向けの柔軟なDB群」:NoSQLはキーバリュー・ドキュメント・カラム・グラフの4種類があり大規模WebサービスやSNSの大量データ処理を支える
- RDBMSと用途を使い分けることが実務の正解:ACID準拠が必要な業務DBはRDBMS、高速・スケール・柔軟スキーマが必要な部分にNoSQLを組み合わせるのが標準的な設計だ
- 結果整合性モデルを理解した上で設計する:書き込み直後の読み取りで古いデータが返ることがある特性を把握した上でアーキテクチャを設計することが重要だ
よくある質問
- QNoSQLの代表的なデータベースを教えてください
- A
キーバリュー型のRedis・Memcached、ドキュメント型のMongoDB・Firestore、カラム型のCassandra・HBase、グラフ型のNeo4jが代表的です。クラウドではAWS DynamoDB・Google Firestore・Azure Cosmos DBも広く使われています。
- QNoSQLはどんな会社で使われていますか?
- A
Facebookがカラム型のCassandraをメッセージングに、TwitterがRedisをタイムラインキャッシュに、LinkedInがグラフ型DBをつながり検索に使っています。国内でもLINE・メルカリなど大量データを処理するWebサービスで採用されています。
- QRDBMSとNoSQL、新しいシステムにはどちらを選べばいいですか?
- A
まずRDBMSで始めることを推奨します。スタートアップ初期はデータ量が少なくRDBMSで十分な場合が多いです。スケールの問題や特定のユースケースが出てきた段階でNoSQLを追加検討するのが合理的です。
- QNoSQLとRDBMSの違いは何ですか?
- A
RDBMSはテーブル形式でスキーマを事前定義し、ACID準拠のトランザクションを保証します。NoSQLはテーブル形式に縛られず柔軟なデータ構造を持ち、水平スケールが容易な代わりにACIDの保証が弱い場合があります。
この用語と一緒に知っておきたい用語
| 用語 | この記事との関連 |
|---|---|
| SQL | SQLを押さえると本記事の理解がさらに深まります。Structured Query Languageの略(読み:エスキューエル)。リレーショナルデータベースを操作するための標準言語で、データの検索・追加・更新・削除を記述する |
| データ | 本記事のテーマと実務上セットで使われることが多い用語です。コンピュータが処理する数値や文字、画像といった事実や資料そのもの、それがデータだ |
| MongoDB | 本記事のテーマと実務上セットで使われることが多い用語です。NoSQLのドキュメント型データベース。JSONに近いBSON形式でデータを保存するためスキーマ定義なしにデータを扱えり、Webアプリのバックエンドで広く採用される |
| Cassandra | Cassandraとの関係を知ると全体像がつかみやすくなります。Apache Software Foundationが管理するオープンソースのNoSQL列指向DB。マスターレスの完全分散アーキテクチャで、単一障害点なしにペタバイト規模のデータを処理できる |
| トランザクション | トランザクションは関連分野でよく登場する重要キーワードです。データベースにおいて複数の操作を「全て成功するか・全て失敗して元に戻るか」の一つの処理単位として扱う仕組みのこと |
【出典】参考URL
https://www.winserver.ne.jp/column/about_nosql/ :NoSQLとRDBMSの詳細比較
https://techblog.asia-quest.jp/202409/what-is-the-difference-between-sql-and-nosql :SQLとNoSQLの違い


コメント