🙌

NoSQLってなんだっけ?

2025/01/26に公開

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