一、背景

SequoiaDB,即巨杉数据库,是目前国产数据库中还不错的一款数据库管理系统软件,数据库底层支持JSON的形式的数据结构存储,那么很自然大家就想到了MongoDB,根据我所了解的情况,目前很多使用了MongoDB数据库的银行或政府机构都开始把国外的某些数据库逐渐替换为国内的数据库,而对于国内使用MongoDB的机构,则有意愿替换成国产的巨杉数据库,有些已经完成数据库的迁移,有些正在做,有些即将开始。

说到这里,就出现了大家非常关注的问题:使用了MongoDB数据库的软件系统或应用平台,如何顺利的迁移到SequoiaDB数据库上?

本文会做一个简单的说明与教程。

根据官网上的解决方案(http://contrast.sequoiadb.com/cn/)介绍:有如下几个项目进行了巨杉数据库的改造与迁移:

1、某政府电子政务中心的数据平台

2、某银行对公知识图谱

3、某企业营销平台中的标签管理

4、某银行去中心化福费廷项目

从技术方面来讲,对于MongoDB项目迁移到SequoiaDB数据库时,大概有如下3种处理逻辑:

1、使用巨杉数据库的原生Java API,重写项目的数据库操作功能模块

2、基于原生Java API封装出第三方框架,便于快速开发,例如自主开发一套Spring Data SequoiaDB

3、使用某种中间层技术,完成数据库传输通信的自动兼容。

本文主要介绍第3种实现方案,因为这种处理逻辑的优点为:使用了Spring Data MongoDB的Java项目无需改动开发代码,可以快速完成应用系统的平滑迁移与改造。

二、环境准备

目前官方的社区版不支持MongoDB的兼容方式(未来可能某一天会发布出来),企业版是可以的,也就是说用企业版的巨杉数据库,可以兼容MongoDB,这句话的意思就是说:我们可以像使用MongoDB的方式或直接使用MongoDB的方式来操作和访问巨杉数据库,即用MongoDB的Java API来操作和访问巨杉数据库,目前这种处理逻辑可以满足常见的CRUD操作。所以我们需要如下环境:
(1)、企业版的巨杉数据库环境

(2)、兼容MongoDB访问的巨杉Fap驱动文件

本文不介绍巨杉数据库的安装操作,可以去看官网上的详细说明,目前官网上也开通了对于巨杉数据库SCDA、SCDP、SCDD相关的认证,感兴趣和有需要的同学可以去考一下。

1、在安装了企业版的巨杉数据库环境后,我们在命令行输入如下命令查看巨杉数据库的版本是否为企业版:

2、准备好mongodb兼容驱动文件:libfapmongo3.so文件,把这个文件放到巨杉安装目录下的bin目录,这里我的目录是/opt/sequoiadb/bin/fap目录下,然后找到巨杉数据库协调节点的配置文件,协调节点的配置文件的目录为:/opt/sequoiadb/conf/local/11810/,增加fap属性,并设置该驱动文件的位置,截图如下:

3、然后我们输入命令重新启动数据库即可,重新启动数据库的命令如下:

sdbstop -all
sdbstart -t all

是否启动成功,输入sdblist命令查看即可,如果存在启动失败的节点,则说明配置有误。启动成功后,默认会占用一个11817的端口,输入如下命令查看端口是否处于监听状态:

netstat -an | grep 11817

三、代码开发

在企业版的巨杉数据库设置好MongoDB的fap方式兼容以后,代码中就可以Spring Data MongoDB来操作和访问巨杉数据库。

1、首先我们在巨杉数据库中创建一个集合空间(即对应的MongoDB中数据库的概念)和一个集合,其中集合空间为:mongodb_test,

集合名称为:c_test_log,在linux命令行中输入su - sdbadmin切换用户,然后再执行sdb命令进入到巨杉数据库的控制台,然后分别输入如下命令:连接SDB、创建集合空间、创建集合、查询集合

var db = new Sdb("localhost",11810)
db.createCS("mongodb_test")
db.mongodb_test.createCL("c_test_log")
db.mongodb_test.c_test_log.find()

2、对于代码层面的开发,这里基于Spring Boot+Spring Data MongoDB框架进行操作,其中框架版本为:

Spring Boot:2.1.7

Spring Data MongoDB:2.1.10

MongoDB Driver 3.8.2

使用IDEA开发工具新创建一个Spring Boot项目,然后引入Spring Data MongoDB的开发包,本文的pom.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.wxbz</groupId><artifactId>sdb-mongodb-test</artifactId><version>0.0.1-SNAPSHOT</version><name>sdb-mongodb-test</name><description>SpringBoot+Spring Data MongoDB(To Access SequoiaDB)</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--spring data mongodb --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.7.RELEASE</version></plugin></plugins></build></project>

3、在application.yml文件中,设置巨杉数据库服务器的IP、端口和数据库信息,这里需要写上fap的11817端口,非11810端口,这个文件设置好以后程序中会自动注入MongoTemplate实例:

server:port: 9091
spring:data:mongodb:host: 192.168.4.108port: 11817database: mongodb_test

4、在entity包下面创建和c_test_log匹配的实体类,代码如下:

@Document(collection = "c_test_log")
public class TestLog implements Serializable {private String logId;private String content;private String host;private List<String> steps;private int executeCount;private Date createDate;...省略getter/setter等方法
}

5、创建操作数据库的接口:

/*** 数据库操作接口* @param <T>*/
public interface ITestLogDao<T> {public void save(T testLog);public T getById(String id);public List<T> getAll(Class<T> tClass);public void deleteById(String id);public void update(T testLog);}

6、编写操作巨杉数据库的Dao层的实现类

/*** dao操作实现类*/
@Repository
public class TestLogDaoImpl implements ITestLogDao<TestLog> {/*** 注入MongoTemplate实例,Spring Boot会自动处理*/@Autowiredprivate MongoTemplate mongoTemplate;public MongoTemplate getMongoTemplate(){return this.mongoTemplate;}@Overridepublic void save(TestLog testLog) {this.getMongoTemplate().save(testLog);}@Overridepublic TestLog getById(String id) {Criteria criteria = Criteria.where("logId").is(id);return this.getMongoTemplate().findOne(new Query(criteria),TestLog.class);}@Overridepublic List<TestLog> getAll(Class<TestLog> testLogClass) {return this.getMongoTemplate().findAll(TestLog.class);}@Overridepublic void deleteById(String id) {Criteria criteria = Criteria.where("logId").is(id);this.getMongoTemplate().remove(new Query(criteria),TestLog.class);}@Overridepublic void update(TestLog testLog) {Criteria criteria =  Criteria.where("logId").is(testLog.getLogId());if(criteria != null){Update update = new Update();update.set("content", testLog.getContent());update.set("executeCount",testLog.getExecuteCount());this.getMongoTemplate().updateFirst( new Query(criteria), update,TestLog.class);}}
}

7、编写以下相关测试方法,编写测试保存方法代码如下:

@Testpublic void saveTest(){TestLog testLog = new TestLog();testLog.setLogId(UUID.randomUUID().toString());testLog.setContent("测试日志1");testLog.setCreateDate(new Date());testLog.setExecuteCount(15);testLog.setSteps(Arrays.asList(new String[]{"第1个步骤","第2个步骤"}));testLogDao.save(testLog);System.out.println("*********保存成功************");}

使用图形化测试工具MongoChef连接巨杉数据库服务器的11817端口,可以看到当前插入的数据,如下所示:

8、编写如下测试查询代码:

 @Testpublic void queryTest(){List<TestLog> logList = testLogDao.getAll(TestLog.class);System.out.println("*********查询成功************" + logList.get(0).getContent());}

9、编写如下代码测试修改:

 @Testpublic void updateTest(){TestLog testLog = new TestLog();testLog.setLogId("09aa8294-2d94-44d3-8f8e-a798ce46e022");testLog.setContent("测试日志1被修改");testLogDao.update(testLog);System.out.println("*********修改成功************");}

使用图形化测试工具MongoChef连接巨杉数据库服务器的11817端口,可以看到当前被修改的测试数据

10、编写如下代码测试删除:

 @Testpublic void deleteTest(){testLogDao.deleteById("09aa8294-2d94-44d3-8f8e-a798ce46e022");System.out.println("*********删除成功************");}

这样基本的CURD操作代码都验证完成,可以完成一些常见的操作,目前对于某些MongoDB某些特性的代码,我暂时没有测试和使用。

相信本篇文章的这些介绍,可以让大家知道本文的主题。

目前基本实现了使用Spring Data MongoDB框架来操作和访问巨杉数据库,前提是企业版的巨杉3.4,同时配置了FAP驱动文件。

相信在不久的将来,巨杉数据库完善了这个驱动文件后,应该会开放出来,毕竟中国使用MongoDB的机构也很多。

本文只是简单的介绍了基本的操作,如果其他想要进行了解的可以进行留言或评论。如果想要学习巨杉数据库,可以去官网参加巨杉的SCDA、SCDP和SCDD的数据库认证,目前是免费的,感兴趣的可以学习一下。

最后,希望本篇文章的介绍,可以让你从技术上了解下MongoDB的项目如何使用Spring Data MongoDB快速迁移到SequoiaDB上。

对文章感兴趣的同学,可以关注我的公众号,最近也计划写写巨杉数据库的文章。

使用Spring Data MongoDB操作SequoiaDB巨杉数据库简易教程相关推荐

  1. mongodb数据库java接口,MongoDB —— 使用Spring Data MongoDB操作数据库

    我们使用Spring Data MongoDB可以方便的在Spring boot项目中操作MongoDB 文档地址:https://docs.spring.io/spring-boot/docs/2. ...

  2. mongo java 注解,在Java中使用Spring Data MongoDB操作Mong | zifangsky的个人博客

    前言:在上一篇文章中(PS:https://www.zifangsky.cn/923.html)我简单介绍了如何在Linux中安装MongoDB以及MongoDB的增删改查等基本命令用法(PS:更多M ...

  3. SpringBoot 集成 Spring Data Mongodb 操作 MongoDB 详解

    一.MongoDB 简介 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,且与关系数据库的最为相像的.它支持的数据结构非常松散,是类似 json 的 bso ...

  4. Spring Data MongoDB示例

    Spring Data MongoDB示例 欢迎使用Spring Data MongoDB示例.Spring Data MongoDB是将Spring Framework与最广泛使用的NoSQL数据库 ...

  5. spring data使用操作mongodb数据库 springboot

    在IDEA里面使用新建一个maven项目, 项目的结构是如图所示:(注意:springboot 项目中所有的组件必须位于application同级或者子包下才会被扫描到,不然就会报上面的错!) 导入相 ...

  6. SequoiaDB巨杉数据库成为唯一入选 “硅谷2016 大数据地形图”中国厂商, 企业级市场超越MongoDB等海外产品

    硅谷著名投资机构Firstmark近期发布了2016年的大数据行业地形图(Bigdata Landscape 2016).展现了如今大数据厂商与生态的分布. SequoiaDB巨杉数据库是进入大数据生 ...

  7. SequoiaDB巨杉数据库成为唯一入选 “硅谷2016 大数据地形图”中国厂商, 企业级市场超越MongoDB等海外产品...

    2019独角兽企业重金招聘Python工程师标准>>> 硅谷著名投资机构Firstmark近期发布了2016年的大数据行业地形图(Bigdata Landscape 2016).展现 ...

  8. SequoiaDB 巨杉数据库-MongoDB协议兼容命令

    Note: 用户在查询时不建议使用 batchSize,如 db.cl.find().batchSize( 100 ).尤其在 mongo-java-v3.1 及以下.mongo-shell-v3.0 ...

  9. SequoiaDB 巨杉数据库-MongoDB协议兼容

    MongoDB 是一款开源的非关系型数据库,也是目前最流行的非关系型数据库之一. SequoiaDB 巨杉数据库兼容 MongoDB 的语法和协议,用户可以使用 MongoDB 的驱动访问 Sequo ...

  10. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

最新文章

  1. ubuntu14.04 install build-essential 出现错误 unable to loate package build-essential
  2. x86中的页表结构和页表项格式
  3. 【Redis】Redis介绍与Redis3在Window下的安装
  4. 增量式爬虫与分布式爬虫
  5. Substring Removal
  6. 浅论ViewState及其与Session的关系
  7. 北京曲剧《烟壶》也好看
  8. 谷歌官方推出 TensorFlow 中文视频:机器学习从零到一(系列之二)
  9. PgSQL · 应用案例 · 经营、销售分析系统DB设计之共享充电宝
  10. 获取wlan0eth0联网状态
  11. Qtum量子链入驻慢雾区,漏洞赏金计划单项最高奖励达1万美金!
  12. React封装多个日期段组件--BatchDate组件
  13. 我的海淀驾校考驾照之路
  14. python简单小游戏代码教程-python简单小游戏代码 怎么用Python制作简单小游戏
  15. 万张脸部图片合成平均脸,26家公司颜值大PK
  16. Java前端Vue-5(复习Vue)
  17. VUE使用document.onkeydown键盘的监听与移除
  18. 请编写一个程序,使用字典存储学生信息,学生信息包含学号和姓名,请根据学生学号从小到大输出学生信息
  19. AMB | 迈向可持续农业:根际微生物工程
  20. 基于 yolov5n6 和tkinker实现的检测模型的可视化界面

热门文章

  1. 聚币网API[Python3版]
  2. centos安装部分开发软件
  3. 乒乓球发旋转球的关键是什么?
  4. 熊猫压缩怎么使用_您应该可以使用熊猫库做的几件事
  5. 药物研发检测记录模板-0903不溶性微粒检查法检验原始记录
  6. base64上传文件,后端接受处理(四)
  7. Neo4j 做推荐 (2)—— 基于内容的过滤
  8. 光盘安装计算机系统安装教程,光盘重装系统|电脑光盘一键重装系统教程
  9. xlistview的使用
  10. 使用Quick BI 制作企业数据分析报表