目次:
- エンタープライズ開発者はSQLの作成を避けるためにいくつかの方法を考案しました。最も一般的な方法の1つは、オブジェクト・リレーショナル・マッピング(ORM)ライブラリ、Hibernateを使用する方法です。 Hibernateは設定ファイルと1つまたは複数のオブジェクトをとり、開発者がそれを使用する必要がないように不快なSQLを抽象化します。これはもちろん、パフォーマンス面ではコストがかかりますが、すべてのクエリの使用例を解決するわけではありません。場合によっては、SQLにフォールバックする必要があります。
- NoSQLデータベースのスキンアグノスティックスを使用すると、何カ月にもわたってリレーショナル・スキーマを作成しなくても、データをすばやくロードできます。 NoSQLに格納する必要があるすべてのデータ項目を、RDBMSと同様に分析する必要はありません。
- extract、transform、およびload(ETL)
- RDBMSでデータ構造が変更された場合、変更されたテーブルを使用する可能性のあるすべてのSQLコードを確認する必要があります。 NoSQLでは、単に新しい要素のサポートを追加するか、単に無視します。 NoSQLデータベースのスキーマに依存しない性質のおかげで、維持管理が非常に簡単になりました。
- 多くのNoSQLデータベースでは、関連するデータを格納するすべてのサーバーにこのタイプのコードを配布することができ、作業負荷の並列化が可能になりました。このアプローチは、処理が必要なデータを大量に取得したり、クエリ時に複雑な集計分析を行う場合に特に重要です。
- しかし、無数のオープンソースのNoSQLデータベースがあります。これらの多くは、サポートを提供し、世界的に拠点を持つ本格的な営利企業を持っています。したがって、サポートや機能が必要な場合は、最終的にこれらのバージョンに移行することができます。
- キーバリューストアは、サーバーごとに数十万の操作を処理できます。すべてのタイプのNoSQLは、比較的安価なコモディティサーバー間で水平方向に拡張できます。したがって、従来のリレーショナルデータベースよりもNoSQLでデータベースクラスタを拡張する方がはるかに簡単です。
- NoSQLデータベースを使用すると、これらの制約を緩和したり、異なるレコードタイプに対して、同じデータベース内に強い整合性と弱い整合性を混在させて一致させることができます。
- NoSQLには、さらに広範囲のプログラミング言語用の言語ドライバが豊富に用意されています。組織にドメイン固有の言語がある場合は、NoSQLデータベースでその言語のサポートを見つけることができます。
- 多くのNoSQLデータベースは、完全なエンドツーエンドのJavaScript開発をサポートしています。つまり、組織では、Webアプリケーションや中間層のデータAPIやビジネスロジックを作成するために同じプログラミング言語スキルのプールを使用できるようになり、データの隣にバックエンドデータベーストリガーとMapReduceベースの分析処理を処理できます。
NoSQLデータベースの人気は、それらを使用することに興奮している膨大な数の開発者から生じます。開発者はNoSQLを有効化および解放の技術と見なします。従来のリレーショナル・アプローチとは異なり、NoSQLは、リレーショナル・データ・モデルよりもアプリケーションに近いデータを扱う方法を提供します。
開発者は多くの理由でNoSQLテクノロジを採用していますが、その一部はここで強調表示されています:
<! SQLを書く必要はありません - SQLを書く - それをうまくやることは、多くのエンタープライズ開発者の存在の悩みです。この痛みは、関連するテーブル間で複数の結合を持つ非常に複雑なクエリを書くのは簡単ではないためです。さらに、時間の経過とともにデータベースが定期的に変更されることを考慮して、複雑なクエリコードを維持することは、それ自体の仕事です。エンタープライズ開発者はSQLの作成を避けるためにいくつかの方法を考案しました。最も一般的な方法の1つは、オブジェクト・リレーショナル・マッピング(ORM)ライブラリ、Hibernateを使用する方法です。 Hibernateは設定ファイルと1つまたは複数のオブジェクトをとり、開発者がそれを使用する必要がないように不快なSQLを抽象化します。これはもちろん、パフォーマンス面ではコストがかかりますが、すべてのクエリの使用例を解決するわけではありません。場合によっては、SQLにフォールバックする必要があります。
<! - 2 - >
NoSQLデータベースは、独自のクエリ言語を提供します。クエリ言語は、データベースおよび開発者が最も頻繁に実行する操作によってデータが管理される方法に合わせて調整されます。このアプローチは、ネストされたSQL文が行うよりも簡単な問合せメカニズムを提供します。
NoSQLデータベースの中には、開発者がSQLの習慣を壊すことができない場合に備えて、NoSQLデータベースを照会するためのSQLインターフェイスも用意されています。スキーマを設計するのに何ヶ月も費やす必要はありません
<! - 3 - >
NoSQLデータベースのスキンアグノスティックスを使用すると、何カ月にもわたってリレーショナル・スキーマを作成しなくても、データをすばやくロードできます。 NoSQLに格納する必要があるすべてのデータ項目を、RDBMSと同様に分析する必要はありません。
データ変換コード(ETL)の削減前向きスキーマ設計によるリレーショナル・データベースの一般的な問題は、非リレーショナル・データを行と列に強制しなければならないことです。このシュレッディングメカニズムは、格納のために情報を前処理して取り出し用に後処理する他のコードメソッドとともに、
extract、transform、およびload(ETL)
と呼ばれます。 このコードは、開発者に素晴らしい光沢のあるオブジェクトとドキュメントモデルを採用し、最後のすべての要素を保存するコードを作成するよう強制します。そうすることは厄介であり、パフォーマンスの低い、配慮のつかない配管コードを書いている高度に熟練した開発者にもつながります。 NoSQLデータベースを使用すると、格納されたデータ構造を元の形式に近づけることができます。システム間を流れるデータは通常XML形式ですが、Webアプリケーションの場合はデータはJSON形式でフォーマットされます。ネイティブにJSONを保存、管理、検索できることは、アプリケーション開発者にとって大きなメリットです。
コードを簡単に保守する
書くコードはすべて維持する必要があります。データベース構造をアプリケーションコードのデータ形式に近づけておくことで、コードの量を最小限に抑えることができます。これにより、時間とともに実行する必要のあるコードと回帰テストのメンテナンスが最小限に抑えられます。
RDBMSでデータ構造が変更された場合、変更されたテーブルを使用する可能性のあるすべてのSQLコードを確認する必要があります。 NoSQLでは、単に新しい要素のサポートを追加するか、単に無視します。 NoSQLデータベースのスキーマに依存しない性質のおかげで、維持管理が非常に簡単になりました。
最高のパフォーマンスを得るためにデータに近い実行コード
RDBMSは、データベースサーバー上でコードを実行するためのストアドプロシージャを提供します。このコードは1か所で実行されます。この便利なアプローチは、多くの分析および複雑なデータ管理アプリケーションの基礎となります。
多くのNoSQLデータベースでは、関連するデータを格納するすべてのサーバーにこのタイプのコードを配布することができ、作業負荷の並列化が可能になりました。このアプローチは、処理が必要なデータを大量に取得したり、クエリ時に複雑な集計分析を行う場合に特に重要です。
さまざまなNoSQLデータベースのユーザー定義関数(UDF)とサーバー側スクリプティングが、この分散機能を提供します。 UDFはHadoopのMapReduce機能と似ていますが、UDFはバッチモードではなくリアルタイムで実行され、Hadoopとデータベースに必要なインフラストラクチャに同じ経費を必要としません。
多くのオープンソースオプション
多くのエンタープライズソフトウェア分野では、オープンソースのソリッドソリューションの選択肢が欠けています。 1つまたは2つの広範なオプションしか存在しない可能性があります。スキルと現地サポートの入手可能性はさらに大きな問題です。
しかし、無数のオープンソースのNoSQLデータベースがあります。これらの多くは、サポートを提供し、世界的に拠点を持つ本格的な営利企業を持っています。したがって、サポートや機能が必要な場合は、最終的にこれらのバージョンに移行することができます。
これにより、NoSQLテクノロジを採用するコストが削減され、「購入する前に試してみる」ことができます。 「このオープンソースの選択肢が利用できるようになったことで、NoSQLの商用企業は、ソフトウェアの機能は無料だが、機能の豊富なバージョンを提供したり、小規模な組織に特別なスタートアップライセンスを提供したりしている。
容易な拡張性
SQLをリファクタリングしてマテリアライズド・ビューを作成してNoSQLシステムから1インチのパフォーマンスを引き出すために、コストのかかるDBAを取得する必要はありません。
キーバリューストアは、サーバーごとに数十万の操作を処理できます。すべてのタイプのNoSQLは、比較的安価なコモディティサーバー間で水平方向に拡張できます。したがって、従来のリレーショナルデータベースよりもNoSQLでデータベースクラスタを拡張する方がはるかに簡単です。
また、規模の拡大が可能であるため、NoSQLデータベースはパブリッククラウドとプライベートクラウドにも適しています。 NoSQLデータベースは、アプリケーションの変更に応じて柔軟に拡張および縮小するように設計されています。この能力は、しばしば
弾力性
と呼ばれる。 最終的な一貫性データモデル ミッションクリティカルなケースではACID準拠が必要ですが、すべてのアプリケーションでACIDを準拠させる必要はありません。非常に大規模なクラスタ間で整合性を緩和できることは、一部のアプリケーションでは有効です。
NoSQLデータベースを使用すると、これらの制約を緩和したり、異なるレコードタイプに対して、同じデータベース内に強い整合性と弱い整合性を混在させて一致させることができます。
非言語サポート
JavaやC#などの主要なプログラミング言語をサポートするデータベースはほとんどすべてです。ネット。多くのデータベースは、PHP、Python、Ruby on Railsなどのデータベースをサポートしています。
NoSQLには、さらに広範囲のプログラミング言語用の言語ドライバが豊富に用意されています。組織にドメイン固有の言語がある場合は、NoSQLデータベースでその言語のサポートを見つけることができます。
JavaScriptのエンドツーエンド
JavaScriptの使用は近年爆発的に増加しています。これは、WebとNodeのおかげで便利なスクリプト言語です。 jsをサーバー側で使用します。
多くのNoSQLデータベースは、完全なエンドツーエンドのJavaScript開発をサポートしています。つまり、組織では、Webアプリケーションや中間層のデータAPIやビジネスロジックを作成するために同じプログラミング言語スキルのプールを使用できるようになり、データの隣にバックエンドデータベーストリガーとMapReduceベースの分析処理を処理できます。
その結果、他のデータベース技術と比較して、NoSQLの総所有コスト(TCO)は低くなります。