CN111190917B - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN111190917B CN111190917B CN201910498001.6A CN201910498001A CN111190917B CN 111190917 B CN111190917 B CN 111190917B CN 201910498001 A CN201910498001 A CN 201910498001A CN 111190917 B CN111190917 B CN 111190917B
- Authority
- CN
- China
- Prior art keywords
- data
- language
- compiling
- database
- compiling language
- 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
- 238000003672 processing method Methods 0.000 title abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 20
- 238000013507 mapping Methods 0.000 claims description 154
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000012423 maintenance Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims 3
- 238000005538 encapsulation Methods 0.000 description 8
- 235000013305 food Nutrition 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开一种数据处理方法及装置,该方法包括:接收携带第一参数对象的查询指令,查询指令采用第一编译语言编译;生成包括第一参数对象的第一读操作;将第一读操作由第一编译语言转换为第二编译语言得到第二读操作;向数据库发送第二读操作;接收来自数据库根据第二读操作反馈的第一数据,第一数据采用第二编译语言编译;将第一数据由第二编译语言转换为第一编译语言得到第二数据;将第二数据确定为查询结果。通过本发明实施例,可以提高数据处理效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
随着计算机技术的不断发展,需要处理的数据越来越多,因此,为了对数据进行更好地管理,可以将数据存储在数据库。之后可以从数据库查询数据,也可以对数据库中的数据进行插入、修改、删除等操作。因此,为了将数据存储至数据库,开发者在编写数据时需要使用与数据库同样的编译语言。然而,很多时候开发者所熟悉的编译语言与数据库所用编译语言不同,以致需要开发者重新学习数据库所用编译语言,从而降低了数据处理效率。
发明内容
本发明实施例公开了一种数据处理方法及装置,用于提高数据处理效率。
第一方面公开一种数据处理方法,包括:
接收携带第一参数对象的查询指令,所述查询指令采用第一编译语言编译;
生成包括所述第一参数对象的第一读操作;
将所述第一读操作由所述第一编译语言转换为第二编译语言得到第二读操作;
向数据库发送所述第二读操作;
接收来自所述数据库根据所述第二读操作反馈的第一数据,所述第一数据采用第二编译语言编译;
将所述第一数据由所述第二编译语言转换为所述第一编译语言得到第二数据;
将所述第二数据确定为查询结果。
作为一种可能的实施方式,所述查询指令还携带有第一映像关系,所述将所述第一数据由所述第二编译语言转换为所述第一编译语言得到第二数据包括:
根据所述第一映射关系建立所述第一编译语言与所述第二编译语言之间的第一对应关系;
根据所述第一对应关系将所述第一数据由所述第二编译语言转换为所述第一编译语言得到第二数据。
作为一种可能的实施方式,所述将所述第二数据确定为查询结果包括:
将所述第二数据写入与所述第一映射关系绑定的数据结构得到第一数据结构;
将所述第一数据结构确定为查询结果。
作为一种可能的实施方式,所述方法还包括:
根据所述第一映射关系维护所述数据库中的第一数据表,所述第一数据表为所述查询指令所查询数据对应的数据表。
作为一种可能的实施方式,所述根据所述第一映射关系维护所述数据库中的第一数据表包括:
在所述数据库中不存在所述第一映射关系对应的数据表的情况下,生成包括所述第一映射关系的第一创建指令;
向所述数据库发送所述第一创建指令,所述第一创建指令用于根据所述第一映射关系创建第一数据表。
作为一种可能的实施方式,所述根据所述第一映射关系维护所述数据库中的第一数据表还包括:
在所述数据库中存在所述第一映射关系对应的第一数据表,且所述第一映射关系中的信息与所述第一数据表中的信息不一致的情况下,生成包括所述第一映射关系的第一更新指令;
向所述数据库发送所述第一更新指令,所述第一更新指令用于根据所述第一映射关系中的信息更新所述第一数据表中的信息。
作为一种可能的实施方式,所述方法还包括:
接收携带第二数据结构和第二参数对象的写指令,所述写指令采用第三编译语言编译;
生成包括所述第二参数对象的第一写操作;
将所述第一写操作由所述第三编译语言转换为所述第二编译语言得到第二写操作;
将所述第二数据结构由所述第三编译语言转换为所述第二编译语言得到第三数据结构;
向所述数据库发送携带所述第三数据结构的所述第二写操作,所述第二写操作用于根据转换的第二参数对象将所述第三数据结构写入所述数据库。
作为一种可能的实施方式,所述写指令还携带有第二映像关系,所述将所述第二数据结构由所述第三编译语言转换为所述第二编译语言得到第三数据结构包括:
根据所述第二映射关系建立所述第二编译语言与所述第三编译语言之间的第二对应关系;
根据所述第二对应关系将所述第二数据结构由所述第三编译语言转换为所述第二编译语言得到第三数据结构。
作为一种可能的实施方式,所述方法还包括:
根据所述第二映射关系维护所述数据库中的第二数据表,所述第二数据表为所述写指令所写数据对应的数据表。
第二方面公开一种数据处理装置,该数据处理装置包括用于执行第一方面或第一方面的任一种实施例所公开的数据处理方法的单元。
第三方面公开一种数据处理装置,该数据处理装置包括处理器和存储器,存储器存储有一组程序代码,处理器通过执行存储器存储的程序代码,使得数据处理装置执行第一方面或第一方面的任一种实施例所公开的数据处理方法。
第四方面公开一种可读存储介质,该可读存储介质上存储有程序,当该程序运行时,实现如第一方面或第一方面的任一种实施例所公开的数据处理方法。
本发明实施例中,接收携带第一参数对象的查询指令,生成包括第一参数对象的第一读操作,将第一读操作由第一编译语言转换为第二编译语言得到第二读操作,向数据库发送第二读操作,接收来自数据库根据第二读操作反馈的第一数据,将第一数据由第二编译语言转换为第一编译语言得到第二数据,将第二数据确定为查询结果。可见,在访问数据库的指令所用编译语言与数据库所用编译语言不同的情况下,可以实现不同编译语言之间的转换,可以提高数据处理效率。此外,不管访问数据库的指令所用编译语言是那种编译语言,都可以转换为数据库所用编译语言,因此,可以提高通用性。
附图说明
图1是本发明实施例公开的一种系统架构示意图;
图2是本发明实施例公开的一种数据处理方法的流程示意图;
图3是本发明实施例公开的另一种数据处理方法的流程示意图;
图4是本发明实施例公开的一种维护数据表的流程示意图;
图5是本发明实施例公开的一种数据处理装置的结构示意图;
图6是本发明实施例公开的另一种数据处理装置的结构示意图。
具体实施方式
本发明实施例公开了一种数据处理方法及装置,用于提高数据处理效率。以下分别进行详细说明。
为了更好地理解本发明实施例公开的一种数据处理方法及装置,下面先对本发明实施例使用的系统架构进行描述。请参阅图1,图1是本发明实施例公开的一种系统架构示意图。如图1所示,该系统架构可以包括封装架构和数据库。封装架构,用于接收到对数据库的访问指令后,在访问指令所用编译语言与数据库所用编译语言不同的情况下,将访问指令转换为数据库所用编译语言的访问指令,向数据库发送转换的访问指令。数据库用于存储数据,接收来自封装架构的访问指令,响应该访问指令。封装架构与数据库之间可以通过网络连接,也可以通过其它方式连接,比如总线等,具体不作限定。
基于图1所示的系统架构,请参阅图2,图2是本发明实施例公开的一种数据处理方法的流程示意图。其中,该数据处理方法应用于图1中的封装架构。如图2所示,该数据处理方法可以包括以下步骤。
201、接收携带第一参数对象的查询指令。
第一参数对象可以包括需要返回的结果字段、查询条件表达式、结果的排序规则、结果的分组规则等中的一项或多项。由于这些参数对象都必须通过映射对象来产生,开发者的意外拼写错误可以被检查器检查出来,此外,由于参数对象的安全性由封装框架来保障,因此,可以从根源上杜绝结构化查询编译语言(structured query language,SQL)注入产生的攻击。可以将开发者使用的编译语言(即查询指令所用编译语言)称为原生编译语言,将数据库使用的编译语言称为SQL。其中,查询指令采用第一编译语言编译。第一编译语言可以为原生编译语言中的任一编译语言。
返回的结果字段可以指示要查询的数据的列,查询条件表达式可以指示要查询的数据的行,结果的排序规则可以指示对查询结果如何进行排序,结果的分组规则可以指示对查询结果如何进行分组。对查询结果的排序和分组可以先对所有查询结果进行排序,之后对排序的查询结果进行分组,也可以先对所有查询结果进行分组,之后对不同组的查询结果分别进行排序,即可以先排序后分组,也可以先分组后排序。
在图1中数据库的数量为多个的情况下,查询指令还可以携带数据库标识,可以标识从哪个数据库查询数据。因此,不需要从多个数据库逐次进行查询,从而可以提高数据查询效率。此外,查询指令还可以携带数据标识,可以标识查询的是那个数据。
202、生成包括第一参数对象的第一读操作。
接收到查询指令之后,可以先判断查询指令所用编译语言,即第一编译语言,与数据库所用编译语言,即第二编译语言,是否相同。在判断出第一编译语言与第二编译语言相同的情况下,可以直接将查询指令转发给数据库。在判断出第一编译语言与第二编译语言不同的情况下,由于直接将查询指令转发给数据库,数据库无法执行该查询指令,因此,可以生成包括第一参数对象的第一读操作。第一读操作采用第一编译语言编译。
203、将第一读操作由第一编译语言转换为第二编译语言得到第二读操作。
由于第一读操作所用编译语言为第一编译语言,而数据库可以执行的编译语言为第二编译语言,因此,生成第一读操作之后,可以将第一读操作由第一编译语言转换为第二编译语言得到第二读操作,即将第一读操作由第一编译语言翻译为第二编译语言得到第二读操作。
204、向数据库发送第二读操作。
将第一读操作由第一编译语言转换为第二编译语言得到第二读操作之后,可以向数据库发送第二读操作。数据库接收到查询指令或者第一读操作之后,可以通过返回的结果字段确定要查询的数据的列,可以通过查询条件表达式确定要查询的数据的行,之后根据要查询的数据的列和行获取第一数据,向封装框架发送第一数据。
205、接收来自数据库根据第二读操作反馈的的第一数据。
向数据库发送第二读操作之后,会接收到来自数据库根据第二读操作反馈的第一数据。第一数据所用编译语言为数据库所用编译语言,即第二编译语言。
206、将第一数据由第二编译语言转换为第一编译语言得到第二数据。
接收到来自数据库的第一数据之后,在第一编译语言与第二编译语言相同的情况下,可以直接执行步骤207。在第一编译语言与第二编译语言不同的情况下,可以将第一数据由第二编译语言转换为第一编译语言得到第二数据,即将第一数据由第一编译语言翻译为第二编译语言得到第二数据。例如,第一编译语言可以为C++,第二编译语言可以为Java。
查询指令还可以携带有第一映射关系,可以先根据第一映射关系建立第一编译语言与第二编译语言之间的第一对应关系,之后根据第一对应关系将第一数据由第二编译语言转换为第一编译语言得到第二数据。第一对应关系类似字典,可以定义第一编译语言中的那个词或字对应第二编译语言中的那个词或字。
207、将第二数据确定为查询结果。
将第一数据由第二编译语言转换为第一编译语言得到第二数据之后,可以将第二数据确定为查询结果。之后可以直接输出查询结果,也可以向查询指令的发送对象返回查询结果。第一映射关系存在与之绑定的数据结构。可以先将第二数据写入与第一映射关系绑定的数据结构得到第一数据结构,之后将第一数据结构确定为查询结果。不同的编译语言对应的数据结构可能不同,与第一映射关系绑定的数据结构为第一编译语言对应的数据结构。
基于图1所示的网络架构,请参阅图3,图3是本发明实施例公开的另一种数据处理方法的流程示意图。其中,该数据处理方法应用于图1中的封装架构。如图3所示,该数据处理方法可以包括以下步骤。
301、接收携带第一映射关系和第一参数对象的查询指令。
第一参数对象可以包括需要返回的结果字段、查询条件表达式、结果的排序规则、结果的分组规则等中的一项或多项。由于这些参数对象都必须通过映射对象来产生,开发者的意外拼写错误可以被检查器检查出来,此外,由于参数对象的安全性由封装框架来保障,因此,可以从根源上杜绝SQL注入产生的攻击。可以将开发者使用的编译语言(即查询指令所用编译语言)称为原生编译语言,将数据库使用的编译语言称为SQL。其中,查询指令采用第一编译语言编译。第一编译语言可以为原生编译语言中的任一编译语言。
返回的结果字段可以指示要查询的数据的列,查询条件表达式可以指示要查询的数据的行,结果的排序规则可以指示对查询结果如何进行排序,结果的分组规则可以指示对查询结果如何进行分组。对查询结果的排序和分组可以先对所有查询结果进行排序,之后对排序的查询结果进行分组,也可以先对所有查询结果进行分组,之后对不同组的查询结果分别进行排序,即可以先排序后分组,也可以先分组后排序。
在图1中数据库的数量为多个的情况下,查询指令还可以携带数据库标识,可以标识从哪个数据库查询数据。因此,不需要从多个数据库逐次进行查询,从而可以提高数据查询效率。此外,查询指令还可以携带数据标识,可以标识查询的是那个数据。
第一映射关系可以包括数据表列,该数据表列可以定义需要从数据库中读取那些字段,以及这些字段所具有的约束条件。第一映射关系还可以包括数据表名,该数据表名可以定义第一映射关系对应的数据结构在数据库中的表名。第一映射关系还可以包括索引,该索引定义了那些字段建立了索引,以实现快速查询。第一映射关系还可以包括全文检索(full text search,FTS),该FTS可以定义那些字段需要支持全文检索。查询指令所用编译语言不同,第一映射关系的确定方式可以不同。例如,在查询指令所用编译语言为C++的情况下,可以直接采用宏确定第一映射关系,在查询指令所用编译语言为Java的情况下,可以采用领域特定编译语言(domain specific language,DSL)编译为Java编译语言的形式确定第一映射关系。
302、根据第一映射关系维护数据库中的第一数据表。
接收到查询指令之后,可以先判断查询指令所用编译语言,即第一编译语言,与数据库所用编译语言,即第二编译语言,是否相同。在判断出第一编译语言与第二编译语言相同的情况下,可以直接将查询指令转发给数据库。在判断出第一编译语言与第二编译语言不同的情况下,可以根据第一映射关系维护数据库中的第一数据表。第一数据表为查询指令所查询数据对应的数据表。
可以先判断数据库中是否存在第一映射关系对应的数据表,在判断出数据库中不存在第一映射关系对应的数据表的情况下,可以生成包括第一映射关系的第一创建指令,之后向数据库发送第一创建指令。数据库接收到第一创建指令之后,可以根据第一映射关系创建第一数据表。在第一映射关系包括索引的情况下,数据库还可以创建索引。在第一映射关系包括FTS的情况下,数据库还可以创建FTS表。
在判断出数据库中存在第一映射关系对应的第一数据表的情况下,可以继续判断第一映射关系中的信息与第一数据表中的信息是否一致。在判断出第一映射关系中的信息与第一数据表中的信息不一致的情况下,可以根据第一映射关系升级数据库中的第一数据表。可以先生成包括第一映射关系的第一更新指令,向数据库发送第一更新指令,数据库接收到第一更新指令之后,可以根据第一映射关系中的信息更新第一数据表中的信息。
在判断出第一映射关系中的信息与第一数据表中的信息一致,或者升级完数据库中的第一数据表的情况下,如果第一映射关系还包括索引,则可以继续判断数据库中的索引与第一映射关系包括的索引是否一致。在判断出数据库中的索引与第一映射关系包括的索引不一致的情况下,可以根据第一映射关系升级数据库中的索引,数据库根据第一映射关系中的信息更新完第一数据表中的信息之后,还可以根据第一映射关系中的信息更新索引中的信息。
在判断出数据库中的索引与第一映射关系包括的索引一致,或者数据库中的索引升级完的情况下,如果第一映射关系还包括FTS,则可以继续判断数据库中的FTS表与第一映射关系包括的FTS表是否一致。在判断出数据库中的FTS表与第一映射关系包括的FTS表不一致的情况下,可以升级数据库中的FTS表。数据库根据第一映射关系中的信息更新索引中的信息之后,还可以根据第一映射关系中的信息更新FTS表中的信息。在FTS表不支持升级的情况下,数据库可以直接删除存储的FTS表,之后根据第一映射关系重新创建FTS表。在判断出数据库中的FTS表与第一映射关系包括的FTS表一致,或者升级完数据库中的FTS表的情况下,可以执行步骤303。其中,在第一映射关系包括索引和FTS的情况下,根据第一映射关系维护数据库中的第一数据表的流程图可以如图4所示。
303、生成包括第一参数对象的第一读操作。
根据第一映射关系维护完数据库中的第一数据表之后,可以生成包括第一参数对象的第一读操作,第一读操作所用编译语言为第一编译语言。
304、将第一读操作由第一编译语言转换为第二编译语言得到第二读操作。
由于第一读操作所用编译语言为第一编译语言,而数据库可以执行的编译语言为第二编译语言,因此,生成第一读操作之后,可以将第一读操作由第一编译语言转换为第二编译语言得到第二读操作,即将第一读操作由第一编译语言翻译为第二编译语言得到第二读操作。
305、向数据库发送第二读操作。
将第一读操作由第一编译语言转换为第二编译语言得到第二读操作之后,可以向数据库发送第二读操作。数据库接收到查询指令或第二读操作之后,可以通过第一数据表确定查询数据的所有列,可以通过返回的结果字段确定在所有列中要查询的数据的列,可以通过查询条件表达式确定要查询的数据的行,之后根据要查询的数据的列和行获取第一数据,向封装框架发送第一数据。
306、接收来自数据库根据第二读操作反馈的第一数据。
向数据库发送第二读操作之后,会接收到来自数据库根据第二读操作反馈的第一数据。第一数据所用编译语言为数据库所用编译语言,即第二编译语言。
307、将第一数据由第二编译语言转换为第一编译语言得到第二数据。
接收到来自数据库的第一数据之后,在第一编译语言与第二编译语言相同的情况下,可以直接执行步骤308。在第一编译语言与第二编译语言不同的情况下,可以将第一数据由第一编译语言转换为第二编译语言得到第二数据,即将第一数据由第一编译语言翻译为第二编译语言得到第二数据。
查询指令还可以携带有第一映射关系,可以先根据第一映射关系建立第一编译语言与第二编译语言之间的第一对应关系,之后根据第一对应关系将第一数据由第二编译语言转换为第一编译语言得到第二数据。第一对应关系类似字典,可以定义第一编译语言中的那个词或字对应第二编译语言中的那个词或字。其中,将第一读操作由第一编译语言转换为第二编译语言得到第二读操作也可以根据第一对应关系进行。
308、将第二数据确定为查询结果。
将第一数据由第二编译语言转换为第一编译语言得到第二数据之后,可以将第二数据确定为查询结果。之后可以直接输出查询结果,也可以向查询指令的发送对象返回查询结果。第一映射关系存在与之绑定的数据结构。可以先将第二数据写入与第一映射关系绑定的数据结构得到第一数据结构,之后将第一数据结构确定为查询结果。不同的编译语言对应的数据结构可能不同,与第一映射关系绑定的数据结构为第一编译语言对应的数据结构。
309、接收携带第二映射关系、第二数据结构和第二参数对象的写指令。
在写指令为插入指令的情况下,第二参数对象可以包括要插入的字段及内容,该要插入的字段及内容可以指示要插入数据的列和插入数据。在写指令为修改指令的情况下,第二参数对象可以包括修改条件表达式以及要修改的字段及内容,该修改条件表达式可以指示要修改的数据的行,该要修改的字段及内容可以指示要修改的数据的列和修改后的内容。在写指令为删除指令的情况下,第二参数对象可以包括删除条件表达式,该删除条件表达式可以指示要删除的数据的行。
在图1中数据库的数量为多个的情况下,写指令还可以携带数据库标识,可以标识向哪个数据库写数据。此外,在写指令为插入指令或删除指令的情况下,写指令还可以携带数据标识,可以标识向那个数据插入数据或删除那个数据。
第二映射关系可以包括数据表列,该数据表列可以定义需要向数据库存储或写入那些字段,以及这些字段所具有的约束条件。第二映射关系还可以包括数据表名,该数据表名可以定义第二映射关系对应的数据结构在数据库中的表名。第二映射关系还可以包括索引,该索引定义了那些字段需要建立索引,以实现快速查询。第二映射关系还可以包括FTS,该FTS可以定义那些字段需要支持全文检索。其它描述可以参考第一映射关系。
310、根据第二映射关系维护数据库中的第二数据表。
接收到写指令之后,可以先判断第二编译语言与写指令所用编译语言,即第三编译语言,是否相同。在判断出第二编译语言与第三编译语言相同的情况下,可以直接将写指令转发给数据库。在判断出第二编译语言与第三编译语言不同的情况下,可以根据第二映射关系维护数据库中的第二数据表。
可以先判断数据库中是否存在第二映射关系对应的数据表,在判断出数据库中不存在第二映射关系对应的数据表的情况下,可以生成包括第二映射关系的第二创建指令,之后向数据库发送第二创建指令。数据库接收到第二创建指令之后,可以根据第二映射关系创建第二数据表。在第二映射关系包括索引的情况下,数据库还可以创建索引。在第二映射关系包括FTS的情况下,数据库还可以创建FTS表。
在判断出数据库中存在第二映射关系对应的第二数据表的情况下,可以继续判断第二映射关系中的信息与第二数据表中的信息是否一致。在判断出第二映射关系中的信息与第二数据表中的信息不一致的情况下,可以根据第二映射关系升级数据库中的第二数据表。可以先生成包括第二映射关系的第二更新指令,向数据库发送第二更新指令,数据库接收到第二更新指令之后,可以根据第二映射关系中的信息更新第二数据表中的信息。
在判断出第二映射关系中的信息与第二数据表中的信息一致,或者升级完数据库中的第二数据表的情况下,如果第二映射关系还包括索引,则可以继续判断数据库中的索引与第二映射关系包括的索引是否一致。在判断出数据库中的索引与第二映射关系包括的索引不一致的情况下,可以根据第二映射关系升级数据库中的索引,数据库根据第二映射关系中的信息更新完第二数据表中的信息之后,还可以根据第二映射关系中的信息更新索引中的信息。
在判断出数据库中的索引与第二映射关系包括的索引一致,或者数据库中的索引升级完的情况下,如果第二映射关系还包括FTS,则可以继续判断数据库中的FTS表与第二映射关系包括的FTS表是否一致。在判断出数据库中的FTS表与第二映射关系包括的FTS表不一致的情况下,可以升级数据库中的FTS表。数据库根据第二映射关系中的信息更新索引中的信息之后,还可以根据第二映射关系中的信息更新FTS表中的信息。在FTS表不支持升级的情况下,数据库可以直接删除存储的FTS表,之后根据第二映射关系重新创建FTS表。在判断出数据库中的FTS表与第二映射关系包括的FTS表一致,或者升级完数据库中的FTS表的情况下,可以执行步骤311。
311、生成包括第二参数对象的第一写操作。
根据第二映射关系维护完数据库中的第二数据表之后,可以生成包括第二参数对象的第一写操作,第一写操作所用编译语言为第三编译语言。
312、将第一写操作由第三编译语言转换为第二编译语言得到第二写操作。
由于第一写操作所用编译语言为第三编译语言,而数据库可以执行的编译语言为第二编译语言,因此,生成第一写操作之后,将第一写操作由第三编译语言转换为第二编译语言得到第二写操作。
313、将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构。
由于第二数据结构所用编译语言为第三编译语言,因此,可以将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构。可以先根据第二映射关系建立第二编译语言与第三编译语言之间的第二对应关系,之后根据第二对应关系将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构。
314、向数据库发送携带第三数据结构的第二写操作。
生成第二写操作之后,以及将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构之后,可以向数据库发送第二写操作。数据库接收到第二写操作之后,可以根据第二写操作包括的转换后的第二参数对象执行第一写操作。
其中,原生数据结构的代码可以表示如下:
其中,定义映射关系的代码可以表示如下:
TABLE(food)(指定映射关系绑定的数据结构为food)
COLUMN(id)(指定将food数据结构中id字段存储到数据库)
COLUMN(name)(指定将food数据结构中name字段存储到数据库)
END(结束映射关系定义)
其中,插入指令的代码可以表示如下:
void InsertFoods(vector<food>foods){
insert(foods);(插入名称为food的数据结构)
}
定义了映射关系之后,可以使用封装架构提供的insert方法直接将数据插入到数据库中,无需开发者再绑定每个字段及对应的值,无需开发者管理缓存,可以大幅提升开发效率。
其中,查询指令的代码可以表示如下:
使用封装架构提供的select方法,查询数据库返回的直接就是对象数组,一步到位。开发者不需要进行循环遍历结果,依次按序号取出每一列的内容,再赋值到对象字段上。
其中,修改指令的代码可以表示如下:
使用封装架构提供的更新数据库的update方法,提供了编译时类型检查的能力,如果字段名拼写错误,或者试图把字符串赋给数字型字段,将无法通过编译。
其中,删除指令的代码可以表示如下:
void DeleteFoods(int food_id){
remove(id==food_id);(删除id字段中值为food_id的数据)
}
使用封装架构提供的删除数据库记录的remove方法(此处因C++中delete是保留字,采用了其同义词remove作为方法名),传入条件表达式即可删除指定记录。
若后来数据结构新增了需要存入数据库的字段,仅需要在数据表映射关系中添加对应的字段映射即可,封装架构会负责对数据表进行升级。
基于图1所示的网络架构,以及上述实施例中的数据处理方法的同一构思,请参阅图5,图5是本发明实施例公开的一种数据处理装置的结构示意图。其中,该数据处理装置可以为图1中的封装架构。如图5所示,该数据处理装置可以包括:
接收单元501,用于接收携带第一参数对象的查询指令,查询指令采用第一编译语言编译;
生成单元502,用于生成包括第一参数对象的第一读操作;
转换单元503,用于将第一读操作由第一编译语言转换为第二编译语言得到第二读操作;
发送单元504,用于向数据库发送第二读操作;
接收单元501,还用于接收来自数据库根据第二读操作反馈的第一数据,第一数据采用第二编译语言编译;
转换单元503,还用于将第一数据由第二编译语言转换为第一编译语言得到第二数据;
确定单元505,用于将第二数据确定为查询结果。
在一个实施例中,查询指令还携带有第一映像关系,转换单元503将第一数据由第二编译语言转换为第一编译语言得到第二数据包括:
根据第一映射关系建立第一编译语言与第二编译语言之间的第一对应关系;
根据第一对应关系将第一数据由第二编译语言转换为第一编译语言得到第二数据。
在一个实施例中,确定单元505具体用于:
将第二数据写入与第一映射关系绑定的数据结构得到第一数据结构;
将第一数据结构确定为查询结果。
在一个实施例中,该数据处理装置还可以包括:
维护单元506,用于在根据第一映射关系维护数据库中的第一数据表,第一数据表为查询指令所查询数据对应的数据表。
在一个实施例中,维护单元506具体用于:
在数据库中不存在第一映射关系对应的数据表的情况下,生成包括第一映射关系的第一创建指令;
向数据库发送第一创建指令,第一创建指令用于根据第一映射关系创建第一数据表。
在一个实施例中,维护单元506具体还用于:
在数据库中存在第一映射关系对应的第一数据表,且第一映射关系中的信息与第一数据表中的信息不一致的情况下,生成包括第一映射关系的第一更新指令;
向数据库发送第一更新指令,第一更新指令用于根据第一映射关系中的信息更新第一数据表中的信息。
在一个实施例中,接收单元501,还用于接收携带第二数据结构和第二参数对象的写指令,写指令采用第三编译语言编译;
生成单元502,还用于生成包括第二参数对象的第一写操作;
转换单元503,还用于将第一写操作由第三编译语言转换为第二编译语言得到第二写操作;
转换单元503,还用于将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构;
发送单元502,还用于向数据库发送携带第三数据结构的第二写操作,第二写操作用于根据转换的第二参数对象将第三数据结构写入数据库。
在一个实施例中,写指令还携带有第二映像关系,转换单元503将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构包括:
根据第二映射关系建立第二编译语言与第三编译语言之间的第二对应关系;
根据第二对应关系将第二数据结构由第三编译语言转换为第二编译语言得到第三数据结构。
在一个实施例中,维护单元506,还用于根据第二映射关系维护数据库中的第二数据表,第二数据表为写指令所写数据对应的数据表。
有关上述接收单元501、生成单元502、转换单元503、发送单元504、确定单元505和维护单元506更详细的描述可以直接参考上述图2-图3所示的方法实施例中的相关描述直接得到,这里不加赘述。
基于图1所示的网络架构,请参阅图6,图6是本发明实施例公开的另一种数据处理装置的结构示意图。其中,该数据处理装置可以为图1中的封装架构。如图6所示,该数据处理装置可以包括处理器601、存储器602和连接线603。存储器602可以是独立存在,连接线603与处理器601相连接。存储器602也可以和处理器601集成在一起。连接线603可包括一通路,在上述组件之间传送信息。其中,存储器602中存储程序指令,处理器601用于执行存储器602中存储的程序指令。其中:
存储器602中存储的程序指令被执行时,该处理器601用于调用存储器602存储的程序指令执行上述实施例中接收单元501、生成单元502、转换单元503、发送单元504、确定单元505和维护单元506执行的操作。
在一个实施例中,该数据处理装置还可以包括收发器604,收发器604用于执行上述实施例中接收单元501接收的操作以及发送单元504中的发送的操作。
本发明实施例还公开了一种存储介质,该存储介质上存储有程序,该程序运行时,实现如图2-图3所示的数据处理方法。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (9)
1.一种数据处理方法,其特征在于,包括:
接收携带第一映射关系和第一参数对象的查询指令,所述查询指令采用第一编译语言编译,所述第一参数对象通过映射对象产生,所述第一编译语言为开发者使用的编译语言中的任一编译语言,其中,所述查询指令所用编译语言不同,所述第一映射关系的确定方式不同;
根据所述第一映射关系建立第一编译语言与第二编译语言之间的第一对应关系,所述第二编译语言为数据库所用的编译语言;
生成包括所述第一参数对象的第一读操作;
根据所述第一对应关系,将所述第一读操作由所述第一编译语言转换为第二编译语言得到第二读操作;
向数据库发送所述第二读操作;
接收来自所述数据库根据所述第二读操作反馈的第一数据,所述第一数据采用第二编译语言编译;
根据所述第一对应关系,将所述第一数据由所述第二编译语言转换为所述第一编译语言得到第二数据;
将所述第二数据确定为查询结果;
所述方法还包括:
在判断出所述第一编译语言与所述第二编译语言不同的情况下,根据所述第一映射关系维护所述数据库中的第一数据表,所述第一数据表为所述查询指令所查询数据对应的数据表;
所述方法还包括:
接收携带第二映射关系、第二数据结构和第二参数对象的写指令,所述写指令采用第三编译语言编译;
生成包括所述第二参数对象的第一写操作;
将所述第一写操作由所述第三编译语言转换为所述第二编译语言得到第二写操作;
根据所述第二映射关系建立所述第二编译语言与所述第三编译语言之间的第二对应关系;
根据所述第二对应关系将所述第二数据结构由所述第三编译语言转换为所述第二编译语言得到第三数据结构;
向所述数据库发送携带所述第三数据结构的所述第二写操作,所述第二写操作用于根据转换的第二参数对象将所述第三数据结构写入所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述将所述第二数据确定为查询结果包括:
将所述第二数据写入与所述第一映射关系绑定的数据结构得到第一数据结构;
将所述第一数据结构确定为查询结果。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一映射关系维护所述数据库中的第一数据表包括:
在所述数据库中不存在所述第一映射关系对应的数据表的情况下,生成包括所述第一映射关系的第一创建指令;
向所述数据库发送所述第一创建指令,所述第一创建指令用于根据所述第一映射关系创建第一数据表。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一映射关系维护所述数据库中的第一数据表还包括:
在所述数据库中存在所述第一映射关系对应的第一数据表,且所述第一映射关系中的信息与所述第一数据表中的信息不一致的情况下,生成包括所述第一映射关系的第一更新指令;
向所述数据库发送所述第一更新指令,所述第一更新指令用于根据所述第一映射关系中的信息更新所述第一数据表中的信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第二映射关系维护所述数据库中的第二数据表,所述第二数据表为所述写指令所写数据对应的数据表。
6.一种数据处理装置,其特征在于,包括:
接收单元,用于接收携带第一映射关系和第一参数对象的查询指令,所述查询指令采用第一编译语言编译,所述第一参数对象通过映射对象产生,所述第一编译语言为开发者使用的编译语言中的任一编译语言,其中,所述查询指令所用编译语言不同,所述第一映射关系的确定方式不同;
转换单元,根据所述第一映射关系建立第一编译语言与第二编译语言之间的第一对应关系,所述第二编译语言为数据库所用的编译语言;
生成单元,用于生成包括所述第一参数对象的第一读操作;
所述转换单元,还用于根据所述第一对应关系,将所述第一读操作由所述第一编译语言转换为第二编译语言得到第二读操作;
发送单元,用于向数据库发送所述第二读操作;
所述接收单元,还用于接收来自所述数据库根据所述第二读操作反馈的第一数据,所述第一数据采用第二编译语言编译;
所述转换单元,还用于根据所述第一对应关系,将所述第一数据由所述第二编译语言转换为所述第一编译语言得到第二数据;
确定单元,用于将所述第二数据确定为查询结果;
所述接收单元,还用于接收携带第二映射关系、第二数据结构和第二参数对象的写指令,所述写指令采用第三编译语言编译;
所述生成单元,还用于生成包括所述第二参数对象的第一写操作;
所述转换单元,还用于将所述第一写操作由所述第三编译语言转换为所述第二编译语言得到第二写操作;
所述转换单元,还用于根据所述第二映射关系建立所述第二编译语言与所述第三编译语言之间的第二对应关系;根据所述第二对应关系将所述第二数据结构由所述第三编译语言转换为所述第二编译语言得到第三数据结构;
所述发送单元,还用于向所述数据库发送携带所述第三数据结构的所述第二写操作,所述第二写操作用于根据转换的第二参数对象将所述第三数据结构写入所述数据库;
所述装置还包括:
维护单元,用于在判断出所述第一编译语言与所述第二编译语言不同的情况下,根据所述第一映射关系维护所述数据库中的第一数据表,所述第一数据表为所述查询指令所查询数据对应的数据表。
7.根据权利要求6所述的装置,其特征在于,所述确定单元具体用于:
将所述第二数据写入与所述第一映射关系绑定的数据结构得到第一数据结构;
将所述第一数据结构确定为查询结果。
8.一种数据处理装置,其特征在于,包括处理器和存储器,所述存储器存储有一组计算机程序代码,所述处理器通过执行所述存储器存储的计算机程序代码实现如权利要求1-5任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或计算机指令,当所述计算机程序或计算机指令被运行时,实现如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910498001.6A CN111190917B (zh) | 2019-06-10 | 2019-06-10 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910498001.6A CN111190917B (zh) | 2019-06-10 | 2019-06-10 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190917A CN111190917A (zh) | 2020-05-22 |
CN111190917B true CN111190917B (zh) | 2024-08-06 |
Family
ID=70707194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910498001.6A Active CN111190917B (zh) | 2019-06-10 | 2019-06-10 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190917B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915383A (zh) * | 2015-05-19 | 2015-09-16 | 中国电子科技集团公司第二十八研究所 | 一种通用数据库访问中自动适配对象的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080361B2 (en) * | 2001-07-30 | 2006-07-18 | Lockheed Martin Corporation | Process for generating enterprise java bean components from an SQL database |
CN101093493B (zh) * | 2006-06-23 | 2011-08-31 | 国际商业机器公司 | 数据库查询语言转换方法、转换装置 |
CN101980213B (zh) * | 2010-11-23 | 2012-09-19 | 中国科学院软件研究所 | 一种基于j2ee的数据持久化方法及系统 |
US9274773B2 (en) * | 2011-06-23 | 2016-03-01 | Microsoft Technology Licensing, Llc | Translating programming language patterns into database schema patterns |
CN105630508A (zh) * | 2015-12-31 | 2016-06-01 | 广州亦云信息技术有限公司 | 在Java系统中封装SQL语言的处理方法及系统 |
-
2019
- 2019-06-10 CN CN201910498001.6A patent/CN111190917B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915383A (zh) * | 2015-05-19 | 2015-09-16 | 中国电子科技集团公司第二十八研究所 | 一种通用数据库访问中自动适配对象的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111190917A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
US20090030902A1 (en) | Schematized data intelligent assistance for development environments | |
US8073843B2 (en) | Mechanism for deferred rewrite of multiple XPath evaluations over binary XML | |
CN102982095B (zh) | 一种基于叙词表的本体自动生成系统及其方法 | |
CN111159215B (zh) | Java类与关系型数据库的映射方法、装置及计算设备 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN116011400A (zh) | 一种项目标准测试文档自动化生成方法及装置 | |
CN115757462B (zh) | 一种面向对象的数据库动态接口生成方法及操作方法 | |
US10585871B2 (en) | Database engine for mobile devices | |
CN116483850A (zh) | 数据处理方法、装置、设备以及介质 | |
CN111813744A (zh) | 文件的搜索方法、装置、设备及存储介质 | |
US8914782B2 (en) | Optimization of declarative queries | |
CN113704575B (zh) | 解析XML与Java文件的SQL方法、装置、设备及存储介质 | |
CN100527131C (zh) | 一种ims数据库互动式访问方法和工具 | |
CN110309214B (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
US20040243396A1 (en) | User-oriented electronic dictionary, electronic dictionary system and method for creating same | |
CN111090668B (zh) | 数据检索方法及装置、电子设备和计算机可读存储介质 | |
CN111190917B (zh) | 一种数据处理方法及装置 | |
CN111752549A (zh) | Sql函数生成方法及装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN112860233B (zh) | 目标语法树的生成方法以及相关设备 | |
Pivarski et al. | Fast access to columnar, hierarchically nested data via code transformation | |
CN114675831B (zh) | 一种编程语言的编译系统及方法 | |
US20230376310A1 (en) | Information processing method and information processing apparatus | |
CN117407002A (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 | ||
TG01 | Patent term adjustment |