はじめに
NoSQL(「NotOnly SQL」の略)は、従来のデータベースに代わるものであり、大量のデータのキャプチャと処理に重点を置いています。
NoSQLデータベースにはいくつかの種類があり、それぞれがデータモデリングへの独自のアプローチとさまざまなユースケースを備えています。
このチュートリアルでは、複数のNoSQLデータベースタイプの概要を簡単に説明し、それぞれの一般的な例をいくつかリストします。
NoSQLデータベースタイプ
NoSQLデータベースの最も一般的な4つのタイプは、Key-Valueデータベース、ドキュメントベースのデータベース、グラフベースのデータベース、およびワイド列ベースのデータベースです。
Key-Valueデータベース
キーバリューデータベース キーと値のペアでデータを整理します。各キーは、データフィールドを表す特定のオブジェクトに関連付けられています。キーを指定すると、ペアになっているオブジェクトに保存されているデータを表示できます。
これは最もシンプルでスケーラブルなタイプのNoSQLデータベースであり、柔軟性とパフォーマンスの向上を提供します。
ドキュメントベースのNoSQLデータベース
ドキュメントベースのデータベース また、ドキュメントに格納するキーと値のペアも使用します。これらのドキュメントは、コンテンツと用途に基づいてコレクションにさらにグループ化されます。
これらのデータベースは、通常、スキーマを実装せずに、JSON、XML、BSON、またはYAML形式としてデータを格納するのが最も一般的です。このアプローチにより、柔軟な構造とデータをすばやく追加および取得する機能が必要な場合に適しています。
グラフベースのデータベース
グラフベースのデータベース データをノードのコレクションとして表します (データ要素)エッジで接続 。このデータ構造では、ノードにはデータの断片が含まれ、エッジはノード間の関係を定義します。
このデータベースタイプは、ソーシャルネットワーク上の友達の接続など、さまざまなデータエントリ間の関係を表すために一般的に使用されます。ユーザーは複雑なクエリを実行し、同時に複数のデータを直接取得できます。
ワイドカラムベースのデータベース
ワイドカラムベースのデータベース リレーショナルデータベースを使用してデータをテーブルに格納する方法と同様に、データを個別の列に格納します。リレーショナルデータベースとは異なり、ワイドカラムデータベースは事前定義されたキーやカラム名を使用しません。
これにより、同じテーブル内であっても、列名を変えることができます。また、大量のデータを新しい列として追加したり、既存の列を列ファミリーにグループ化したりすることも簡単です。
オブジェクトデータベース
オブジェクトデータベース オブジェクト指向プログラミングで使用されるオブジェクトとしてデータ要素を格納します。これらは、Python、Ruby、Delphi、Javaなどのプログラミング言語で動作するように設計されています。
グリッドおよびクラウドデータベース
グリッドおよびクラウドデータベース データグリッドを使用する-クラウドを介してアクセス可能なデータを処理するシステムのネットワーク。
このタイプのデータベースは、SQLとNoSQLの両方のデータモデルで機能し、通常、サービスとしてのデータベースとして提供されます。
マルチモデルデータベース
最後に、マルチモデルデータベース 2つ以上の異なるデータベースタイプの機能を組み合わせます。これにより、他の種類のデータベースが適していない独自のユースケースにソリューションを提供できます。
NoSQLデータベースのリスト
以下は、2021年のNoSQLデータベースのリストであり、データベースの種類ごとにセクションにまとめられています。
Key-Valueデータベースのリスト
Redis
Redisは、データをメモリに保存するデータ構造サーバーとして機能します。これは、Redisがメインメモリからデータを読み取って変更することを意味しますが、永続性も組み込まれています。この機能により、データをディスクに保存できるため、システムが再起動した場合にデータを再構築できます。
Redisを使用する利点:
- メモリ内での作業により、高いパフォーマンスと柔軟性が得られます。
- さまざまなデータ型とプログラミング言語のサポート。
- 拡張が簡単で、自動パーティション分割をサポートします。
エアロスパイク
Redisと同様に、AerospikeはオープンソースのインメモリNoSQLデータベースです。 Aerospikeは、その高性能とトランザクションデータを分析と組み合わせる機能のおかげで、オンライン小売での使用に最適化されています。
Aerospikeを使用する利点:
- 非常に低いレイテンシで信頼性の高いパフォーマンス。
- 価格とパフォーマンスの比率が高いため、中小企業に適しています。
リアク
Riakは、「バケット」と呼ばれるデータオブジェクトにキーと値のペアを格納します。幅広いデータ形式をサポートし、データの安定性と予測可能なパフォーマンスを強調します。
Riakを使用する利点:
- キーと値のペアは3つのノードのクラスターに保存され、バックアップのためにデータを追加のノードに複製するオプションがあります。
- データはメモリ内、ディスク、またはその両方に保存できます。
- マルチデータセンターレプリケーションを使用すると、データをさまざまな場所のデータセンターにバックアップできます。
プロジェクトVoldemort
LinkedInは、高スケーラビリティのKey-ValueストレージのソリューションとしてProjectVoldemortを使用しています。分散型でフォールトトレラントで永続的なハッシュテーブルとして機能します。
Project Voldemortを使用する利点:
- データは自動的に複製され、複数のサーバーに分割されます。
- ストレージおよびシリアル化プラグインが利用可能です。
- 優れたシングルノードパフォーマンス。
ドキュメントベースのNoSQLデータベースのリスト
MongoDB
MongoDBは、さまざまな業界で幅広い企業が使用するオープンソースのアジャイルデータベースです。ドキュメントをJSONオブジェクトとして保存し、必要に応じてスキーマをすばやく変更できます。
MongoDBを使用する利点:
- 単一のサーバーから複雑なシステムへの拡張が簡単です。
- 一貫して高性能を提供します。
- レプリケーションと負荷分散による高い信頼性。
Couchbase Server
Couchbase Server(当初はMembaseと呼ばれていました)は、オープンソースの分散データベースソリューションです。主な設計目的は、インタラクティブなアプリケーションと連携して、大量のユーザーデータをJSONオブジェクトとして保存することです。
Couchbase Serverを使用する利点:
- クラスター管理により、迅速なスケーリングが可能になります。
- データセンター間でもカスタマイズ可能なレプリケーション。
CouchDB
CouchDBは、Erlangで記述されたオープンソースデータベースです。マルチバージョン同時実行制御(ACIDセマンティクスを使用)、マルチマスターレプリケーション、map/reduceなどの機能を提供します。
CouchDBを使用する利点:
- オフラインアクセスのためにスマートフォンなどのデバイスにデータを複製することができます。
- 結果整合性を保証し、可用性とパーティションの許容範囲を提供します。
Elasticsearch
Elasticsearchは、あいまい一致を使用した全文検索が可能な検索エンジンとして機能する分散データベースです。デュアルライセンスに分類されます。一部の部分はサーバー側のパブリックライセンスの対象となり、その他の部分は独自のElasticLicenseカテゴリに分類されます。
Elasticsearchを使用する利点:
- Elasticsearchを、Logstash(データ収集とログ解析)、Kibana(分析)、Beats(データ配布)などの他のソリューションと組み合わせることで、機能を拡張できます。
- ファセットとパーコレーションを使用したスケーラブルなリアルタイム検索。
グラフベースのデータベースのリスト
Neo4J
Neo4Jは、Javaで構築されたオープンソースのグラフベースのデータベースであり、グラフデータプラットフォームの一部として利用可能な追加機能を備えています。 Cypherクエリ言語を使用します 高いパフォーマンスを維持しながら、他の種類のデータベースよりも幅広いクエリへのアクセスを提供します。
Neo4Jを使用する利点:
- ネットワークの調査を繰り返す必要がある問題を解決するのに役立ちます。
- 分析データオブジェクトとそれらの関係を促進します。
OrientDB
OrientDBは、グラフデータベースモデルに重点を置いたオープンソースのマルチモデルデータベースシステムです。あらゆるオペレーティングシステムに導入でき、Enterprise Editionにアップグレードすることでさらに拡張できる、幅広い機能を備えています。
OrientDBを使用する利点:
- ユーザーと役割に基づく強力なセキュリティシステム。
- 無料のUdemyコース、StackOverflowによる広範なユーザーサポートを簡単に開始できます。
- 他のリレーショナルデータベースをOrientDBに簡単にインポートできます。
RedisGraph
RedisGraphは、Redis用のグラフデータベースモジュールです。これはプロパティグラフモデルに基づいており、Cypherクエリ言語を使用します クエリを線形代数式に変換します。
RedisGraphを使用する利点:
- 既存のRedisデータベースと簡単に組み合わせることができます。
- ノードラベルとリレーションシップタイプを追加できます。
InfiniteGraph
InfiniteGraphは、複雑なオブジェクトクエリの実行に焦点を当てた分散データベースです。複雑なビッグデータセットを処理するグラフの問題を解決するWebまたはモバイルアプリケーションを開発するために使用されます。
InfiniteGraphを使用する利点:
- 高いパフォーマンスを必要とする複雑なクエリまたは並列クエリを処理できます。
- 柔軟な一貫性を備えたバックアップ(ACIDからリラックスまで)
ワイド列ベースのデータベースのリスト
カサンドラ
Apache Cassandraは、パフォーマンスへの影響を最小限に抑えながら大量のデータ負荷を処理するように構築された、無料のオープンソースデータベースソリューションです。 Twitter、Netflix、Redditはすべて、高速で可用性が高いため、Cassandraを使用しています。
Cassandraを使用する利点:
- 非同期のマスターレスレプリケーションにより、遅延を発生させることなくデータ損失からの保護が保証されます。
- ダウンタイムなしで複数のデータセンターに簡単に拡張できます。
Cosmos DB
MicrosoftのAzureCosmosDBは、独自のデータベースソリューションです。この製品は、大規模で水平方向にスケーラブルなデータベースの管理を支援するために、グローバルに配布されるように設計されています。
Cosmos DBを使用する利点:
- 他のMicrosoftAzureサービスと組み合わせて、拡張機能を実現します。
- 複数のデータセンターにまたがる自動パーティション分割。
HBase
HBaseは、数十億行と数百万列の非常に大規模なデータベースで動作するように設計されています。 Hadoop分散ファイルシステム(HDFS)上で実行され、HadoopがGoogleのBigtableのように機能することを可能にします。
HBaseを使用する利点:
- ペタバイト規模のデータで大規模なスループットを実現します。
- データベースへのランダムなリアルタイムの読み取り/書き込みアクセスを有効にします。
アキュムロ
Apache Accumuloは、Hadoop上に構築され、GoogleのBigtableに基づく別のソリューションです。 セルベースなどの機能を追加することで、Bigtableのデザインが改善されます。 アクセス制御とサーバー側プログラミング。
Accumuloを使用する利点:
- セルレベルのセキュリティラベルを追加し、異なるセキュリティレベルのデータを同じテーブルに保存できます。
オブジェクトデータベースのリスト
ObjectDB
ObjectDBは、JavaAPIのサポートが組み込まれたJava開発用のオブジェクトデータベースソリューションです。クライアントサーバーモードまたは組み込みモードで動作します。
ObjectDBを使用する利点:
- さまざまなプラットフォームとオペレーティングシステムをサポートします。
- JDOとJPAの両方のクエリ言語を使用します。
Ninja Database Pro
Ninja Database Proは、初心者が簡単に使用できる高度な自動化レベルを備えています。データベース内のデータオブジェクトを管理するための堅牢で高速な方法を提供します。
Ninja Database Proを使用する利点:
- 二重リンクリスト、多次元配列、辞書などの複雑なデータオブジェクトを処理できます。
- AES暗号化が組み込まれた、ACID準拠。
NeoDB
NeoDBは、データを大きなツリーに似たオブジェクトのネットワークとして構造化します。このネットワークはノードスペースと呼ばれ、ノード(オブジェクト)、それらの関係、およびそれらのプロパティに焦点を当てています。
NeoBDを使用する利点:
- 半構造化データの処理に適しています。必須の属性はほとんどありませんが、オプションの属性は多くあります。
客観性/DB
Objectivity / DBは、C ++、C#、Java、またはPythonのデータオブジェクトをテーブルに変換せずに操作できるようにする分散データベースです。
Objectivity / DBを使用する利点:
- 選択したオペレーティングシステムでサポートされているプログラミング言語を使用します。
- そのアーキテクチャは、グリッドコンピューティング環境に適しています。
クラウドおよびグリッドデータベースのリスト
Oracle Coherence
Oracle Coherenceは、Javaに基づく分散キャッシュおよびインメモリデータグリッドです。クラスタ化されたアプリケーションのデータを管理するため、データを管理する必要があるたびにデータベースに直接クエリを実行する必要がありません。
Oracle Coherenceを使用する利点:
- 高可用性、スケーラビリティ、および低遅延を提供します。
インフィニスパン
Infinispanは、Javaで記述されたオープンソースのデータグリッドソリューションです。 InfinispanはライブラリとしてJavaアプリケーションに組み込むことができ、Java以外のアプリケーションはTCP/IPで使用できます。
Infinispanを使用する利点:
- 可用性を維持しながら拡張性が高い。
- プラグイン可能なアーキテクチャにより、データをファイルシステムまたは他のデータベースマネージャーに永続化できます。
ヘーゼルキャスト
Hazelcastはオープンソースのデータグリッドです。 Javaに基づいており、オンプレミス、仮想、クラウド、またはDockerコンテナで実行できます。
Hazelcastを使用する利点:
- ストレージと処理能力の水平スケーリングを可能にします。
マルチモデルデータベースのリスト
ArangoDB
ArangoDBは、Key-Value、ドキュメント、およびグラフデータベースモデルをサポートする無料のオープンソースデータベースマネージャーです。
ArangoDBを使用する利点:
- AQLクエリ言語を使用すると、1つのクエリでさまざまなデータベースタイプをターゲットにできます。
- シングルクリックのクラスター展開オプションを使用して、分散クラスターとして機能します。