JSON

JSON 知识量:10 - 17 - 48

8.2 数据操作><

CouchDB API- 8.2.1 -

CouchDB数据库通过HTTP请求资源的方式来获取数据库中的数据。具体来说,是通过URL的方式来请求资源,而CouchDB则使用API进行请求处理和响应。如果在本地安装了CouchDB数据库,可以使用如下语句来查询:

http://localhost:5984/accounts/

返回的JSON格式数据为:

{
    "db_name": "accounts",
    "doc_count": 2,
    "doc_del_count": 0,
    "updata_seq": 7,
    "purge_seq": 0,
    "compact_running": false,
    "disk_size": 288773,
    "data_size": 1248,
    "instance_start_time": "1432493477584481",
    "disk_format_version": 6,
    "committed_update_seq": 7
}

其中的“doc_count”键值对的含义是数据库中包含多少份文档。可以通过唯一标识符来查询具体信息。如果不知道唯一标识符,可以通过以下语句来查询:

http://localhost:5984/accounts/_all_docs

运行以上语句的结果为:

{
    "total_rows": 2,
    "offset": 0,
    "rows": [
        {
            "id": "456456ac4654354f486543544",
            "key": "456456ac4654354f486543544",
            "value": {
                "rev": "1-8a5466435464545468546468"
            }
        },
        {
            "id": "998456ac4654354f486543544",
            "key": "998456ac4654354f486543544",
            "value": {
                "rev": "1-3e2466435464545468546468"
            }
        }
    ]
}

有了以上信息就可以查询某个账户信息了:

http://localhost:5984/accounts/456456ac4654354f486543544

结果为:

{
    "_id": "998456ac4654354f486543544",
    "_rev": "1-3e2466435464545468546468",
    "firstName": "John",
    "lastName": "James",
    "address": {
        "street": "552 sweet st",
        "city": "Forks",
        "state": "OR",
        "zip": "58942"
    },
    "age": 48,
    "gender": "male",
    "famous": false
}

如果添加新账户,可以使用POST方法来请求http://localhost:5984/accounts/,其HTTP请求头为:

POST /accounts/ HTTP/1.1
Host:localhost:5984
Content-Type:application/json
Cache-Control:no-cache

请求体为:

{
    "firstName": "Sophy",
    "lastName": "Jeff",
    "address": {
        "street": "566 Fase st",
        "city": "NewYork",
        "state": "NY",
        "zip": "23102"
    },
    "age": 32,
    "gender": "female",
    "famous": false
}

如果HTTP请求成功(添加成功),CouchDB API会将JSON格式的响应信息发送回来,其中包含了新创建文档的标识符:

{
    "ok": true,
    "id": "123656ac4654354f486543501",
    "rev": "1-365466435464545468546422"
}

如果要更新账户信息,可以通过在POST请求该资源的URL时,将“_id”和“_rev”这两个键值对加入请求体来实现。

如果要删除账户信息,可以调用HTTP的DELETE方法,并将rev标识符作为query string的参数传入URL。

专业术语和重要概念- 8.2.2 -

专业术语:

  • 关系型数据库:一种将存储的数据用可以辨识的关系进行结构化存储的数据库。

  • NoSQL数据库:一种不通过存储数据间的关系来存储的数据库。

  • CouchDB:一种面向文档的NoSQL数据库存储类型,使用JSON文档的形式来存储数据。

重要概念:

  • 在关系型数据库中,常常会存在表、列、行以及它们之间的关系,其中会用到主键和外键。

  • NoSQL数据库有许多种,它们拥有与传统的关系型模型不同的数据存储与利用方法。

  • CouchDB是一种面向文档的NoSQL数据库,它存储和管理JSON文档,会在存储与获取数据的同时维护好数据的结构,它使用基于HTTP协议的API来获取作为JSON文档资源的数据,CouchDB使用JavaScript作为查询语言。