ãCouchDBã¯Webçšã«ç¹å¥ã«èšèšãããŠããããšãããã¬ãŒãºãšãã¢ã¯ã»ã¹ã«ã¬ã€ã€ãŒãäžèŠã§ãããšããäºå®ã«ãã£ãŠäž»ãªåœ¹å²ãéžæãããšããã¢ã¯ã»ã¹ã¯ç§ã®ãæ°ã«å ¥ãã®RESTã«åŸã£ãŠè¡ãããAPIã¯éåžžã«ã·ã³ãã«ã§ãšã¬ã¬ã³ãã«èŠããŸãã ããã«å ããŠãCouchDBã«ã¯Futonã管çããããã®éåžžã«äŸ¿å©ãªWebããŒã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ããããåœæMongoDBã§ã¯å©çšã§ããªãã£ãã ãã§ãªããã¯ã©ãã·ã¥ã«å¯Ÿããéã®æµæããããŸãã
ä»åŸãéžæã¯å®å šã«ææãäžãããšèšããŸã-ããŒã¿ããŒã¹ã®éçºãšèšèšã«ãããèšå€§ãªæ°ã®åé¡ãåãé€ãããããžã§ã¯ãã³ãŒãã¯å€§å¹ ã«ç°¡çŽ åãããæ§é ãæ¹åãããŸããããæãéèŠãªããšã¯-CouchDBããããããæèã®è»¢æã§ãã ãã®éãç§ã¯å人çã«éçºäžã«å€ãã®ã³ãŒã³ãåããŸããããããŠãHabrasocietyãšç§ã®çµéšãå ±æããããšæããŸãã ãããã®ãã³ãã¯åå¿è åãã§ã¯ãããŸãã-ã©ã€ããããã¯ã·ã§ã³ã§CouchDBã䜿çšããããã®ãã³ãã§ãã
ããå€ãã®ããŒã¿ããŒã¹ã䜿çšãã
å€ãã®åå¿è åãããã¥ã¢ã«ïŒ CouchDBïŒThe Definitive Guideãå«ãïŒã§ã¯ãäŸã¯éåžžã«çŸããããã«èŠããŸããã人çãšã¯ãŸã£ããçµã³ã€ããŠããŸããã äžçªäžã®è¡ã¯ãããã¥ã¡ã³ãã®æ°ãå®éã®èŠæš¡ïŒããŒã¿ããŒã¹å ã®100,000ããã¥ã¡ã³ããªã©ïŒã«éãããšããã«ããµãŒããŒããããæ©èœã«æºæ ããããã«ãã¹ãŠã®ããã¥ã¡ã³ããæç»ããå¿ èŠããããããäžæãã¥ãŒã®éçºãã»ãŒäžå¯èœã«ãªãããšã§ãã ããã«ãåãããã«ã¯æ¬¡ã®ãããªãã®ãå«ãŸããŸãã
å°ããªèªè»¢è»ã«äŒŒãŠããŸããfunction (doc) {
if (doc.type == 'photo' ) {
...
}
}
CouchDBã®ããžãã¯ã¯ãããŒã¿ããŒã¹å ã®1ã€ã®ããã¥ã¡ã³ããæŽæ°ãããšããã®æŽæ°ããã¹ãŠã®ãµã³ãã«ã«ã圱é¿ããããšããããšã§ãã ã€ãŸãã1ã€ã®ããã¥ã¡ã³ãã®ã¿ãæŽæ°ãããšã絶察ã«ãã¹ãŠã®ãµã³ãã«ãETagãæŽæ°ããŸãã ããã¯ã1ã€ã®ããŒã¿ããŒã¹ã§ç°ãªãã¿ã€ããã£ãŒã«ããæã€è€æ°ã®ããã¥ã¡ã³ãã䜿çšããå¥ã®æ¬ ç¹ã§ãã åæã«ã1ã€ã®ããã¥ã¡ã³ããæŽæ°ããŠãETagã¯åœ±é¿ãåããŸãããããã¥ã¡ã³ãã®ETAGã¯ææ°ã®ãªããžã§ã³ã§ãããããä»ã®ããã¥ã¡ã³ããããã®ããŒã¿ããŒã¹ã«äžããããŸãã
ã¬ããªã±ãŒã·ã§ã³ã¯åãLANäžã§çºçããå¿ èŠããããŸã
ã¬ããªã±ãŒã·ã§ã³ã¯ãCouchDBã®ç«¶äºäžã®å©ç¹ã®1ã€ãšèããããŠããŸãã POSTãªã¯ãšã¹ãã«ãã£ãŠããªã¬ãŒãããããã¯ã°ã©ãŠã³ãã§åäœããŸãã ã©ã€ããµãŒããŒã§ã¯ãã¬ããªã±ãŒã·ã§ã³ããã»ã¹ã¯ããŒã«ã«ãããã¯ãŒã¯ã§ã®ã¿æåããããšãå€æããŸããã ãµãŒããŒãäºãã«é¢ããå Žæã«é 眮ããããšããã«ãåæãå€æŽã®åä¿¡äžèœãªã©ãå®å šã«ãã£ããã§ããªãäžå ·åãçºçããŸãã ããã«ãããã¬ããªã«ã¯ãã°ã«ã¡ãã»ãŒãžãçºè¡ãããã¹ãŠãæ£åžžã§ããããšãå·éã«è£ ãããšãã§ããŸãã ãããã£ãŠããã³ãïŒ 1ã€ã®ããŒã«ã«ãããã¯ãŒã¯ã®ã¿ã§ããŒã¿ãè€è£œããŸã ã
Erlangã§ãã€ãã£ãã®reduceé¢æ°ã䜿çšããŸã
è»èŒªãåçºæããªãã§ãã ããã ããã¥ã¡ã³ãã§ã¯ããã®ãããªããšã¯å€ãã®å Žåãreduceé¢æ°ã®äŸãšããŠäœ¿çšãããŸãã
ããããé¿ããŠãErlangã§æžããããã€ãã£ãã®reduceã䜿çšããŠãã ããïŒ "_count"ãš "_sum"ã¯ãJavascriptã®åçã®ãã®ãããé«éã«åäœããŸããfunction (key, values, rereduce) {
return sum(values);
}
è€éãªreduceé¢æ°ã䜿çšããåã«3åèãã
ãã®ç¹ã¯ããã¥ã¡ã³ãã«ã¯èšèŒãããŠããŸããããreduceé¢æ°ã䜿çšããªããšãå€ãã®æ倱ãçºçããå¯èœæ§ããããŸãã ãµã³ãã«ã倧ããããå ŽåãReduceã¯ããèªäœãåŒã³åºããŠãrereduceãåŒãèµ·ãããŸãã ããããå®éã«ã¯ããµã³ãã«ãããå°ãè€éã«ãªããšãããã¯ãã¹ãŠæå³ããããŸããã
ãã®ãããžã§ã¯ãã«ã¯ãã³ã¡ã³ããä¿åããã³ã¡ã³ãããŒã¿ããŒã¹ããããŸãã åã³ã¡ã³ãã¯åå¥ã®ããã¥ã¡ã³ãã«ãããŸãããã®ããã¥ã¡ã³ãã«ã¯ãã³ã¡ã³ãã®éœåžïŒãã·ã¢ã®ããŒã¿ã«ãè€æ°ã®éœåžããããŸãïŒãããã³ããããã³ã¡ã³ããä¿åãããŠããŸãã æå±-æå±ãã£ãŒã«ãã 課é¡ã¯ãæè¿ã®N件ã®è°è«ãæšæž¬ããããšã§ãã MySQLã§èšãã°ãã¿ã¹ã¯ã¯æ¬¡ã®ãããªãã®ã«ãªããŸãã
CouchDBãã§ããã®äž»ãªåé¡ã¯ãããŒã§ãœãŒããããããšã§ãããææ°ã®ãã£ã¹ã«ãã·ã§ã³ã¹ã¬ãããå ã«ååŸããå¿ èŠããããŸãã ããã¯ãgroup / group_levelã«ããã°ã«ãŒãåã䜿çšã§ããªããªã£ãããšãæå³ããŸãã ããããç§ãã¡ãïŒåïŒåæžããããšã«ãããšããã§ãã æåŸã®åãæšãŠé¢æ°ã¯æ¬¡ã®ããã«ãªããŸãããSELECT * FROM comments GROUP BY (belongs, city) ORDER BY timestamp
ãã¹ãŠãæ£åžžã«æ©èœããŸãããããµã³ãã«ã®ãªãã¬ãã·ã¥ã¬ãŒãã«åé¡ããããŸããã 1ã€ã®ã³ã¡ã³ããäœæããåŸã4GBã®ã¡ã¢ãªãšAthlon 64 X2 5600+ããã»ããµïŒ ãªã³ã¯ ïŒãæèŒãããµãŒããŒã§ãã®ãµã³ãã«ãæŽæ°ããã«ã¯2ç§ããããŸããã ãŸããã³ã¡ã³ãã絶ãéãªãæµããŠãããããããŒã¿ããŒã¹ã®ããã¿ã絶ãéãªãåãå ¥ããããŸããã§ããã çŸåšãããŒã¿ããŒã¹å ã®ããã¥ã¡ã³ãã®æ°ã¯22,000ã§ããµã³ãã«ã§ã¯258,000ã§ãã ãããã£ãŠãçµè«ïŒ 匷åãªãµãŒããŒã§ã®ã¿åŒ·åãªãªãã¥ãŒã¹æ©èœã䜿çšããŠãã ããã ããããªããšãã¢ã€ãã¢å šäœãç¡æå³ã«ãªããŸããfunction (key, values, rereduce) {
if (rereduce) {
var data = [], meta = [], record, tmp, index, total = [];
for ( var i in values) {
for (j=0; j<values[i].length; j++) {
record = values[i][j];
tmp = record[2] + '_' + record[3];
index = meta.indexOf(tmp);
if (index === -1) {
meta.push(tmp);
data.push(record);
} else {
data[index][1] = Math.max(data[index][1], record[1]);
}
}
}
data.sort( function (a, b) {
if (a[1] === b[1]) {
return 0;
}
return (a[1] > b[1])
? -1
: 1;
});
return data.slice(0, 7);
} else {
var output = [];
for ( var i in values) {
output.push([values[i]._id, values[i].ts, values[i].belongs, values[i].city]);
}
return output;
}
}
ETagãä»ããŠããŒã¿ããã£ãã·ã¥ãã
If-Modified-Since / ETagãã³ãã«ãä»ããããŒã¿ã®ååŸã¯ãçŽ3åã®ããŒã¿ã®ååŸïŒåæãã¹ãïŒãããæ¬åœã«é«éã§ãã If-None-MatchããããŒã䜿çšããå Žåãå¿çã¹ããŒã¿ã¹ã304ã®å Žåãå¿çæ¬æã¯åžžã«ç©ºã§ããããšãå¿ããªãã§ãã ããããµãŒããŒã¯ããŠãŒã¶ãŒãèªåã§ããŒã¿ãä¿åããããšãæå³ããããã§ãã ãããã®ç®çã®ããã®ãããžã§ã¯ãã§ã¯ãCouchDBãæäœããããã®Memcachedãšå°ããªã·ã³ãã«ãªã·ã§ã«ã䜿çšããŸãïŒ link ïŒ
CouchDBã¹ã¿ã€ã«ã§èãã
CouchDBã§èããããšã¯ãå¥ã®ç解ããããšã§ãã ïŒ DBMSïŒ ããCouchDBã«ããŒãµãŒãèšè¿°ããã ãã§ã¯ååã§ã¯ãããŸãããCouchDBã¹ã¿ã€ã«ã§èããããšã«æ £ããããšãéèŠã§ããããããã°ããã¹ãŠã®ã¿ã¹ã¯ããŸã£ããç°ãªã芳ç¹ããç解ã§ããŸãã
ç°¡åãªäŸãæããŸãã ããæéã«è¡ãããã€ãã³ãããããŸãã MySQLã§ä»æ¥ã©ã®ã€ãã³ããçºçããŠãããã調ã¹ãå¿ èŠãããå Žåã次ã®ã¯ãšãªãäœæããŸãã
ãããŠä»ãCouchDBã«æ»ã£ãŠããµã³ãã«ã«ã¯çŸåšã®æå»ãªã©ããªãããšãæãåºããŠãã ããã ãã¹ãŠã®ãµã³ãã«ã¯1åäœæããããã®åŸããããã®ããã¥ã¡ã³ããå€æŽ/äœæ/åé€ãããšããããã¯æŽæ°ãããã ãã§ãã ãããã£ãŠãããã¥ã¡ã³ãã®ã¿ãããããã以äžã¯ãããŸããã ä»»æã®ãã©ã¡ãŒã¿ãŒãããŒãšããŠæž¡ãããšãã§ããããã«ãéžæãè¡ãå¿ èŠãããããšãç解ããããšãéèŠã§ãã ã€ãŸããéžæã¯ããŒã§ã®ã¿å¶éã§ããŸãã ãã®åé¡ã®è§£æ±ºçã¯ãåããã¥ã¡ã³ãã«ã€ããŠãã€ãã³ããçºçãããã¹ãŠã®æ¥ãããŒãšããŠéžæããããµã³ãã«ãã³ã³ãã€ã«ããããšã§ãã ãããŠå°æ¥ããã®æ¥ã«ãã¹ãŠã®ã€ãã³ããéå¬ããã«ã¯ãããŒãïŒKey = current_dayãã§ãã¥ãŒãåç §ããå¿ èŠããããŸããSELECT * FROM table_name WHERE UNIX_TIMESTAMP() BETWEEN start_timestamp AND finish_timestamp
SQLã§è¡ãã»ãšãã©ãã¹ãŠãCouchDBã«å®è£ ãããã¯ããã«ç°¡åã§çŸãããªããŸãã
ãã®ç䌌é»è²ã®èŠåºããåžéããã®ã¯ã3幎åã®èŠ³å¯çµæã ãã§ãã ãã€ãŠãç§ã¯ããŸããŸãµãã©ã€ããåºå®ããŠããäŒç€Ÿã§ãžã¥ãã¢ããã°ã©ããŒãšããŠåããŠããŸããã ãããã®ãµã€ãã§ã¯ãåºåžè ã¯1æ¥30人以äžã§ããããåãµã€ãã®äžã«ã¯ããµãŒããŒåŽã«XSLãã³ãã¬ãŒãã³ã³ããŒã¿ãŒãåãã匷åãªãšã³ãžã³ããããŸããã ãªãããã銬鹿ãªã®ã説æãããããªãã äžè¬çãªèãæ¹ã¯ãåé¡ã®è§£æ±ºã«æé©ãªããŒã«ãåžžã«æ£ç¢ºã«éžæããå¿ èŠããããšããããšã§ãã ãµãã©ã€ãã®å Žåããããã¯CMSãçæã§ããåçŽãªhtmlããŒãžã§ãã ãã©ãã£ãã¯ã®å€ã匷åãªããŒã¿ã«ã®å Žåãããã¯æ±ºããŠç¡æã®Joomlaã«ã¯ãªãåŸãŸããã
ã¿ã€ãã«ã«æ»ããŸãã ãã¹ãŠã®ããã°ã©ããŒãã³ãŒãã®ä»çµã¿ãç¹ã«ããŒã¿ããŒã¹ãšã®çžäºäœçšãã©ã®ããã«çºçããããç解ããŠããããã§ã¯ãããŸããã å€ãã®å ŽåãåçŽãªããŒã¿ãååŸããããã®èšå€§ãªæ°ã®JOINãããã¯ãšãªããããã¯ãšãªå šäœããããã䜿çšããã«è¡ããããããEXPLAINã§ãããã¯ãšãªã®ã©ã®éšåãé ããªããããã®äººãå€æããã®ãå©ããŸããã ããã«ãã©ã€ããããžã§ã¯ãã§ã¯ããã¹ãŠãåçŽãªãã©ã€ããªããŒã®éžæã«ãªããä»ã®ãã¹ãŠã®ã¯ãšãªãè² æ ã«ãªããè€éãªSQLã¯ãšãªã®ã³ã³ãã€ã«ã«é¢ããç¥èã圹ã«ç«ããªããªããŸãã
çŸæç¹ã§ã¯ãåå¿è ã®ããã°ã©ããŒãCouchDBã䜿çšããŠé ããªã³ã«ããæ©èœãããããã ãã«åŒ·åãªèŠæ±ãè¡ãããšã¯ã§ããªããšæ·±ã確信ããŠããŸãã reduceé¢æ°ã®å©äŸ¿æ§ã«ãããã°ãããããŒã¿ã®åãæšãŠãæžã蟌ãŸãã«ã¡ã¢ãªãªãŒããŒãããŒãã¹ããŒã§ããŸãã 1æ¥æ倧5,000人ã®ãã©ãã£ãã¯ãæã€åçŽãªãµã€ããæäœãããšãã«äœ¿çšãããã»ãšãã©ãã¹ãŠã®ããšã¯ãURLã«ããããŒãžã®ååŸããã¥ãŒã¹ã®ãªã¹ãã®ååŸãã²ã¹ãããã¯ããã©ãã®ã£ã©ãªãŒãªã©ã®æäœã«ãããCouchDBã«å®è£ ããã®ãã¯ããã«çŸããç°¡åã§ãã åæã«ã䜿çšå¯èœãªUTF-8ãšã³ã³ãŒãã£ã³ã°ã®ã¿ã䜿çšããããšã§ãéçºäžã«èæ ®ããå¿ èŠã®ãªãå€ãã®ããšããããªããæããŸãã
ãŠãŒãã£ãªãã£ã䜿çšããŠçŸåšã®ã¢ã¯ãã£ããã£ã衚瀺ãã
CouchDBã®çŸåšã®ãã¹ãŠã®ã¢ã¯ãã£ããã£ã衚瀺ã§ããŸãã MacOSã§ã¯ãCouchDBãæäœããããã®ãŠãŒãã£ãªãã£ã¯CouchDBXãšåŒã°ããŸã ã Windowsçšã®åæ§ã®ãŠãŒãã£ãªãã£ããããŸãã ããŒã5984ã§CouchDBãµãŒããŒãå®è¡ããçŸåšã®ãµãŒããŒãªã¯ãšã¹ãããªã¢ã«ã¿ã€ã ã§ç£èŠã§ããŸãã Linuxã§ã¯ãããŒã¢ã³ã¢ãŒãã§ã¯ãªããµãŒããŒãèµ·åããã ãã§ååã§ïŒ/ usr / bin / couchdbã®-dãªãã·ã§ã³ããããæ åœããŸãïŒããã¹ãŠã®èŠæ±ãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã
ãŸããçŸåšã®ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ãFutonã®[ã¹ããŒã¿ã¹]ã¿ãã§è¡šç€ºã§ããŸãã
é »ç¹ã«æŽæ°ãããããŒã¿ã«ã¯CouchDBã䜿çšããªãã§ãã ããã
ããããã«ãã¹ããã©ã¯ãã£ã¹ããããŸãã CouchDBã§ã¯ããããã®åŽé¢ã«ã¯ãé »ç¹ã«æŽæ°ãããããŒã¿ãæ±ãäœæ¥ã¯å«ãŸããŸããã CouchDBã«ããŒã¿ãååŸããã®ãçæ³çã§ãã ãªããããèµ·ãã£ãŠããã®ã§ããïŒ ããŒã¿ããŒã¹å ã®1ã€ã®ããã¥ã¡ã³ããæŽæ°ããããšãããŒã¿ããŒã¹å ã®ãã¹ãŠã®ãµã³ãã«ã®ETagããªã»ãããããŸãã ããã¯ããããããã¹ãŠç¡å¹ã«ãªããå€ããªãããšãæå³ããŸãã ãµã³ãã«ã®å Žåãããã¯æ¬¡ã®åŒã³åºãã§ETagãæŽæ°ããã³æŽæ°ããããšãæå³ããŸãïŒã€ãŸããããŒã¿ããŒã¹å ã®ãã¹ãŠã®ãµã³ãã«ã®æå°+1ãªã¯ãšã¹ãïŒã ãµãŒããŒã¬ãã«ã§ã¯ãããã¯ããŒã¿ããŒã¹ã®ãµã€ãºã倧ãããªã£ãŠããããšãæå³ããå§çž®æäœã䜿çšããŠå¯ŸåŠããå¿ èŠããããŸãã
å§çž®ãå¿ããªãã§ãã ãã
ããã¥ã¡ã³ããæŽæ°ãããã³ã«ãæ°ãããªããžã§ã³ãäœæãããŸãã ãŸããããã«ããã次åã®åŒã³åºãæã«ããã®ããã¥ã¡ã³ããå«ãŸãããµã³ãã«ãåçæãããŸãïŒåçæã¯ãããã¥ã¡ã³ãã®è¿œå ãšåé€ã®æäœã«ãã£ãŠã圱é¿ãåããŸãïŒã ãã¹ãŠã®å€ããªããžã§ã³ã¯ä¿æãããããã¥ã¡ã³ãã®600ã®ãªããžã§ã³ã«ã¢ã¯ã»ã¹ããå¿ èŠã¯åžžã«ãããŸãããçŸåšã®1åã®1ã§ãã ããŒã¿ããŒã¹ã®ãµã€ãºã¯å¢å€§ãç¶ããŠããããµãŒããŒé åã¯åžžã«ãŽã ã§ãããšã¯éããŸããããã®ããããã¥ãŒãšããã¥ã¡ã³ãã®å§çž®æäœãå®è¡ããããšãå¿ããªãã§ãã ããã ããã«ãããå€ãã®ç©ºããã£ã¹ã¯å®¹éãç¯çŽãããŸãã
çš®ã®åçã å€ã= update_after
CouchDBããŒãžã§ã³1.10ããªãªãŒã¹ãããåã¯ãçæãããŠããªããã¥ãŒããããŒã¿ãéžæãããšããå°ããªåé¡ããããŸããã ãããè¡ãã«ã¯ãçš®ãéžæãããšãã«ãã©ã¡ãŒã¿ãŒãstale = okãã䜿çšããããšãã°crontabã§çš®ã®åçãåæ¢ããããšãææ¡ãããŸããã ããŒãžã§ã³1.10以éããã©ã¡ãŒã¿ãŒãstale = update_afterãã衚瀺ãããŸãããããã¯ãstale = okããšåãããã«æ©èœããŸããããã¥ãŒãåãåã£ãåŸã«æŽæ°ãããŸãã ãã¥ãŒããŒã¿ãç°¡åã«åä¿¡ã§ãããããè€éãªèšèšããã¥ã¡ã³ãã§ãè¿ éã«äœæ¥ã§ããå¯èœæ§ããã¹ãŠãããŸãã
æ¬çªãµãŒããŒã§ãã¥ãŒãè¿œå ãŸãã¯å€æŽãããšãèšèšããã¥ã¡ã³ãã®é£æ¥ãããã¥ãŒã«åœ±é¿ããŸã
ãã¥ãŒãèšèšããã¥ã¡ã³ãã«è¿œå ããããšããã¥ãŒãçµã¿ç«ãŠãããŸãã ã€ãŸãããã¥ãŒïŒããšãã°ã_design / list / _view / by_nameïŒã¯åžžã«åéãããããã«é£æ¥ãããã¥ãŒïŒããšãã°ã_design / list / _view / by_ageïŒã¯äœ¿çšã§ããŸããã æ¬çªãµãŒããŒã«ãã¥ãŒãè¿œå ãããšãã¯å¿ããªãã§ãã ããã
ãœãŒã¹ããã€ã³ã¹ããŒã«ããŸãã é »ç¹ã«æŽæ°ããŸãã
å€ãã®äººãæ £ããŠããããã«ãUbuntu / Debianã®ã¡ã³ãããŒã¯ãªããžããªã®ããã±ãŒãžãã¢ããããŒãããããšãæ¥ãã§ããŸããã ã€ãŸããUbuntu Maverick CouchDBã®ããŒãžã§ã³ã¯1.0.1ã§ãããLucidã®å Žåã¯éåžž0.10ã§ãããCouchDBã¯é·ãéApacheã®åªå ãããžã§ã¯ãã®ãªã¹ãã«å«ãŸããŠãããåžžã«é²åããŠããŸãã çŸåšã®ææ°ããŒãžã§ã³ïŒ1.10ïŒã«ã¯ã次ã®ãã®ãå«ãŸããŠããŸãã
- ãã€ãã£ãSSLãµããŒã
- ããŒã¿ããŒã¹ã®ãªã¹ãã¯æçµçã«ã¢ã«ãã¡ãããé ã«ãœãŒããããŸã
- ãã¥ãŒã«å¯ŸããETagã®ããæ£ç¢ºãªãµããŒãïŒèª¬æã§ã¯ããµã³ãã«ã«å«ãŸããŠããªãããã¥ã¡ã³ããæŽæ°ããŠããµã³ãã«ã¯ETagãå€æŽããªããšè¿°ã¹ãŠããŸãïŒã
- ãããé¢æ°ã§ã®CommonJSã¢ãžã¥ãŒã«ã®ãµããŒãïŒNodeJSãæãåºããŠãã ããïŒ
- ãªãã·ã§ã³ãstale = update_afterãããstale = okããšåãããã«æ©èœããŸããããã¥ãŒãåãåã£ãåŸã«æŽæ°ãããŸãã
å šææ€çŽ¢
CouchDBãå€ãã®ã¿ã¹ã¯ã«é©ããŠãããããã¹ãŠã§ã¯ãªãããšã«ã€ããŠè©±ããŸããã å šææ€çŽ¢ã¯ãã®äŸå€ã«è©²åœããŸãã ãã¥ãŒã«ãã©ã¡ãŒã¿ãŒãçŽæ¥æž¡ãããšã¯ã§ããªããããããŒã¿ããŒã¹å ã§æ£ç¢ºã«äœããæ€çŽ¢ããããšã¯ã§ããŸããã ãããã£ãŠãCouchDBã䜿çšããŠãµã€ãã§æ€çŽ¢ãæŽçããããšã¯ã§ããŸããã ãããã®åé¡ã«ã¯ããŸããŸãªè§£æ±ºçããããŸããããããã¯ãã¹ãŠèªè»¢è»ã§ãã ççŽã«èšã£ãŠãããã¯å¿ ãããããã»ã©æªãããã§ã¯ãããŸãããå€ãã®å Žåã蚪åè ãäœãæ¢ãããããç解ããããšãã§ããŸãã ãã1ã€ã®éèŠãªãã€ã³ãããããŸããã¢ã¯ã»ã¹ã®å°ãªããµã€ãã§ã¯ãæ€çŽ¢ã¯ã»ãšãã©å¿ èŠãããŸããã ãŸãã倧èŠæš¡ãªããŒã¿ã«ã§ã¯ãæ€çŽ¢ã®é¢é£æ§ãååã§ããå¿ èŠããããããåçŽãªLIKE / LOCATEã¯ãšãªã§ã¯å¯Ÿå¿ã§ããŸããã
ãã®åé¡ã®ç°¡åãªè§£æ±ºçã¯ãYandexã®Site SearchãŸãã¯Googleã®ã«ã¹ã¿ã æ€çŽ¢ãšã³ãžã³ã䜿çšããããšã§ãã
ãã®åé¡ã«å¯Ÿããããè€éã§äžå¯æ¬ ãªè§£æ±ºçã¯ã å¥ã®æ€çŽ¢ãµãŒããŒã䜿çšããããšã§ãã SphinxãApache SolrãLuceneïŒããã¥ã¡ã³ãã§èšåãããŠããcouchdb-luceneã®æããããŸãïŒã å®éãããã¯å¥ã®èšäºã®ãããã¯ãªã®ã§ãããã§ã¯ããã«çŠç¹ãåãããŸããã
ããã«ãé ã§ã¯å šææ€çŽ¢ãšã¿ã°ã«ããæ€çŽ¢ãæ確ã«åé¢ããå¿ èŠããããŸãããå€èŠ³ã¯URLã§äŒŒãŠããŸãã
ãžãªæ€çŽ¢
CouchDBã®å¥ã®åé¡ã¯ãããšãã°Nã¡ãŒãã«ã®ååŸå ã«ãããã¹ãŠã®ãªããžã§ã¯ããæ€çŽ¢ãããžãªãµãŒãã§ãã SQLã«äŒŒãããŒã¿ããŒã¹ã§ã¯ããã®ã¿ã¹ã¯ã¯ã緯床ãšçµåºŠã«ãã£ãŠ2ã€ã®ãã€ã³ãéã®è·é¢ã決å®ã§ããå°ããªé¢æ°ã䜿çšããŠå®è£ ãããŸãã CouchDBã§ã¯ãããŒã«ãœãŒãã¹ã±ãŒã«ã1ã€ãããªããããæ£æ¹åœ¢ã«è©²åœãããã¹ãŠã®ãã€ã³ããèŠã€ããããšã¯ã»ãšãã©äžå¯èœã§ãã ãã ããTwitterã®CouchDBã®èè ã¯ãMongoDBã§å®è£ ãããŠããã®ãšåãæ¹æ³ã§ãã€ãŸãGeohashã®ã¢ã€ãã¢ã䜿çšããŠããžãªæ€çŽ¢ãå®è£ ã§ãããšè¿°ã¹ãŠããŸãã ããã¯ã ä»»æã®åº§æšãæ°å€ãšè±æ°åã®ããã·ã¥ãšããŠè¡šçŸã§ãããšããäºå®ã«åºã¥ããŠããŸã ã ãã®å Žåã座æšãããæ£ç¢ºã«ç€ºãããã»ã©ãããã·ã¥ã®é·ããé·ããªããŸãã ãããã£ãŠããžãªããã·ã¥ãããŒãšããŠæž¡ããstartkey / endkeyãã©ã¡ãŒã¿ãŒã§ãã®é·ããå€æŽããŠæ€çŽ¢ååŸãæå®ã§ããŸãïŒãã¡ãããããã¯æ£ç¢ºãªååŸã§ã¯ãããŸããïŒã ãžãªããã·ã¥ã®å®è£ ã¯ãããããããŸã ããã€ã§ããããã«æ £ããããšãã§ããŸãããç¬èªã®ãæžãããšãã§ããŸã ã
ããŒã¿ã®ããã¯ã¢ãã
ããŒã¿ããã¯ã¢ããã¯ãCouchDBã§æ°ã«å ¥ã£ãŠãããã®ã®1ã€ã§ãã ããã¯ã¢ããã¯ã/ var / lib / couchdbãã£ã¬ã¯ããªããããŒã¿ããŒã¹ãã¡ã€ã«ãã³ããŒããã ãã§å®è¡ãããŸãã CouchDBãµãŒããŒããªãã®å Žåã«ã®ã¿ãã¡ã€ã«ãã³ããŒã§ããããšã«æ³šæããŠãã ãããããããªããšããã¹ãŠã®ããŒã¿ããŒã¹ãã¡ã€ã«ãç¡å¹ã«ãªããŸãã ãããã£ãŠãäžè¬çãªæé ã¯æ¬¡ã®ãšããã§ãã
- CouchDBãµãŒããŒããªãã«ããŸã
- å¿ èŠãªããŒã¿ããŒã¹ãã³ããŒããŸã
- CouchDBãµãŒããŒã®é»æºãå ¥ããŸã
ãã¹ãŠã®ããŒã¿ããŒã¹ãã¡ã€ã«ãšãã¥ãŒã察å¿ããCouchDBãŠãŒã¶ãŒã«å±ããŠããå¿ èŠãããããšãå¿ããªãã§ãã ããããããã£ãŠãå¿ èŠã«å¿ããŠchownãŠãŒãã£ãªãã£ã䜿çšããŠã³ããŒããã³ã€ã³ã¹ããŒã«ãããšãã«ãã¡ã€ã«æš©éã確èªããŠãã ããã
ãã®æçš¿ã¯1999幎㫠Habrauserã«ãã£ãŠäœæããã圌ã®ãªã¯ãšã¹ãã«å¿ããŠå ¬éãããŸããã