RDBMS、NewSQL、NoSQLを比較するためにphp benchmark
と書いています。 このスクリプトは単にクエリを実行し、実行時間を測定します。mongoDBと同等のmysql_query
は、MySQLのように、私は単純に使用してください:
$start = microtime(true);
$result = mysql_query($SQL);
$end = microtime(true);
私はベンチマークのデータをフェッチしませんでした。 $cursor
と$result
は当量(時間/データコスト)
しかし、MongoDBは、PHPで、機能はcursor
$start = microtime(true);
$collection = $this->_db->selectCollection($collection);
$cursor = $collection->find($query);
$end = microtime(true);
を返すfind()
をしているのか?カーソルが、それは公平であるかどう
$start = microtime(true);
$result = mysql_query($SQL);
while ($row = mysql_fetch_row($result)) {}
$end = microtime(true);
と
$start = microtime(true);
$cursor = $collection->find($query);
foreach ($cursor as $doc) {}
$end = microtime(true);
そして最後に、それはあなたがMongoDBのカーソルデータに繰り返すたびのMongoDBサーバーから直接取得していないコンピュータのメモリからのものであること言って本当ですか?
ありがとうございます。でも、私のやり方はいいと思う?それとも、私が考えていない別の解決策がありますか?例:MongoDB :: executeを使用しますか? – Kakawait
Executeはクエリを実行するためのものではなく、任意のjavascriptを実行するためのものです。私は今までそれを使用する必要はなかった。ベンチマークのための最良の方法は、実際のアプリケーションを使用しているか、おそらく挿入テストを行うことです。 – Derick
はい、私の例では選択クエリを選択しました..しかし、私のベンチマークは疑似実アプリケーション上で多くの異なるタイプのクエリ(選択、挿入、更新など)を実行します。しかし、私の問題は、mongodbがカーソルを使用するのでちょうど選択されています。 – Kakawait