sql >> データベース >  >> RDS >> Mysql

最も人気のある8つのデータベース

    データベースは、ウェブサイトからブログ、ソーシャルメディア、ストリーミングサービスまで、地球上のほぼすべてのデジタルプラットフォームに電力を供給します。ほとんどのエンドユーザーは、データを保存するためのツールとしてMySQLなどのデータベースを知っています。これは、基本的ではありますが、データベースとは何かについてのかなり正確な説明です。ただし、それだけではありません。

    さまざまなタイプのデータベース

    一般的な用語データベース 多くの場合、データベースとデータベース管理システム(DBMS)という2つの別個の異なるコンポーネントを混同します。データベースはデータを格納し、DBMSはデータの管理に使用するツールまたはツールのセットです。ここでは、DBMSについて説明します。これは、データベース管理者がデータベースと通信して、データベースを完全に管理および管理できるようにするツールで構成されているためです。

    データベース管理システムは、次の3つの層に分かれています。

    • クライアント :有効なSQLクエリを使用してコマンドラインまたはGUI画面からリクエストを行います。
    • サーバー :サーバーのすべての論理機能を担当します。
    • ストレージ :データストレージを処理します。

    これらのレイヤー内には、スレッドハンドラー、クエリ言語、パーサー、オプティマイザー、クエリキャッシュ、バッファー、テーブルメタデータキャッシュ、キーキャッシュなどのツールがあります。これらの要素が一体となって、管理者、ユーザー、ソフトウェアがデータの保存と取得に使用できる強力なシステムを構成しています。

    DBMSの重要な側面の1つは、クエリ言語です。これは、データベースとの対話に使用される特別な言語です。これは非常に特殊な言語であり、DBMSによって設定された仕様に従って使用する必要があります。一部のDBMSには独自の独自のクエリ言語がありますが、最も一般的なものは次のとおりです。

    • SQL -構造化クエリ言語は、市場で最も広く使用されているクエリ言語の1つであり、MSSQLとMySQLで使用されています。
    • XQuery -XMLファイル形式を使用してデータを抽出および操作します。
    • OQL -オブジェクトクエリ言語は、ビッグデータのユースケースでよく使用されるオブジェクト指向データベースのデフォルト言語です。
    • SQL / XML -SQLとXQueryの組み合わせであり、XMLデータのSQLステートメントをサポートします。
    • GraphQL -APIを操作できるオープンソース言語であり、既存のデータに対するクエリに使用できるランタイムでもあります。
    • LINQ -統合言語クエリは、XMLドキュメントやリレーショナルデータベースなどのさまざまなソースからデータを抽出して処理します。

    リレーショナルデータベースと非リレーショナルデータベース

    DBMSは、リレーショナルと非リレーショナルの2つの主要なタイプのデータベースを使用します。これら2つの違いは、データベースの最適なユースケースを定義するのに役立つため、重要です。

    リレーショナルデータベースは、関連データを含むテーブルに情報を格納するデータベースです。リレーショナルデータベースにその名前を付けるのは、2つ以上のテーブル間で関係を作成できることです。関係は、2つの異なるテーブルに属する行を3番目のテーブルに相互に関連付けます。リレーショナルデータベースは、含まれるデータが頻繁に変更されない場合や、データの正確性が重要な場合に最適です。

    非リレーショナルデータベース(NoSQLデータベースとも呼ばれます)は、情報を非表形式で格納します。代わりに、非リレーショナルデータベースはデータをデータモデルに格納します。データモデルの中で最も一般的な4つのタイプは次のとおりです。

    • ドキュメント指向 -データはJSONドキュメントとして保存されます。
    • キー値 -データはキーペアで保存されます。
    • グラフ -データはノード-エッジ-ノード構造で保存されます。
    • ワイドカラム -データは、行ごとに異なる柔軟な列を持つ表形式で保存されます。

    この方法でデータを格納するため、非リレーショナルデータベースははるかに柔軟性があります。さまざまな種類のデータを保存できます。これにより、ビッグデータアプリケーションを操作する場合など、複雑なデータを大量に保存する必要がある場合に最適です。

    データベースで何を探すか

    最初に尋ねる質問は、「リレーショナルデータベースと非リレーショナルデータベースのどちらを使用すべきか」です。リレーショナルデータベースは、 ACIDを必要とするインスタンスに最適です。 (Atomicity、Consistency、Isolation、Durability)コンプライアンス、データの正確性、正規化、および単純さ。ただし、スケーラビリティ、柔軟性、および高性能は必要ありません。リレーショナルデータベースのユースケースの良い例は、WordPressなどの動的なデータベース駆動型のWebサイトです。

    一方、非リレーショナルデータベースは、データの柔軟性、速度、およびスケーラビリティが重要な場合に最適に使用されます。非リレーショナルデータベースのユースケースの良い例は、大規模なスケーリングに依存するクラウドベースのアプリです。

    この8つの最も人気のあるデータベースのリストは、4つのリレーショナルデータベースと4つの非リレーショナルデータベースに分けられます。

    リレーショナルデータベース

    以下は、今日の市場で最も人気のあるリレーショナルデータベースです。

    Oracle

    Oracleデータベースは元々1977年に開発されたため、リストで最も古いデータベースになっています。 2022年1月の時点で、オラクルは世界で最も広く使用されているリレーショナルデータベース管理システムとしてトップの座を占めています(Statistaのランキングスコアは1266.89です)。

    Oracle Databaseには5つのエディションがあります:

    • エンタープライズ -すべてのDBMS機能と、高可用性のためのOracle RealApplicationClustersオプションが含まれています。
    • 個人 -Oracle RealApplicationClustersオプションを除くすべての機能が含まれます。
    • 標準 -基本機能が含まれています。
    • エクスプレス -WindowsとLinuxの両方に対応した軽量で無料の限定バージョン。
    • Oracle Lite -モバイルデバイスのユースケースの場合。

    Oracle Databaseが市場シェアでトップの座を占める主な理由は、OracleDatabaseがリレーショナルデータベースの中で最もスケーラブルなものの1つであるためです。これは、アーキテクチャを論理と物理の間で分割することによって実現されます。これを行うことにより、データの場所は無関係で透過的になり、データベース自体に影響を与えることなく変更できる、よりモジュール化された構造が可能になります。このようにOracleDatabaseを構築することで、リソースを共有して、はるかに柔軟なデータネットワークを実現できます。

    OracleDatabaseの傑出した機能には次のものがあります。

    • パフォーマンスとデータの一貫性を損なうことなく拡張できるRealApplicationClustering(RAC)と移植性。
    • 効率的なメモリキャッシュ。
    • パフォーマンスの高いパーティション分割。これにより、大きなテーブルを多数の部分に分割できます。
    • リカバリマネージャツールによるホット、コールド、および増分バックアップ。
    • データのアクセスと使用を制御するためのツール。

    OracleDatabaseの利点は次のとおりです。

    • SQLクエリ言語を使用します。
    • 高性能。
    • ポータブル(約20のネットワークプロトコルと多数のハードウェアプラットフォームで実行できます)。
    • インスタンスケージングにより、単一のサーバーから複数のデータベース管理を実行できます。
    • ビジネスやユースケースに最適な多数のエディション。
    • スケーラビリティ、負荷分散、冗長性、パフォーマンスのためのクラスタリング。
    • RMAN(Recovery Manager)ツールによる障害回復。
    • PL/SQLのサポート。

    OracleDatabaseの欠点は次のとおりです。

    • 独自仕様 -Oracleはオープンソースではありません。
    • 複雑さ -これは、市場に出回っているより複雑なリレーショナルデータベースの1つです。
    • コスト -Oracle Databaseは、MSSQLの最大10倍のコストがかかる可能性があります。

    LinodeでOracleDatabaseExpressEditionを使用する方法をご覧ください。

    MySQL

    MySQLは、市場で最も人気のあるオープンソースのリレーショナルデータベースの1つです。 DB-Enginesによると、MySQLは、市場で最も使用されているデータベースでOracleDatabaseに次ぐ第2位にランクされています。

    1995年5月にリリースされたMySQLは、成熟していて信頼性があります。これは、利用可能な最も信頼できるオプションの1つです。 MySQLはCおよびC++で記述されており、Linux、Solaris、macOS、Windows、およびFreeBSDで動作し、GPLv2でライセンスされています。

    MySQLはリレーショナルデータベースであり、非リレーショナルデータベースの範囲まで拡張できませんが、マルチスレッドをサポートしているため、デフォルトのファイルで最大5,000万行以上を処理できるように拡張できます。サイズ制限は4GB、理論上の制限は8TBです。

    MySQLの傑出した機能には次のものがあります。

    セキュリティ -堅固なデータセキュリティレイヤーを使用して機密データを保護し、すべてのパスワードを暗号化します。ロールバック -トランザクションをロールバックできるようにします。メモリ効率が良い -メモリリークが非常に少ない。生産的 -生産性を高めるために、トリガー、ストアドプロシージャ、およびビューを使用します。パーティション化 -非常に大規模なデータベースのパフォーマンスを向上させるためのパーティショニングをサポートします。GUI -MySQLWorkbenchGUIがデータベースを管理します。

    MySQLを使用する利点は次のとおりです。

    • 無料 -これは無料のオープンソースデータベースであり、必要な数のサーバーインスタンスにインストールできます。
    • 親しみやすさ --MySQLはSQLクエリ言語を使用しているため、この言語に精通しているデータベース管理者は、このDBMSをすぐに使用できます。 MySQLは、一般的なクライアント/構造アーキテクチャにも準拠しています。
    • 速度 -独自のストレージエンジンのおかげで、最速のリレーショナルデータベースの1つです。
    • 統合 --MySQLは、ブログシステム、CRM、HRM、ERP、その他多くの種類のアプリケーションなど、何千ものサードパーティアプリケーションへの統合を楽しんでいます。

    MySQLインスタンスをLinodeサーバーにインストールする方法を学びます。

    Microsoft SQL Server

    Microsoft SQL Serverは、Microsoftによって開発されたDBMSです。このデータベースは独自のソリューションですが、LinuxとWindowsの両方にインストールできます。 MS SQL Serverは1989年4月24日に最初にリリースされ、現在は5つの異なるエディションとして提供されています。

    • 標準 -ほとんどのアプリケーションに必要なコア機能。
    • ウェブ -バッファプールに許可される最大メモリと最大計算容量の点で標準版とは異なる低コストのオプション。
    • エンタープライズ -さまざまなデータウェアハウス機能をサポートし、データ圧縮、強化されたセキュリティ、より大きなデータサイズのサポートなどの高度な機能が含まれています。
    • 開発者 -開発者向けに設計されており、ストアドプロシージャ、関数、およびビューを作成する機能が含まれています。
    • エクスプレス -個人または小規模な組織に限定され、高度な機能は含まれていません。

    MS SQL ServerはSQLクエリ言語と連携し、SQL Serverオペレーティングシステム(SQLOS)を使用します。SQLOSオペレーティングシステムは、メモリとI / Oリソース、ジョブ、およびデータ処理を管理します。

    MicrosoftSQLServerの利点は次のとおりです。

    • VisualStudioのネイティブサポート -データプログラミングのサポートがVisualStudioに組み込まれているため、DB管理者はデータベーススキーマを作成、表示、および編集できます。
    • 全文検索サービス -単語ベースのクエリの検索を可能にします。
    • 複数バージョンのサポート -1台のマシンに複数のバージョンのMSSQLServerをインストールできます。
    • 簡単なインストール -ワンクリックでインストールできます。
    • データの復元と復元 -データ回復のための組み込みツール。
    • サポート -MS SQL Serverには、さまざまなソースから利用できる多くのヘルプとサポートを備えた大規模なユーザーコミュニティがあります。

    MS SQLの欠点はほとんどありませんが、このデータベースプラットフォームの採用を検討している人は誰でも考慮する必要があります。これらの欠点は次のとおりです。

    • コストがかかり、紛らわしい価格設定。
    • 貧弱なユーザーインターフェース。
    • データベースの部分的な制御のみを許可します。

    PostgreSQL

    PostgreSQL(Postgresとも呼ばれます)は、元々Ingresデータベースの後継として機能していたもう1つの無料のオープンソースデータベース管理システムです。 PostgreSQLは、それ自体を「世界で最も先進的なオープンソースのリレーショナルデータベース」と呼んでおり、現在、リレーショナルデータベースの市場シェアは14.70%です。

    1996年にリリースされたPostgreSQLは、非常に活発な開発サイクルと大規模なサポートコミュニティを享受しています。 PostgreSQLが他のオープンソースリレーショナルデータベースと異なる点は、PostgreSQLがオブジェクトリレーショナルデータベース管理システムであるということです。つまり、リレーショナルデータベースに似ていますが、オブジェクト指向のデータベースモデルを使用しています。

    PostgreSQLはカタログ駆動型であるため、ユーザーはデータ型、インデックス型、関数型言語を定義でき、他のリレーショナルデータベースよりも拡張性が高くなります。

    PostgreSQLの傑出した機能には次のものがあります。

    • ACIDコンプライアンス。
    • 同時性が高い。
    • NoSQLサポートを含む
    • オブジェクト、クラス、継承、および関数のオーバーロードに対するスキーマとクエリ言語のサポート。
    • 共通テーブル式(より大きなクエリのコンテキスト内で使用されるクエリの一時的な結果)。
    • 宣言型パーティション分割(データのパーティション分割に必要な作業量を削減します)。
    • 全文検索。
    • 地理情報システム/空間参照系のサポート(地球の表面上の位置に関連するデータのキャプチャ、保存、チェック、表示用)
    • JSONサポート。
    • 論理レプリケーション(主キーに基づいてデータオブジェクトをレプリケートする方法)

    PostgreSQLの利点は次のとおりです。

    • 複雑で大量のデータ操作に最適です。
    • プラグインとC、C ++、およびJavaで記述されたカスタム関数の使用により高度にカスタマイズ可能。
    • マルチバージョン同時実行制御(マルチユーザー環境でデータベースのパフォーマンスを向上させるための高度な手法)。
    • ロックの読み取りは必要ないため、他のリレーショナルデータベースよりも優れたスケーラビリティを提供します。
    • クロスプラットフォーム(BSD、Linux、macOS、Solaris、およびWindowsで利用可能)。

    不利な点に関しては、PostgreSQLには次のようないくつかの問題があります。

    • MySQLよりも複雑です。
    • MySQLより遅い。
    • 他のRDBMSからデータを移行する簡単な方法はありません。
    • データ圧縮が不十分です。
    • 複雑な水平スケーリング。
    • クラスタリングのサポートが不十分です。
    • 機械学習のサポートは組み込まれていません。

    詳細については、Ubuntu20.04サーバーにPostgreSQLをインストールする方法に関するガイドをご覧ください。

    非リレーショナルデータベース

    次のセクションでは、現在市場で最も人気のある非リレーショナルデータベースについて説明します。

    Redis

    Redisは、分散型のKey-ValueNoSQLデータベースとして使用されるメモリ内データ構造ストアです。 RedisはRemoteDictionary Serverの略です オプションの耐久性を含む高度なKey-Valueストアを使用します。キーには文字列、ハッシュ、リスト、セット、並べ替えられたセットを含めることができるため、Redisはデータ構造サーバーと呼ばれることがよくあります。

    Redisは揮発性のインメモリデータベースであるため、大量のホットデータを使用するシステムに適しています。 Redisはデータをキャッシュに保存するため、読み取り/書き込みが高速になり、データの可用性が常に高くなります。

    Redisを際立たせる機能は次のとおりです。

    • 他のNoSQLデータベースと比較して最小限の複雑さ。
    • 軽量で、外部の依存関係は必要ありません。
    • すべてのPOSIX環境で動作します。
    • 高可用性のための同期、非ブロッキング、マスター/スレーブレプリケーションのサポート。
    • マップされたキー値ベースのキャッシュシステム。memcachedに相当します。
    • スキーマまたはテーブルを定義するための厳密なルールはありません。
    • 複数のデータモデルまたはタイプのサポート。
    • シャーディングのサポート。
    • 他のデータベースと組み合わせて使用​​すると、負荷を軽減してパフォーマンスを向上させることができます。

    Redisを使用する利点は次のとおりです。

    • 512MBまでのキーと値のペアを保存できます。
    • 独自のハッシュメカニズムを使用します。
    • データレプリケーションのおかげで、Redisキャッシュは障害に耐え、中断のないサービスを提供します。
    • すべての一般的なプログラミング言語がそれをサポートしています。
    • キャッシュへの大量のデータの挿入をサポートします。
    • フットプリントが小さいため、RaspberryPiおよびARMハードウェアにインストールできます。

    Redisを使用することの欠点は次のとおりです。

    • すべてのデータはメモリに収まる必要があり、メモリよりも多くのデータを管理することはできません。
    • クエリ言語や関係代数のサポートはありません。
    • 永続性のための2つのオプション(スナップショットと追加専用ファイル)のみを提供します。
    • 基本的なセキュリティ機能。
    • シングルスレッドモードでは1つのCPUコアでのみ実行されるため、スケーラビリティにはRedisの複数のインスタンスが必要です。

    詳細については、Ubuntu20.04サーバーにRedisをインストールして構成する方法に関するガイドをご覧ください。

    MongoDB

    MongoDBは、オープンソースのドキュメント指向のNoSQLデータベースであり、大量のデータストレージに重点を置いています。 MongoDBはスキーマレスと見なされるため、コレクションに含まれるドキュメントに特定の構造を適用しません。 2009年に最初にリリースされたこのNoSQLデータベースは、オプションのスキーマを備えたJSONのようなドキュメントを使用し、オンプレミスにインストールすることも、クラウドで完全に管理することもできます。 MongoDBはビッグデータの非常に優れた候補と見なされており、あらゆる規模の組織で使用できます。

    MongoDBを際立たせる機能は次のとおりです。

    • フィールド、範囲クエリ、および正規表現検索をサポートします。
    • レプリカセットで高可用性を実現します。
    • シャーディングをサポートします。
    • ファイルシステム(GridFSと呼ばれます)として使用できます。
    • パイプライン、map-reduce関数、および単一目的の集計方法をサポートします。
    • クエリ内でサポートされるJavaScript。
    • 上限付きコレクションと呼ばれる固定サイズのコレクションをサポートします。
    • 検索パフォーマンスを向上させるためにインデックスを作成できます。
    • 単一の結果または計算結果のいずれかについて、グループ化されたデータに対して操作を実行できるようにします。

    MongoDBデータベースの利点は次のとおりです。

    • 表現力豊かなクエリ言語をサポートします。
    • データベーススキーマはスキーマレスであるため、データベーススキーマの設計に時間を費やす必要はありません。
    • 柔軟性とパフォーマンス。
    • 地理空間効率をサポートします。
    • 複数のドキュメントACID遷移をサポートします。
    • SQLインジェクションは必要ありません。
    • Hadoopとすばやく統合できます。
    • オープンソースで無料で使用できます。

    MongoDBデータベースの欠点は次のとおりです。

    • 特にスケーリングする場合は、大量のメモリが必要です。
    • 16MBのデータドキュメントの保存制限。
    • データネストの100レベルの制限。
    • トランザクションをサポートしていません。
    • ドキュメントの結合は複雑です。
    • インデックスが正しく使用されていない場合、速度が低下する可能性があります。
    • 関係が適切に定義されていないため、データが重複する可能性があります。

    詳細については、MongoDBのユースケースに関するガイドをご覧ください。

    Apache Cassandra

    Apache Cassandraは、オープンソースの分散型NoSQLデータベース管理システムです。コモディティサーバー全体で非常に大量のデータを処理するように設計されています。 Cassandraは元々、プラットフォームのインデックス検索機能を強化するためにFacebook内で開発されました。 2008年7月にFacebookはGoogleCodeを介してCassandraをオープンソース化し、2009年3月に正式にApacheIncubatorプロジェクトになりました。

    Cassandraを際立たせる機能は次のとおりです。

    • 分散ノードはすべて同じ役割を持っているため、単一障害点はありません。
    • レプリケーションとマルチデータセンターレプリケーションの両方をサポートします。
    • 高いスケーラビリティを実現するためにマシンが追加されると、読み取り/書き込みスループットは直線的に増加します。
    • データは複数の分散ノードに自動的に複製されます。
    • 可用性とパーティションの許容範囲は一貫性よりも重要であるため、APシステムとして分類されます(CAP定理内)。
    • HadoopとMapReduceサポートの統合をサポートします。
    • 独自のクエリ言語であるCassandraクエリ言語が含まれています。

    ApacheCassandraの利点は次のとおりです。

    • 弾力性のあるスケーラビリティにより、ダウンタイムなしで必要に応じてCassandraをスケールアップおよびスケールダウンできます。
    • ピアツーピアアーキテクチャに従うため、マスタースレーブ構成と比較して障害が発生することはほとんどありません。
    • Solrベースの統合、バッチ分析(Hadoop統合を使用)、外部分析(HadoopおよびCloudera / Hortonworksを使用)を含む、データ分析の4つの主要な方法。
    • ほぼリアルタイムの分析。
    • マルチデータセンターとハイブリッドクラウドのサポート。
    • データは、構造化データ、半構造化データ、または非構造化データのいずれかとして保存できます。

    ApacheCassandraの欠点は次のとおりです。

    • 限定的なACIDサポート。
    • I / Oが大量にあるため、レイテンシが問題になる可能性があります。
    • データは構造ではなくクエリを中心にモデル化されているため、情報が重複して何度も保存される可能性があります。
    • 結合またはサブクエリのサポートはありません。
    • 書き込みは高速ですが、読み取りは遅くなる可能性があります。
    • 限られた公式ドキュメント。

    詳細については、ApacheCassandraのガイドをご覧ください。

    CouchDB

    CouchDBは、最終的なオープンソースのドキュメント指向のNoSQLデータベースです。この特定のツールは、データをJSONドキュメントに保存し、MapReduceを使用してJavaScriptをクエリ言語として使用します。 CouchDBは、HTTP経由でドキュメントにアクセスすることでWebを採用しています。アクセスすると、これらのドキュメントをJavaScriptで照会、結合、および変換できます。このNoSQLデータベースは、オンザフライのドキュメント変換とリアルタイムの変更通知のおかげで、Webアプリケーションとモバイルアプリケーションの両方に完全に適しています。

    CouchDBを際立たせる機能は次のとおりです。

    • 複数のサーバーインスタンス間でのデータベースレプリケーション。
    • 高速なインデックス作成と取得。
    • RESTのようなインターフェース。
    • 複数のライブラリを使用すると、選択した言語を簡単に使用できます。
    • ブラウザベースのGUIは、データ、権限、および構成を管理します。
    • レプリケーションのサポート。
    • ACIDプロパティのすべての機能に従います。
    • 認証とセッションのサポート。
    • データベースレベルのセキュリティ。
    • Map / reduceの組み込みサポート(並列分散アルゴリズムを使用してビッグデータセットを処理および生成するためのモデル)。

    CouchDBを使用する利点は次のとおりです。

    • 同じドキュメントを複数のデータベースインスタンスに保存する機能。
    • シリアル化されたオブジェクトは、非構造化データとしてJSONドキュメントに保存できます。
    • 冗長データストレージ。 PouchDBを介して、ブラウザと複製および同期できます。
    • シャーディングとクラスタリングのサポート。
    • マスター間レプリケーションにより、継続的なバックアップが可能になります。

    CouchDBの欠点は次のとおりです。

    • 一部のNoSQLデータベースよりも低速です。
    • 多くのオーバーヘッドが必要です。
    • 任意のクエリは高額です。
    • 大規模なデータセットの一時的なビューは遅いです。
    • トランザクションはサポートされていません。
    • 大規模なデータベースレプリケーションは信頼できません。

    詳細については、Ubuntu20.04でのCouchDB2.0の使用に関するガイドをご覧ください。

    結論

    取り組んでいるプロジェクトに関係なく、ニーズに完全に合ったデータベースがあります。リレーショナルデータベースを使用する高レベルのデータ整合性に依存する小さな動的Webサイトを開発している場合でも、非リレーショナルデータベースを使用する大規模な比率に拡張するアプリを開発している場合でも、次のようになります。オプション。 Linodeを使用すると、これらのデータベースのいずれかを操作して、データを効果的に保存し、アプリケーションと対話できます。ただし、データベースを選択する前に、データベースからアプリに必要なものを正確に把握することが重要です。間違った選択をすると、ツールの再構築にコストがかかる可能性があります。


    1. エラー:読み取り専用ユーザーとしてSELECTを試行しているときに、Postgresのリレーションテーブル名のアクセス許可が拒否されました

    2. 非同期I/Oを多用するコードは、非非同期よりも実行速度が遅いのはなぜですか?

    3. ストアドプロシージャ内のストアドプロシージャの呼び出し

    4. INSERTステートメントの有効な月ではありません