見出し画像

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を選べばよいかを選択できる目を持ちましょう。

この記事が参加している募集

新生活をたのしく

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!