🙌
NoSQLってなんだっけ?
Daily Blogging36日目
NoSQLっていうと、RedisだったりDynamoDBが浮かぶけど、具体的に説明しなさいと言われるとうまく言語化できない
というよりちゃんと勉強したことがないので説明できない
NoSQLとは?
「Not Only SQL」の略
「No SQL」じゃないんだね
簡単にいうと、「リレーショナルデータベースではないもの」を指します。
なんで「Not Only SQL」なのかというと、SQL以外にも選択肢があるよって意味なんだとか
NoSQLの種類
NoSQLはRDBではないDBなので、種類がいっぱいある。
種類 | 概要 | 利用シーン | 例 |
---|---|---|---|
キーバリューストア型 | キーに値を紐づけて格納する。シンプルなので読み書き、キーによる検索速度が速い。 | キャッシュ、セッション管理 | Redis, DynamoDB |
ドキュメント型 | JSON形式などで格納できる。動的に構造が変わっても問題ない。フィールド単位の検索も可能。 | ECサイト、IoTアプリ | MongoDB, Firebase Firestore, DynamoDB |
列指向型(カラム指向型) | データを列ごとに管理できる。特定のカラムに対する処理速度がはやい。カラム数が増えても処理速度に影響しない。 | ログ解析、時系列データの集計 | Apache Cassandra, HBase |
グラフ型 | ノード、エッジ、プロパティの三要素からなる。各のノードの関係性を管理する。 | レコメンドシステム | Neo4j, Amazon Neptune |
使い分け
さっくりこんな感じらしい
- リアルタイム性が必要なら
- Firebase Firestore、Redis、Amazon DynamoDB
- 大規模データの分析なら
- Apache Cassandra、HBase
- 関係性(リレーション)が重要なら
- Neo4j、Amazon Neptune
- 複雑なデータ構造を柔軟に管理したいなら
- MongoDB
RDBとの違い
特徴 | RDB (リレーショナルデータベース) | NoSQL (非リレーショナルデータベース) |
---|---|---|
データモデル | テーブル構造 | 柔軟なデータ構造 |
クエリ言語 | SQL | システムごとに異なる(面倒臭いねっ) |
スケーラビリティ | 垂直スケーリング(スケールアップ) | 水平スケーリング(スケールアウト) |
パフォーマンス | 大規模なトランザクション処理には性能が低下することがある(整合性保つのも大変だぁ) | 高速な読み書きが可能、特に大規模なデータに強い |
データの整合性 | 強い整合性を維持 | 一貫性よりも可用性やパフォーマンスを重視 |
用途 | 取引システム、金融システム、在庫管理など | SNS、ログデータ、リアルタイムデータ、IoTなど |
つまりこういうこと
- 強い整合性が必要
- RDB
- 処理速度、スケーラビリティが必要
- NoSQL
Discussion