基于MongoDB的Collection版本控制方法及系统与流程

文档序号:20874624发布日期:2020-05-26 16:19阅读:701来源:国知局
基于MongoDB的Collection版本控制方法及系统与流程

本发明属于数据处理技术领域,涉及一种collection版本控制方法及系统,尤其涉及一种基于mongodb的collection版本控制方法及系统。



背景技术:

mongodb是一个基于分布式文件存储的数据库,由c++语言编写,旨在为web应用提供可扩展的高性能数据存储解决方案。mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongodb服务端可运行在linux、windows或macosx平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为mongodb在32位模式运行时支持的最大文件尺寸为2gb。一个mongodb实例可以包含一组数据库,一个database可以包含一组collection(集合),一个集合可以包含一组document(文档)。一个document包含一组field(字段),每一个字段都是一个key/valuepair。

现有技术在处理数据集成类项目中,因为需要集成的数据内容结构复杂且变更频繁,因此采用mongodb对该类集成数据进行存储管理是最优方案,后期集成数据量大时也较容易进行分布式部署。然而针对集成内容变更频繁的场景,通常有两种解决方案:

1)在同一collection中将多个集成内容版本通过一个版本字段进行记录,对于集成数据结构简单、数据量小的场景,这种方式是一种很不错的选择。

2)集成数据结构复杂且后期集成数据量较大时方案1)的劣势则体现的淋漓尽致,对于此想到了将不同集成内容版本的集成数据放在不同的collection中进行管理,然而如何利用一套针对某一领域的数据业务接口操作不同集成内容版本的collection集合数据仍然是存在问题。



技术实现要素:

为了解决背景技术中存在的上述技术问题,本发明提供了一种代码逻辑清晰、容易上手管理、便于一些业务逻辑的实现以及能很好的解决项目中集成数据结构复杂且后期集成数据量较大时数据杂乱的基于mongodb的collection版本控制方法及系统。

为了实现上述目的,本发明采用如下技术方案:

一种基于mongodb的collection版本控制方法,其特征在于:所述基于mongodb的collection版本控制方法包括以下步骤:

1)创建领域实体基类entity,其中定义有主键和创建时间两属性,主键须标有bsonid以及bsonrepresentation两特征,其他领域实体均继承自该基类;

2)创建各领域实体类,所述各领域实体类继承自步骤1)所创建的实体基类entity;

3)创建自定义配置属性类settings,其中定义有mongodb的连接字符串以及操作数据库名称两属性,用于读取应用配置文件中的自定义全局变量值;

4)创建上下文接口类icontext,其中定义有数据库集合版本version属性以及多个步骤2)创建的领域实体imongocollection泛型集合;

5)创建数据库上下文实现体datacontext类,所述数据库上下文实现体datacontext类继承自步骤4)创建的上下文接口类icontext,在类datacontext的构造函数中实例化类型为imongodatabase的mongodb数据库全局只读变量、初始化数据库集合版本version属性值、实例化领域实体imongocollection泛型集合;

6)创建数据仓储泛型接口类irepository<t>,其中类型t继承自步骤1)创建的实体基类entity,在该类中定义各种对步骤2)所创建的领域实体数据操作的业务方法声明,至此核心类信息创建完成;

7)创建业务逻辑实现类,所述业务逻辑实现类继承自步骤6)所创建的数据仓储泛型接口类irepository<t>,其中t是步骤2)所创建的某一领域实体类;

8)在步骤7)所创建的业务逻辑实现类的构造函数中初始化上下文接口类icontext的全局变量和该类要操作的mongodb中的领域实例类集合版本号,至此利用上下文接口类icontext的全局变量对领域实例类集合的各类操作均为初始化版本号的集合数据。

上述步骤6)中的声明的具体方式是:同步增删改查或异步增删改查。

一种基于mongodb的collection版本控制系统,其特征在于:所述基于mongodb的collection版本控制系统包括:

基类模块,所述基类模块定义了为包含所有实体的共性,该方法内部基类包含共性为主键和创建时间,其他领域的类必须集成该基类;

实体类模块,主要是作为数据管理和业务逻辑处理层面上存在的类别,主要在分析阶段区分实体类的主要职责是存储和管理系统内部的信息;

接口模块,包含对协定进行定义的引用类型,用于对业务逻辑操作中方法的定义;

实现类模块,关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计;

连接类模块,实现对mongdb的连接以及继承连接接口,并对连接接口定义的方法进行逻辑实现,利用上下文连接接口末了的全局变量对实现类模块集合的各类操作均为初始化版本号的集合数据;

连接接口模块,为定义操作mongdb层的逻辑接口;

连接模块,定义了全局的连接mongdb的字符串和操作数据库的两大属性;

所述基类模块通过实体类模块以及接口模块接入实现类模块;所述连接模块通过连接接口模块以及连接类模块接入实现类模块。

本发明的优点是:

本发明提供了一种基于mongodb的collection版本控制方法及系统,该方法包括创建领域实体基类entity、创建各领域实体类、创建自定义配置属性类settings、创建上下文接口类icontext、创建数据库上下文实现体datacontext类、创建数据仓储泛型接口类irepository<t>、创建业务逻辑实现类、在步骤7)所创建的业务逻辑实现类的构造函数中初始化上下文接口类icontext的全局变量和该类要操作的mongodb中的领域实例类集合版本号,至此利用上下文接口类icontext的全局变量对领域实例类集合的各类操作均为初始化版本号的集合数据。本发明的代码逻辑清晰,容易上手管理;保留了历史数据,从而便于一些业务逻辑的实现;能很好的解决项目中集成数据结构复杂且后期集成数据量较大时数据杂乱。

附图说明

图1是本发明所提供的基于mongodb的collection版本控制方法的流程图;

图2是本发明所提供的基于mongodb的collection版本控制系统的框架图。

具体实施方式

参见图1,本发明提供了一种基于mongodb的collection版本控制方法,该方法包括以下步骤:

1)创建领域实体基类entity,其中定义有主键和创建时间两属性,主键须标有bsonid、bsonrepresentation(bsontype.objectid)两特征,其他领域实体均继承自该基类;

2)创建各领域实体类,须继承自步骤1)创建的基类entity;

3)创建自定义配置属性类settings,其中定义有mongodb的连接字符串和操作数据库名称两属性,用于读取应用配置文件中的自定义全局变量值;

4)创建上下文接口类icontext,其中定义有数据库集合版本version属性和多个步骤2)创建的领域实体imongocollection泛型集合;

5)创建数据库上下文实现体datacontext类,须继承自步骤4)创建的上下文接口类icontext,在类datacontext的构造函数中实例化类型为imongodatabase的mongodb数据库全局只读变量、初始化数据库集合版本version属性值、实例化领域实体imongocollection泛型集合(集合名称实例化规则:集合名称+下划线+版本号version属性值);

6)创建数据仓储泛型接口类irepository<t>,其中类型t继承自步骤1)创建的基类entity,在该类中定义各种对步骤2)创建的领域实体数据操作的业务方法声明(同步/异步增删改查等),至此核心类信息创建完成;

7)创建业务逻辑实现类,须继承自步骤6)创建的数据仓储泛型接口类irepository<t>,t为具体的步骤2)创建的某一领域实体类;

8)在步骤7)创建的业务逻辑实现类的构造函数中初始化上下文接口类icontext的全局变量和该类要操作的mongodb中的领域实例类集合版本号,至此利用上下文接口类icontext的全局变量对领域实例类集合的各类操作均为初始化版本号的集合数据;若要查询指定版本集合中的数据信息,可以在查询业务方法中添加版本号输入参数,在业务方法体内给上下文接口类icontext的全局变量的版本号熟悉重新赋值即可。

参见图2,本发明还提供了一种基于mongodb的collection版本控制系统,该控制系统包括:

基类模块:基类为最基本模块,其中定义了为包含所有实体的共性,该方法内部基类包含共性为主键和创建时间,其他领域的类必须集成该基类;

实体类模块:实体类模块主要是作为数据管理和业务逻辑处理层面上存在的类别,它们主要在分析阶段区分实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关;

接口模块:接口模块包含对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。其中包含对具体操作的定义;

实现类模块:实现类模块为此方法的核心部分也称为业务逻辑层(businesslogiclayer)。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(domain)逻辑有关,很多时候,也将业务逻辑层称为领域层;

连接类模块:实现对mongdb的连接以及继承连接接口,并对连接接口定义的方法进行逻辑实现,至此利用上下文连接接口末了的全局变量对实现类模块集合的各类操作均为初始化版本号的集合数据;

连接接口模块:该模块与接口模块类似,上述模块用于对业务逻辑操作中方法的定义,而该模块大多为定义操作mongdb层的逻辑接口;

连接模块:该模块定义了全局的连接mongdb的字符串和操作数据库的两大属性,为连接并操作mongdb数据库奠定了基础。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1