CN115878655A - 数据操作方法、装置、计算机设备和存储介质 - Google Patents
数据操作方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115878655A CN115878655A CN202211417985.9A CN202211417985A CN115878655A CN 115878655 A CN115878655 A CN 115878655A CN 202211417985 A CN202211417985 A CN 202211417985A CN 115878655 A CN115878655 A CN 115878655A
- Authority
- CN
- China
- Prior art keywords
- statement
- data
- database
- target
- target database
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据操作方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取目标租户对应的业务数据以及租户标识;根据所述业务数据生成执行语句;建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。采用本方法能够提高数据安全性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据操作方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,通常需要在云端存储多个租户的数据,怎样对多个租户的数据进行隔离和过滤成为影响数据安全性的重要问题。传统技术中,业务层根据人工设置的过滤条件对不同租户的数据进行过滤,容易因为遗漏过滤条件而造成数据处理错误,数据安全性低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高安全性的数据操作方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据操作方法。所述方法包括:
获取目标租户对应的业务数据以及租户标识;
根据所述业务数据生成执行语句;
建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
第二方面,本申请还提供了一种数据操作装置。所述装置包括:
获取模块,用于获取目标租户对应的业务数据以及租户标识;
生成模块,用于根据所述业务数据生成执行语句;
建立模块,用于建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
操作模块,用于通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
在一个实施例中,所述装置还包括:
添加模块,用于若所述执行语句为数据定义语句或者数据操作语句、且所述执行语句中未携带租户标识字段,在所述执行语句中添加所述租户标识字段,得到修改后的执行语句;
所述操作模块,还用于:
通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句进行数据操作。
在一个实施例中,所述操作模块,还用于:
当所述执行语句为所述数据定义语句中的索引创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建携带所述租户标识字段的组合索引;
当所述执行语句为所述数据定义语句中的数据表创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建数据表、且所创建的数据表的主键为携带所述租户标识字段的联合主键。
在一个实施例中,所述执行语句用于创建数据表;所述生成模块,还用于:
根据所述租户标识生成安全策略创建语句;
所述操作模块,还用于:
通过所述数据库连接将所述安全策略创建语句以及所述执行语句发送至所述目标数据库,以使所述目标数据库通过所述执行语句创建数据表,并通过所述安全策略创建语句对创建的所述数据表添加包含所述断言条件的安全策略。
在一个实施例中,所述操作模块,还用于:
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库从开启了安全策略的目标数据表中过滤出满足所述断言条件的目标数据行,并通过所述执行语句对所述目标数据行进行数据操作。
在一个实施例中,所述建立模块,还用于:
根据所述租户标识生成断言条件设置指令;
将所述断言条件设置指令发送至所述目标数据库,以使所述目标数据库通过执行所述断言条件设置指令设置所述数据库连接对应的断言条件。
在一个实施例中,所述装置还包括:
初始化数据库连接池;
所述建立与目标数据库间的数据库连接包括:
从初始化后的数据库连接池获取数据库连接对象;
通过所述数据库连接对象建立与目标数据库间的数据库连接。
在一个实施例中,所述生成模块,还用于:
确定所述业务数据对应的字段标识;
对所述业务数据以及所述业务数据对应的字段标识进行拼接,得到所述执行语句。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标租户对应的业务数据以及租户标识;
根据所述业务数据生成执行语句;
建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标租户对应的业务数据以及租户标识;
根据所述业务数据生成执行语句;
建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取目标租户对应的业务数据以及租户标识;
根据所述业务数据生成执行语句;
建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
上述数据操作方法、装置、计算机设备、存储介质和计算机程序产品,获取目标租户对应的业务数据以及租户标识,并根据业务数据生成执行语句。建立与目标数据库间的数据库连接,并根据租户标识设置数据库连接对应的断言条件。通过数据库连接将执行语句发送至目标数据库,以使目标数据库基于断言条件、通过执行语句进行数据操作。在设置断言条件之后,业务层在通过数据库连接对目标数据库进行数据操作时,即使用户未设置对数据行进行过滤的过滤条件,目标数据库自身可根据设置的断言条件对数据行进行过滤,然后对过滤所得的数据行进行数据操作。从而可以避免由于对过滤条件设置错误或者忘记设置过滤条件而导致误操作无访问权限的数据,提高了数据安全性。
附图说明
图1为一个实施例中数据操作方法的应用环境图;
图2为一个实施例中数据操作方法的流程示意图;
图3a为一个实施例中采购订单主表的示意图;
图3b为一个实施例中所创建的数据表的示意图;
图4为一个实施例中创建数据表方法的流程示意图;
图5为一个实施例中数据操作系统中各组件的示意图;
图6为一个实施例中数据操作方法的时序图;
图7为一个实施例中数据操作装置的结构框图;
图8为一个实施例中数据操作装置的结构框图;
图9为一个实施例中计算机设备的内部结构图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
现有的多租户数据隔离存储主要包括两种方案。第一种方案是对不同租户的数据进行隔离存储,例如,可以将不同租户的数据分表或者分库隔离存储,具体地,将不同租户的业务数据存储到不同数据库中,或同一个数据库服务器的不同数据库对象(schema)或不同的数据表中,数据表中不需要添加各租户的标识。第二种方案是在同一个数据表中对不同租户的数据进行隔离存储,多个租户的数据存储在同一数据表中,通过租户标识字段对各租户的数据进行隔离和过滤。但是,对于第一种方案,由于每个租户独享服务器或者数据库schema,在单个数据库实例的schema数量有限的情况下,需要购买和部署大量的数据库服务器,导致IaaS(Infrastructure as a Service,基础设施即服务)成本和数据库运行维护成本较高。而对于第二种方案,业务系统需要在业务代码和SQL语句中显式处理租户标识字段来实现租户数据过滤,也即用户必须在业务代码和SQL语句中明确写出租户的标识,才能根据SQL语句过滤出该租户的数据,容易产生因用户写错或遗漏租户标识而导致数据处理错误或者误操作了无访问权限的数据,安全性低。此外,有些业务系统统一通过ORM(Object Relational Mapping,对象关系映射)层或路由层实现不同租户数据的隔离和过滤,但是ORM层或路由层的代码实现处理复杂度高,实现效率较低。
本申请利用数据库自身的能力来实现租户数据的过滤处理和权限控制,可以在同一数据表中实现多个租户数据的隔离存储,降低了成本,并且业务系统无需在业务代码或者SQL语句中显式处理过滤条件即可实现对不同租户数据的过滤,提高了数据安全性。此外,相比于通过ORM层或路由层实现不同租户数据的隔离和过滤,简化了实现的复杂度,提高了效率。
本申请实施例提供的数据操作方法,可以应用于如图1所示的应用环境中。其中,计算机设备102获取目标租户对应的业务数据以及租户标识;根据业务数据生成执行语句;建立与目标数据库104间的数据库连接,并根据租户标识设置数据库连接对应的断言条件;通过数据库连接将执行语句发送至目标数据库104,以使目标数据库104基于断言条件、通过执行语句进行数据操作。其中,计算机设备102可以是终端,也可以是服务器,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。目标数据库104可以是任意关系型数据库,例如,目标数据库可以是Postgresql数据库。关系型数据库是采用关系模型来组织数据的数据库,以行与列的形式存储数据。
在一个实施例中,如图2所示,提供了一种数据操作方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:
S202,获取目标租户对应的业务数据以及租户标识。
其中,目标租户是使用或者管理云服务的对象,通过租户名或者租户标识进行标志,可以是客户端或者开通云服务的账号等。目标租户通过接入云端获取云端提供的服务,并且可以在云端配置相关的业务。例如,目标租户可以通过云端进行订单的接收、管理等业务。或者,目标租户可以通过云端进行物品的订购、销售、存储等业务。或者,目标租户可以通过云端进行人力资源管理的业务。业务数据是目标租户在业务层面的相关数据。例如,业务数据可以是目标租户对应的进货量、销售量或者仓储量等数据。或者,业务数据也可以是目标租户对应的人员姓名、出勤时间或者职位等数据。租户标识用于对租户进行标识,可以由数字、字母、字符或者特殊符号等组成。例如,租户标识可以是1001、A1003等。计算机设备用租户标识对目标租户在数据表中的数据进行标识。例如,如图3a所示,图3a为采购订单主表,包括租户主键字段和业务字段,租户主键字段中存储了各租户的租户标识。单据主键、单据日期与单据编码字段为业务字段,业务字段中存储了各单据标识对应的目标租户的业务数据。各租户标识用于标识相应数据行的业务数据所对应的租户。
S204,根据业务数据生成执行语句。
其中,执行语句是用于对数据库中存储的数据进行操作的语句,可以是SQL(Structured Query Language,结构化查询语言)语句或者其他数据库语言的语句等。执行语句可以包括DML语句或者DDL语句等。DML语句用于对数据表中的记录进行操作,例如插入(insert)语句、select(查询)语句、update(更新)语句或者delete(删除)语句等。DDL语句用于定义数据库对象(包括库、表或者列)等,例如create(创建)语句等。
在一个实施例中,S204具体包括:确定业务数据对应的字段标识;对业务数据以及业务数据对应的字段标识进行拼接,得到执行语句。
其中,字段标识为数据表中业务数据字段的标识,例如,业务数据为单据编码时,对应的字段标识可以为fnumber。计算机设备对业务数据以及业务数据对应的字段标识进行拼接得到执行语句,以在执行语句中指明进行数据操作的字段,以及各字段的值。例如,执行语句可以为插入语句,计算机设备对租户标识、单据主键字段标识、单据日期字段标识和单据编码字段标识以及各字段对应的业务数据进行拼接,得到插入语句。通过运行该插入语句可以在数据表中插入数据行,所插入的数据行中包括单据主键字段、单据日期字段和单据编码字段,各字段中存储了相应的业务数据。
S206,建立与目标数据库间的数据库连接,并根据租户标识设置数据库连接对应的断言条件。
其中,目标数据库可以是任意关系型数据库,例如,目标数据库可以是Postgresql数据库。关系型数据库是采用关系模型来组织数据的数据库,以行与列的形式存储数据。断言条件是用于对数据表中的数据行进行过滤或者阻塞针对数据表的写操作的条件,可以用逻辑表达式来表示。例如,断言条件可以是租户标识=1001。
计算机设备在与目标数据库建立数据库连接时,设置数据库连接对应的断言条件。在设置断言条件之后,业务层在通过该数据库连接对目标数据库进行数据操作时,无需向目标数据库发送数据行的过滤条件,目标数据库自身可根据设置的断言条件对数据行进行过滤。从而可以避免由于业务层对过滤条件设置错误或者忘记设置过滤条件而导致数据操作发生错误,保证了数据操作的准确性,提高了数据安全性。例如,如果业务层想要对目标租户A的数据进行数据操作,传统技术中需要首先根据写在SQL语句中的过滤条件,从数据表中过滤出目标租户A的数据行,然后再对过滤出的数据行进行数据操作。如果用户忘记写过滤条件或者过滤条件有错误,则可能不能过滤出目标租户A全部的数据行,或者过滤得到目标租户B的数据行,从而可能会对目标租户B的数据进行误操作,导致数据安全性低。本申请中,在建立与目标数据库间的数据库连接时,根据租户标识设置该数据库连接对应的断言条件,从而在该数据库连接下进行数据操作时,目标数据库均自动执行设置的断言条件并根据断言条件对数据行进行过滤,无需用户再显式设置过滤条件,从而可以避免误操作其他租户的数据,保证了数据安全性。
S208,通过数据库连接将执行语句发送至目标数据库,以使目标数据库基于断言条件、通过执行语句进行数据操作。
其中,数据操作包括创建、插入、添加、修改、查找或者删除等操作。例如,计算机设备可以根据执行语句对满足断言条件的数据行进行删除,或者计算机设备也可以根据执行语句对满足断言条件的数据行进行修改。计算机设备通过数据库连接将执行语句发送至目标数据库,由于目标数据库已经设置了数据库连接对应的断言条件,在该数据库连接下,目标数据库在接收到执行语句时,先自动执行断言条件对数据行进行过滤,然后通过执行语句进行数据操作。
上述实施例中,获取目标租户对应的业务数据以及租户标识,并根据业务数据生成执行语句。建立与目标数据库间的数据库连接,并根据租户标识设置数据库连接对应的断言条件。通过数据库连接将执行语句发送至目标数据库,以使目标数据库基于断言条件、通过执行语句进行数据操作。在设置断言条件之后,业务层在通过数据库连接对目标数据库进行数据操作时,即使用户未设置对数据行进行过滤的过滤条件,目标数据库自身可根据设置的断言条件对数据行进行过滤,然后对过滤所得的数据行进行数据操作。从而可以避免由于对过滤条件设置错误或者忘记设置过滤条件而导致误操作无访问权限的数据,提高了数据安全性。
在一个实施例中,S204之后还包括:若执行语句为数据定义语句或者数据操作语句、且执行语句中未携带租户标识字段,在执行语句中添加租户标识字段,得到修改后的执行语句;S208具体包括:通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句进行数据操作。
其中,数据定义语句为用于定义数据库对象,所定义的数据库对象包括库、表、列等。例如,数据定义语句可以是DDL(Data Definition Language,数据定义语言)语句。例如,数据定义语句可以是用于创建数据表或者索引的创建语句。例如,数据定义语句可以为SQL语言的create语句。数据操作语句是用于对数据表中的记录进行操作的语句。例如,数据操作语句可以是DML(Data Manipulation Language,数据操作语言)语句。例如,数据操作语句可以是用于在数据表中插入数据行的插入语句。例如,数据操作语句可以为SQL语言的insert语句。为了使通过执行语句创建的数据表、索引或者插入的数据行中包括租户标识字段,以通过租户标识字段对不同租户对应的数据行进行标识与隔离,当执行语句中未携带租户标识字段时,计算机设备对执行语句进行修改,在执行语句中添加租户标识字段。
在一个实施例中,通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句进行数据操作包括:当执行语句为数据定义语句中的索引创建语句时,通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句创建携带租户标识字段的组合索引;当执行语句为数据定义语句中的数据表创建语句时,通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句创建数据表、且所创建的数据表的主键为携带租户标识字段的联合主键。
其中,组合索引为基于多个字段创建的索引。联合主键为由多个主键组合而成的主键。目标数据库通过修改后的执行语句创建包含租户标识字段的数据表或者索引,数据表的主键变成联合主键(联合主键中包含租户标识字段)。例如,如图3b所示,通过修改后的执行语句创建的数据表中包括租户主键字段,租户主键字段中存储租户标识。当执行语句为索引创建语句时,由于修改后的执行语句中添加了租户标识字段,通过修改后的执行语句创建的组合索引中包含租户标识字段,从而可以通过索引中的租户标识字段对同一数据表中不同租户的数据进行隔离与过滤。通过修改后的执行语句创建的数据表的主键为包含租户标识字段的联合主键,从而可以通过联合主键中的租户标识字段对同一数据表中不同租户的数据进行隔离与过滤。由于组合索引实际相当于创建了多个索引,计算机设备通过修改后的执行语句创建组合索引,相比于创建单列索引可以提高数据过滤的效率,并且可以降低存储空间的开销。计算机设备通过修改后的执行语句创建主键为联合主键的数据表,可以通过联合主键保证数据表中数据的唯一性,并且可以通过联合主键提高数据操作的速度。
上述实施例中,若执行语句为数据定义语句或者数据操作语句、且执行语句中未携带租户标识字段,在执行语句中添加租户标识字段,得到修改后的执行语句。通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句进行数据操作。通过修改后的执行语句创建的数据表或者索引中包含租户标识字段,从而可以实现通过租户标识字段对同一数据表中多个租户的数据进行以数据行为单位的隔离存储或者访问权限控制,提高了数据表中数据的安全性。
在一个实施例中,执行语句用于创建数据表;如图4所示,S208具体包括S402,S208具体包括S404:
S402,根据租户标识生成安全策略创建语句。
其中,安全策略创建语句为用于对待创建的数据表添加安全策略的语句,例如可以是SQL语言的CREATE POLICY语句。通过安全策略创建语句可以将数据表和断言条件进行绑定,所绑定的断言条件是基于租户标识确定的,例如当租户标识为1001时,根据安全策略创建语句将数据表1与断言条件“租户标识=1001”进行绑定。在一个实施例中,S402之后还包括:生成安全策略开启语句。
其中,安全策略开启语句为用于开启安全策略的语句,开启的安全策略例如可以是RLS(Row Level Security,行级安全)特性。RLS是用于控制数据行的访问权限的数据库安全特性。通过安全策略开启语句可以对绑定了断言条件的数据表开启RLS,使目标数据库对开启了RLS的数据表按照断言条件进行数据行的过滤。
S404,通过数据库连接将安全策略创建语句以及执行语句发送至目标数据库,以使目标数据库通过执行语句创建数据表,并通过安全策略创建语句对创建的数据表添加包含断言条件的安全策略。
计算机设备通过数据库连接将安全策略创建语句以及执行语句发送至目标数据库,以使目标数据库通过执行语句创建数据表,并将所创建的数据表与包含断言条件的安全策略进行绑定,并开启RLS特性。从而可以根据租户标识对数据表中各数据行进行隔离,当目标数据库对所创建的数据表进行业务操作时,根据基于租户标识确定的断言条件对数据表中数据行进行访问权限的控制,避免对无访问权限的租户数据进行误操作,保证了数据安全性。
在一个实施例中,计算机设备通过数据库连接将安全策略创建语句、安全策略开启语句以及执行语句发送至目标数据库,以使目标数据库通过执行语句创建数据表,并通过安全策略创建语句对创建的数据表添加包含断言条件的安全策略,然后通过安全策略开启语句开启数据表绑定的安全策略。
上述实施例中,根据租户标识生成安全策略创建语句,并通过所述数据库连接将所述安全策略创建语句以及所述执行语句发送至所述目标数据库,以使所述目标数据库通过所述执行语句创建数据表,并通过所述安全策略创建语句对创建的所述数据表添加包含所述断言条件的安全策略。从而可以通过绑定的安全策略对数据表中数据行进行访问权限的控制,提高了数据安全性。
在一个实施例中,S208具体包括:通过数据库连接将执行语句发送至目标数据库,以使目标数据库从开启了安全策略的目标数据表中过滤出满足断言条件的目标数据行,并通过执行语句对目标数据行进行数据操作。
计算机设备通过数据库连接将执行语句发送至目标数据库,目标数据库确定执行语句操作的所有数据表,然后在所有数据表中筛选出开启了安全策略的目标数据表。根据设置的断言条件对目标数据表执行安全断言,无需用户在执行语句中显示设置过滤条件即可在目标数据表中过滤出满足断言条件的目标数据行,并通过执行语句对目标数据行进行数据操作,保证了数据安全性。
上述实施例中,通过数据库连接将执行语句发送至目标数据库,以使目标数据库从开启了安全策略的目标数据表中过滤出满足断言条件的目标数据行,并通过执行语句对目标数据行进行数据操作,无需在执行语句中设置过滤条件即可在目标数据表中过滤出满足断言条件的目标数据行,避免了对无访问权限的数据进行误操作,提高了数据安全性。
在一个实施例中,S206具体包括:根据租户标识生成断言条件设置指令;将断言条件设置指令发送至目标数据库,以使目标数据库通过执行断言条件设置指令设置数据库连接对应的断言条件。
其中,断言条件设置指令是用于设置断言条件的指令,例如可以是SQL语言的set指令。计算机设备将断言条件设置指令发送至目标数据库,目标数据库执行断言条件设置指令,对数据库连接设置对应的断言条件。计算机设备在每次与目标数据库建立数据库连接时,使目标数据库通过执行断言条件设置指令设置断言条件,在该数据库连接保持的过程中,业务层在对数据表进行操作时,无需再通过显示设置的过滤条件对数据表中数据行进行过滤,目标数据库可以通过断言条件自动的对数据行进行过滤,从而可以利用数据库自身的RLS特性实现租户数据的过滤和访问权限控制,提高了数据安全性。
在一个实施例中,S206之前还包括:初始化数据库连接池;S206具体包括:从初始化后的数据库连接池获取数据库连接对象;通过数据库连接对象建立与目标数据库间的数据库连接。
其中,数据库连接对象是用于与数据库建立物理连接的对象。例如可以是Connection(连接)对象。数据库连接池用于存储数据库连接对象。计算机设备初始化数据库连接池,创建多个数据库连接对象,并存储在数据库连接池中。计算机设备在与目标数据库建立连接时,可以直接从初始化后的数据库连接池获取数据库连接对象,无需再创建数据库连接对象,缩短了系统的响应时间,提高了建立数据库连接的效率。
计算机设备在通过建立的数据库连接完成数据操作后,释放数据库连接,将数据库连接对象返回数据库连接池,以重复使用数据库连接对象,避免频繁的创建数据库连接对象而降低系统性能,并可以减少内存碎片。
在一个实施例中,如图5所示,数据操作系统包括业务逻辑组件、连接对象获取组件、SQL执行组件、SQL语句修改组件与数据库。业务逻辑组件负责具体的业务逻辑处理和发起SQL执行请求,具体地,从业务层获取业务数据和租户标识,并根据业务数据生成执行语句,然后将执行语句和租户标识传递到SQL执行组件。SQL执行组件从连接对象获取组件获取数据库连接对象,并将租户标识传递给连接对象获取组件,将执行语句传递给数据库。如果执行语句是DDL语句或者insert语句,SQL执行组件将该执行语句发送至SQL语句修改组件以通过SQL语句修改组件给执行语句添加租户标识字段和对应的租户标识的值,以及安全策略创建语句、安全策略开启语句等。连接对象获取组件对数据库连接池进行初始化,从数据库连接池中获取数据库连接对象从将数据库连接对象传递至SQL执行组件。连接对象获取组件根据SQL执行组件传递的租户标识生成断言条件设置指令,然后将断言条件设置指令发送至数据库,以使数据库执行断言条件设置指令。在数据库根据执行语句对数据操作执行完毕后,连接对象获取组件释放建立的数据库连接。SQL语句修改组件对从SQL执行组件获取的执行语句进行解析,判断DDL语句或者insert语句中是否携带了租户标识字段,如果DDL语句或者insert语句中未携带租户标识字段,则SQL语句修改组件自动对创建数据表或者索引的语句添加租户标识字段。对insert语句,SQL语句修改组件自动在insert字段列表中租户标识字段。如果执行语句是创建数据表的语句,则SQL语句修改组件生成安全策略创建语句与安全策略开启语句,并将安全策略创建语句与安全策略开启语句作为附加语句与创建数据表的create语句一起返回给SQL执行组件。SQL执行组件将从SQL语句修改组件接收的语句发送至数据库,使数据库根据接收的语句进行数据操作,并向SQL执行组件返回操作结果数据集。SQL执行组件将操作结果数据集返回给业务逻辑组件。
在一个实施例中,当计算机设备接收到目标租户创建数据表的请求时,通过SQL执行组件生成创建数据表的SQL语句,若SQL语句中不包含租户标识字段,则在SQL语句中添加租户标识字段。计算机设备根据租户标识生成安全策略创建语句和安全策略开启语句,将安全策略创建语句和安全策略开启语句与添加了租户标识字段的SQL语句组合为新的SQL语句。计算机设备与目标数据库建立数据库连接。并通过数据库连接将新的SQL语句发送至目标数据库。目标数据库通过执行新的SQL语句创建包含租户标识字段的数据表,并将新创建的数据表与安全策略创建语句中的断言条件进行绑定,然后对新创建的数据表开启RLS特性。计算机设备在建立数据库连接之后,向目标数据库发送断言条件设置指令。目标数据库通过执行断言条件设置指令设置数据库连接对应的断言条件。目标数据库在执行了断言条件设置指令之后,即可按照断言条件对开启的RLS特性的新创建的数据表进行安全断言。具体地,当计算机设备向目标数据库发送了查询指令时,即使查询指令中不包括对数据行进行过滤的条件,目标数据库也可根据断言条件从新创建的数据表中过滤出目标数据行。例如,目标数据库可以根据租户标识从新创建的数据表中过滤出租户标识=1001的目标数据行,并对目标数据行进行修改、更新、删除等数据操作。
在一个实施例中,如图6所示,数据操作方法包括如下步骤:
S602,业务逻辑组件根据业务数据生成执行语句,根据执行语句向SQL组件发起SQL请求,将租户标识的值放在上下文中传递到SQL执行组件。
S604,SQL执行组件判断执行语句是否是创建语句或者插入语句,若执行语句是创建语句或者插入语句、且执行语句中未携带租户标识字段,将执行语句传递至SQL语句修改组件。
S606,SQL语句修改组件解析执行语句,如果通过解析确定执行语句是创建数据表、索引或insert语句并且没有租户标识字段,则自动在执行语句中添加租户标识字段(租户标识字段可以为int8类型)。对于创建索引的语句,将索引变成带租户标识字段的组合索引。对于创建数据表的语句,修改数据表的主键为携带租户标识字段的联合主键,同时附加上安全策略创建语句以及安全策略开启语句,并返回给SQL执行组件。
S608,SQL执行组件将租户标识传递至连接对象获取组件,并向连接对象获取组件请求获取数据库连接对象。
S610,连接对象获取组件从数据库连接池获取数据库连接对象,并通过数据库连接对象建立与目标数据库间的数据库连接。
S612,连接对象获取组件通过建立的数据库连接向数据库发送断言条件设置指令。
S614,连接对象获取组件向SQL执行组件返回数据库连接对象。
S616,SQL执行组件通过数据库连接对象将修改后的执行语句发送至数据库。
S618,数据库执行断言条件设置指令,根据断言条件对开启了RLS特性的数据表中数据行进行过滤,得到满足断言条件并且满足SQL执行语句中条件的目标数据行。
S620,数据库对过滤所得的目标数据行进行数据操作。
S622,数据库向SQL执行组件返回数据操作的执行结果数据集。
S624,SQL执行组件将执行结果数据集返回给业务逻辑组件。
S626,SQL执行组件释放数据库连接对象。
S628,连接对象获取组件释放数据库连接。
上述S602至S628的具体内容可以参考上文所述的具体实现过程。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据操作方法的数据操作装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据操作装置实施例中的具体限定可以参见上文中对于数据操作方法的限定,在此不再赘述。
在一个实施例中,如图7所示,提供了一种数据操作装置,包括:获取模块702、生成模块704、建立模块706和操作模块708,其中:
获取模块702,用于获取目标租户对应的业务数据以及租户标识;
生成模块704,用于根据业务数据生成执行语句;
建立模块706,用于建立与目标数据库间的数据库连接,并根据租户标识设置数据库连接对应的断言条件;
操作模块708,用于通过数据库连接将执行语句发送至目标数据库,以使目标数据库基于断言条件、通过执行语句进行数据操作。
上述实施例中,获取目标租户对应的业务数据以及租户标识,并根据业务数据生成执行语句。建立与目标数据库间的数据库连接,并根据租户标识设置数据库连接对应的断言条件。通过数据库连接将执行语句发送至目标数据库,以使目标数据库基于断言条件、通过执行语句进行数据操作。在设置断言条件之后,业务层在通过数据库连接对目标数据库进行数据操作时,无需向目标数据库发送对数据行进行过滤的过滤条件,目标数据库自身可根据设置的断言条件对数据行进行过滤,然后对过滤所得的数据行进行数据操作。从而可以避免由于业务层对过滤条件设置错误或者忘记设置过滤条件而导致数据操作发生错误,保证了数据操作的准确性,提高了数据安全性。
在一个实施例中,如图8所示,装置还包括:
添加模块710,用于若执行语句为数据定义语句或者数据操作语句、且执行语句中未携带租户标识字段,在执行语句中添加租户标识字段,得到修改后的执行语句;
操作模块708,还用于:
通过数据库连接将修改后的执行语句发送至目标数据库,以使目标数据库通过修改后的执行语句进行数据操作。
在一个实施例中,操作模块708,还用于:
当所述执行语句为所述数据定义语句中的索引创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建携带所述租户标识字段的组合索引;
当所述执行语句为所述数据定义语句中的数据表创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建数据表、且所创建的数据表的主键为携带所述租户标识字段的联合主键。
在一个实施例中,执行语句用于创建数据表;生成模块704,还用于:
根据租户标识生成安全策略创建语句;
操作模块708,还用于:
通过数据库连接将创建语句发送至目标数据库,以使目标数据库通过创建语句创建开启了安全策略的数据表。
在一个实施例中,操作模块708,还用于:
通过所述数据库连接将所述安全策略创建语句以及所述执行语句发送至所述目标数据库,以使所述目标数据库通过所述执行语句创建数据表,并通过所述安全策略创建语句对创建的所述数据表添加包含所述断言条件的安全策略。
在一个实施例中,建立模块706,还用于:
根据租户标识生成断言条件设置指令;
将断言条件设置指令发送至目标数据库,以使目标数据库通过执行断言条件设置指令设置数据库连接对应的断言条件。
在一个实施例中,装置还包括:
初始化模块712,用于初始化数据库连接池;
建立模块706,还用于:
从初始化后的数据库连接池获取数据库连接对象;
通过数据库连接对象建立与目标数据库间的数据库连接。
在一个实施例中,生成模块704,还用于:
确定业务数据对应的字段标识;
对业务数据以及业务数据对应的字段标识进行拼接,得到执行语句。
上述数据操作装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据操作数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据操作方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种数据操作方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9、10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据操作方法,其特征在于,所述方法包括:
获取目标租户对应的业务数据以及租户标识;
根据所述业务数据生成执行语句;
建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述业务数据生成执行语句之后,所述方法还包括:
若所述执行语句为数据定义语句或者数据操作语句、且所述执行语句中未携带租户标识字段,在所述执行语句中添加所述租户标识字段,得到修改后的执行语句;
所述通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作包括:
通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句进行数据操作。
3.根据权利要求2所述的方法,其特征在于,所述通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句进行数据操作包括:
当所述执行语句为所述数据定义语句中的索引创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建携带所述租户标识字段的组合索引;
当所述执行语句为所述数据定义语句中的数据表创建语句时,通过所述数据库连接将所述修改后的执行语句发送至所述目标数据库,以使所述目标数据库通过所述修改后的执行语句创建数据表、且所创建的数据表的主键为携带所述租户标识字段的联合主键。
4.根据权利要求1所述的方法,其特征在于,所述执行语句用于创建数据表;所述方法还包括:
根据所述租户标识生成安全策略创建语句;
所述通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作包括:
通过所述数据库连接将所述安全策略创建语句以及所述执行语句发送至所述目标数据库,以使所述目标数据库通过所述执行语句创建数据表,并通过所述安全策略创建语句对创建的所述数据表添加包含所述断言条件的安全策略。
5.根据权利要求1所述的方法,其特征在于,所述通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作包括:
通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库从开启了安全策略的目标数据表中过滤出满足所述断言条件的目标数据行,并通过所述执行语句对所述目标数据行进行数据操作。
6.根据权利要求1所述的方法,其特征在于,所述根据所述租户标识设置所述数据库连接对应的断言条件包括:
根据所述租户标识生成断言条件设置指令;
将所述断言条件设置指令发送至所述目标数据库,以使所述目标数据库通过执行所述断言条件设置指令设置所述数据库连接对应的断言条件。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
初始化数据库连接池;
所述建立与目标数据库间的数据库连接包括:
从初始化后的数据库连接池获取数据库连接对象;
通过所述数据库连接对象建立与目标数据库间的数据库连接。
8.一种数据操作装置,其特征在于,所述装置包括:
获取模块,用于获取目标租户对应的业务数据以及租户标识;
生成模块,用于根据所述业务数据生成执行语句;
建立模块,用于建立与目标数据库间的数据库连接,并根据所述租户标识设置所述数据库连接对应的断言条件;
操作模块,用于通过所述数据库连接将所述执行语句发送至所述目标数据库,以使所述目标数据库基于所述断言条件、通过所述执行语句进行数据操作。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211417985.9A CN115878655A (zh) | 2022-11-14 | 2022-11-14 | 数据操作方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211417985.9A CN115878655A (zh) | 2022-11-14 | 2022-11-14 | 数据操作方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878655A true CN115878655A (zh) | 2023-03-31 |
Family
ID=85759776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211417985.9A Pending CN115878655A (zh) | 2022-11-14 | 2022-11-14 | 数据操作方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878655A (zh) |
-
2022
- 2022-11-14 CN CN202211417985.9A patent/CN115878655A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656859B2 (en) | Data model API for live applications in a cloud collaboration platform | |
US11397831B2 (en) | Method and system for double anonymization of data | |
US10572685B1 (en) | Protecting sensitive data | |
WO2021051612A1 (zh) | 数据授权脱敏自动化方法、系统、装置及存储介质 | |
US20200034278A1 (en) | System for refreshing and sanitizing testing data in a low-level environment | |
US20210064355A1 (en) | Generating software artifacts from a conceptional data model | |
US11625408B2 (en) | Systems and methods for expedited large file processing | |
CA3015566A1 (en) | Systems and methods for expediting rule-based data processing | |
CN115544183A (zh) | 数据可视化方法、装置、计算机设备和存储介质 | |
CN117170655A (zh) | 一种元数据处理方法、装置、数据处理设备及存储介质 | |
KR20130126012A (ko) | 비즈니스 인텔리전스의리포트 제공 방법 및 장치 | |
CN115878655A (zh) | 数据操作方法、装置、计算机设备和存储介质 | |
CN115185946A (zh) | 多租户系统、多租户管理方法、计算机设备和存储介质 | |
WO2024016789A1 (zh) | 日志数据查询方法、装置、设备和介质 | |
CN116383138A (zh) | 单据变更方法、装置、计算机设备和存储介质 | |
US20230123965A1 (en) | Management of metadata groups and associated workflows | |
CN111902810B (zh) | 中心化和去中心化的数据的混合云链管理 | |
CN115982127A (zh) | 数据库中隐含列的实现方法及设备 | |
CN117556410A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN117033452A (zh) | 数据库处理方法、装置、计算机设备和存储介质 | |
CN117435589A (zh) | 数据转存方法、装置、计算机设备、存储介质 | |
CN116702731A (zh) | 尽职调查报告生成方法、装置、计算机设备和存储介质 | |
CN117390011A (zh) | 报表数据处理方法、装置、计算机设备和存储介质 | |
CN117216164A (zh) | 金融数据同步处理方法、装置、设备、介质和程序产品 | |
CN111902810A (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 |