NoSQLとは何ですか?それはデータベースの次の大きなトレンドですか?
NoSQLとは何ですか?
公式のWiki定義によると、「 NoSQL (元々は「非SQL」または「非リレーショナル」を指します)データベースは、リレーショナルデータベース(RDBMS)で使用される表形式のリレーション以外の手段でモデル化されたデータの保存と取得のメカニズムを提供します。これには、ユーザー、オブジェクト、製品に関して保存されるデータの量の増加、このデータにアクセスする頻度、パフォーマンスと処理のニーズに対応して開発された、さまざまなデータベーステクノロジーが含まれます。一般に、NoSQLデータベースは、キーと値のペア、グラフデータベース、ドキュメント指向または列指向の構造で構造化されています。
何十年にもわたってソフトウェア開発を行ってきましたが、SQL(Structured Query Language)形式のデータベースを使用して、データをリレーショナルテーブルに格納してきました。ただし、近年、インターネットおよびWeb 2.0アプリケーションの使用が大幅に増加しているため、データベースは数千テラバイトにまで成長しています。 Facebook、Google、Amazon、Watsappなどのアプリケーションは、従来のデータベースよりもシンプルな設計、速度、高速スケーリングのアプローチに従う、まったく新しいデータベース管理の時代を生み出しました。このようなデータベースは、ビッグデータ、大規模なリアルタイムアプリケーション、および分析で使用されます。
例として、ユーザーのブログを保存するブログアプリケーションがあるとします。ここで、ユーザーがこれらのブログ投稿を高く評価したり、コメントしたり、これらのコメントを高く評価したりするなど、いくつかの新機能をアプリケーションに組み込む必要があるとします。通常のRDBMS実装では、既存のデータベース設計を完全にオーバーホールする必要があります。ただし、このようなシナリオでNoSQLを使用する場合は、これらのアジャイル要件に一致するようにデータ構造を簡単に変更できます。 NoSQLを使用すると、新しい事前定義された列や事前定義された構造を作成せずに、この新しいデータを既存の構造に直接挿入し始めることができます。
RDBMSの課題
-
RDBMSは、明確に定義されたデータの構造を想定しており、データはほぼ均一であると想定しています。
-
アプリケーションを構築する前に、アプリケーションのスキーマとそのプロパティ(列、タイプなど)を事前に定義する必要があります。これは、非常に動的なアプリケーションのアジャイル開発アプローチとはよく一致しません。
-
データが大きくなり始めると、データベースを垂直方向に拡張する必要があります。つまり、既存のサーバーに容量を追加する必要があります。
RDBMSに対するNoSQLの利点
スキーマレス −
スキーマレスのNoSQLデータベースは、厳密なデータ構造を定義していません。
ダイナミックでアジャイル −
NoSQLデータベースは、要件の変化に伴って動的に成長する傾向があります。構造化データ、半構造化データ、非構造化データを処理できます。
水平方向に拡大縮小 −
垂直方向に拡張するSQLデータベースとは対照的に、NoSQLはサーバーを追加し、シャーディングとレプリケーションの概念を使用することで水平方向に拡張します。 NoSQLのこの動作は、アマゾンウェブサービス(AWS)などのクラウドコンピューティングサービスに適合します。これにより、オンデマンドで水平方向に拡張できる仮想サーバーを処理できます。
パフォーマンスの向上 −
すべてのNoSQLデータベースは、従来のRDBMS実装と比較してより優れた高速パフォーマンスを提供すると主張しています。
制限について言えば、NoSQLは(単一のデータベースではなく)データベースのセット全体であるため、制限はデータベースごとに異なります。これらのデータベースの中には、ACIDトランザクションをサポートしていないものもありますが、信頼性に欠けているものもあります。ただし、それぞれに独自の長所があるため、特定の要件に適しています。
NoSQLデータベースの種類
ドキュメント指向データベース −
ドキュメント指向データベースは、ドキュメントを全体として扱い、ドキュメントを構成要素の名前/値のペアに分割することを回避します。コレクションレベルでは、これにより、さまざまなドキュメントのセットを1つのコレクションにまとめることができます。ドキュメントデータベースでは、プライマリ識別子だけでなくプロパティにも基づいてドキュメントのインデックスを作成できます。現在、さまざまなオープンソースドキュメントデータベースが利用可能ですが、利用可能なオプションの中で最も目立つのはMongoDBとCouchDBです。実際、MongoDBは最も人気のあるNoSQLデータベースの1つになっています。
グラフベースのデータベース −
グラフデータベースは、ノード、エッジ、およびプロパティを備えたグラフ構造を使用して、データを表現および保存します。定義上、グラフデータベースは、インデックスのない隣接関係を提供するストレージシステムです。これは、すべての要素に隣接する要素への直接ポインタが含まれており、インデックスのルックアップは必要ないことを意味します。任意のグラフを格納できる一般的なグラフデータベースは、トリプルストアやネットワークデータベースなどの特殊なグラフデータベースとは異なります。インデックスは、グラフをトラバースするために使用されます。
列ベースのデータベース −
列指向ストレージを使用すると、データを効果的に保存できます。列の値が存在しない場合に列を保存しないことで、nullを保存するときにスペースを消費することを回避します。データの各ユニットは、キーと値のペアのセットと考えることができます。ユニット自体は、主キーと呼ばれることが多い主識別子を使用して識別されます。 Bigtableとそのクローンは、この主キーを行キーと呼ぶ傾向があります。
キーバリューデータベース −
キーと値のペアのキーは、セット内の一意の値であり、データにアクセスするために簡単に検索できます。キーと値のペアにはさまざまな種類があります。データをメモリに保持するものと、データをディスクに永続化する機能を提供するものがあります。シンプルでありながら強力なキー/バリューストアは、OracleのBerkeleyDBです。
人気のNoSQLデータベース
上記のカテゴリにそれぞれ分類される人気のあるNoSQLデータベースをいくつかまとめてみましょう。
- ドキュメント指向データベース − MongoDB、HBase、Cassandra、Amazon SimpleDB、Hypertableなど。
- グラフベースのデータベース − Neo4j、OrientDB、Facebook Open Graph、FlockDBなど
- 列ベースのデータベース − CouchDB、OrientDBなど
- キーバリューデータベース − Membase、Redis、MemcacheDBなど
NoSQLデータベース。画像ソース:getfilecloud.com
結論
この記事では、NoSQLデータベーステクノロジーとは何か、そしてそれが主にRDBMS実装とどのように異なるかについて学びました。次に、さまざまなタイプのNoSQLデータベース、それらのアプリケーション、および各タイプで最も人気のあるデータベースのいくつかを調査しました。
今日の多くの組織は、巨大なデータセットと大規模なアプリケーションのためにそのようなデータベースに適応しています。これは、NoSQLが、RDBMSの長年の遺産を打ち破る可能性のあるWebおよびデータベーステクノロジーの次の大きなものになることを示しています。
-
Windowsレジストリとは何ですか?どのように編集しますか?
Windowsレジストリは、一見怖い場所です。パワーユーザーが他の場所では公開されていないWindows設定を変更できる場所です。 Windowsで何かを変更する方法を検索すると、レジストリを編集するように指示する記事がよく見つかります。 レジストリを編集する必要がある場合でも、心配する必要はありません。変更する設定がわかっている限り、レジストリを微調整するのは簡単です。ただし、意図しない問題が発生する可能性があるため、Windowsレジストリを編集するときは注意が必要です。 Windowsレジストリとは何ですか? Windowsレジストリは、さまざまな構成設定を格納するデータベースです
-
ポルノの視聴習慣は次の大きなリークになる可能性があります:ここで何をすべきか
私たちのオンライン生活は常にハッカーの危険にさらされています。私たちの医療記録でさえ、非常に求められています。しかし、それはさらに悪化する可能性があります。ソフトウェアエンジニアは最近、インターネットの履歴、特にアクセスしたアダルトサイトが漏洩することを期待する必要があると警告しました。 サンフランシスコを拠点とするBrettThomasが彼のブログに投稿しました: 「2015年にオンラインでポルノを視聴している場合は、シークレットモードであっても、ある時点でポルノの視聴履歴が公開され、名前に添付されることを期待する必要があります。」 この場合、見知らぬ人があなたの名前を成人向けの資