NoSQL(「SQLだけでなく」)は、リレーショナルデータベースに見られる従来の構造以外のデータの保存とクエリを可能にするデータベース設計へのアプローチです。これは主に、ドキュメント、オーディオ、ビデオ、ソーシャルネットワークなどの多数のソースから生成される非構造化データを処理するために作成されました。NoSQLデータベースは、データモデルが進化し、スケーラビリティが不可欠な最新のアプリケーションに最適です。このデータベースは、企業がこれまで以上に非構造化データを処理する必要があるため、近年人気が高まっています。このモデルは、従来のリレーショナルテーブルとは異なる方法でデータを格納し、関連データを単一のデータ構造内に保持できるようにします。 NoSQLデータベースは、次の4つのカテゴリに分類できます。
-
ドキュメントストア
-
キーバリューデータベース
-
ワイドカラムストア
-
グラフデータベース
NoSQLデータベースは、柔軟なデータモデルを提供するため、アジャイルプロジェクトでよく使用されます。これにより、開発者はスキーマの更新を処理する代わりに、ビジネスロジックとアルゴリズムに集中できます。時間の経過に伴う変更に対応するためにアプリケーションのデータモデルを柔軟に保つ必要があると予想される場合は、NoSQLデータベースの柔軟なスキーマアプローチがニーズに適している可能性があります。
db-enginesによると、上位2つのNoSQLデータベース(2021年7月)はMongoDB(ランキング:5)とRedis(ランキング:6)です。興味深いことに、これらのNoSQLデータベースは12年前には存在していませんでした。それらがどのように誕生し、魅力と人気を獲得し、データベース管理システムの状況を変えたかが、このブログ投稿の主要な本質です。
MongoDB
MongoDBは、オープンソースのドキュメント指向データベースであり、2009年2月に最初のリリースがあります。ドキュメントデータベースは、従来のリレーショナルデータベースとは非常に対照的です。これらは、特定のオブジェクトのすべての情報をデータベース内の1つのインスタンスに格納し、格納されているすべてのオブジェクトは互いに異なる場合があります。これにより、オブジェクトリレーショナルマッピングが不要になり、スキーマレス構造が可能になります。これは、柔軟なデータモデルにより、アプリケーション開発者が迅速に進化できる機能です。開発者は、スキーマ要件を満たすようにアプリケーションを適合させるのではなく、アプリケーションを作成し、スキーマは次のようになります。
MongoDBは、柔軟性、習得のしやすさ、開始時の所有コストの削減により、非常に人気があります。アプリケーション開発者は、外出先でデータモデルを変更でき、MongoDBがJSONドキュメントを使用してデータを記録するため、MongoDBが大好きです。 JSONはどこにでもあり、Webアプリケーションとエンドポイント間で豊富なデータを送信するための事実上の形式と見なすことができます。シンプルなデザインと柔軟性により、読みやすく、理解しやすく、ほとんどの場合、選択したプログラミング言語で簡単に操作できます。
MongoDBは10genのおかげで誕生し(MongoDB Incに名前が変更される前)、2007年に開発を開始し、2009年2月に最初のGAリリースを発表しました。それ以来、MongoDBは急速に進化し、は、最新のアプリケーションにとって最もエキサイティングなデータベースプロジェクトの1つと見なされています。 StackOverflow Developer Survey 2020によると、MongoDBは、開発者が最も学びたいデータベーステクノロジーであり続けています。この記事の執筆時点で、彼らはバージョン5.0(2021年7月13日)をリリースしたばかりで、ライブリシャーディング、ネイティブ時系列データサポート、マルチクラウド環境に適したバージョン管理されたAPIなどの多くの注目すべき機能が付属しています。
MongoDBのもう1つの重要な機能は、レプリケーション、レプリカセット、シャーディングなどの組み込みの高可用性機能です。水平方向にスケーラブルであるため、ワークロードを削減し、ビジネスを簡単に拡張できます。 Raftからインスピレーションを得て、mongosと呼ばれるクエリルーターを介してシャード間でデータを分散できる、自家製のコンセンサスプロトコルを介したレプリケーションを提供します。 ClusterControlを使用すると、MongoDBレプリカセットとシャードクラスターのセットアップを簡単にデプロイできます。
MongoDBは、MongoDBのデフォルトのセキュリティ構成に弱点があり、誰でもデータベースに完全にアクセスできるため、世間の注目と批評家を魅了しました。何万ものMongoDBインストールからのデータが盗まれました。さらに、多くのMongoDBサーバーが身代金目的で保持されています。この露出により、MongoDBに関連するセキュリティ関連のブログ投稿をいくつか作成しました。たとえば、MongoDBを保護し、身代金ハックから身を守る方法や、ランサムウェアからMongoDBを保護する方法-10のヒントなどです。その結果、MongoDBはデフォルトの構成の側面を改善し、MongoDB3以降でより安全になりました。
Forbes、Toyota、SAP、Cisco、eBay、Adobeなど、一部の大企業はデータストアとしてMongoDBに大きく依存しています。 MongoDBは、データベースの世界でゲームチェンジャーと見なされており、インターネット時代で最も重要なデータベースプラットフォームの1つになっています。
ClusterControlは2013年7月のバージョン(v1.2.3)からMongoDBをサポートしており、それ以来継続的に改善されています。 ClusterControlは、アップストリームのコア設計変更のためにMongoDB 3で非推奨になる前は、TokuMX(Tokutekのフラクタルツリーを備えたMongoDB)もサポートしていました。最近の注目すべき機能拡張では、ClusterControlは、MongoDBシャードクラスターとレプリカセットの一貫したバックアップを実現するための分散型の影響の少ないソリューションである、Percona BackupforMongoDBのサポートを導入しています。 Percona Backup for MongoDBプロジェクトは、mongodb_consistent_backupから継承され、置き換えられます。mongodb_consistent_backupは、現在アクティブに開発またはサポートされていません。
Redisは、同じデータのチャンクが大きい場合でも、同じデータのチャンクへの頻繁な高速アクセスに焦点を当てた、もう1つの最も人気のあるNoSQLデータベーステクノロジーです。 2019年5月、Salvatore SanfilllippoはRedisの初期バージョン(別名リモートディクショナリサーバー)をリリースしました。当時すでに確立されていたMemcachedと呼ばれるオープンソースのインメモリデータベースソリューションに対する豊富な機能により、誰もが注目を集めています。
Redisは、メモリ内のデータ構造とC言語で記述されているため、超高速です(これが、MemcachedがCで再記述された理由の1つです)。パフォーマンスが高いため、開発者は、読み取りおよび書き込み操作の量が従来のデータベースの機能を超える場合に、データキャッシングをRedisに依頼しました。頻繁にアクセスされるデータは、メモリ内のキー値データストアによってキャッシュおよび提供され、永続ストレージに重点を置いた低速のディスクベースのシステムへの読み取りと書き込みを最小限に抑えることができます。
従来、データベース管理システムは、大規模な速度ではなく、堅牢なデータ機能を提供するように設計されています。アプリケーションキャッシュは、ルックアップテーブルのコピーと、DBMSからの高価なクエリへの応答を保存するためによく使用されます。これは、アプリケーションのパフォーマンスを向上させ、データソースの負荷を軽減するためです。アプリケーションのワークフローで、リソースを大量に消費する結果を生成する必要がある場合があります。これらの結果が得られると、部分的な集計を実行する場合など、後で結果を再利用できる場合があります。キャッシュは、リクエスト間でそのような結果を保持するための理想的な中間媒体として機能します。これがRedisが輝いているところです。
Redisは、非常に高速でシンプルなKey-Valueストアから永続的なデータストレージに進化し、メッセージングブローカーおよびキューイングシステムとして使用されています。データの重複や外部データソースへのリクエストを減らしながら、アプリケーションのプロセスに真のステートレス性を実現します。 StackOverflow Developer Survey 2020によると、Redisは、開発者が継続的な開発に関心を示しているデータベーステクノロジーのトップであり続けています。この記事の執筆時点では、Redis 6は最新バージョンであり、Redisプロセスはまだシングルスレッドですが、新しい、より洗練されたユーザーベースのACL実装、組み込みのトラフィックSSL暗号化、およびマルチスレッドI/Oを備えています。 。
別のインストールで利用できる新しい次世代のClusterControlGUIパッケージを使用することにより、ClusterControl1.9.0でRedisのデプロイがサポートされます。この記事の執筆時点では、TechnologyPreviewでタグ付けされたClusterControlv2と呼んでいます。これは、AOFおよびRDBのバックアップ管理を備えたRedisSentinelで最大5ノードのRedisレプリケーションのデプロイのみをサポートします。興味のある方は、インストール方法についてこのガイドを参照してください。
MongoDBとRedisは、現在市場で最高のNoSQLデータベースソリューションの2つであり、データベースのトップ10ランキングでの地位を長期間維持していると考えられています。これが、ClusterControlが両方のデータベーステクノロジーをサポートする理由です。