一种基于MongoDB的多线程事务处理方法技术

技术编号:16717941 阅读:22 留言:0更新日期:2017-12-05 16:23
本发明专利技术公开了一种基于MongoDB的多线程事务处理方法,首先下载各语言的MongoDB API,然后封装能够表示MongoDB任意操作的任务类;创建一个事务类,每个事务实例的多个任务实例以序列形式管理,并对添加的序列长度做计数统计;创建一个全局的事务管理队列,遵循先进先出原则来管理多个事务实例;每个线程产生带有序列任务实例的事务实例,在各自线程里将事务实例压入全局的事务管理队列,单独开启一个线程来顺序处理全局的事务管理队列中的事务实例;最后将各语言封装API。本发明专利技术可以方便MongoDB在强事务领域的推广和应用,减少开发时间,保证高并发中数据的正确性。

A multi thread transaction processing method based on MongoDB

The invention discloses a multi-threaded transaction processing method based on MongoDB, first download the MongoDB language API package can then said MongoDB arbitrary operating tasks; to create a business class, multiple instances of a task each transaction instance to form sequence management, and statistics of the length of the sequence added; create a global transaction management queue, follow the FIFO principle to manage multiple transaction instances; each thread generates transaction instances with sequential task instances, in each thread will be pressed into the global transaction instance transaction management queue, processing sequence of global transaction instances alone open a thread to the transaction management in the queue the API language package. The invention can facilitate the promotion and application of MongoDB in the field of strong affairs, reduce the development time, and ensure the correctness of the data in high concurrency.

【技术实现步骤摘要】
一种基于MongoDB的多线程事务处理方法
本专利技术涉及数据库领域,尤其涉及一种基于MongoDB的数据库多线程强事务处理的方法。
技术介绍
2010年,随着互联网Web2.0网站的兴起,NoSQL(NotOnlySQL,非关系型数据库)在国内掀起一阵热潮,其中风头最劲的莫过于MongoDB了。越来越多的业界公司已经将MongoDB投入实际的生产环境,很多创业团队也将MongoDB作为自己的首选数据库,创造出非常之多的移动互联网应用。MongoDB的文档模型自由灵活,可以让开发者在开发过程中畅顺无比。对于大数据量、高并发、弱事务的互联网应用,MongoDB可以应对自如。MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,完全可以满足Web2.0和移动互联网的数据存储需求,其开箱即用的特性也大大降低了中小型网站的运维成本。事务(Transaction)是数据库运行中的一个逻辑工作单位,特别适用于多用户同时操作的数据通信系统。事务是并发控制的单位,是用户定义的一个操作序列。这些操作序列是有顺序的,要么都做,要么都不做,是一个不可分割的工作单位。一个事务的执行不能被其他事务干扰。即一个事务内部的操作序列及顺序,对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。MongoDB本身是弱事务的,如何在高并发处理中,实现强事务管理是其拓展其它应用领域的关键。
技术实现思路
本专利技术结合多线程、高并发、强事务的游戏服务器应用开发,提供一种基于MongoDB的多线程事务处理方法,针对MongoDB的弱事务进行改善,形成强事务管理。为达到上述目的,本专利技术的实施例采用如下技术方案:一种基于MongoDB的多线程事务处理方法,包括如下步骤:下载各语言的MongoDBAPI;封装能够表示MongoDB任意操作的任务类,每个任务实例表示一个操作,多个任务实例的序列构成一个事务实例;创建一个事务类,每个事务实例包括多个任务实例,多个任务实例以序列形式管理,并对添加的序列长度做计数统计;创建一个全局的事务管理队列,遵循先进先出原则来管理多个事务实例;每个线程产生带有序列任务实例的事务实例,多个线程就会有多个事务实例,并在各自线程里将事务实例压入全局的事务管理队列,单独开启一个线程来顺序处理全局的事务管理队列中的事务实例;将各语言封装API。依照本专利技术的一个方面,在将各语言封装API之前,还包括如下步骤:对每个事务实例做记录管理。依照本专利技术的一个方面,在将各语言封装API之前,还包括如下步骤:对全局的事务管理队列做阻塞管理。依照本专利技术的一个方面,所述事务实例封装了事务开始和事务结束语句或函数调用,事务实例由事务开始和事务结束之间执行的全体操作组成。依照本专利技术的一个方面,用命名的方式来管理跨线程间的事务实例。依照本专利技术的一个方面,用命名的方式来管理跨线程间的事务。本专利技术实施的优点:本专利技术提出了一种基于MongoDB的数据库多线程强事务处理的方法,其可以编写为多个编程语言的API,方便MongoDB在强事务领域的推广和应用,减少开发时间,保证高并发中数据的正确性。该方法的Java版已经实现。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术的线程事务示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本方法的实现流程如下;1、下载各语言的MongoDBAPI。2、封装能够表示MongoDB任意操作的任务类DBTask,比如主要的操作:插入、修改、删除、读取等,都要封装为任务DBTask实例。一个任务DBTask实例只能表示一个操作。多个任务DBTask实例的序列构成一个事务实例。3、创建一个事务类DBTransaction,每个事务DBTransaction实例中的多个任务DBTask实例以序列形式管理,并对添加的序列长度做计数统计。4、创建一个全局的事务管理队列LinkedBlockingQueue<DBTransaction>,遵循先进先出原则来管理多个事务实例。5、全局的事务管理队列LinkedBlockingQueue<DBTransaction>应该做到线程安全。本专利技术的设计原则是:每个线程产生带有序列任务DBTask实例的事务DBTransaction实例,根据实际需要一个线程也可以产生多个事务实例,多个线程就会有多个事务实例,并在各自线程里将事务实例压入全局的事务管理队列LinkedBlockingQueue<DBTransaction>,再单独开启一个线程来顺序处理LinkedBlockingQueue<DBTransaction>中的事务实例。即多线程生成事务,一线程处理事务。6、根据项目需要,还要对每个事务实例做记录管理,方便事务实例的回滚;以及全局的事务管理队列LinkedBlockingQueue<DBTransaction>的阻塞管理。7、封装了形如begintransaction和endtransaction语句(或函数调用)来界定事务实例。事务实例由事务开始(begintransaction)和事务结束(endtransaction)之间执行的全体操作组成。亦可以为用命名的方式来管理跨线程间的事务实例。图1示出了线程事务的示意图。8、最后将各语言封装API,方便后续的应用和推广。该方法的Java版本已在项目中应用。以上所述,仅为本专利技术的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本专利技术公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本专利技术的保护范围之内。因此,本专利技术的保护范围应以所述权利要求的保护范围为准。本文档来自技高网...
一种基于MongoDB的多线程事务处理方法

【技术保护点】
一种基于MongoDB的多线程事务处理方法,其特征在于,包括如下步骤:下载各语言的MongoDB API;封装能够表示MongoDB任意操作的任务类,每个任务实例表示一个操作,多个任务实例的序列构成一个事务实例;创建一个事务类,每个事务实例包括多个任务实例,多个任务实例以序列形式管理,并对添加的序列长度做计数统计;创建一个全局的事务管理队列,遵循先进先出原则来管理多个事务实例;每个线程产生带有序列任务实例的事务实例,多个线程就会有多个事务实例,并在各自线程里将事务实例压入全局的事务管理队列,单独开启一个线程来顺序处理全局的事务管理队列中的事务实例;将各语言封装API。

【技术特征摘要】
1.一种基于MongoDB的多线程事务处理方法,其特征在于,包括如下步骤:下载各语言的MongoDBAPI;封装能够表示MongoDB任意操作的任务类,每个任务实例表示一个操作,多个任务实例的序列构成一个事务实例;创建一个事务类,每个事务实例包括多个任务实例,多个任务实例以序列形式管理,并对添加的序列长度做计数统计;创建一个全局的事务管理队列,遵循先进先出原则来管理多个事务实例;每个线程产生带有序列任务实例的事务实例,多个线程就会有多个事务实例,并在各自线程里将事务实例压入全局的事务管理队列,单独开启一个线程来顺序处理全局的事务管理队列中的事务实例;将各语言封装API。2.根...

【专利技术属性】
技术研发人员:凌云邱玢黄祺君
申请(专利权)人:上海童讯网络科技有限公司
类型:发明
国别省市:上海,31

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1