Couchdb 数据库复制速度加快了吗?
我正在使用CouchDB/PockDB作为Cordova映射应用程序的离线互动程序服务器。CouchDB 215mb db在手机上的初始复制在本地网络上需要两个多小时。CouchDB到CouchDB的复制在本地网络上需要6分钟。Db包含65000个文档,其中png附件为1-2KBCouchdb 数据库复制速度加快了吗?,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
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”>“标头”