![見出し画像](https://assets.st-note.com/production/uploads/images/137761322/rectangle_large_type_2_ffde4cfc1c6bfa0bd3f7dd048cd14baf.png?width=1200)
3つのSQLの特性を知ろう 〜SQL, NoSQL, NewSQL〜
ひとえにデータベースといっても、その裏には色んな技術があります。
SQL界隈には現在SQL、NoSQL、NewSQLの3つがあって「よくわからん」という状態だったので調べてみました。
今回は参考記事を元にClaude3 Sonnetに以下の内容を書いてもらいました。
SQL
SQLデータベースは1970年代から利用されている古くからある技術です。代表的なものとしてOracle、SQL Server、MySQL、PostgreSQLなどがあります。
データモデル
関係データモデルを採用しています。データは行と列で構成されたテーブルに格納されます。
テーブル間の関係は主キーと外部キーによって定義されます。
スキーマ(データ構造の設計)を事前に厳密に決める必要があります。
言語
SQL(Structured Query Language)という宣言型の問合せ言語を使用します。
データの定義(DDL)、データの操作(DML)、データの制御(DCL)、トランザクション制御が可能です。
トランザクション処理
ACID(原子性、一貫性、隔離性、永続性)のプロパティを完全に満たし、トランザクション処理に適しています。
ロックによる同時実行制御、ログによる障害回復などの機能があります。
スケーラビリティ
単一サーバでの垂直スケーリングは可能ですが、水平スケーリング(分散処理)は難しい面があります。
シャーディングなどの手法で分散処理を行うこともできますが、複雑性が高くなります。
SQLデータベースは企業の基幹業務などで長年使われ、堅牢でデータ整合性の高いデータ管理が可能です。一方で、非構造化データやビッグデータ、高いスケーラビリティが求められる場合は不向きな面もあります。
NoSQL
データモデル
従来のリレーショナルデータモデルとは異なり、様々なデータモデルを採用しています。
キー値ストア(Redis、Amazon DynamoDBなど)
ドキュメント指向(MongoDB、Couchbase など)
カラムファミリー(Cassandra、HBaseなど)
グラフデータベース(Neo4j、Amazon Neptuneなど)
スキーマレスで柔軟にデータを格納できるのが特徴です。
クエリ言語
SQLを使わず、APIやドメイン特化言語で問合せを行います。
ほとんどが値参照の単純な問合せを想定しています。
スケーラビリティ
水平スケーラビリティに優れ、コモディティハードウェアでのスケールアウトが容易です。
シャーディング、レプリケーション、自動フェイルオーバーなどの機能を備えています。
データ一貫性
完全なACIDプロパティは保証されませんが、代わりに可用性と分散性を重視します。
最終的な整合性(Eventually Consistent)は保証されますが、一時的な不整合が起こり得ます。
NoSQLはWebスケール、ビッグデータ、IoTなどの大量で単純なデータ処理に適しています。一方で、リレーショナルデータモデルの柔軟性に乏しく、高度な問合せ処理には不向きな面もあります。
NewSQL
NewSQLはNoSQLの水平スケーラビリティとパフォーマンスを維持しつつ、SQLの利点である高い可用性と堅牢性を実現することを目指したデータベースです。
データモデル
従来の関係データモデルを基本としています。行と列のテーブル形式です。
しかしながら、一部のNewSQLではJSON等の非構造化データも扱えます。
SQL言語
SQL言語をそのまま使用できます。DDL、DML、DCLなどが利用可能です。
一部のNewSQLでは従来SQLに加えて、ストアドプロシージャやトリガーなども使用できます。
トランザクション処理
ACIDプロパティを完全に満たし、分散トランザクション処理が可能です。
2相activeレプリカプロトコルなどの手法で、高い確実性と可用性を実現しています。
スケーラビリティ
シャーディング、レプリケーション、パーティショニングなどにより、水平スケーラビリティが実現されています。
インメモリ処理やコードの最適化により、高いパフォーマンスを発揮します。
商用製品例
VoltDB、NuoDB、MemSQL、Clustrix、CockroachDBなど
NewSQLは従来SQLの利点を維持しつつ、NoSQLのスケーラビリティとパフォーマンスの利点を組み合わせた次世代データベースです。商用製品が中心ですが、オープンソースの選択肢も増えつつあります。
まとめ
それぞれに適した用途があることを理解して、どのSQLを選べばよいかを選択できる目を持ちましょう。
いいなと思ったら応援しよう!
![Puuuii | 伝える技術と心理学で戦うデータエンジニア](https://assets.st-note.com/production/uploads/images/132912762/profile_035bb93b2f0bebe6400b4e807a808205.png?width=600&crop=1:1,smart)