🫐

NoSQLとSQL

2025/03/02に公開

記事作成に至った経緯

現在、Webアプリケーションを学習している中で、NoSQLを使う機会があったため。
また、業務では、RDBを使用して(クラウド上ではあるが)いるため、違い等が気になったため。

NoSQL(今回はKVSを上げる)

KVSとは

KVS(Key-Value Store)とは、データをキー(Key)と値(Value)のペアで保存するデータベースの一種です。つまり、各データは一意の「キー」に紐付けられており、そのキーを使って関連する「値」を迅速に取得できます。KVSは非常にシンプルなデータモデルを提供しており、主に以下の特徴があります。
高速な読み書き:キーを使ってデータを直接検索できるため、非常に速い。
柔軟性:値の部分は様々な形式を取ることができ、文字列やJSON、バイナリデータなど多様なデータを格納できます。
スケーラビリティ:分散環境での運用に強く、大規模なデータにも対応可能。

【代表的なKVSの例】

  • Redis
  • Amazon DynamoDB
  • Memcached

SQL(RDB)

RDBとは

RDB(Relational Database)とは、リレーショナルモデルに基づいたデータベースで、データは**テーブル(表)として格納されます。テーブルは行(レコード)と列(カラム)**から成り立っており、各列に特定のデータ型が設定されています。RDBは、**SQL(Structured Query Language)**を使用してデータの操作を行います。

【RDBの特徴】
1, データの整合性:関係性があるデータを管理し、正規化などを行うことでデータの冗長性を減らし、整合性を保ちます。
2, トランザクション:データの一貫性を保証するために、ACID(Atomicity, Consistency, Isolation, Durability)特性をサポートします。
3, 高度なクエリ機能:SQLを用いて複雑なクエリを発行し、データを操作することができます。

【代表的なRDBの例】

  • MySQL
  • PostgreSQL
  • SQLite

NoSQLとSQLの違い等まとめ

使い分け

KVSを使うべき場合

☑️ 高速なデータ読み書きが必要な場合(例:キャッシュ、セッションストレージ)。
☑️ スケーラブルな分散システムが必要な場合。
☑️ 柔軟なデータ構造でデータを保存したい場合。

RDBを使うべき場合

✅ 複雑なクエリやデータの整合性が重要な場合(例:金融系システム、トランザクション管理)。
✅ データ間の関係性を正確に管理したい場合(例:在庫管理、顧客情報管理)。

参考資料

https://aws.amazon.com/jp/nosql/key-value/
https://cloud.google.com/learn/what-is-a-relational-database?hl=ja
https://aerospike.co.jp/blog/what-is-kvs/
https://dev.classmethod.jp/articles/in-memory-kvs-redis/

Discussion