前言:
入职新公司有两个多月了,项目使用的是couchabse,springcloud+couchabse,开始整个项目只有我一个人,因此独自踩了两个月的坑后,特此记录下血泪史;主要是发现网上竟然找不到相关的文章,谷歌上也不多,特此为有可能需要用到couchabse的同行贡献一份绵薄之力,废话不多说,开始码字;主要参考文章:[spring-data-couchbase官方文档](https://docs.spring.io/spring-data/couchbase/docs/current/reference/html/#repositories.query-methods) 全英文的,慎点!
1、couchbase介绍及安装
我的oss地址可以提供下载,请点击,请勿重复下载,或者查看官网下载,需要科学上网
Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现。 CouchDB 是 Apache 基金会的顶级开源项目。
CouchDB是用Erlang开发的面向文档的数据库系统,其数据存储方式类似Lucene的Index文件格式。CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。 总结:couchabse集成的是redis及mongodb,保留了很多redis的配置,这也会体现在redis的数据存储方面,couchabse中的数据完全以json格式存储的,null或者""的数据是不会保存在couchabse中的
关于安装,首先去下载couchbase安装包:下载地址,ps,需要有梯子才能下载,稍后我会将自己下载的包放在项目源码里,也可以直接下载我的demo,路径稍后贴出来;
安装过程请自行百度,一路点ok就行,建议默认安装路径,同时安装时选择的空间大小是指的内存的空间,慎选,小心内存不足;等安装成功过后在客户端也可以重新配置,所以一开始的时候建议选择小一点的;安装成功了,请直接访问本地链接:点我打开本地couchbase 第一次打开可能会比较慢,同时要配置桶,也就是bucket;这个概念可以理解为mysql等关系型数据库中的数据库这个概念,注意,在couchabse中没有表的概念,或者说表的概念很模糊,或许可以认为有吧,请看下图:
这是本地链接couchabse的界面,就是登陆界面,couchabse的默认端口是8091,
登陆成功的界面如下:
关于使用如下:请注意查看标黄的部分;
可能有正在接触couchabse的,在项目中明明写好了查询语句,查询语句在上面这个界面上可以查到数据,但是在代码里就是报错,报错的提示会告诉你是不是忘记加什么东西来代替_ID和_CAS了,对,就是没写 META(‘别名’).id as _ID, META(‘别名’).cas as _CAS了,从原数据中取出id和cas,同时,取id也是用META(别名).id as id来取;_你不写这个在代码执行查询得时时候会直接报错的,但是在查询界面查询是没错的,而且能正常查到数据,_下面介绍下代码中的安装与配置;
2、Maven依赖及代码配置(@Configuration)
maven中有整合couchbase及spring-jpa的依赖,依赖如下:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-couchbase</artifactId>
</dependency>
同时需要编写配置:
配置如下,注意bucketName既是bucket名称,同时也是登录名,所以这里没有账号配置,因为在一个项目中只会用一个bucket,如果想用别的bucket,那么就请直接手动写查询n1ql语句吧,使用_class关联,可能到这你有点迷糊,不要着急,后面解释;再提示一次,账号名是什么,那么bucket名称必定有一个与账号同名;账号可以多个配置,并且可以在setting中设置权限,不用担心安全问题;
解释下_class 是如何出现的,总的来说,每条查询都应该带上_class的条件,因此,我把它单独作为一个索引,_class是刚开始用couchabse最容易踩的坑,它是couchbase自动生成的,值为你所存储的对象的packet名称加类名,我把它理解为couchbase中的表名,或者命名空间的概念;如果没有它,那么你就会发现无法区分数据了,因为所有的数据都存放在一个bucket中;
关于couchabse的安装与介绍先到这里,下篇博客中我会写出一些实例的demo,正式项目不能发布出来