CN106845263B - 一种访问数据库的方法、装置及电子设备 - Google Patents
一种访问数据库的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN106845263B CN106845263B CN201510883801.1A CN201510883801A CN106845263B CN 106845263 B CN106845263 B CN 106845263B CN 201510883801 A CN201510883801 A CN 201510883801A CN 106845263 B CN106845263 B CN 106845263B
- Authority
- CN
- China
- Prior art keywords
- access requirement
- database
- records
- record
- executed
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Abstract
本申请公开了一种访问数据库的方法、一种访问数据库的装置以及电子设备。所述访问数据库的方法,包括:根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;判断所述已执行完的记录的数量是否大于等于预设的阈值;若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。采用上述方法,能够解决用户在访问数据库中的数据时,对数据库进行的大量恶意修改和删除数据,或者大量查询数据后将数据导出的问题,保护了数据库中存储的数据的安全。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种访问数据库的方法以及一种访问数据库的装置;本申请同时涉及一种电子设备。
背景技术
数据库中包含大量的数据,用户可以通过数据库事务访问该数据库表,以获得所需的结果,通常执行事务操作对数据库进行访问时,会更新数据库中的一些数据。由于数据库中存储着大量的数据,所以在数据库系统中需要防止用户对数据库进行的大量恶意修改和删除数据,或者大量查询数据后将数据导出的行为。目前,现有的数据库系统防止对数据恶意操作的方案为:采用加密方式来防止非法用户盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据。
由此可见,在现有的防止对数据恶意操作的方案下,通过加密的方式只能防止非法用户来访问数据库,并不能阻止和限制合法用户盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据的恶意操作。
发明内容
本申请提供一种访问数据库的方法以及一种访问数据库的装置,以解决现有技术中的上述问题。本申请同时涉及一种电子设备。
本申请提供了一种访问数据库的方法,所述访问数据库的方法包括:
根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;
在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;
判断所述已执行完的记录的数量是否大于等于预设的阈值;
若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
可选的,所述访问需求,包括:查询操作、修改操作或者删除操作。
可选的,所述数据库表的存储引擎为支持事务处理的存储引擎。
可选的,在所述根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,包括:
若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录;
若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值;
若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
可选的,在所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作的步骤之后,包括:
判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败;
若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
可选的,所述在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,包括:
在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间;
获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
可选的,在所述对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作的步骤之后,包括:
若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
可选的,在所述计算在预设的时间范围内已执行完的记录的数量的步骤之前,包括:
若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称。
可选的,在所述获取与所述访问需求相对应的字段的名称的步骤之后,包括:
判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
若否,则执行所述计算在预设的时间范围内已执行完的记录的数量的步骤。
相应的,本申请还提供了一种访问数据库的装置,所述访问数据库的装置包括:
记录执行单元,用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;
执行数量计算单元,用于在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;
执行数量判断单元,用于判断所述已执行完的记录的数量是否大于等于预设的阈值;
停止单元,用于接收所述执行数量判断单元的判断结果,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
可选的,所述记录执行单元,具体用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的查询操作、修改操作或者删除操作。
可选的,所述记录执行单元,具体用于根据访问需求,逐条对存储引擎为支持事务处理的存储引擎的数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作。
可选的,所述记录执行单元,包括:
查询记录子单元,用于若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录;
修改记录子单元,用于若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值;
删除记录子单元,用于若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
可选的,所述访问数据库的装置,还包括:
执行状态判断单元,用于所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作之后,判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败;
停止触发单元,用于接收所述执行状态判断单元的判断结果,若是,则触发所述停止单元。
可选的,所述执行数量计算单元,包括:
执行时间获取子单元,用于在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间;
记录数量获取子单元,用于获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
可选的,所述访问数据库的装置,还包括:
回滚单元,用于在所述对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作之后,若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
可选的,所述访问数据库的装置,还包括:
字段名称获取单元,用于在所述计算在预设的时间范围内已执行完的记录的数量之前,若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称。
可选的,所述访问数据库的装置,还包括:
字段名称判断单元,用于在所述获取与所述访问需求相对应的字段的名称的之后,判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
执行数量计算触发单元,用于接收所述字段名称判断单元的判断结果,若否,则触发所述执行数量计算单元。
此外,本申请还提供了一种电子设备,包括:
显示器;
处理器;
存储器,用于存储数据库访问程序,所述程序在被所述处理器读取执行时,执行如下操作:根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,判断所述已执行完的记录的数量是否大于等于预设的阈值,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
与现有技术相比,本申请具有以下优点:
本申请提供的一种访问数据库的方法、一种访问数据库的装置以及电子设备,通过根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;判断所述已执行完的记录的数量是否大于等于预设的阈值;若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。所述技术方案解决了用户在访问数据库中的数据时,对数据库进行的大量恶意修改和删除数据,或者大量查询数据后将数据导出的问题,保护了数据库中存储的数据的安全。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的访问数据库的方法的流程图;
图2示出了根据本申请的实施例提供的逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作的流程图;
图3示出了根据本申请的实施例提供的访问需求发生访问错误时结束访问需求的流程图;
图4示出了根据本申请的实施例提供的在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量的流程图;
图5示出了根据本申请的实施例提供的访问数据库的装置的示意图;
图6示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种访问数据库的方法以及一种访问数据库的装置,本申请的实施例同时提供了一种电子设备。在下面的实施例中逐一进行详细说明。
目前,现有的数据库系统防止对数据恶意操作的方案为:采用加密方式来防止非法用户盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据。由此可见,在现有的防止对数据恶意操作的方案下,通过加密的方式只能防止非法用户来访问数据库,并不能阻止和限制合法用户盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据的恶意操作。针对这一问题,本申请的技术方案通过在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;判断所述已执行完的记录的数量是否大于等于预设的阈值,实现了防止盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据的恶意操作的功能。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的数据库作简要说明。
在本技术方案中使用的数据库为MySQL数据库,MySQL是一个关系型数据库管理系统。MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的相关功能在MySQL中称为存储引擎(也称为表类型)。
MySQL支持多个存储引擎,包括处理事务的引擎和处理非事务的引擎,其中支持事务处理的存储引擎为InnoDB和BDB(BerkleyDB)。事务(transaction)是指作为一个不可分割的逻辑单元而被执行的一组SQL语句,是一个连续数据库操作,例如:在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。事务具有两个关键字COMMIT(提交)和ROLLBACK(回滚)。当一个事务完成后,发出COMMIT命令使参与更改的数据库表中的数据生效;如果发故障,发出ROLLBACK命令使事务中引用的数据库表中的数据返回到以前的状态。
事务有以下四个特性,通常被称为ACID:
原子性:确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。
一致性:确保数据库正确地改变状态后,成功提交的事务。
隔离性:使事务操作彼此独立的和透明的。
持久性:确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。
本申请的实施例提供了一种访问数据库的方法。所述访问数据库的方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的访问数据库的方法的流程图。
所述访问数据库的方法包括:
步骤S101,根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作。
在本实施例中,所述访问需求是结构化查询语句,根据所述访问需求中包含的动词,所述访问需求包括:对数据库表的查询操作、对数据库表的修改操作或者对数据库表的删除操作。
需要说明的是,结构化查询语句(Structured Query Language)简称为SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言。在SQL中包括数据查询语句、数据操作语句以及事务处理语句等,其中数据查询语句用于从数据库表中获得数据,保留字SELECT是数据查询语句中最常用的动词,其他保留字包括WHERE,ORDER BY,GROUP BY等;数据操作语句用于添加、修改和删除数据库表中的行,所述数据操作语句的动词包括INSERT,UPDATE和DELETE;事务处理语句能够确保被语句所影响的数据库表的所有行及时更新,所述事务处理语句的动词包括:BEGIN TRANSACTION,COMMIT和ROLLBACK。
例如:若访问需求中的动词为UPDATE,则所述访问需求为对数据库表的修改操作;若访问需求中的动词为DELETE,则所述访问需求为对数据库表的删除操作;若访问需求中的动词为SELECT,则所述访问需求为对数据库表的查询操作。
需要说明的是,在数据库表中,数据库表中的每一列是对应实体的属性,称作字段;数据库表中的每一行(即数据库中的每条记录)称作元祖,在二维数据库表里,元组也称为记录。
可以理解的,由于记录是由多个字段组成的存储在数据库表中,所以从数据库表中获取记录时,需要将所述访问需求的参数对应数据库表中的字段的名称和取值,通过设置访问需求中的参数的取值,获取在数据库表中存储的具体的记录。
设置访问需求的目的是为了通过SQL语句从数据库表中根据需要提取符合要求的记录。在数据库系统中,对于SQL语句可以对应有一个或者多个参数,例如,名称为LastName的参数以及名称为FirstName的参数,可以作为从数据库表中查询记录的依据。通过设置SQL语句中参数的不同取值的组合,可以获取满足不同访问需求的记录。
例如:从名称为Persons的数据库表中获取名称为LastName和FirstName字段的值,则所述访问需求如下:
SELECT LastName,FirstName FROM Persons。
由于在本技术方案中使用的数据库为MySQL数据库,并且本申请的技术方案是基于事务引擎表实现防止盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据的恶意操作的功能的,所以在本实施例中,访问需求访问的数据库表的存储引擎均为支持事务处理的储存引擎,例如:InnoDB和BDB(BerkleyDB)储存引擎,具体到本实施例中,所述访问需求访问的数据库表的存储引擎为InnoDB。
事务是一个不可分割的逻辑单元而被执行的一组SQL语句,是一个连续数据库操作,所以支持事务处理的数据库表在被所述访问需求进行访问时,需要执行至少一条SQL语句,例如:Wilson向Peter汇款1000元,则从名称为Persons的数据库表中,将LastName字段为Wilson的记录中的Cash字段的数值减少1000,将LastName字段为Peter的记录中的Cash字段的数值增加1000,则所述访问需求如下:
UPDATE Person SET Cash=Cash-1000WHERE LastName='Wilson';
UPDATE Person SET Cash=Cash+1000WHERE LastName='Peter'。
需要说明的是,在上述UPDATE语句执行时,需要检查在执行过程中是否有任何错误,如果有错误,那么发出ROLLBACK命令,否则发出COMMIT命令。
在本实施例中,所述根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,可以采用如下方式实现:根据访问需求中的动词以及参数,从支持事务处理的储存引擎中提取一条与所述访问需求相匹配的记录,并对该记录执行对应于所述访问需求中的动词的操作,在该条记录执行完对应的操作后再从支持事务处理的储存引擎中提取下一条与所述访问需求相匹配的记录直至提取完与所述访问需求相匹配的全部记录。
所述根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,具体包括步骤S101-1至S101-3,下面结合图2作进一步说明。
请参考图2,其示出了根据本申请的实施例提供的逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作的流程图。
步骤S101-1,若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录。
在本实施例中,若访问需求中的动词为SELECT,则所述访问需求为数据查询语句,则根据所述访问需求中的参数从对应该参数的数据库表中获取对应参数的记录。
例如:所述访问需求为SELECT LastName,FirstName FROM Persons,则从名称为Persons的数据库表中获取名称为LastName和FirstName字段的值。
步骤S101-2,若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值。
在本实施例中,若访问需求中的动词为UPDATE,则所述访问需求为数据操作语句,即:所述访问需求为对数据库表的修改操作,则根据所述访问需求中的参数从对应该参数的数据库表中将对应参数的字段的取值进行修改。
例如:所述访问需求为UPDATE Person SET Cash=Cash-1000WHERE LastName='Wilson',则从名称为Persons的数据库表中,提取LastName字段为Wilson的记录,并对该条记录执行将Cash字段的数值减少1000的操作。
步骤S101-3,若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
在本实施例中,若访问需求中的动词为DELETE,则所述访问需求为数据操作语句,即:所述访问需求为对数据库表的删除操作,则根据所述访问需求中的参数从对应该参数的数据库表中将对应参数的字段的取值进行删除或者删除对应参数的整条记录。
以删除整条对应参数的记录为例,所述访问需求为DELETE FROM Person WHERELastName='Wilson',则从名称为Persons的数据库表中,提取LastName字段为Wilson的记录,并对该条记录执行将该整条记录删除的操作。
为了使所述访问需求在访问数据库表时,因为某些原因使所述访问需求发生访问错误时,保障已执行完的记录,本实施例的技术方案提供了一种优选实施方式,在步骤S101所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作之后,具体包括步骤S102-1至S102-2,下面结合图3作进一步说明。
请参考图3,其示出了根据本申请的实施例提供的访问需求发生访问错误时结束访问需求的流程图。
步骤S102-1,判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败。
在本实施例中,若所述访问需求为数据操作语句,则在对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作后,判断该记录执行完对应的操作后其字段的值是否与所述访问需求中参数的取值不相同。
需要说明的是,若记录执行完对应的操作后其字段的值与所述访问需求中参数的取值不相同,则说明在执行数据操作时执行失败;若记录执行完对应的操作后其字段的值与所述访问需求中参数的取值相同,则说明在执行数据操作时执行成功。
步骤S102-2,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
本步骤接收步骤S102-1中的判断结果,若记录执行完对应的操作后其字段的值与所述访问需求中参数的取值不相同,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
需要说明的是,访问需求是从支持事务处理的存储引擎中逐条提取出与所述访问需求相匹配的记录,并且每提取出一条记录就对该记录执行对应于所述访问需求中的动词的操作,所以在本步骤中,若记录执行完对应的操作后其字段的值与所述访问需求中参数的取值不相同时,则停止从支持事务处理的存储引擎中继续提取与所述访问需求相匹配的记录并停止执行对应于所述访问需求的操作。
步骤S103,在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量。
在本实施例中,所述在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,具体包括步骤S103-1至S103-2,下面结合图4作进一步说明。
请参考图4,其示出了根据本申请的实施例提供的在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量的流程图。
步骤S103-1,在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间。
在具体实施时,可以利用系统提供的接口实现上述获取当前系统时间功能,例如,可以使用系统提供的System.currentTimeMillis()类实现上述获取当前系统时间的操作,并将获取的所述当前系统时间作为该任务的执行时间。
步骤S103-2,获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
在本实施例中,所述获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量,可以采用如下方式实现:将所述当前系统时间作为上边界,并根据预设的时间长度确定下边界,根据上下边界确定时间范围,并获取执行时间在该时间范围内的已执行完的记录的数量。
例如:当前系统时间为11月24日14:00,预设的时间长度为24小时,则以11月24日14:00为预设的时间范围的上边界,并确定下边界为11月23日14:00,则获取执行时间在11月23日14:00至11月24日14:00之间的已执行完的记录的数量。
需要说明的是,所述已执行完的记录是指:在上述时间范围内,执行过查询操作、修改操作或者删除操作的记录。
上面通过步骤S103-1至S103-2描述了采用动态时间范围获取已执行完的记录的数量的实施方式。在其他的实施方式中,还可以采用设置固定时间范围获取已执行完的记录的数量的实施方式。具体说,可以设置计时器,该计时器以24小时为周期进行计时,并通过计数器计算在每个周期内已执行完的记录的数量,在计时器计时了一个周期后,计时器从零开始重新计时,并清空计数器中计算的在上个周期内已执行完的记录的数量。
需要说明的是,由于访问需求是从支持事务处理的存储引擎中逐条提取出与所述访问需求相匹配的记录,并且每提取出一条记录就对该记录执行对应于所述访问需求中的动词的操作,所以在本步骤中,在每条记录执行完对应于所述访问需求的操作后,都需要计算在预设的时间范围内已执行完的记录的数量。
由于有些数据库表是用来存储大量同类型记录的数据库表(例如:存储商品或货品信息的数据库表,在进行上货或者清货时,需要对记录进行增加或删除大量记录),所以为了使用户能正常处理某些必须要大量修改或删除的记录,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在执行所述计算在预设的时间范围内已执行完的记录的数量之前,包括如下步骤:
若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称;
判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
若否,则执行所述计算在预设的时间范围内已执行完的记录的数量的步骤。
需要说明的是,用户预先在字段列表中输入字段的名称,在执行所述计算在预设的时间范围内已执行完的记录的数量之前,通过所述访问需求对记录中的字段的取值执行修改或删除操作时,判断对应字段的名称是否在预设的字段列表中,决定是否执行所述计算在预设的时间范围内已执行完的记录的数量的步骤。
步骤S105,判断所述已执行完的记录的数量是否大于等于预设的阈值。
本步骤接收步骤S103中已执行完的记录的数量,并将所述已执行完的记录的数量和预设的阈值进行比对,判断所述已执行完的记录的数量是否大于等于预设的阈值。
可以理解的,本申请的技术方案是为了防止盗取数据库中存储的数据或对数据库进行大量恶意修改和删除数据的恶意操作,若所述预设的阈值设置的数值太大,则所能限制的恶意修改和删除数据的恶意操作就越少;若所述预设的阈值设置的数值太小,则所能限制的恶意修改和删除数据的恶意操作就越多;若所述预设的阈值设置的数值过小,那么用户正常的操作可能也会受到影响。例如:预设的阈值为5000。
步骤S107,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
本步骤接收步骤S105中的判断结果,若所述已执行完的记录的数量大于等于预设的阈值,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
需要说明的是,访问需求是从支持事务处理的存储引擎中逐条提取出与所述访问需求相匹配的记录,并且每提取出一条记录就对该记录执行对应于所述访问需求中的动词的操作,所以在本步骤中,若所述已执行完的记录的数量大于等于预设的阈值,则停止从支持事务处理的存储引擎中继续提取与所述访问需求相匹配的记录并停止执行对应于所述访问需求的操作。
由于访问需求是从支持事务处理的存储引擎中逐条提取出与所述访问需求相匹配的记录,即:所述访问需求可能是一组SQL语句执行事务处理操作,则所述已执行完的记录的数量大于等于预设的阈值时,需要对重置数据库表中记录的取值,本实施例的技术方案提供了一种优选实施方式,在步骤S107对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作之后,若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
需要说明的是,由于判断所述已执行完的记录的数量是否大于等于预设的阈值是在记录执行完对应于所述访问需求的操作后,所以若已执行完的记录的数量大于等于预设的阈值时,说明该条记录达到对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作的条件,需要对所述访问需求进行判断,若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作并抛出该条记录执行错误的信息;若所述访问需求为查询操作,则只抛出该条记录执行错误的信息。
本申请实施例提供的一种访问数据库的方法,通过根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;判断所述已执行完的记录的数量是否大于等于预设的阈值;若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作,防止了在访问数据库中的数据时,对数据库进行的大量恶意修改和删除数据,或者大量查询数据后将数据导出的恶意操作,保护了数据库中存储的数据的安全。
在上述的实施例中,提供了一种访问数据库的方法,与上述访问数据库的方法相对应的,本申请还提供了一种访问数据库的装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述访问数据库的装置实施例如下:
请参考图5,其示出了根据本申请的实施例提供的访问数据库的装置的示意图。
所述访问数据库的装置,包括:记录执行单元501、执行数量计算单元503、执行数量判断单元505以及停止单元507;
所述记录执行单元501,用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;
所述执行数量计算单元503,用于在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;
所述执行数量判断单元505,用于判断所述已执行完的记录的数量是否大于等于预设的阈值;
所述停止单元507,用于接收所述执行数量判断单元205的判断结果,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
可选的,所述记录执行单元501,具体用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的查询操作、修改操作或者删除操作。
可选的,所述记录执行单元501,具体用于根据访问需求,逐条对存储引擎为支持事务处理的存储引擎的数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作。
可选的,所述记录执行单元501,包括:查询记录子单元、修改记录子单元、以及删除记录子单元;
所述查询记录子单元,用于若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录;
所述修改记录子单元,用于若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值;
所述删除记录子单元,用于若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
可选的,所述访问数据库的装置,还包括:执行状态判断单元以及停止触发单元;
所述执行状态判断单元,用于所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作之后,判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败;
所述停止触发单元,用于接收所述执行状态判断单元的判断结果,若是,则触发所述停止单元507。
可选的,所述执行数量计算单元503,包括:执行时间获取子单元以及记录数量获取子单元;
所述执行时间获取子单元,用于在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间;
所述记录数量获取子单元,用于获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
可选的,所述访问数据库的装置,还包括:回滚单元;
所述回滚单元,用于在所述对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作之后,若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
可选的,所述访问数据库的装置,还包括:字段名称获取单元;
所述字段名称获取单元,用于在所述计算在预设的时间范围内已执行完的记录的数量之前,若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称。
可选的,所述访问数据库的装置,还包括:字段名称判断单元以及执行数量计算触发单元;
所述字段名称判断单元,用于在所述获取与所述访问需求相对应的字段的名称的之后,判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
所述执行数量计算触发单元,用于接收所述字段名称判断单元的判断结果,若否,则触发所述执行数量计算单元503。
在上述的实施例中,提供了一种访问数据库的方法以及一种访问数据库的装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图6,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器601;处理器603;存储器605;
所述存储器605,用于存储数据库访问程序,所述程序在被所述处理器读取执行时,执行如下操作:根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,判断所述已执行完的记录的数量是否大于等于预设的阈值,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (19)
1.一种访问数据库的方法,其特征在于,包括:
根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;
在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;
判断所述已执行完的记录的数量是否大于等于预设的阈值,其中,所述预设的阈值用于限制盗取数据库中存储的数据或对所述数据库的恶意修改和删除数据的恶意操作;
若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
2.根据权利要求1所述的访问数据库的方法,其特征在于,所述访问需求,包括:查询操作、修改操作或者删除操作。
3.根据权利要求2所述的访问数据库的方法,其特征在于,所述数据库表的存储引擎为支持事务处理的存储引擎。
4.根据权利要求3所述的访问数据库的方法,其特征在于,在所述根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,包括:
若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录;
若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值;
若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
5.根据权利要求3所述的访问数据库的方法,其特征在于,在所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作的步骤之后,包括:
判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败;
若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
6.根据权利要求3所述的访问数据库的方法,其特征在于,所述在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,包括:
在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间;
获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
7.根据权利要求6所述的访问数据库的方法,其特征在于,在所述对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作的步骤之后,包括:
若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
8.根据权利要求4所述的访问数据库的方法,其特征在于,在所述计算在预设的时间范围内已执行完的记录的数量的步骤之前,包括:
若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称。
9.根据权利要求8所述的访问数据库的方法,其特征在于,在所述获取与所述访问需求相对应的字段的名称的步骤之后,包括:
判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
若否,则执行所述计算在预设的时间范围内已执行完的记录的数量的步骤。
10.一种访问数据库的装置,其特征在于,包括:
记录执行单元,用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作;
执行数量计算单元,用于在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量;
执行数量判断单元,用于判断所述已执行完的记录的数量是否大于等于预设的阈值,其中,所述预设的阈值用于限制盗取数据库中存储的数据或对所述数据库的恶意修改和删除数据的恶意操作;
停止单元,用于接收所述执行数量判断单元的判断结果,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作。
11.根据权利要求10所述的访问数据库的装置,其特征在于,所述记录执行单元,具体用于根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的查询操作、修改操作或者删除操作。
12.根据权利要求11所述的访问数据库的装置,其特征在于,所述记录执行单元,具体用于根据访问需求,逐条对存储引擎为支持事务处理的存储引擎的数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作。
13.根据权利要求12所述的访问数据库的装置,其特征在于,所述记录执行单元,包括:
查询记录子单元,用于若所述访问需求为查询操作,则根据所述查询操作中的查询参数逐条从数据库表中查询出与所述查询参数相匹配的记录;
修改记录子单元,用于若所述访问需求为修改操作,则根据所述修改操作中的修改参数逐条修改对应记录中字段的值;
删除记录子单元,用于若所述访问需求为删除操作,则根据所述删除操作中的删除参数逐条删除对应的记录或者删除记录中对应字段的值。
14.根据权利要求12所述的访问数据库的装置,其特征在于,还包括:
执行状态判断单元,用于所述逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作之后,判断对相匹配的记录执行对应于所述访问需求的操作时是否执行失败;
停止触发单元,用于接收所述执行状态判断单元的判断结果,若是,则触发所述停止单元。
15.根据权利要求12所述的访问数据库的装置,其特征在于,所述执行数量计算单元,包括:
执行时间获取子单元,用于在每条记录执行完对应所述访问需求的操作时获取当前系统时间,并将所述当前系统时间作为该记录的执行时间;
记录数量获取子单元,用于获取执行时间在以所述当前系统时间作为上界的时间范围内的已执行完的记录的数量。
16.根据权利要求15所述的访问数据库的装置,其特征在于,还包括:
回滚单元,用于在对与所述访问需求相匹配的记录停止执行对应于所述访问需求的操作之后,若所述访问需求为修改操作或者删除操作,则对停止所述访问需求前最后一条执行对应于所述访问需求的操作的记录进行回滚操作。
17.根据权利要求13所述的访问数据库的装置,其特征在于,还包括:
字段名称获取单元,用于在所述计算在预设的时间范围内已执行完的记录的数量之前,若所述访问需求为修改或者删除操作,则获取与所述访问需求相对应的字段的名称。
18.根据权利要求17所述的访问数据库的装置,其特征在于,还包括:
字段名称判断单元,用于在所述获取与所述访问需求相对应的字段的名称的之后,判断与所述访问需求相对应的字段的名称是否在预设的字段列表中;
执行数量计算触发单元,用于接收所述字段名称判断单元的判断结果,若否,则触发所述执行数量计算单元。
19.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储数据库访问程序,所述程序在被所述处理器读取执行时,执行如下操作:根据访问需求,逐条对数据库表中与所述访问需求相匹配的记录执行对应于所述访问需求的操作,在每条记录执行完对应于所述访问需求的操作后,计算在预设的时间范围内已执行完的记录的数量,判断所述已执行完的记录的数量是否大于等于预设的阈值,若是,则对与所述访问需求相匹配且未执行对应于所述访问需求的操作的记录停止执行对应于所述访问需求的操作;
其中,所述预设的阈值用于限制盗取数据库中存储的数据或对所述数据库的恶意修改和删除数据的恶意操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510883801.1A CN106845263B (zh) | 2015-12-04 | 2015-12-04 | 一种访问数据库的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510883801.1A CN106845263B (zh) | 2015-12-04 | 2015-12-04 | 一种访问数据库的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106845263A CN106845263A (zh) | 2017-06-13 |
CN106845263B true CN106845263B (zh) | 2020-06-26 |
Family
ID=59150087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510883801.1A Active CN106845263B (zh) | 2015-12-04 | 2015-12-04 | 一种访问数据库的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106845263B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691214B (zh) * | 2018-07-05 | 2022-04-26 | 视联动力信息技术股份有限公司 | 一种业务对象的数据处理方法和装置 |
CN109241109A (zh) * | 2018-08-20 | 2019-01-18 | 联动优势电子商务有限公司 | 一种数据库操作方法及装置 |
CN113076331B (zh) * | 2021-03-23 | 2023-06-02 | 中国联合网络通信集团有限公司 | 中台数据处理方法、装置、设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102118361A (zh) * | 2009-12-31 | 2011-07-06 | 北京金山软件有限公司 | 一种基于网络协议的数据传输控制方法和装置 |
CN102915344A (zh) * | 2012-09-25 | 2013-02-06 | 新浪网技术(中国)有限公司 | 一种sql语句处理方法及装置 |
CN104202314A (zh) * | 2014-08-22 | 2014-12-10 | 中国联合网络通信集团有限公司 | 一种阻止ddos攻击的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856083B2 (en) * | 2006-06-09 | 2014-10-07 | Oracle International Corporation | Framework to optimize delete all row operations on database objects to improve throughput, query ability and flashback |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN104331406A (zh) * | 2013-12-20 | 2015-02-04 | 乐视网信息技术(北京)股份有限公司 | 一种数据库容量控制方法及装置 |
-
2015
- 2015-12-04 CN CN201510883801.1A patent/CN106845263B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102118361A (zh) * | 2009-12-31 | 2011-07-06 | 北京金山软件有限公司 | 一种基于网络协议的数据传输控制方法和装置 |
CN102915344A (zh) * | 2012-09-25 | 2013-02-06 | 新浪网技术(中国)有限公司 | 一种sql语句处理方法及装置 |
CN104202314A (zh) * | 2014-08-22 | 2014-12-10 | 中国联合网络通信集团有限公司 | 一种阻止ddos攻击的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106845263A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9069832B2 (en) | Approach for modularized sychronization and memory management | |
US9928281B2 (en) | Lightweight table comparison | |
JP6724039B2 (ja) | 分散型コンピューティングシステムにおけるデータベーストランザクションの処理 | |
US7181460B2 (en) | User-defined aggregate functions in database systems without native support | |
US20160125022A1 (en) | Efficient maintenance of column store indexes on memory-optimized tables | |
CN110020542B (zh) | 数据读写方法及装置、电子设备 | |
US9576038B1 (en) | Consistent query of local indexes | |
US10754854B2 (en) | Consistent query of local indexes | |
US20150205850A1 (en) | Eager replication of uncommitted transactions | |
US9053153B2 (en) | Inter-query parallelization of constraint checking | |
US8667010B2 (en) | Database table partitioning allowing overlaps used in full text query | |
CN108205464A (zh) | 一种数据库死锁的处理方法、装置和数据库系统 | |
US9239858B1 (en) | High-concurrency transactional commits | |
CN106845263B (zh) | 一种访问数据库的方法、装置及电子设备 | |
CN109284289B (zh) | 数据集处理方法、装置、计算机设备及存储介质 | |
US9734187B2 (en) | Atomic transactions in a NOSQL database | |
US20170116255A1 (en) | System and method for use of lock-less techniques with a multidimensional database | |
JP2016224920A (ja) | Walを用いたデータベースロールバック | |
CN110895537A (zh) | 自由查询权限控制的方法及装置 | |
US6763358B2 (en) | Method and system for activating column triggers in a database management system | |
US20180341709A1 (en) | Unstructured search query generation from a set of structured data terms | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
US9405788B2 (en) | Mass delete restriction in a database | |
US20140201228A1 (en) | Systems and methods for managing offline database access | |
CN107239474B (zh) | 一种数据记录方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |