2016-02-01 27 views
5

Non mi piace il nuovo mongo, MongoDB richiede diverse librerie in PHP7.Confronto tra MongoClient e MongoDB. Perché MongoClient è migliore?

MongoClient (deprecato) in php 5 è ​​molto più comodo e leggero!

ho deciso di lanciare uno script e confrontando le due versioni ed i risultati sono abbastanza sorprendenti:

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.'; 

Mongo/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)

Qualcun altro ha riscontrato questo problema? Non riesco a trovare alcun vantaggio nell'usare la nuova versione di MongoDB, tutti sono problemi!

+1

'MongoDB' offre solo un'API di basso livello. Se si desidera un'API di livello superiore come il driver MongoDB per altre lingue, è necessario utilizzare PHPLib di MongoDB. Controlla il manuale php su MongoDB, il phplib è collegato lì. –

+1

Anche tu devi usare 'microtime (true)'! Senza l'argomento impostato su 'true' otterrai una stringa restituita, che ti darà risultati errati nelle operazioni matematiche. –

+0

'$ start = microtime (true); .... le tue operazioni mongodb ... $ totaltime = microtime (true) - $ start; 'Non c'è davvero bisogno di esplodere o altro. –

risposta

0

MongoClient è un driver nativo scritto come estensione PHP.

MongoDB è un codice PHP che utilizza un'estensione PHP diversa. Presumo che la nuova estensione sia più facile da mantenere poiché condivide la libreria libmongoc utilizzata da progetti diversi da PHP.

Confrontare un driver nativo con una libreria PHP è un paragone ingiusto. Se vuoi confrontare le prestazioni dovresti provare un driver nativo direttamente contro l'altro.

Non riesco a trovare alcun beneficio utilizzando la nuova versione di MongoDB

In primo luogo, l'estensione più vecchio MongoClient è deprecato. Vivrà solo se tu o altri sceglierete di prenderlo e mantenerlo. Anche se avere due librerie simili per lo stesso compito sarebbe confuso (vedi mysql vs mysqli).

MongoDB ha lo scopo di fornire un livello più alto di astrazione e probabilmente ci si può aspettare di vedere aggiornamenti di funzionalità più frequenti rispetto a un driver nativo.