ステータス:非推奨

この記事は非推奨になり、保守されなくなりました。

理由

紹介データベースの内容を書き直しました。

代わりに参照してください

この記事は参照として役立つ場合がありますが、機能しない場合やベストプラクティスに従わない場合があります。 使用しているオペレーティングシステム用に書かれた最近の記事を使用することを強くお勧めします。

序章


太古の昔から、コンピュータの機能に最も強く依存し、依存しているものの1つはメモリです。 技術と基礎となる実装方法は異なりますが、ほとんどのコンピューターには、情報を処理し、将来必要なときにいつでも使用できるように安全に保管するために必要なハードウェアが装備されています。

今日の世界では、サーバー、パーソナルコンピュータ、ハンドヘルドデバイスなど、マシンのこの機能を利用しないアプリケーションを考えることはほとんど不可能です。 単純なゲームからWebサイトを含むビジネス関連のツールまで、特定の種類のデータが各操作で処理、記録、および取得されます。

データベース管理システム(DBMS)は、これらの操作を処理する低レベルのアプリケーションプログラミングインターフェイス(API)と連携する高レベルのソフトウェアです。 さまざまな種類の問題の解決を支援するために、何十年にもわたって新しい種類のDBMSが開発されてきました(例: リレーショナル、NoSQLなど)とそれらを実装するアプリケーション(例: MySQL、PostgreSQL、MongoDB、Redisなど)。

このDigitalOceanの記事では、データベースとデータベース管理システムの基本について説明します。 さまざまなデータベースがどのように機能するか、およびそれらを際立たせるものの背後にあるロジックについて学習します。

用語集


1. データベース管理システム


2. データベースモデル


  1. リレーショナルモデル
  2. モデルレス(NoSQL)アプローチ

  1. リレーショナルデータベース管理システム
  2. NoSQL(NewSQL)データベースシステム

4. SQLとNo-SQLのデータベース管理システムの比較


データベース管理システム


データベース管理システムは、あらゆる種類の完全に異なるツール(つまり、 コンピュータプログラムまたは組み込みライブラリ)、主に異なる非常にユニークな方法で動作します。 これらのアプリケーションは、情報の収集を処理するか、処理を大幅に支援します。 情報(またはデータ)自体はさまざまな形やサイズで提供されるため、21世紀の後半以降、さまざまなプログラミングやコンピューター化のニーズを解決するために、数十のDBMSと多数のDBアプリケーションが開発されてきました。

データベース管理システムは、データベースモデル:データを処理するために定義された構造に基づいています。 それぞれの新しいDBMS、およびそれらのメソッドを実現するために作成されたアプリケーションは、前述の情報の定義および保存と取得の操作に関して、非常に異なる方法で機能します。

さまざまなDBMを実装するソリューションは多数ありますが、歴史の各期間で、比較的少量の選択肢が急速に普及し、長期間使用され続けています。おそらく、過去20年以来最も優勢な選択肢です。 (またはそれ以上)リレーショナルデータベース管理システム(RDBMS)であること。

データベースモデル


各データベースシステムは、異なるデータベースモデルを実装して、管理されているデータを論理的に構造化します。 これらのモデルは、データベースアプリケーションがどのように機能し、処理する情報を処理するかを決定する最初のステップであり、最大の決定要因です。

データを構造化する手段を明確かつ厳密に提供するデータベースモデルにはかなりの数の種類があり、最も一般的なのはおそらくリレーショナルモデルです。

リレーショナルモデルとリレーショナルデータベースは非常に強力で柔軟性がありますが、プログラマーがそれらの使用方法を知っている場合、多くの場合、これらのソリューションでは実際には提供されなかったいくつかの問題や機能があります。

最近、NoSQLデータベースと呼ばれる一連の異なるシステムとアプリケーションが、これらの問題を解決し、いくつかの非常に興味深い追加機能を提供することを約束して、迅速に人気を博し始めました。 リレーショナルモデル内で定義された厳密に構造化されたデータ保持スタイルを根絶することにより、これらのDBシステムは、情報を操作するためのはるかに自由な形の方法を提供することによって機能します。問題、データの重要で不可欠な性質を考えると深刻な問題もあります。

リレーショナルモデル


1970年代に導入されたリレーショナルモデルは、データを構造化、保持、および使用するための非常に数学的に適応した方法を提供します。 リレーションの手段を導入することにより、フラットモデル、ネットワークモデルなどの以前の設計を拡張します。 リレーションは、データを制約されたコレクションとしてグループに保持するという利点をもたらします。これにより、データテーブルは構造化された方法で情報を含みます(例: 人の名前と住所)、属性に値を割り当てることによってすべての入力を関連付けます(例: a 個人のID番号)。

何十年にもわたる研究開発のおかげで、リレーショナルモデルを実装するデータベースシステムは非常に効率的かつ確実に機能します。 これらのツールを使用するプログラマーやデータベース管理者の長年の経験と相まって、リレーショナルデータベースアプリケーションの使用は、どのような状況でも、特に次の理由により、情報を失うことのないミッションクリティカルなアプリケーションの選択になりました。グリッチまたはgotchas

データの形成と処理という厳密な性質にもかかわらず、リレーショナルデータベースは非常に柔軟になり、少しの努力で多くのことを提供できます。

モデルレス(NoSQL)アプローチ


データを構造化するNoSQLの方法は、これらの制約を取り除くことで構成されているため、情報を保持、クエリ、および使用する手段が解放されます。 NoSQLデータベースは、構造化されていない(または外出先で構造化された)種類のアプローチを使用することで、厳密な関係の制限を排除し、特定のユースケースのデータを効率的に保持および操作するためのさまざまな種類の方法を提供します(例えば フルテキストドキュメントストレージ)。


この記事では、最も人気があり、一般的に使用されているデータベースソリューションのいくつかのパラダイムを紹介することを目的としています。 数値的な結論に達するのは難しいですが、ほとんどの場合、オッズはリレーショナルデータベースエンジン、または比較的新しいNoSQLエンジンの間にあると明確に見積もることができます。 これらの各システムのさまざまな実装の違いを理解する前に、内部で何が行われているのかを見てみましょう。

リレーショナルデータベース管理システム


リレーショナルデータベースシステムの名前は、実装するモデルリレーショナルモデルに由来します。これについては、前に説明しました。 現在、そして今後かなりの期間、データを確実かつ安全に保持するための一般的な選択肢であり、効率的でもあります。

リレーショナルデータベース管理システムでは、データを受け入れるために、定義された明確に設定されたスキーマ(PostgreSQLの用語の特定の定義と混同しないでください)が必要です。 これらのユーザー定義フォーマットは、データがどのように含まれ、使用されるかを形作ります。 スキーマは、各レコードに属する情報の数とタイプを表す、列のあるテーブルによく似ています。 行はエントリを表します。

いくつかの一般的なリレーショナルデータベース管理システムは次のとおりです。

  • SQLite:

非常に強力な組み込みリレーショナルデータベース管理システム。

  • MySQL:

最も人気があり、一般的に使用されているRDBMS。

  • PostgreSQL:

最も高度なSQL準拠のオープンソース目標-RDBMS。

注: NoSQLデータベース管理システムの詳細については、このテーマに関する記事NoSQLデータベース管理システムの比較をご覧ください。

NoSQL(NewSQL)データベースシステム


NoSQLデータベースシステムには、構造化されたリレーショナルソリューションで使用される(または必要とされる)モデルが付属していません。 多くの実装があり、それぞれが非常に異なる動作をし、特定のニーズに対応しています。 これらのスキーマレスソリューションは、エントリの無制限の形成を可能にするか、またはむしろ反対の、非常に単純ですが、有用なキーベースの値ストアとして非常に効率的です。

従来のリレーショナルデータベースとは異なり、データのコレクションをMongoDBなどの一部のNoSQLデータベースと一緒にグループ化することができます。 これらのドキュメントストアは、各データを1つのコレクションとしてまとめて保持します(つまり、 ドキュメント)データベース内。 これらのドキュメントは、 JSON と同様に、単一のデータオブジェクトとして表すことができますが、属性によっては必須です。

NoSQLデータベースには、データをクエリする一般的な方法がありません(つまり、 リレーショナルデータベースのSQLに似ています)、各ソリューションは独自のクエリシステムを提供します。

注:リレーショナルデータベース管理システムの詳細については、リレーショナルデータベース管理システムの比較というテーマに関する記事をご覧ください。

SQLとNo-SQLのデータベース管理システムの比較


より単純で理解しやすい結論に到達するために、SQLとNo-SQLデータベース管理システムの違いを分析しましょう。

  • 保持されるデータの構造とタイプ:

SQL /リレーショナルデータベースは、通常フリーフロー操作を許可するNoSQLデータベースとは異なり、データを保持するために定義された属性を持つ構造を必要とします。

  • クエリ:

ライセンスに関係なく、リレーショナルデータベースはすべてある程度SQL標準を実装しているため、構造化照会言語(SQL)を使用して照会できます。 一方、NoSQLデータベースはそれぞれ、管理するデータを操作するための独自の方法を実装しています。

  • スケーリング:

どちらのソリューションも、垂直方向に簡単に拡張できます(つまり、 システムリソースを増やすことによって)。 ただし、より近代的な(そしてより単純な)アプリケーションであるNoSQLソリューションは、通常、水平方向にスケーリングするためのはるかに簡単な手段を提供します(つまり、 複数のマシンのクラスターを作成することによって)。

  • 信頼性:

データの信頼性と実行されたトランザクションの安全な保証に関しては、SQLデータベースの方が適しています。

  • サポート:

リレーショナルデータベース管理システムには、数十年の長い歴史があります。 それらは非常に人気があり、無料と有料の両方のサポートを見つけるのは非常に簡単です。 したがって、問題が発生した場合、最近人気のあるNoSQLデータベースよりもはるかに簡単に解決できます。特に、その解決策が本質的に複雑な場合(例: MongoDB)。

  • 複雑なデータの保持とクエリのニーズ:

本質的に、リレーショナルデータベースは、複雑なクエリとデータ保持のニーズに対応するtheの頼りになるソリューションです。 それらははるかに効率的であり、このドメインで優れています。