ページベースのWebアプリケーションを作成しました。私はCouchbaseとPostgresの両方のバージョンを作った。私はそれがひどい性能を持っていたので、N1QLを放棄しなければなりませんでした(多分私はそれについて別の質問をします)。そこで私はプロジェクトをN1QLからビューに移行しました。私は、低いページ数(たとえば、1ページあたり10レコード50、48ページレコード)では、ポストグル(0.07s vs 0.11s)より高いパフォーマンスを示しましたが、高いページ番号(たとえば、4000 - > 1.5秒および16000 - > 5秒)パフォーマンスは非常に悪いです。私は、ネイティブのCBライブラリとページネーションのスキップ+リミットを使用します。Couchbaseを使用したPHPページネーションは、高いページ番号で非常に遅くなります
アイデア?
PHP:ビューの
public static function findByPage($recordsPerPage, $page) {
$query = CouchbaseViewQuery::from("dev_".static::COLLECTION_NAME, "get_".static::COLLECTION_NAME."")->reduce(false)->skip($recordsPerPage*($page-1))->limit($recordsPerPage)->custom(array("full_set"=> "true"));
$data = DB::getDB()->query($query, null, true);
// var_dump($data);
$objects = array();
foreach($data["rows"] as $row) {
$objects[] = static::find($row["key"]);
}
return $objects;
}
ワン(彼らはほとんどすべて同じです):
function (doc, meta) {
if(doc.collection == "green_area") {
emit(doc._id, null);
}
}
クエリとインデックス、およびEXPLAINとCouchbaseのバージョンで別の質問を投稿すると、N1QLページネゴシエーションを調べていただければ幸いです。 – geraldss
ありがとうございます、私はあなたが一見をしたい場合は、別の質問をしました。私は、もし動作すればN1QLをもう一度やり、Couchbase CE 4.5.0を待ち、ビュー+全文検索を使うか、PostgreSQLを使うかのどちらかです。 –