精华内容
参与话题
问答
  • CouchDB

    2020-12-01 11:27:45
    <div><p>There is a lot of problems related to CouchDB connection. Thanks for couchDB demo, but this's only about displaying data from couch. There's no examples of updating/editing of data. I ...
  • CouchDb

    千次阅读 2018-12-11 17:45:48
    Couchdb数据库 一、介绍 1、简介 官网上的说明:CouchDb是一个存储Json文档的数据库。CouchDB是一个完全包含Web的数据库。使用JSON文档存储数据。使用Web浏览器通过HTTP访问您的文档。使用JavaScript 查询,...

    Couchdb数据库

    一、介绍

    1、简介

    官网介绍
    官网上的说明:CouchDb是一个存储Json文档的数据库。CouchDB是一个完全包含Web的数据库。使用JSON文档存储数据。使用Web浏览器通过HTTP访问您的文档。使用JavaScript 查询,组合和 转换文档。CouchDB适用于现代网络和移动应用程序。您可以使用CouchDB的增量复制高效地分发数据。(概括说couchedb是一个面向文档的数据库)

    2、优点

    (1)、易用性:只要搭建好服务,访问http://localhost:5984/_utils/
    (2)、并发性:(哈哈)这个没有测试

    3、技术概括

    couchDB的底层是一个B-tree的存储结构,为提高效率,所有的数据的插入或更新都是直接在树的叶子节点添加,不删除旧节点,通过版本号来确定最新的数据--版本号还能用来解决并发写的冲突。所以数据文件会越来越大,可以在适当地时间运行compact过程或replication过程,会删除旧文件,使得数据文件得到压缩。(想起之前使用过Caché数据库:基于二叉树的存储结构,虽然不太懂,但是知道这种基于树型结构的数据库有个明显的特点查询比较快)

    couchdb数据库有个明显的特征:自己生成_id ,_rev

    二、安装

    本文以Linux下安装来说明
    (1)、查看系统版本
    在这里插入图片描述
    (2)、安装rpm仓库
    在这里插入图片描述
    (3)、安装CouchDB
    在这里插入图片描述
    注意:如果安装不成功,分开安装(以&&为界分步安装)
    (4)、启动数据库
    系统的默认安装路径是:
    在这里插入图片描述在这里插入图片描述
    (5)、启动数据库
    启动成功,访问 localhost:5984 或者nodeIp:5984
    页面工具
    访问:[数据库操作界面]
    http://IP地址:5984/_utils/)
    在这里插入图片描述

    我们来看下数据是怎么存储的

    在这里插入图片描述

    三、springboot集成couchdb

    由于Couchdb网上资料较少,主要从官网api来了解使用
    官网api:https://helun.github.io/Ektorp/reference_documentation.html#d100e952

    【后面继续!!!】
    ps:下班了
    在这里插入图片描述

    展开全文
  • couchdb

    2018-11-15 16:02:00
    1、简介 Apache CouchDB数据库,它类似于Redis,Cassandra和MongoDB,也是一个NoSQL数据库。 CouchDB将数据存储为非关系性的JSON文档。 couchdb内部通讯采用httpClient。 2、安装 ...

    1、简介

    Apache CouchDB数据库,它类似于Redis,Cassandra和MongoDB,也是一个NoSQL数据库。 CouchDB将数据存储为非关系性的JSON文档。
    couchdb内部通讯采用httpClient。

    2、安装

    https://www.w3cschool.cn/couchdb/couchdb_installation.html
    1)远程访问需配置
    修改/opt/couchdb/etc/下local.ini文件:
    1.x版本在[httpd]节点下修改,2.x版本在[chttpd]节点下修改
    port = 5984
    bind_address = 0.0.0.0

    2)设置couchdb用户名密码
    修改/opt/couchdb/etc/下local.ini文件:
    [admins]
    用户名 = 密码

    3、启动

    在根目录下
    /etc/init.d/couchdb start
    /etc/init.d/couchdb stop
    /etc/init.d/couchdb restart
    开机自动启动:
    chkconfig couchdb on

    4、curl命令操作数据库

    https://www.w3cschool.cn/couchdb/couchdb_curl_futon.html
    http://www.cnblogs.com/oloroso/p/9767546.html

    5、java语言操作数据库

    ** ektorp **

        public static void createDesign(PrintWriter out) throws MalformedURLException {
            // Default connector for testing
            HttpClient httpClient = new StdHttpClient.Builder().url("http://username:password@ip:port").build();
    //      HttpClient httpClient = new StdHttpClient.Builder().build();
            CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
            CouchDbConnector db = new StdCouchDbConnector("ektorp", dbInstance);
            db.createDatabaseIfNotExists();
            String viewString = "id_view";
            
            if (!db.contains(viewString)) {
                DesignDocument dd = new DesignDocument(viewString);
                String mapColor = "red; white";
                String mapSize = "big; small";
                    
                DesignDocument.View view = new DesignDocument.View(mapColor);
                dd.addView("mapColor", view);
            
                view = new DesignDocument.View(mapSize);
                dd.addView("mapSize", view);
                
                db.create(dd);
                out.println("add view = " + view.toString());
            } else {
                DesignDocument designDoc;
                List<String> docIds = db.getAllDocIds();
                String docId = "";
                String docVersion = "";
                for (int i = 0; i < docIds.size(); i ++ ) {
                    docId = docIds.get(i);
                    out.println("get docId = " + docId);
                    if (docId.equals(viewString)) {
                        out.println("delete docId = " + docId);
    //                  docVersion = db.getCurrentRevision(docId);
                        docVersion = db.getRevisions(docId).get(0).getRev();
    //                  designDoc = db.get(DesignDocument.class, docId);
    //                  db.delete(designDoc);   
                        db.delete(docId, docVersion);
                        out.println("delete view id = " + docId);
                    }
                }
            }
        }
    

    ** lightcouch **

    public class CouchdbByLightCouchTest extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            PrintWriter out = resp.getWriter();
            resp.getWriter().println("CouchdbByLightCouchTest");
            try {
                callCouch(out);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public CouchDbProperties getProperties() {
            CouchDbProperties properties = new CouchDbProperties()
                    .setUsername("username")
                    .setPassword("password")
                    .setDbName("lightcouch-db-load")
                    .setCreateDbIfNotExist(true)
                    .setProtocol("http")
                    .setHost("ip")
                    .setPort(5984)
                    .setMaxConnections(MAX_CONNECTIONS);
            return properties;
        }
    
        private void callCouch(PrintWriter out) {
            dbClient = new CouchDbClient(getProperties());
    
            JsonObject jsonObject = null;
            Response resp = null;
    
            List<String> allDbs = dbClient.context().getAllDbs();
            out.println("allDbs = " + allDbs);
    
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("_id", "map-id");
            map.put("title", "value");
            resp = dbClient.save(map);
            jsonObject = dbClient.find(JsonObject.class, resp.getId());
            dbClient.remove(resp.getId(), resp.getRev());
    
            JsonObject json = new JsonObject();
            json.addProperty("_id", "json-id");
            json.add("array", new JsonArray());
            resp = dbClient.save(json);
            jsonObject = dbClient.find(JsonObject.class, resp.getId());
            dbClient.remove(resp.getId(), resp.getRev());
    
    //        String uri = dbClient.getBaseUri() + "_stats";
    //        jsonObject = dbClient.findAny(JsonObject.class, uri);
    
            String jsonstr = "{\"title\":\"val\"}";
            jsonObject = dbClient.getGson().fromJson(jsonstr, JsonObject.class);
            resp = dbClient.save(jsonObject);
            dbClient.remove(resp.getId(), resp.getRev());
    
            // shutdown the client
            dbClient.shutdown();
    
        }
    }
    

    转载于:https://www.cnblogs.com/linshuqin/p/9964128.html

    展开全文
  • Couchdb

    2018-11-18 21:00:32
    Couchdb Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用...

    Couchdb

    Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。
    使用json api进行查询

    默认端口5984

    Couchdb 垂直权限绕过漏洞(CVE-2017-12635)

    CVE-2017-12635是由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员,属于垂直权限绕过漏洞。
    影响版本:小于 1.7.0 以及 小于 2.1.1

    向restful api发送如下数据包

    PUT /_users/org.couchdb.user:vulhub HTTP/1.1
    Host: your-ip:5984
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/json
    Content-Length: 90
    
    {
      "type": "user",
      "name": "vulhub",
      "roles": ["_admin"],
      "password": "vulhub"
    }
    

    直接访问url,用burp抓包
    在这里插入图片描述
    可以看到只有admin可以添加用户
    发送包含两个roles的数据包,即可绕过限制

    在这里插入图片描述
    添加成功,用户名/密码:vulhub/vulhub登录成功
    在这里插入图片描述

    Couchdb 任意命令执行漏洞(CVE-2017-12636)

    CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置query_server,这个配置项在设计、执行view的时候将被运行。
    影响版本:小于 1.7.0 以及 小于 2.1.1

    这个漏洞和上面的12635可以组成一个漏洞利用链,这个漏洞的利用前提需要登录用户,利用之前需要用之前的漏洞添加一个账号。

    Couchdb 2.x和和1.x的API接口有一定区别,所以这个漏洞的利用方式也不同。

    1.x

    在这里插入图片描述
    给query_servers添加配置的时候出现这种情况,不知道怎么解决…

    2.x

    2.x相比于1.x加入了集群的概念,所以修改配置的API需要增加node name。
    reference:
    https://www.anquanke.com/post/id/87256

    展开全文
  • couchDB

    2016-07-05 17:49:58
     到安装目录/bin下cmd运行couchdb.bat 3.开始使用 (GET/PUT/DELETE/POST)  默认每个document都会生成一个_id,_rev(rev用于控制版本,每改动一次rev都会变化)  bind_address = 127.0.0.1 改为本机ip地址,...

    1.install 具体的就不说了

    2.start server 

       到安装目录/bin下cmd运行couchdb.bat

    3.开始使用 (GET/PUT/DELETE/POST)

      默认每个document都会生成一个_id,_rev(rev用于控制版本,每改动一次rev都会变化)

      bind_address = 127.0.0.1 改为本机ip地址,这样其他机器也能访问这个数据库

       两个问题,

       1、使其他机器也访问这个数据库

         (etc下local.ini里的bind_address需要设置0,0,0,0)

           (etc下default.ini里的bind_address是127.0.0.1)

     

       2、POST的例子

       curl http://127.0.0.1:5984 会返回一串json数据

       curl -X GET http://127.0.0.1:5984/_all_dbs  返回所有的数据库

       curl -X PUT http://127.0.0.1:5984/baseball 新建一个数据库,会返回ok。如果重名,会失败

       curl -X DELETE http://127.0.0.1:5984/baseball 删除一个数据库

     

       curl -X PUT http://127.0.0.1:5984/databasename/document_id -d {"key":"value"} 向databasename下的         document_id的文档添加字段

    4.可视化界面 

       浏览器访问 http://127.0.0.1:5984/_utils/

     

    5.根据github上的步骤来配置npm私有仓库

    6.npm config edit 再文件里配置仓库(ip地址要写couchDB机器的地址)

      原来的registry是这样的:registry=http://registry.cnpmjs.org/

       registry = http://192.168.191.1:5984/registry/_design/app/_rewrite

    7.创建一个标准的包

       在本机下2_1.create_pack这个目录下创建了一个包。一定要有package.json文件

    8.在该包下执行命令

        npm adduser (创建用户)

           adduser之后,可以用npm edit config来修改注册的用户名

        npm publish 

           publish后想unpublish可以用npm unpublish或npm owner rm来撤销发布的包

           publich的两次包package.json里的version字段必须不同,不然会发布失败

    展开全文
  • CouchDB fails to start

    2020-12-01 23:36:53
    /docker-entrypoint.sh /opt/couchdb/bin/couchdb ++ curl --output /dev/null --silent http://127.0.0.1:5984/_utils + '[' 0 -eq 30 ']' + echo 'waiting for CouchDB to ...
  • CouchDB AJAX交互

    2012-01-11 11:36:21
    As I use the CouchDB I would like to know the way to interact with the CouchDB server. However there were few examples but I have few concerns over that. <p>1) As my application is deployed in a web...
  • Couchdb 2.0 support

    2020-11-20 18:42:24
    <p>I know there are very few changes from couchdb 1.x to couchdb 2.0 w.r.t this feature. <p>But I have couple questions: 1. In new Couchdb 2.0, the multi-master clustering is supported, that means one...
  • CouchDB 2.0 support

    2020-11-20 18:42:25
    m migrating my couchdb instance to 2.0 version and found some strange problem with lucene integration. It looks like lucene hangs on indexing process forever (until timeout error). <p>I have couchdb ...
  • CouchDB authenticator

    2020-11-29 22:06:22
    re using CouchDB as our database and would thus like to use a CouchDB authenticator. It seems relatively straightforward to create one based on pac4J-mongo and using the ...
  • remove couchdb

    2020-12-02 03:07:28
    The CouchDB source artifacts have moved to https://github.com/knative-sandbox/eventing-couchdb </code></pre> <p><strong>Docs</strong></p> <p>/hold</p><p>该提问来源于开源项目:knative/...
  • waiting for couchDB

    2020-12-02 21:56:59
    <div><p>i tried my first hoodie app in a Ubuntu server which already has a CouchDB running. <p>but... $ hoodie start <p>.d$b. .d$b. .d$$$$$$b. .d$$$$$$b. .d$$$$$$b. .d$b..d$$$$$$$$b. $$$$$..$$$$$.$$$$...
  • issue about couchdb

    2020-12-02 15:56:29
    <p><strong>TASK [couchdb : wait until the CouchDB in this host is up and running] </strong><strong>*</em></strong><strong><em>*</em></strong><strong><em>*</em></strong><strong><em>*</em></strong>...
  • /usr/bin/python /opt/couchdb-lucene/target/couchdb-lucene-0.6-SNAPSHOT/tools/couchdb-external-hook.py [httpd_db_handlers] _fti = {couch_httpd_external, handle_external_req, <<"fti"&...
  • sofa-CouchDBCouchDB 的独立博客,使用 CouchDB 的书来做主要内容,这方便了所有用来在这博客上交流他们的想法,并且里面提供了很多帮助指导,这都是 HTML,Javascript 和 CouchDB 的结晶。目前支持任何人在上面...
  • 通过《CouchDB权威指南》,你将学会如何通过CouchDB的RESTful Web接口来使用它,此外你还会熟悉CouchDB的一些主要特性,比如简单的文档的CRUD(创建、读取、更新、删除); 高级的MapReduce,部署优化等更多的内容...
  • hoodie start</code> the status is <code>Waiting for CouchDB</code> and <em>FAILED</em> after 20 secs or so. <p>So i don't really know what to do and asking for help. I have included the error ...
  • CouchDB guide

    2020-12-02 22:33:07
    <div><p><a href="https://docs.couchdb.org/en/stable/install/unix....Uberspace/lab</p></div>
  • Basic couchdb support

    2020-11-25 16:15:23
    <div><p>For my project, I use CouchDB database. So I had to work with FOSOAuthBundle and CouchDB. I've use MongoDB Document and just edit existant couchdb model. <p>I still have some problem to ...
  • CouchDB入门

    2020-01-26 21:40:09
    在CentOS8上默认的yum源是没有couchdb包的,因此需要添加couchdb的yum源。创建一个新文件 /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,内容如下: [bintray--apache-couchdb-rpm] name=bintray--apache-...
  • <p>background: I have a mysql database that I'm going to move over into couchdb, in that database are some tables, "books", and "users". I login to the web application via a login form and currently ...
  • Replicate to remote CouchDB

    2020-12-02 17:26:59
    ve been struggling since some days to replicate data to a remote couchDB after I've encrypted my local Pouch with crypto-pouch. <p>First I thought it was not working because I was using a filter,...
  • </li><li>[ ] Update <a href="https://github.com/apache/couchdb/blob/master/rebar.config.script">rebar.config.script</a> with the correct tag once a new Fauxton release is made</li></ul>该提问来源于...

空空如也

1 2 3 4 5 ... 20
收藏数 2,982
精华内容 1,192
关键字:

couchdb