2016-02-01 10 views
5

新しいmongoが好きではありません.MongoDBはPHP7でいくつかのライブラリを必要とします。MongoClientとMongoDBの比較。なぜMongoClientが優れているのですか?

php5のMongoClient(廃止予定)ははるかに快適で軽量です!

私は、スクリプトを起動することを決定し、2つのバージョンを比較し、その結果は非常に驚くべきことであるいます

のMongoDB(PHP 7.0.2)

$client = new MongoDB\Client(
    'mongodb://root:[email protected]:port', 
    ['readPreference' => 'secondaryPreferred'] 
); 
$db = $client->selectDatabase('namedb'); 
$collection = $client->selectCollection('namedb', 'test'); 
$document = $collection->findOne(['_id' => 'works']); 
var_dump($document); 
$time  = microtime(); 
$time  = explode(' ', $time); 
$time  = $time[1] + $time[0]; 
$finish  = $time; 
$total_time = round(($finish - $start), 4); 
echo '<br><br>Page generated in ' . $total_time . ' seconds.'; 

モンゴ/ MongoClient(PHP 5.6.17)

$db = new MongoClient('mongodb://root:[email protected]:port'); 
$c = $db->namedb->test; 
$a = $c->findOne(array("_id" => 'works')); 
var_dump($a); 
$time  = microtime(); 
$time  = explode(' ', $time); 
$time  = $time[1] + $time[0]; 
$finish  = $time; 
$total_time = round(($finish - $start), 4); 
echo '<br><br>Page generated in ' . $total_time . ' seconds.'; 

Comparision between MongoClient (PHP 7.0.2) and MongoDB(PHP 5.6.17)

他にもこの問題が発生しますか? 新しいバージョンのMongoDBを使用しても何のメリットもありません。すべて問題です!

+1

'MongoDB'は低レベルのAPIしか提供していません。 MongoDBドライバが他の言語用に提供するようなより高レベルのAPIが必要な場合は、MongoDBのPHPLibを使用する必要があります。 MongoDBに関するphpマニュアルを確認してください。phplibはそこにリンクされています。 –

+1

また、 'microtime(true)'を使う必要があります!引数が 'true'に設定されていなければ、文字列が返されます。これにより、数学演算で間違った結果が得られます。 –

+0

'$ start = microtime(true); ....あなたのmongodb操作... $ totaltime = microtime(true) - $ start; '本当に爆発する必要はありません。 –

答えて

0

MongoClientは、PHP拡張モジュールとして書かれたネイティブドライバです。

MongoDBは、別のPHP拡張モジュールを使用するPHPコードです。 PHP以外のプロジェクトで使用されているlibmongocライブラリを共有しているので、新しい拡張モジュールの保守が簡単だと思います。

ネイティブドライバをPHPライブラリと比較することは、不公平な比較です。パフォーマンスを比較したい場合は、一方のネイティブドライバを他方のドライバに対して直接試してください。

私はMongoDBの

まず第一の新しいバージョンを使用して任意の利点を見つけることができない、古いMongoClient拡張子が推奨されていません。あなたや他の人がそれを持ち上げて維持することを選択した場合にのみ生きていきます。同じタスクのために2つの同様のライブラリを持つことは混乱します(mysqlとmysqliを参照)。

MongoDBは、より高度な抽象化を提供することを目的としており、ネイティブドライバよりも頻繁な機能更新が見込まれることがあります。

関連する問題