- 浏览: 235462 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (101)
- Practice (17)
- Model (15)
- Prototype (2)
- Integration (6)
- GWT (3)
- Android (16)
- Lab (6)
- Ubuntu (4)
- Data Structure(D,S) (1)
- 社会观察员 (1)
- python (14)
- redis (0)
- mysql (9)
- php (0)
- Data Structure(D (1)
- haproxy (2)
- Shell (5)
- Zabbix (1)
- CentOS (1)
- sqlplus (1)
- rlwrap (1)
- Oracle (2)
- schema (2)
- user (1)
- accredit (1)
- Delphi (2)
- nagios (1)
- nginx (0)
最新评论
-
白云飞:
兄弟能不能发一份完整的源码到我邮箱?luochengwei20 ...
【Python真的很强大】程序Log实时监控 -
myreligion:
nice job!
解决一个棘手的bug: java.lang.NoClassDefFoundError: android.os.AsyncTask -
yw9002:
你这个貌似提交的时候整个页面都会刷新。
AjaxAnyWhere+Struts的一个应用(demo/feature crew) -
fkpwolf:
这总结偏向于细节了,流水账
Android app项目和开发总结 -
crazybull:
期待详细总结~~~
Android app项目和开发总结
实验环境: Ubuntu 7.10, CouchDB 0.8.0, Curl in shell, Httpheader plugin for firefox
- CouchDB以及商业应用, Reference URL: http://couchdb.apache.org/ && http://wiki.apache.org/couchdb/CouchDB_in_the_wild
- 启动和打开后台管理
- $ sudo /usr/local/bin/couchdb start
Apache CouchDB 0.8.0-incubating (LogLevel=info)
Apache CouchDB is starting. - 在browser(i.e. FF) 输入 http://localhost:5984/_utils/
- www目录(作简单的测试,你可以在这里): $ /usr/local/share/couchdb/www, $ ls;
browse CouchDbToDo couch_tests.html favicon.ico grid.css image index.html jquery.editable-1.3.3.js myTodo.html replicator.html script style todo.css todo.html
- $ sudo /usr/local/bin/couchdb start
- CouchDB's javascript API
// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. (function($) { $.couch = $.couch || {}; $.fn.extend($.couch, { allDbs: function(options) { options = options || {}; $.ajax({ type: "GET", url: "/_all_dbs", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("An error occurred retrieving the list of all databases: " + resp.reason); } } }); }, db: function(name) { return { name: name, uri: "/" + encodeURIComponent(name) + "/", compact: function(options) { options = options || {}; $.ajax({ type: "POST", url: this.uri + "_compact", contentType: "application/json", dataType: "json", data: "", processData: false, complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 202) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The database could not be compacted: " + resp.reason); } } }); }, create: function(options) { options = options || {}; $.ajax({ type: "PUT", url: this.uri, contentType: "application/json", dataType: "json", data: "", processData: false, complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 201) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The database could not be created: " + resp.reason); } } }); }, drop: function(options) { options = options || {}; $.ajax({ type: "DELETE", url: this.uri, dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The database could not be deleted: " + resp.reason); } } }); }, info: function(options) { options = options || {}; $.ajax({ type: "GET", url: this.uri, dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("Database information could not be retrieved: " + resp.reason); } } }); }, allDocs: function(options) { options = options || {}; $.ajax({ type: "GET", url: this.uri + "_all_docs" + encodeOptions(options), dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("An error occurred retrieving a list of all documents: " + resp.reason); } } }); }, openDoc: function(docId, options) { options = options || {}; $.ajax({ type: "GET", url: this.uri + encodeURIComponent(docId) + encodeOptions(options), dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The document could not be retrieved: " + resp.reason); } } }); }, saveDoc: function(doc, options) { options = options || {}; if (doc._id === undefined) { var method = "POST"; var uri = this.uri; } else { var method = "PUT"; var uri = this.uri + encodeURIComponent(doc._id); } $.ajax({ type: method, url: uri + encodeOptions(options), contentType: "application/json", dataType: "json", data: toJSON(doc), complete: function(req) { var resp = $.httpData(req, "json") doc._id = resp.id; doc._rev = resp.rev; if (req.status == 201) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The document could not be saved: " + resp.reason); } } }); }, removeDoc: function(doc, options) { options = options || {}; $.ajax({ type: "DELETE", url: this.uri + encodeURIComponent(doc._id) + encodeOptions({rev: doc._rev}), dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("The document could not be deleted: " + resp.reason); } } }); }, query: function(mapFun, reduceFun, language, options) { options = options || {}; language = language || "javascript" if (typeof(mapFun) != "string") { mapFun = mapFun.toSource ? mapFun.toSource() : "(" + mapFun.toString() + ")"; } var body = {language: language, map: mapFun}; if (reduceFun != null) { if (typeof(reduceFun) != "string") reduceFun = reduceFun.toSource ? reduceFun.toSource() : "(" + reduceFun.toString() + ")"; body.reduce = reduceFun; } $.ajax({ type: "POST", url: this.uri + "_temp_view" + encodeOptions(options), contentType: "application/json", data: toJSON(body), dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("An error occurred querying the database: " + resp.reason); } } }); }, view: function(name, options) { options = options || {}; $.ajax({ type: "GET", url: this.uri + "_view/" + name + encodeOptions(options), dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("An error occurred accessing the view: " + resp.reason); } } }); } }; }, info: function(options) { options = options || {}; $.ajax({ type: "GET", url: "/", dataType: "json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("Server information could not be retrieved: " + resp.reason); } } }); }, replicate: function(source, target, options) { options = options || {}; $.ajax({ type: "POST", url: "/_replicate", dataType: "json", data: JSON.stringify({source: source, target: target}), contentType: "application/json", complete: function(req) { var resp = $.httpData(req, "json"); if (req.status == 200) { if (options.success) options.success(resp); } else if (options.error) { options.error(req.status, resp.error, resp.reason); } else { alert("Replication failed: " + resp.reason); } } }); } }); // Convert a options object to an url query string. // ex: {key:'value',key2:'value2'} becomes '?key="value"&key2="value2"' function encodeOptions(options) { var buf = [] if (typeof(options) == "object" && options !== null) { for (var name in options) { if (name == "error" || name == "success") continue; var value = options[name]; if (name == "key" || name == "startkey" || name == "endkey") { value = toJSON(value); } buf.push(encodeURIComponent(name) + "=" + encodeURIComponent(value)); } } return buf.length ? "?" + buf.join("&") : ""; } function toJSON(obj) { return obj !== null ? JSON.stringify(obj) : null; } })(jQuery);
- CouchDB's RESTful API
文档库操作
-
-
查看所有库( 描述信息)
-
curl -X GET "http://localhost:5984/_all_dbs" ; Response: ["survey","test_suite_db_b","test_suite_db","test_suite_db_a","fruit","test","todo"]
-
-
查看单个库( 描述信息)
-
curl -X GET "http://localhost:5984/test/"; Response: {"db_name":"test","doc_count":0,"doc_del_count":0,"update_seq":112,"compact_running":false,"disk_size":15889}
-
-
创建
-
curl -X PUT "http://localhost:5984/testdb"; Response: {"ok":true}
-
-
删除
-
curl -X DELETE "http://localhost:5984/testdb"; Response: {"ok":true}
-
-
压缩
-
curl -X POST http://localhost:5984/test/_compact -H 'Content-Type: application/json' -d ''; Response: {"ok":true}
-
-
库同步或复制
-
[ 分布式] 查询(采用Map/Reduce)
-
视图( 即文档可视化)
-
文档操作(对当前库的)
- 查看所有文档
- curl -X GET "http://localhost:5984/test/_all_docs"; Response:
{"total_rows":1,"offset":0,"rows":[
{"id":"test","key":"test","value":{"rev":"4100948714"}},
{"id":"test2","key":"test2","value":{"rev":"107550922"}}
]}
- curl -X GET "http://localhost:5984/test/_all_docs"; Response:
-
打开文档
- 打开最新版本:
curl -X GET "http://localhost:5984/fruit/apple?revs_info=true"; Response:
{"_id":"apple","_rev":"2755175234","_revs_info":[{"rev":"2755175234","status":"available"}]} -
打开一个历史版本:
curl -X GET "http://localhost:5984/survey/_design/company?rev=2543967448"; Response: {"_id":"_design\/company","_rev":"2543967448"}
- 打开最新版本:
- 新增(更新)文档
- 删除文档
- 查看所有文档
-
发表评论
-
网页转pdf或图片[电脑版][Android 版]
2016-02-14 11:17 1518使用有道云笔记已有一年,整体体验良好。但它的网页 ... -
xml + xslt => html => pdf
2014-03-05 18:02 1809继上一篇:使用java将xml格式化,本blog主 ... -
haproxy使用总结
2012-10-17 17:19 1310DESCRIPTION HAProxy i ... -
Captcha的对立面OCR
2010-01-12 18:09 2381需求分析(从系统分析看): 下载网页上的验证码图片, ... -
聚合IpCamera到自己页面
2009-09-25 10:16 1573public class RobotPage extends ...
相关推荐
这是 CouchDB 的 RESTful API 的备忘单。 它显示了最常见和最常用的请求命令,并显示了每个部分的示例。 制作这份备忘单的动机实际上是在我在 SinnerSchrader 的工作中推动的(没有更多的内部结构......抱歉;-))...
Mango 是源自 MongoDB 的 Apache CouchDB 查询语言接口,也就是 CouchDB 的 MongoDB API 层。 标签:Cloudant
2. **Web应用**:CouchDB的RESTful API使其成为构建现代Web应用的理想选择。 3. **物联网**:CouchDB的轻量级特性和分布式特性使得它在物联网领域有着广泛的应用前景。 4. **大数据分析**:CouchDB的数据存储方式...
作为分布式数据库,CouchDB具备多版本并发控制(MVCC)、水平扩展性、RESTful API、不支持动态查询、原子性操作、数据可靠性、最终一致性和离线支持等特点。 多版本并发控制(MVCC)是CouchDB的显著特点之一,它允...
通过《CouchDB权威指南》,你将学会如何通过CouchDB的RESTful Web接口来使用它,此外你还会熟悉CouchDB的一些主要特性,比如简单的文档的CRUD(创建、读取、更新、删除); 高级的MapReduce,部署优化等更多的内容...
hapi-couchdb商店CouchDB REST和前端API范围目标是为静态应用程序创建非常简单的服务器,该服务器只能通过安全ID来存储,同步和共享数据。 在/api公开 *,并在/store.js公开一个预初始化的 。 * CouchDB在管理方中,...
CouchDB是一款开源的文档型数据库,支持分布式、RESTful API和JSON数据格式,特别适合于那些需要高度可用性和数据一致性的项目。 CouchDB的主要特点包括: 1. **JSON数据存储**:CouchDB以JSON格式存储文档,易于...
这通常涉及设置HTTP请求以访问CouchDB的RESTful API。 2. **配置复制**:在CouchDB中,复制是通过发送HTTP请求到源数据库,指定目标数据库来启动的。我们需要为每个源节点配置复制规则,使其向集群中的其他节点复制...
埃克托普 Ektorp是使用作为存储引擎的持久性API。 Ektorp的目标是将类似JPA的功能与CouchDB提供的简单性和灵活性相结合。特征以下是您应该在项目中考虑使用Ektorp的一些很好的理由: 丰富的领域模型。 利用提供的...
CouchDB提供了基于HTTP的RESTful API,用户可以通过HTTP请求操作数据库。主要的HTTP方法有GET、PUT、POST、DELETE,分别对应查看、创建、更新和删除文档。通过URL和请求体,可以实现对数据库的全面管理。 四、文档...
CouchDB是一款开源的文档数据库管理系统,以其独特的JSON数据模型、RESTful API和分布式系统设计而闻名。在深入探讨CouchDB源码之前,我们首先理解CouchDB的基本概念和工作原理。 CouchDB的核心是基于JSON...
标题中的"CouchDB 1.1"指的是一个特定版本的开源文档数据库系统,它使用JSON作为数据存储格式,并且支持RESTful API进行交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于解析...
CouchDB 是一个开源、分布式文档型数据库,它使用 JSON 作为数据格式,并支持 RESTful API 和多版本控制,非常适合用于 web 应用程序。CippyDB 提供了额外的功能,使得开发者可以实时监听数据库的变化,极大地提高了...
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB...
6. **HTTP API**:CouchDB完全基于HTTP协议,这意味着你可以通过简单的RESTful接口与数据库进行交互,这极大地简化了开发和集成过程。 7. **_replication_**:CouchDB的复制功能使其能够在不同的服务器之间无缝地...
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB...
- **RESTful API**:CouchDB使用HTTP协议进行通信,遵循REST原则,使得通过Web服务与数据库交互变得简单。 - **视图和MapReduce**:CouchDB使用MapReduce函数进行数据索引和查询,用户可以自定义视图逻辑,实现...