PHP MongoDB ORM

php + mongo

MongoDBは、JSONに似たドキュメントのセットの形式でデータを保存するドキュメント指向のデータベース管理システムです。 MondoDBを操作するために、PHPはpecl拡張機能mongoを使用します。これにより、アクセスオブジェクトを使用してDBMSを完全に操作できます。

この記事では、PHPプロジェクトでのMongoの使用を簡素化し、データを操作するためのインターフェースを提供するORM(オブジェクトリレーショナルマッピング)スタンドアロンライブラリとフレームワークについて説明します。



CMSおよびフレームワーク(ZendFramework、Symfony、Drupalなど)でMongoを使用することは説明しないことにしました。これらのフレームワークの設定は、これらのフレームワークを使用する開発者のみが行う特定のタスクであり、この記事の目的はユニバーサルツールを明らかにすることであるためです



ライブラリとフレームワークの全リストは、MondoDB Webサイトにあります。最も幅広い機能を備えた次の3つに焦点を当てます。

  1. ドクトリンオーム
  2. マンダンゴ
  3. モンゴレコード


ドクトリンオーム


MongoDB Object Document Mapperはまだベータ段階ですが、すでに非常に機能的であり、通常のDoctrineメソッド(アノテーション、XMLまたはYAML)を使用してPHPオブジェクトをMongoドキュメントにマッピングできます。 インデックス、クエリデザイナー、MapReduceを使用するための便利なインターフェイスを提供します。 それはかなり豊富なドキュメントを伴います

大きな利点は、マッピングに注釈を使用できることです。

/** @Document */ class User { // ... /** @Field(type="string") */ private $username; }
      
      







マンダンゴ


かなり若いODM(Object Document Mapper)。高いパフォーマンスと拡張性に焦点を当てています。 DoctrineとMandango(Mandango Webサイト)の速度の比較から判断すると、後者は平均4倍速く動作し、ほぼ同様の機能パッケージを提供します。

さらに、イベントマネージャが組み込まれており、 MongoGridFS拡張機能を使用してGridFSにファイルを保存できます。 ドキュメントはかなり良いです。

マッピングは、配列を使用した構成で設定されます。

 array( 'Model\Article' => array( 'fields' => array( // as string 'title' => 'string', // as array 'content' => array('type' => 'string'), ), ), );
      
      







モンゴレコード


4つのクラスで構成される単純なライブラリ。基本クラスを継承して、DBMSを操作するための関数をクラスに追加できます。 マッピング、クエリデザイナー、およびその他の追加機能は提供しません。 シンプルで陽気な。



おわりに


はい、選択は大きくありません。 幅広い機能を備えたORMを必要とするプロジェクトには、DoctrineまたはMandangoのいずれかが適しています。 後者は非常に高速です。これは、Mongo専用に投獄されているためです。それとの連携は別として、何もできませんが、これはうまく機能します。 他のライブラリは、生まれることなく消滅したか、標準のPHPクラスを操作するためのインターフェースのみを提供しました。



PS記事でカバーされていないまともなORMフレームワークを知っている場合は、コメントまたはPMで書いてください。 ロシア語の情報が十分にないため、このギャップを埋めます。



All Articles