couchdb 视图操作_CouchDB简单应用

CouchDB是众多称作NoSQL解决方案中的一员。与众不同的是,CouchDB是一个面向文档的数据库,在它里面所有文档域(Field)都是以键值对的形式存储的。域(Field)可以是一个简单的键值对、列表或者是map。CouchDB会为存储到数据库中的每一个文档分配一个文档级别的唯一标识符(id),同时每次将变动保存到数据库中时还会分配一个修订号(rev)。NoSQL数据库的出现代表着传统的关系...
摘要由CSDN通过智能技术生成

CouchDB是众多称作NoSQL解决方案中的一员。与众不同的是,CouchDB是一个面向文档的数据库,在它里面所有文档域(Field)都是以键值对的形式存储的。域(Field)可以是一个简单的键值对、列表或者是map。

CouchDB会为存储到数据库中的每一个文档分配一个文档级别的唯一标识符(id),同时每次将变动保存到数据库中时还会分配一个修订号(rev)。

NoSQL数据库的出现代表着传统的关系型数据库的转变,它能够提供很多好处,当然其自身也面临着挑战。CouchDB为我们提供了下面的特性:

容易地在多个服务器实例之间进行数据库复制

快速地索引和检索

REST风格的文档插入、更新、检索和删除的接口

基于JSON的文档格式(更容易地在不同语言之间转换)

为用户选择的语言提供多个库(指一些流行的语言)

通过_changes订阅数据更新

从NoSQL系统可视化向导中可以找到一个非常出色的工具,它能帮你决定哪一个数据存储适合你。该指南描述了选择数据库系统时应该关注的三个方面(NoSQL和关系型数据库都是如此)。在我们的项目中使用该指南筛选数据库时会关注下面的特性:

可用性

一致性

分区容忍度

CouchDB侧重于AP(可用性和分区容忍度),这正是满足我们的数据关注点所要寻找的数据库(更不用说在连续的或者点对点的设备间进行数据复制的能力)。相比之下,MongoDB侧重于CP(一致性和分区容忍度),像Neo4J这样的数据库则提供了特有的面向图形的结构。

另一个出色的工具是这篇博客文章,它对Cassandra、MongoDB、CouchDB、Redis、Riak、Hbase和Membase做了比较。

当然,对于一个给定的项目你很可能有多个工具,换言之,这就需要明确需求并找到合适的工具以满足这些需求。

我们将如何使用CouchDB?

我们将要构建一个简单的本地事件数据库,用于存储一些事件以及这些事件发生的位置。我们将会把它分为两个文档,通过它们的文档id将两者关联起来。这两个文档是:

事件

位置

(本文稍后会为这两个文档创建Java类)

Jcouchdb

我们将使用jcouchdb与CouchDB数据库交互。这是一个经过良好测试并且易于使用的Java库,它会自动地将Java对象序列化、反序列化进CouchDB数据库。选择jcouchdb的另一个原因是它和CouchDB自身的API非常相似。

Jcouchdb的替代方案有那些?

如果你不喜欢jcouchdb,或者想要尝试其他的库,那么可选项也有很多,如:

其中有少数已经很久没有更新了,所以,如果你要做一些测试,请确保预留一些时间解决程序的问题。

开始

从哪儿开始呢?我们将会使用Maven3构建这个示例项目。哪怕不知道Maven也能理解代码,但是为了构建并运行示例项目你需要安装它。可以从Maven网站找到Maven3.

指南的这个部分假定你具有一定的Maven3知识,但是如果你不了解Maven,你可以直接使用从我们的库中下载的pom.xml文件并直接使用它。

我们将会跳过POM创建的初始部分,但是如果需要创建POM文件的细节或者仅仅想要开始编码可以从我们的github库中下载它。首先要做的就是指定需要的jcouchdb和Spring组件。

3.1.0.RELEASE

2.0.0.RELEASE

0.11.0-1

...

在文件顶部指定版本信息的一个原因是,这样可以很容易地一次性将一个库(或者一组库,如Spring)快速地更新到新版本。

com.google.code.jcouchdb

jcouchdb

${jcouchdb.version}

org.springframework

spring-context

${spring.framework.version}

org.springframework

spring-aop

${spring.framework.version}

org.springframework

spring-test

${spring.framework.version}

org.springframework.ws

spring-xml

${spring-xml.version}

...

在初始化依赖设置完成之后,我们需要为项目设置剩下的目录结构。我们将遵循标准的Maven设置:

-src

-main

-java

-resources

-webapp

-test

-java

-resources

设置CouchDB

完成了初始化设置之后,接下来就需要设置CouchDB数据库了。幸运的是,有一些非常好的解决方案可以帮助我们快速地启动并运行CouchDB。

它们都提供了免费的账号,能够完美的设置好数据库,以便我们开始开发工作。  (单击放大图片)

图1.CouchAnt首页

(单击放大图片)

图2.CouchAnt Futon页面

(单击放大图片)

图3。Iris Couch注册页面

(单击放大图片)

图4. Iris CouchFuton页面

另一个选择是在本地机器(或主机)上安装CouchDB。我们并不会带你在你的操作系统上安装它,但是在CouchDB的wiki上有一些非常好的说明。

在账号创建完成之后(或者在设置并启动CouchDB之后),将需要创建一个的数据库。在我们的应用程序中选择了couchspring作为数据库名。你可以随意取名,但是当我们开始配置设置时需要将其修改为对应的名字。

在CloudAnt中,可以在数据库截图(图1)中创建数据库,而对于Iris Couch来说可以直接在Futon页面(管理CouchDB实例的用户界面)中创建。关于管理页面的更多信息可以在CouchDB wiki中找到。本文并不会过多的使用管理页面,但是这是一个非常好的操作视图的工具。

图5.在管理页面中创建数据库的步骤1

图6.在Futon页面中创建数据库的步骤2

配置jcouchdb、Spring和POJOS

在新数据库设置完成之后,我们需要:

创建基础POJO对象

提供一个json配置映射,它能够将CouchDB使用的Java对象和JSON对象自动地进行转换

Spring 配置

首先,让我们创建一些对象!

带有自定义注解的POJOs

我们将要为事件系统创建的基础对象是哪些?

Event——存储来自于外部源(如Eventful.com)或Web界面的事件

Place——存储事件的发生位置。

同时,还会结合使用一些其他的对象(从外部源中抽取数据时做一些额外的数据处理):

AppDocument ——由json映射实用程序所使用的用来定义文档类型识别域的基础对象

Description——用于格式化并过滤事件的描述

Location——用于记录给定位置/地点的经纬度

首先,需要创建基础类AppDocument

AppDocument.java

package com.clearboxmedia.couchspring.domain;

import org.jcouchdb.document.BaseDocument;

import org.svenson.JSONProperty;

public class AppDocument extends BaseDocument {

/**

* Returns the simple name of the class as doc type.

*

* The annotation makes it a read-only property and also

* shortens the JSON name a little.

*

* @return document type name

*/

@JSONProperty(value = "docType", r

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值