2010 年は SQL が死んだ年として記憶されるべきです。今年はリレーショナル データベースが終焉を迎える年であり、開発者はデータを保存するために列やテーブルを苦労して作成する必要がなくなったと認識した年です。
2010年は文書データベースの元年となります。この勢いは長年続いていますが、今ではますます大規模な文書ベースのデータベースが登場する時代になりました。クラウドベースの Amazon から Google、多数のオープンソース ツール、そしてその結果として誕生した CouchDB や MongoDB まで。
それでは、PHP 開発者が知っておくべき 5 つのことを説明します:
1. MongoDB はテーブルではなくドキュメントに基づいています。別の言語を学ぶ必要はありません。
5. MongoDB は優れた PHP サポートを備えています。
1. MongoDB は別のサーバーです
MySQL や PostgreSQL と同様に、MongoDB は受信接続をリッスンします。提供されるツールには、クエリ、作成、更新、削除が含まれます。理論的には、MySQL や PostgreSQL と同じように動作し、接続し、処理し、接続を閉じます。
2. 行やテーブルに別れを告げ、ドキュメントとコレクターを歓迎します
データを保存するテーブルや行の代わりに、MongoDB はデータをドキュメントに保存します。複数の作成者、トピック、タグが含まれる「記事」というタイトルがあるとします。これはすべて以下のようになります:
コードをコピーします
'authors'=>array('John' ,' サリー','ジム'),
'body'=>'Hello world',
'tags'=>array('tag1','tag2','tag3')
);
?>
上記の例で最も重要なことは、そのレコード、つまりこのドキュメントです。はい、実際にドキュメントのように保存され、同じ領域に保存される複合値をサポートしています。データをテーブルに構造化したり分割したりする必要はありません。したがって、テーブルはもう存在しません。
3. MongoDB に含まれるスキーマが少ない
MongoDB にはスキーマ言語がありません。新しいドキュメント タイプを作成する場合は、データベースに何も伝える必要はありません。新しいデータをデータベースに入れるだけです。
2 番目のポイントでは、ドキュメントをシミュレートしました。ここで、すべての分野の記事タイプを定義したいと思います。必要なのは、このデータをデータベースに書き込むことだけです。書き込みを延期する場合は、データを取り出して日付フィールドを追加して保存するだけです。
データ型についてはどうでしょうか? 簡単に言うと、MongoDB は JavaScript や PHP と同様の強制システムを使用しているということです。このようにして、データベースは型の役割を大幅に弱めます。
これにはいくつかの穴があります (非常に大量のデータにはいくつかの明示的な定義が必要です) が、ほとんどの場合、PHP でプログラミングするのと同じように MongoDB コードを記述します。
4. 別の言語を学ぶ必要はありません
自分が作成した他のデータベース抽象化レイヤーを思い出してください。これまでに使用したすべての ORM レイヤーを思い出してください。その後、それらを今すぐ破棄できます。MongoDB ではそれらは必要ありません。
MongoDB (PHP ドライバーを含む) にはクエリ言語は必要ありません。ほとんどの場合、ポインターを指定して必要なものを指定するだけで、文書が返されます。
いくつかの高階関数 (Map-Reduce など) を実行する場合、JavaScript アプリケーションを通じて MongoDB に参加し、これらのスクリプトを JavaScript 内部エンジンで実行できます。
5. PHP と MongoDB は自然に一致しますか?
PHP はすでに MongoDB を適切にサポートしています。 Mongo ドライバーは PECL アドオンとして PHP に追加できます。つまり、PECL を実行して Mongo をインストールするのと同じようにインストールできます。
これを見て、Mongo の API を書き始めることができます。より広範には、PDO とランクされます。単に機能しなくなったわけではありませんが、これまでに開発したデータベースとは明らかに異なります。
API のドキュメントにはウォークスルーと多くの例が含まれているため、すぐにブートストラップすることができます。以下に、非常に役立つヒントをいくつか紹介します。
MongoDB は非常に速く開発されています。
開発時間は非常に短く、管理する必要のある過剰なスキーマはなく、データ マッピングは (あったとしても) ほとんどありません。
新たに学習するクエリ言語がないため、コードの調整は最小限で済みます。結局のところ、別の ORM は必要なく、パケットは非常に軽量です。
コードは将来性があるため、より多くのフィールドやさらに複雑なフィールドをオブジェクトに簡単に追加できます。そのため、コードは変化する要件に簡単に適応できます。
詳しく読む
Mongo は、多くのシナリオで従来のリレーショナル データベースやキー/値ストレージの置き換えに使用できる、高性能、オープンソース、スキーマレスのドキュメント データベースです。 Mongo は C++ を使用して開発され、次の機能を提供します。
◆
コレクション指向のストレージ: オブジェクトとデータを JSON 形式で保存するのに適しています。
◆
動的クエリ: Mongo は豊富なクエリ式をサポートしています。クエリ コマンドは、JSON 形式のタグを使用して、ドキュメントに埋め込まれたオブジェクトと配列を簡単にクエリします。
◆
完全なインデックスサポート: 埋め込みドキュメントオブジェクトと配列を含みます。 Mongo のクエリ オプティマイザーはクエリ式を分析し、効率的なクエリ プランを生成します。
◆
クエリ監視: Mongo には、データベース操作のパフォーマンスを分析するための監視ツールが含まれています。
◆
レプリケーションと自動フェイルオーバー: Mongo データベースはサーバー間のデータ レプリケーションをサポートし、マスター/スレーブ モードとサーバー間の相互レプリケーションをサポートします。レプリケーションの主な目的は、冗長性と自動フェイルオーバーを提供することです。
◆
効率的な従来のストレージ方法: バイナリ データと大きなオブジェクト (写真や画像など) をサポートします。
◆
クラウドレベルのスケーラビリティをサポートする自動シャーディング (初期アルファ段階): 自動シャーディングは、追加のマシンが動的に追加される水平データベースクラスターをサポートします。 MongoDB の主な目標は、キー/バリュー ストレージ (高いパフォーマンスと高いスケーラビリティを提供) と従来の RDBMS システム (豊富な機能) の間のブリッジを構築し、両方の利点を統合することです。公式ウェブサイトの説明によると、Mongo は次のシナリオに適しています:
◆
ウェブサイトデータ:
Mongo はリアルタイムの挿入、更新、クエリに非常に適しており、リアルタイムに必要なレプリケーションと高い拡張性を備えています。ウェブサイトのデータストレージ。 ◆
キャッシュ:
その高いパフォーマンスにより、Mongo は情報インフラストラクチャのキャッシュ層としても適しています。システムの再起動後、Mongo によって構築された永続キャッシュ レイヤーにより、基礎となるデータ ソースの過負荷を防ぐことができます。 ◆
サイズが大きく、価値の低いデータ:
従来のリレーショナル データベースを使用して一部のデータを保存すると、以前はプログラマーがストレージとして従来のファイルを選択することがよくありました。 ◆
高いスケーラビリティのシナリオ:
Mongo は、数十または数百のサーバーで構成されるデータベースに最適です。Mongo のロードマップには、すでに MapReduce エンジンのサポートが組み込まれています。
◆ オブジェクトと JSON データのストレージの場合: Mongo の BSON データ形式は、文書化された形式でのストレージとクエリに非常に適しています。
当然のことながら、MongoDB の使用にはいくつかの制限があります。たとえば、次のようなシステムには適していません。
◆ 高度なトランザクション システム: 銀行や会計システムなど。現在、従来のリレーショナル データベースは、多数のアトミックで複雑なトランザクションを必要とするアプリケーションにより適しています。
◆ 従来のビジネス インテリジェンス アプリケーション: 特定の問題を対象とする BI データベースは、高度に最適化されたクエリ方法を生成します。このようなアプリケーションには、データ ウェアハウスがより適切な選択肢となる可能性があります。
◆ SQL を必要とする質問。
MongoDB は、OS X、Linux、Windows などのオペレーティング システムをサポートし、Python、PHP、Ruby、Java、C++ 言語用のドライバーを提供します。コミュニティは、Erlang や .NET などのプラットフォーム用のドライバーも提供します。
http://www.bkjia.com/PHPjc/327248.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327248.html技術記事 2010 年は SQL が死んだ年として記憶されるべきです。今年は、リレーショナル データベースが終焉を迎える年です。開発者は、列やテーブルを構築するために長時間かけて苦労する必要がなくなったと認識します。