PHPプログラマーとしてMongoDBの5つを知るべき

4259 ワード

2010年にはSQLがこの年に死ぬことを覚えておくべきだ.この年はリレーショナル・データベースが機能しなくなり、開発者は長い間苦労して列やテーブルを構築してデータを保存する必要がないことを発見しました.
2010年はドキュメント型データベースの開始年になります.このような勢いは長年続いていますが、より多く、より広範なドキュメント型データベースが登場した年代です.クラウドコンピューティングベースのAmazonからGoogleまで、大量のオープンソースツール、それに伴って誕生したCouchDBとMongoDB.
ではモンゴDBとは何ですか?PHP開発者が知っておくべきことは5つあります.1.MongoDBは別のサーバです.2.MongoDBはドキュメントベースであり、テーブルベースではない.3.MongoDBの中で比較的少ないSchema;4.他の言語を学ぶ必要はありません.5.MongoDBは良好なPHPサポートがある.
1.MongoDBは、MySQLとPostgreSQLのように個別のサーバであり、MongoDBはアクセスのリンクを傍受します.質問、作成、更新、削除などのツールの役割を果たします.理論的には、MySQLとPostgreSQLと同じように作業します.リンク、処理、リンクを閉じます.
2.行と表にさよならを言います.データを格納する表と行の代わりに、ドキュメントとコレクターを歓迎します.MongoDBはデータをドキュメントに格納します.タイトル付きの「文章」があれば、複数の作者、1つのテーマ、ラベルがあります.これらは次のように見えます.
 
  
array(
'title'=>'Hello World',
'authors'=>array('John','Sally','Jim'),
'body'=>'Hello world',
'tags'=>array('tag1','tag2','tag3')
);
?>

上記の例で最も重要なのは、複合形式をサポートする値が同じ領域に格納されているドキュメントのような記録です.構造化は不要であり、データをテーブルで区別する必要はありません.したがって、テーブルはもう存在しません.
3.MongoDBにはschemaMongoDBが少なくschema言語がありません.新しいドキュメントタイプを作成する場合は、データベースに何も伝える必要はありません.新しいデータをデータベースに入れればいいのに.
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は以下のシーンに適しています.

Webサイトデータ:Mongoはリアルタイムの挿入、更新、クエリーに適しており、Webサイトのリアルタイムデータストレージに必要なレプリケーションと高度な伸縮性を備えています.

キャッシュ:パフォーマンスが高いため、Mongoは情報インフラストラクチャのキャッシュ層としても適しています.システムの再起動後、Mongoによって構築された永続化キャッシュレイヤは、下位レベルのデータソースの過負荷を回避します.

大サイズ、低価値のデータ:従来のリレーショナル・データベースを使用してデータを格納する場合は高価になる可能性があります.これまで、プログラマは従来のファイルを選択して格納することが多いです.

高伸縮性のシーン:Mongoは数十台または数百台のサーバからなるデータベースに非常に適しています.Mongoの路線図には、MapReduceエンジンの組み込みサポートが含まれています.

オブジェクトおよびJSONデータの格納:MongoのBSONデータフォーマットは、ドキュメント化されたフォーマットの格納およびクエリーに非常に適しています.
もちろん、MongoDBの使用にもいくつかの制限があります.例えば、それは適切ではありません.

高度なトランザクションシステム:銀行や会計システムなど.従来のリレーショナル・データベースは、原子的で複雑なトランザクションを大量に必要とするアプリケーションに適しています.

従来のビジネスインテリジェントアプリケーション:特定の問題に対するBIデータベースは、高度に最適化されたクエリー方式を生成します.このようなアプリケーションでは、データ・ウェアハウスがより適切な選択である可能性があります.

SQLの質問が必要です.MongoDBはOS X、LinuxおよびWindowsなどのオペレーティングシステムをサポートし、Python、PHP、Ruby、JavaおよびC++言語のドライバを提供し、コミュニティでもErlangおよび.NETなどのプラットフォームのドライバ.