CN105354328A - 一种解决NoSQL数据库并发访问冲突的系统及方法 - Google Patents
一种解决NoSQL数据库并发访问冲突的系统及方法 Download PDFInfo
- Publication number
- CN105354328A CN105354328A CN201510836145.XA CN201510836145A CN105354328A CN 105354328 A CN105354328 A CN 105354328A CN 201510836145 A CN201510836145 A CN 201510836145A CN 105354328 A CN105354328 A CN 105354328A
- Authority
- CN
- China
- Prior art keywords
- data
- access
- nosql database
- database
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Abstract
本发明公开一种解决NoSQL数据库并发访问冲突的系统及使用该系统的解决方法,实现了NoSQL数据库在Web应用中并发操作数据资源发生冲突的问题,在不改变web前端代码和NoSQL数据库端的访问接口的方式下,设计新的数据访问代理的处理方法,采用将数据并发判断处理提前,减轻数据库端的访问压力、避免NoSQL数据库同资源冲突操作的业务不一致性;同时采用REST风格的接口方式,实现各层之间交互的松耦合。
Description
技术领域
本发明涉及信息交互的数据库访问技术领域。
背景技术
随着互联网web2.0的兴起,非关系型数据库NoSQL现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0应用,特别是超大规模和高并发的动态Web企业级应用已经显得力不从心,暴露了很多难以克服的问题。
NoSQL数据库种类繁多,但都基本具有易扩展、大数据量、高性能、灵活的数据模型、高可用等优势特点;NoSQL数据库在下列场景比较适用:数据模型比较简单,需要灵活性更强的IT系统,对数据库性能要求较高,不需要高度的数据一致性,对于给定Key比较容易映射复杂值得环境。
NoSQL数据库在Web应用上的适应性,以及大多数开源项目的低成本要求,更加速了NoSQL数据库在新兴的云计算、大数据互联网应用的推广。
随着Ajax、RoR等新的Web开发技术的回归与兴起,REST架构风格得到更多的关注与运用,当今各种流行的Web开发框架,几乎没有不支持REST开发的了。许多NoSQL数据库都有REST式的数据接口或者查询API;在快速开发Web应用的原型系统或小型应用中,可直接基于HTTP协议操作数据库,提高系统开发效率。
虽然现行Web应用大多数的特点是多读少写,并且很少有复杂事务需求。然而依然存在并发修改或删除相同数据信息的情况存在,如订票、抢单等多请求对统一资源的竞争处理,反映到数据库往往就是单条记录的并发冲突,处理不当会造成数据混乱,结果难以修复。
传统解决方案有:
1)利用关系型数据库的锁机制
关系型数据有整套的事务并发处理机制,比如表级锁、行级锁、死锁检测,回滚等。一些数据访问中间件框架如J2EE中的Hibernate等,使用的悲观锁与乐观锁,也是依靠数据库的锁机制实现的。
2)数据库操作单线程控制
即将对数据库的记录操作,以单线程处理,即串行化隔离方式,采用操作队列顺序访问;或者优化处理,将查询访问采用数据库连接池多线程访问,增删改等操作采用单线程处理。
3)采用数据版本记录机制
将数据增加一个版本号或时间戳版本标识,即数据库表增加一个“版本”字段实现,更新版本号变动,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
上述的已有解决方案的技术中,主要有以下缺点:
1)过度依赖关系型数据库的特性,当采用NoSQL数据库时无法适应。
2)简单粗暴的丢弃多线程数据库访问处理的能力和NoSQL高并发读写效率,大大降低Web应用并发访问的性能要求。
3)增加了数据模型设计的复杂度,也使得对数据操作的额外增加筛选条件,对数据的回退、迁移、备份等增加难度。
发明内容
由于以上现有技术各有各的特点和缺陷,本发明提出一种新的针对NoSQL数据库并发访问冲突的解决办法,可以减少系统复杂程度,提高Web应用开发效率,保证数据一致性要求。
为达到上述目的,本发明可采用如下技术方案:
一种解决NoSQL数据库并发访问冲突的系统,其特征在于:包括Web服务器、连接客户端和Web服务器的网络代理、NoSQL数据库、连接NoSQL数据库与Web服务器的数据访问代理;其中数据访问代理采用REST风格的API接口操作数据库;数据访问代理对外提供标准的HTTP请求访问接口;数据访问代理接收符合REST风格标准的HTTP资源操作请求,并采用http请求响应模式返回JSON格式操作结果。
相对于现有技术,本发明具体实现了NoSQL数据库在Web应用中并发操作数据资源发生冲突的问题,在不改变web前端代码和NoSQL数据库端的访问接口的方式下,设计新的数据访问代理的处理方法,采用将数据并发判断处理提前,减轻数据库端的访问压力、避免NoSQL数据库同资源冲突操作的业务不一致性;同时采用REST风格的接口方式,实现各层之间交互的松耦合。
使用上述系统的解决方法包括以下步骤:
步骤1,访问请求监听负责接收来自请求方的数据操作请求,建立http连接,并创建响应回调模式;
步骤2,URI解析请求过滤,将HTTP请求首先进行解析处理,从URL字串中解析出要操作的数据资源名、资源标识id,以及操作动作类型即请求类型;
步骤3,将数据查询类GET请求,直接发送数据访问执行线程控制处理,生成与NoSQL数据库RESTAPI调用请求,直接获取数据查询结果,执行响应回调,返回结果Response;
步骤4,将数据增删改类操作封装成任务单元,根据资源名和主键值,分别建立对应的处理队列;
步骤5,先进先出的处理队列的模式,由数据访问执行线程控制单元根据队列任务顺序执行,实现并发的控制调度,使某个id实现同时只有唯一的处理线程;
步骤6,数据访问代理还采用内存库的方式,实现操作任务队列存储和操作资源数据结果缓存,满足上述处理步骤的中间数据访问需求。
附图说明
图1是本发明中的系统架构图。
图2是本发明中数据访问代理内部处理流程图。
具体实施方式
本技术方案的架构思想如图1所示,从客户端请求到数据库,全部采用HTTP请求模式,保证了技术体系的一致性和易扩展性。具体如下:
1)抛弃了传统的通过数据库驱动程序访问数据的方式,采用REST风格的API接口操作数据库(NoSQL数据库自带REST访问接口),有利于数据库访问的编程语言无关性。
2)增加数据访问代理,这是本技术方案的核心部件,可以作为独立的数据访问层部署在单独的服务器中,接收多Web服务器的数据库操作请求,在小型应用中也可部署在Web应用服务器上。
3)数据访问代理对外提供标准的HTTP请求访问接口,保持与NoSQL数据库RESTAPI接口风格一致,提供无状态数据库操作访问代理服务;Web服务应用无需担心数据访问并发冲突,所以数据操作请求由代理中的并发访问控制实现。
4)数据访问代理接收符合REST风格标准的HTTP资源操作请求:GET、POST、PUT、DELETE,这正是对数据库资源CRUD操作的实现分别为查询、新增、修改、删除,采用http请求响应模式返回JSON格式操作结果,可根据业务要求,返回自定义的操作结果和并发处理预期响应。
RESTAPI设计就是为了消除创建松散耦合服务时的依赖关系,这也正是过去分布式体系结构的缺陷,RESTAPI的设计目标就是不依赖于任何通信协议。众多的NoSQL数据库都可以通过RESTful的方式访问,这样可以通过URI的方式建立数据库连接和操作,简化与数据库的交互过程。
数据访问代理的设计思想:
1)数据访问代理作为数据资源访问NoSQL数据库的中间代理访问层,是独立运行的中间件服务器。
2)数据访问代理以跨平台原则设计,采用Java或Node.js作为运行基础环境。对大型Web应用的响应要求,从架构上建议采用异步非阻塞式的松耦合模式,使用Node.js更符合目前开发需求。
如图2所示,本设计方案的数据访问代理内部处理流程如下:
步骤1,访问请求监听负责接收来自请求方的数据操作请求,建立http连接,并创建响应回调模式(Java下使用Response对象向后传递,Nodejs采用回调函数)。
步骤2,URI解析请求过滤,将HTTP请求首先进行解析处理,从URL字串中解析出要操作的数据资源名(通常可理解为表名)、资源标识id(记录主键),以及操作动作类型(CRUD),即请求类型GET、POST、PUT、DELETE。
步骤3,将数据查询类GET请求,直接发送数据访问执行线程控制处理,又控制处理,生成与NoSQL数据库RESTAPI调用请求,直接获取数据查询结果,执行响应回调,返回Response结果。
步骤4,将数据增删改类操作,即对应的POST、PUT、DELETE类型的请求,封装成任务单元,根据资源名和主键值,分别建立对应的处理队列。
步骤5,先进先出的处理队列的模式,由数据访问执行线程控制单元根据队列任务顺序执行,实现并发的控制调度,确保对某个id实现同时只有唯一的处理线程,即避免相同数据资源的并发操作。
步骤6,数据访问执行线程控制单元在执行数据访问任务时,可根据业务需求,对执行操作的逻辑实现编码控制,如时间判断、前后同类资源差异判断等条件分支处理,以达到控制资源操作的冲突矛盾,不满足业务要求的直接返回回调Response,避免对NoSQL数据库调用的资源浪费。
步骤7,数据访问代理还将采用内存库的方式,实现操作任务队列存储和操作资源数据结果缓存,满足上述处理步骤的中间数据访问需求。
本发明的关键点是提出一个新的较为有效的解决方案,具体实现了NoSQL数据库在Web应用中并发操作数据资源发生冲突的问题,在不改变web前端代码和NoSQL数据库端的访问接口的方式下,设计新的数据访问代理的处理方法,采用将数据并发判断处理提前,减轻数据库端的访问压力、避免NoSQL数据库同资源冲突操作的业务不一致性;同时采用REST风格的接口方式,实现各层之间交互的松耦合。
本发明的欲保护点是新型的技术解决方案,该方案在于REST接口访问数据库的模式下,采用数据资源处理队列结合业务逻辑控制判断的方式,解决了在NoSQL数据库访问中,资源操作访问冲突给业务系统带来的数据异常问题。
这种针对网络应用的设计和开发方式,可以降低开发复杂性,提供较为可靠的数据资源避免冲突的解决,同时带来系统的高可伸缩性。
本发明应用于分布式Web应用系统,体现了如下优点:
采用了不依赖其他协议的通信接口访问。
独立的中间件处理服务方式,不影响web前端和业务端系统。
通用统一的REST风格的接口,与NoSQL数据库RESTAPI访问接口一致,有利于在开发初期进行原型系统的搭建时,直接调用RESTAPI的NoSQL数据库访问,无缝对接,快速开发。
可通过对数据资源的访问接口方式改造,在不影响前端业务的情况下,对关系型数据库、文件资源等其他非NoSQL数据库资源实现类似的并发冲突问题。
另外,本发明的具体实现方法和途径很多,以上所述仅是本发明的优选实施方式。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (6)
1.一种解决NoSQL数据库并发访问冲突的系统,其特征在于:包括Web服务器、连接客户端和Web服务器的网络代理、NoSQL数据库、连接NoSQL数据库与Web服务器的数据访问代理;
其中数据访问代理采用REST风格的API接口操作数据库;数据访问代理对外提供标准的HTTP请求访问接口;
数据访问代理接收符合REST风格标准的HTTP资源操作请求,并采用http请求响应模式返回JSON格式操作结果。
2.根据权利要求1所述的解决NoSQL数据库并发访问冲突的系统,其特征在于:客户端请求到NoSQL数据库,全部采用HTTP请求模式。
3.根据权利要求1所述的解决NoSQL数据库并发访问冲突的系统,其特征在于:数据访问代理作为独立的数据访问层部署在单独的服务器中以接收多Web服务器的数据库操作请求,或者数据访问代理部署在Web应用服务器上。
4.使用根据权利要求1至3任一项所述解决NoSQL数据库并发访问冲突的系统的解决方法,其特征在于,包括以下步骤:
步骤1,访问请求监听负责接收来自请求方的数据操作请求,建立http连接,并创建响应回调模式;
步骤2,URI解析请求过滤,将HTTP请求首先进行解析处理,从URL字串中解析出要操作的数据资源名、资源标识id,以及操作动作类型即请求类型;
步骤3,将数据查询类GET请求,直接发送数据访问执行线程控制处理,生成与NoSQL数据库RESTAPI调用请求,直接获取数据查询结果,执行响应回调,返回结果Response;
步骤4,将数据增删改类操作封装成任务单元,根据资源名和主键值,分别建立对应的处理队列;
步骤5,先进先出的处理队列的模式,由数据访问执行线程控制单元根据队列任务顺序执行,实现并发的控制调度,使某个id实现同时只有唯一的处理线程;
步骤6,数据访问代理还采用内存库的方式,实现操作任务队列存储和操作资源数据结果缓存,满足上述处理步骤的中间数据访问需求。
5.根据权利要求4所述的解决方法,其特征在于:响应回调模式为Java下使用Response对象向后传递,Nodejs采用回调函数。
6.根据权利要求4所述的解决方法,其特征在于:数据访问执行线程控制单元在执行数据访问任务时,根据业务需求,对执行操作的逻辑实现编码控制,以达到控制资源操作的冲突矛盾,不满足业务要求的直接返回回调Response。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510836145.XA CN105354328B (zh) | 2015-11-25 | 2015-11-25 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510836145.XA CN105354328B (zh) | 2015-11-25 | 2015-11-25 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354328A true CN105354328A (zh) | 2016-02-24 |
CN105354328B CN105354328B (zh) | 2019-03-26 |
Family
ID=55330300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510836145.XA Active CN105354328B (zh) | 2015-11-25 | 2015-11-25 | 一种解决NoSQL数据库并发访问冲突的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354328B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708948A (zh) * | 2016-11-24 | 2017-05-24 | 广东网金控股股份有限公司 | 一种用主键唯一性实现事务操作的方法及装置 |
CN106815354A (zh) * | 2017-01-22 | 2017-06-09 | 上海易贷网金融信息服务有限公司 | 一种数据库数据缓冲处理方法 |
CN107506379A (zh) * | 2017-07-20 | 2017-12-22 | 北京影合众新媒体技术服务有限公司 | 基于数据库row模式构建流式实时电影生态模型的方法 |
CN107704582A (zh) * | 2017-10-08 | 2018-02-16 | 安徽康佳电子有限公司 | 一种基于服务器和网页的闭环生态反馈链系统 |
CN108363741A (zh) * | 2018-01-22 | 2018-08-03 | 中国平安人寿保险股份有限公司 | 大数据统一接口方法、装置、设备及存储介质 |
CN109005217A (zh) * | 2018-07-05 | 2018-12-14 | 山东九州信泰信息科技股份有限公司 | 云计算环境下利用只读变量解决并发冲突的方法 |
CN111488339A (zh) * | 2019-01-25 | 2020-08-04 | 上海哔哩哔哩科技有限公司 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634374A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 一种并发访问请求的处理方法及装置 |
US20140108489A1 (en) * | 2012-10-15 | 2014-04-17 | Et International, Inc. | Flowlet-based processing |
CN104660617A (zh) * | 2015-03-18 | 2015-05-27 | 深圳市九洲电器有限公司 | 一种数据传输系统及方法 |
-
2015
- 2015-11-25 CN CN201510836145.XA patent/CN105354328B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140108489A1 (en) * | 2012-10-15 | 2014-04-17 | Et International, Inc. | Flowlet-based processing |
CN103634374A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 一种并发访问请求的处理方法及装置 |
CN104660617A (zh) * | 2015-03-18 | 2015-05-27 | 深圳市九洲电器有限公司 | 一种数据传输系统及方法 |
Non-Patent Citations (1)
Title |
---|
王之烔: "基于REST+NoSQL的水泵企业系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708948A (zh) * | 2016-11-24 | 2017-05-24 | 广东网金控股股份有限公司 | 一种用主键唯一性实现事务操作的方法及装置 |
CN106815354A (zh) * | 2017-01-22 | 2017-06-09 | 上海易贷网金融信息服务有限公司 | 一种数据库数据缓冲处理方法 |
CN107506379A (zh) * | 2017-07-20 | 2017-12-22 | 北京影合众新媒体技术服务有限公司 | 基于数据库row模式构建流式实时电影生态模型的方法 |
CN107704582A (zh) * | 2017-10-08 | 2018-02-16 | 安徽康佳电子有限公司 | 一种基于服务器和网页的闭环生态反馈链系统 |
CN108363741A (zh) * | 2018-01-22 | 2018-08-03 | 中国平安人寿保险股份有限公司 | 大数据统一接口方法、装置、设备及存储介质 |
CN108363741B (zh) * | 2018-01-22 | 2021-01-26 | 中国平安人寿保险股份有限公司 | 大数据统一接口方法、装置、设备及存储介质 |
CN109005217A (zh) * | 2018-07-05 | 2018-12-14 | 山东九州信泰信息科技股份有限公司 | 云计算环境下利用只读变量解决并发冲突的方法 |
CN111488339A (zh) * | 2019-01-25 | 2020-08-04 | 上海哔哩哔哩科技有限公司 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
CN111488339B (zh) * | 2019-01-25 | 2023-10-27 | 上海哔哩哔哩科技有限公司 | 基于Node.JS的NoSQL数据库、建立及处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105354328B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105354328A (zh) | 一种解决NoSQL数据库并发访问冲突的系统及方法 | |
US9946735B2 (en) | Index structure navigation using page versions for read-only nodes | |
US11157517B2 (en) | Versioned hierarchical data structures in a distributed data store | |
CN101421726B (zh) | 偶尔连接的应用服务器 | |
US9398077B2 (en) | Mobile applications | |
EP3695290B1 (en) | Alignment of source infrastructure data with a bis conceptual schema | |
AU2005246392B2 (en) | Occasionally-connected application server | |
US8694557B2 (en) | Extensibility of metaobjects | |
Viennot et al. | Synapse: a microservices architecture for heterogeneous-database web applications | |
US20010056428A1 (en) | Method and system for improved access to non-relational databases | |
US20080320055A1 (en) | Bi-Directional Data Modification With Synchronization | |
US20150160814A1 (en) | Consumption layer for business entities | |
CN111881223B (zh) | 数据管理方法、设备、系统及存储介质 | |
US10585720B1 (en) | Method and system for executing application programming interface (API) requests based on union relationships between objects | |
US20090287726A1 (en) | Method and system for synchronization of databases | |
CN103605698A (zh) | 一种用于分布异构数据资源整合的云数据库系统 | |
CN102937964B (zh) | 基于分布式系统的智能数据服务方法 | |
CN101546259A (zh) | 支持运行时模型扩展的对象关系映射系统和方法 | |
CN103838781A (zh) | 数据库访问方法及系统 | |
CN112131231A (zh) | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 | |
US8694559B2 (en) | Using database content for multiple business data systems connected to one database | |
Ye | Research on the key technology of big data service in university library | |
Popovic et al. | Formal verification of distributed transaction management in a SOA based control system | |
Cobbs | Persistence Programming: Are we doing this right? | |
Dai et al. | Design patterns for cloud services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |