`
wx1568746809
  • 浏览: 21564 次
文章分类
社区版块
存档分类
最新评论

Nosql数据库开发之Couchabse———开发使用篇

 
阅读更多

couchabse的安装与介绍在上篇博客中已经说过了,下面开始进行couchabse的初步开发与使用;

在阅读下面内容前,请先查看 : Nosql数据库开发之Couchabse———安装介绍篇 ,有了解后阅读会更容易,couchabse下载地址:阿里云的oss对象存储,个人服务,请勿重复下载

注:使用couchabse查询前必须建立索引,否则会查询报错,建索引语句与mysql类似:

create primary index on `bucketname`

1、建表:

在couchabse中,建表其实就是建model,建实体类:

在实体类上需要加@Document注解,不加这个注解会报错,@Id注解加载主键上,必须有@Id注解,也就是必须制定主键,不然会运行报错,@Field是加上属性上的,不加@Field的属性即使有值也不会存入到couchbase数据库中的;

2、建立查询:

泛型中填写的是你要查询得实体类,这一步骤类似于mvc中的dao层,数据连接层,User是要查询得pojo,而String则是User的主键类型,就是@Id所加的类型是什么,如果写好这个,那么在写方法的过程中就会出现提示了,要根据什么查询,这个自带的api还是很棒的,可节省很多写查询语句的工作,也很方便,关键是写法要符合规则,建议用提示,支持模糊查询,多条件查询,分页查询等,我写的主键是String类型,ps,建议在使用couchabse的项目中不要定义Integer类型、不要定义Bigdecimal类型,因为couchbase不支持这两种类型,couchabse支持的数据类型如下:

对于不支持的数据类型,比如Bigdecimal,不是说存不进去,而是存进去它其实是一个对象,包括三个值,大小、长度、精度,然后查询时候会报错,类型转换错误,Integer同理,报long到Integer不能完成自动转换;如果你非要使用不支持的类型,或者自己定义的类型,那么有个方法可以参考一下,自定义类型转换器,稍后我会将demo项目中的BigDecimal自定义类型转换为String及String自定义类型转换为BigDecimal示例贴出来,

关于查询还有一点要主要下,当你写的方法名称不符合api的规则时会报错,可以理解为允许自定义方法,但是必须得写@Query注解,不然会默认为你在调用couchbase的API,会进行代码检测,检测规则由你的Model决定

正确的写法如图所示,请注意,_class 在这里不是我们主动存入的,而是在做保存操作的时候couchabse自动检测并存入的。值为你要保存的实体类的路径,包名,在同一个bucket中,可能存放着多个‘’’表‘’的数据,用户、角色、商品、订单等等,数据隔离是由_class这个值确定的,具体介绍请看我的上一篇博客 : Nosql数据库开发之Couchabse———安装介绍篇 ,这里有详细的介绍与解释,这里就不多说了,不明白的请留言,会尽快回复;

好了,到这里,数据连接层就写完了,下面我们封装逻辑层:service层;

如图所示,在service层需要将之前的数据连接层UserReponsitory注入,类似于接口编程,在这里,我列出了一些查询与保存逻辑,**关于保存与更新我需要提示一下,在couchabse中,保存(新增或更新)都是用save(Entity e)这个api,它是自带的,不要重写,并且couchbase对更新还是保存的处理很简单,entity中有主键那么就去更新主键值的数据,不论这条数据是什么,只要id相同,就更新,或者称为覆盖,因此,在couchbase中千万不要使用Integer或者Long类型作为@Id的注解值,**使用String最为保险;另外。还有一些其他的不要重新的api,可以很方便的直接调用,这也是spring-data的优点,这里我就不一一介绍了;

其实到这里,couchabse的初步使用已经可以了,如何调用我就不多说了,详情请查看源码,多表联查与条件查询主要是查询语句的问题,以下我介绍几种常用的查询写法与couchbase数据备份及保存相关的命令:

1、couchbase数据备份:

cbbackup http://127.0.0.1:8091 D:\CouchbaseBak -u 用户名 -p 密码 -b 你要备份的bucketName

eg:cbbackup http://localhost:8091 D:\CouchbaseBak -u shaoyanghui -p 951209 -b shaoyanghui

2、couchbase数据还原:

cbrestore 备份的文件夹地址 http://127.0.0.1:8091 -u 用户名 -p 密码 --bucket-source=源bucket名  --bucket-destination=目标bucket名

eg:cbrestore D:\CouchbaseBak http://localhost:8091 -u shaoyanghui -p 951209 --bucket-source=shaoyanghui --bucket-destination=shaoyanghui

关于命令请自己配置下couchabse的bin目录,默认的安装地址为:C:\Program Files\Couchbase\Server\bin

3、查询部分

//1、带条件的判断查询语句
@Repository
public interface ReportTemplateRepo extends JpaRepository<ReportTemplateBean, Long>{

    @Query("SELECT rb FROM ReportBeanTemplate rb JOIN ExampleTable et WHERE et.idTemplate = rb.id AND ($id is null OR $id = rb.id) AND ($city is null OR $city = rb.city) AND ($state is null OR $state = rb.state)")
    public List<ReportTemplateBean> findTemplates(@Param("id") Long id, @Param("city") String city, @Param("state") String state);
}

//2、分页查询语句
//分类和品牌 
@Query("select META(np).id as _ID,META(np).id as id,META(np).cas as _CAS,name,goodNo,brandId,categoryId,model,len,width,unitId,subUnitId,imageUrl,cost,secondCost,status,shelvesTime,valid,creationDate,createdBy,lastUpdateDate,lastUpdateBy,sales,content from `np-product` np "
        + "where np.categoryId = $1 and np.brandId = $2  and np.model like $3 and _class='np.product.model.Commodity' order by np.status,np.goodNo asc  limit $4 offset $5 ")
List<Commodity> findByCategoryIdAndBrandIdAndModel(Long categoryId,Long brandId,String model,Long pagesize,Long pager);

//3、查询条件判断
//这样如果某个条件如id不需要出现在查询里面,传null进来即可。
//参数可以设为nullable:
User findByEmailAddress(@Nullable EmailAddress emailAdress);   

查询的写法基本如上,另外再附上目前开发的项目中使用couchabse的查询:

可以看到,其实语句的写法很多都是与mysql的sql写法相同,因此学习成本还是不算太大的,上手也会比较快,因为couchabse的数据都是存放在内存当中的,所以查询速度还是很不错的,就是mysql看起来更直观,这也是nosql的缺点;

另外个人这段时间使用couchabse的感触就是:别扭,一个人踩坑确实很慢,但是架构师非说要用这个数据库,而且没有一个技术指导,完全自己摸索,所以很清楚这个过程的痛,特此将这段时间的尝试写成博客,如有错误或遗漏之处,请多多指教;

应该会有第三篇:开发进阶篇,等过段时间更熟悉了再写吧;下面贴出示例源码:阿里云git ,使用的是阿里云的云效,感觉更好用了,当然不是开源的了,权限为公有读,同时也整合了mybatis,方便挪数据之用;

还是加上码云吧:码云地址

请自行修改.yml的配置,eureka的配置及spring-cloud-configd的配置,执行你的地址就行; 如有疑问之处,欢迎留言交流~

转载于:https://my.oschina.net/73114dh/blog/1941416

分享到:
评论

相关推荐

    NoSQL数据库PPT.pptx

    NoSQL数据库 14信管一班2组23殷月园 NoSQL数据库PPT全文共20页,当前为第1页。 内容大纲 定义 产生 共同特征 分类 适用场景 发展现状 7 挑战 NoSQL数据库PPT全文共20页,当前为第2页。 一.什么是NoSQL数据库? NoSQL...

    NoSQL数据库原理课件-侯宾.zip

    1. NoSQL的含义:NoSQL(Not Only SQL)并不是指完全不使用SQL,而是指非关系型、非结构化的数据库系统,它支持大规模数据存储和高并发访问。 2. NoSQL的四大类型:键值存储、列族存储、文档数据库和图形数据库。...

    《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf

    《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...

    NOsql数据库论文

    Nosql数据库的这种天然的优势使之在分布式数据库中占据着越来越重要的地位。 6. 分布式数据库系统的组成 分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,提供有效的存取手段来操纵这些结点上...

    NoSQL数据库技术与应用.pptx

    因此,《NoSQL数据库技术与应用》这本书对于开发人员、架构师和数据库管理员具有重要的参考价值,有助于提高他们在NoSQL数据库技术方面的专业素养。 在本书中,我们可以找到许多精彩的段落和语句,对NoSQL数据库...

    NoSQL数据库技NoSQL最新技术发展趋势.pdf

    近年来,NoSQL数据库技术获得了高速发展,许多企业和机构都在投入巨资来开发和应用NoSQL数据库技术。阿里云作为中国软件行业的领导者,也在NoSQL数据库技术领域发挥着重要作用。 NoSQL数据库技术发展趋势可以分为...

    NoSQL数据库技术实战

    NoSQL数据库技术实战 数据库书籍!

    NoSQL数据库之Redis数据库管理视频教程

    ### NoSQL数据库之Redis数据库管理视频教程 #### NoSQL数据库简介 NoSQL(Not Only SQL)数据库是指非关系型数据库,它们与传统的关系型数据库在数据存储方式上有显著区别。NoSQL数据库通常支持灵活的数据模式,...

    大数据-大数据挑战与NoSQL数据库技术

    理论篇重点介绍大数据时代下数据处理的基本理论及相关处理技术,并引入NoSQL数据库;系统篇主要介绍了各种类型NoSQL数据库的基本知识;应用篇对国内外几家知名公司在利用NoSQL数据库处理海量数据方面的实践做了阐述...

    NoSQL数据库入门 高清PDF

    1. **高可扩展性**:NoSQL数据库设计之初就考虑到了水平扩展的问题,能够轻松地通过增加更多的服务器来提升性能和容量。 2. **高性能**:NoSQL数据库采用内存缓存技术和优化的索引机制,能够实现快速读写操作。 3. *...

    NOSQL数据库入门 . 佐佐木达也 .罗勇.扫描版.pdf

    - **查询语言**:SQL数据库使用SQL语言进行数据查询和操作,而NoSQL数据库通常提供特定于系统的查询接口或API。 ### 结论 NoSQL数据库作为现代数据管理的重要组成部分,在解决大规模数据处理问题方面展现出了巨大...

    nosql数据库的发展和应用研究

    nosql数据库的发展和应用研究

    NoSQL数据库入门思维导图

    通过“基础知识.mmap”可以深入学习NoSQL的原理和操作,而“常见的NoSQL数据库.mmap”则可能涵盖了各种NoSQL数据库的特性、应用场景和使用案例。对于想要踏入NoSQL领域的学习者来说,这些资源无疑是非常宝贵的。

    NoSQL数据库PPT

    NoSQL数据库已经成为现代软件开发的重要组成部分,特别是在处理大规模数据集和高并发访问的场景下。随着大数据和云计算技术的发展,NoSQL数据库的重要性日益凸显。目前市场上有许多成熟的NoSQL解决方案,如MongoDB、...

    大数据技术原理与应用之NoSQL数据库.pptx

    "大数据技术原理与应用之NoSQL数据库" 在大数据技术原理与应用领域中,NoSQL数据库扮演着非常重要的角色。NoSQL数据库是指不遵循传统关系数据库管理系统(RDBMS)的数据库管理系统,主要特点是去中心化、可扩展性强...

    NoSQL数据库总结.pdf

    NoSQL数据库总结 NoSQL数据库是一种非关系型的数据库,旨在解决传统关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0网站中的问题。NoSQL数据库的优点是可以处理超大量的数据,可以运行在...

    第5章-NoSQL数据库.pdf

    NoSQL数据库是一种新型的非关系型数据库,随着大数据时代的到来,NoSQL数据库的应用变得越来越广泛。NoSQL一词最初代表“反SQL”,意在用新型的非关系数据库取代关系数据库,但随着时间的推移,其含义已演变为“不...

Global site tag (gtag.js) - Google Analytics