Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchdb 数据库复制速度加快了吗?_Couchdb_Pouchdb - Fatal编程技术网

Couchdb 数据库复制速度加快了吗?

Couchdb 数据库复制速度加快了吗?,couchdb,pouchdb,Couchdb,Pouchdb,我正在使用CouchDB/PockDB作为Cordova映射应用程序的离线互动程序服务器。CouchDB 215mb db在手机上的初始复制在本地网络上需要两个多小时。CouchDB到CouchDB的复制在本地网络上需要6分钟。Db包含65000个文档,其中png附件为1-2KB function managePouchDB(networkState) { // replicate tiles from local workstation var remoteCo

我正在使用CouchDB/PockDB作为Cordova映射应用程序的离线互动程序服务器。CouchDB 215mb db在手机上的初始复制在本地网络上需要两个多小时。CouchDB到CouchDB的复制在本地网络上需要6分钟。Db包含65000个文档,其中png附件为1-2KB

function managePouchDB(networkState) {
        // replicate tiles from local workstation
        var remoteCouchdb_osm_bc = "http://192.168.12.5:5984/osm_bc_simple_z6-13_tiles";
        var tiledb_rep_opts = {
            // http://pouchdb.com/api.html#replication
            live: true,
            retry: true,
            // batch size: tried 10 - 100; 10 works best for osm tiles replication w/ nginx
            batch_size: 10, // default = 100
            attachments: true
        };

        // replicate osm bc tiles on check
        var pouchTilesDB_osm_bc_baselayer_replicate = pouchTilesDB_osm_bc_baselayer.replicate.from(remoteCouchdb_osm_bc, tiledb_rep_opts);
        var pouchTilesDB_osm_bc_storedState = localStorage.getItem("pouchTilesDB_osm_bc_storedState");
        if (pouchTilesDB_osm_bc_storedState === "true") {
            pouchTilesDB_osm_bc_baselayer.replicate.from(remoteCouchdb_osm_bc, tiledb_rep_opts);
我减少了批量大小,从而减少了复制时间,但仍然只能看到~2mb/min的复制

在线CouchDB瓷砖称为直接显示良好。使用couchdbv1.6.1和dbv4.0.3


可能的瓶颈在哪里?解决方案还是想法?

复制协议非常健谈。这在初始复制中花费了大量时间

查看此工具:

我添加的代码:

var remoteCouchdb_osm_bc_dump ="http://192.x.x.x:8092/data/osm_tiles_dump.txt";

if ((pouchTilesDB_osm_bc_storedState === "true") && (networkState === "WiFi_connection" || "wifi")) {
   pouchTilesDB_osm_bc_baselayer.load(remoteCouchdb_osm_bc_dump , {
        proxy: remoteCouchDB_osm_bc
   }).then(function () {
        // done loading! handoff to regular replication
        console.log("Done loading osm dump to PouchDB");
        pouchTilesDB_osm_bc_baselayer.info().then(console.log.bind(console));
        return pouchTilesDB_osm_bc_baselayer.replicate.from(remoteCouchdb_osm_bc, tiledb_rep_opts);        
   }).catch(function (err) {
         // HTTP error or something like that
         console.log("error on osm_bc dump to PouchDB");
});
从手机运行时不会抛出上述错误,但会导致应用程序崩溃并重新启动。如果没有db.load,就不会发生。在不到1分钟的时间内将文件下载转储到手机上,所有文档似乎都是以数据库为单位的

pouchTilesDB_osm_bc_baselayer.info().then(console.log.bind(console));
然后抛出错误并崩溃

在Chromium中调试时抛出了CORS错误,并通过访问控制允许来源:for Nginx()进行排序。Had short=短路,CORS错误来自访问dump.txt文件,而不是CouchDB。手机中不显示Cordova应用程序

虽然复制是“闲聊”的,但这并不能完全解释为什么CouchDB到PockDB的复制比CouchDB到CouchDB的复制慢得多。将测试CouchDB 2.0


我可以从笔记本电脑中转储文件。拍摄时间为41秒。

正如Alex所说,您可以使用
PockDB load
进行更快的复制


但是,在CouchDB 1.7和CouchDB 2.0中,当它们被发布时,慢度将被自动修复,所以您可以等待。我相信Cloudant也已经发布了修复程序。有关加速的详细信息,请参阅。

谢谢。看起来正是我需要的。将最简单的案例转化为代码进行测试。获取错误:GET net::ERR\u CONTENT\u LENGTH\u不匹配,此错误:PockDB:远程数据库可能未启用CORS。如果未启用,请启用CORS:CORS已启用。我想我第一次遇到了相同的问题:尝试将“x-csrf-token”添加到“CORS”>“标头”