CN107038222B - 数据库缓存实现方法及其系统 - Google Patents
数据库缓存实现方法及其系统 Download PDFInfo
- Publication number
- CN107038222B CN107038222B CN201710182550.3A CN201710182550A CN107038222B CN 107038222 B CN107038222 B CN 107038222B CN 201710182550 A CN201710182550 A CN 201710182550A CN 107038222 B CN107038222 B CN 107038222B
- Authority
- CN
- China
- Prior art keywords
- sql statement
- record
- cache
- value
- table name
- 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
- 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/23—Updating
- G06F16/235—Update request formulation
-
- 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/2433—Query languages
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库缓存实现方法及其系统,方法包括:在传输层创建监听器;监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。本发明通过解析SQL语句预判用户的行为,在有效提升服务器性能的同时实现产品的零开发、维护成本。
Description
技术领域
本发明涉及数据库缓存技术领域,尤其涉及一种数据库缓存实现方法及其系统。
背景技术
一个项目在初始阶段,为了尽快将产品推向市场,团队无法投入太多精力在性能优化上。然而当产品获得市场认可后,伴随的是用户数量的爆发式增长,日益增长的用户给后端数据库带来了巨大的压力。这时大部分团队会使用硬件扩容方案来解决服务端性能问题,但是当硬件扩容到达一定瓶颈时,开发团队就需要根据业务逻辑从软件架构设计出发设计出一套缓存系统,以解决数据库的压力。
这种情况下设计出的缓存系统通常只能应用于单独的软件产品中,其缺点是通用性差,设计成本、开发成本、调试成本巨大:
a)业务逻辑复杂,需求分析周期长。
要达到缓存的最优效果,缓存的粒度就一定要细。首先是从业务逻辑入手,对所有业务进行拆分细化,然后分析出每个细化后的操作对应的后台数据操作,根据该数据的读写比以及团队特点决定是否做缓存。这要求至少一位熟悉全局业务以及系统架构的资深人员进行长期的持续投入。
b)开发周期长,人员投入多。
在分析出性能瓶颈后,开发部门需要制定缓存更新策略,然后在已经稳定的业务代码中添加缓存功能。有时由于修改接口甚至导致外部相关系统的级联更新,进一步增加了软件的开发成本。
c)增加调试成本,问题难以发现。
对旧代码的大量修改极大增加系统的风险,同时也增加了QA人员的投入。此外,由于数据库数据系统和缓存系统本身是不同步的,这就导致出现脏数据时难以定位问题。特别是在大型应用中,一份数据有时不止一个更新入口,就导致脏数据的几率非常高。
发明内容
本发明所要解决的技术问题是:提出一种数据库缓存实现方法及其系统,可有效提升数据库服务器的性能,同时降低开发维护的成本。
为了解决上述技术问题,本发明采用的技术方案为:一种数据库缓存实现方法,包括:
在传输层创建监听器;
监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。
本发明还涉及一种数据库缓存实现系统,包括:
创建模块,用于在传输层创建监听器;
捕获模块,用于监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
第一判断模块,用于若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
生成模块,用于若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
返回模块,用于若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。
本发明的有益效果在于:通过在数据传输层监听数据库操作的SQL,通过解析SQL语句预判用户的行为,实现业务数据的智能数据缓存以及智能数据更新;由于基于SQL语句的分析实现缓存,不牵扯具体业务逻辑,所以无需专门的需求分析人员介入,即使业务逻辑的复杂度呈现指数增长,仍然能够很好的应用到各系统中;并且,由于和具体业务逻辑彻底解耦,不存在对现有系统的侵入,所以完全可以作为一个独立的系统进行开发和维护。特别是当一个公司(部门)有多个产品时,也只需开发一次,就可以同时部署到所有产品中,大幅降低了开发人员投入;同时,由于本发明可以作为独立系统开发和维护,所以QA人员的测试用例只要针对这个独立系统进行设计,省略了对现有复杂系统的测试,且具有完备性,不存在脏数据问题;本发明解决了时间过期算法中脏数据的问题,在有效提升服务器性能的同时实现产品的零开发、维护成本。
附图说明
图1为本发明一种数据库缓存实现方法的流程图;
图2为本发明实施例一的方法流程图;
图3为本发明实施例一中查询操作对应的方法流程图;
图4为本发明实施例二步骤S203的方法流程图;
图5为本发明实施例二步骤S204的方法流程图;
图6为本发明实施例三更新操作对应的方法流程图;
图7为本发明实施例三插入操作对应的方法流程图;
图8为本发明一种数据库缓存实现系统的结构示意图;
图9为本发明实施例五的系统结构示意图。
标号说明:
1、创建模块;2、捕获模块;3、第一判断模块;4、生成模块;5、返回模块;6、第二判断模块;7、第一更新模块;8、第二更新模块;9、第一执行模块;10、第三判断模块;11、第三更新模块;12、第四更新模块;13、第二执行模块;
31、第一判断单元;32、第一返回单元;33、第二判断单元;
311、第三判断单元;312、第一判定单元;313、第二判定单元;
41、第一创建单元;42、第二创建单元;43、第三创建单元;44、第一获取单元;45、第四创建单元;
51、第四判断单元;52、第一更新单元;53、第二返回单元;
510、第二获取单元;511、第五判断单元;512、第三判定单元;513、第六判断单元;514、第四判定单元;515、第七判断单元;516、第五判定单元;517、第八判断单元;518、第六判定单元;519、第七判定单元;
521、得到单元;522、第二更新单元;523、第三返回单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:在数据传输层监听数据库操作的SQL,通过解析SQL语句预判用户的行为。
请参阅图1,一种数据库缓存实现方法,包括:
在传输层创建监听器;
监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。
从上述描述可知,本发明的有益效果在于:通过在数据传输层监听数据库操作的SQL,通过解析SQL语句预判用户的行为,实现业务数据的智能数据缓存以及智能数据更新。
进一步地,所述“若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存”具体为:
若所述SQL语句对应的操作类型为查询操作,则根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存;
若不允许缓存,则返回数据库查询结果;
若允许缓存,则判断是否已存在所述SQL语句对应的缓存。
进一步地,所述“根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存”具体为:
根据所述SQL语句对应的表名和条件,判断所述SQL语句是否同时操作了多张表,以及所述表名是否在预设的黑名单中;
若是,则判定所述SQL语句不允许缓存;
若否,则判断所述SQL语句允许缓存。
由上述描述可知,对于一些更新极其频繁或者事务要求苛刻的表,如果对其进行缓存有可能反而增加了系统负担,因此可以创建一个黑名单,如果监听器发现表名对应的数据表在黑名单列表中,那么直接将该表的所有操作传递到数据库执行。
进一步地,所述“生成所述SQL语句对应的缓存”具体为:
创建键为所述表名的第一记录,并进行赋值;
创建键为所述表名和所述条件的第二记录,并进行赋值;
创建键为所述表名和Batch的第三记录,并进行赋值;
在数据库服务器中执行所述SQL语句,获取对应的结果;
将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
进一步地,所述“若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果”具体为:
若存在所述SQL语句对应的缓存,则根据所述SQL语句对应的表名和条件,判断所述SQL语句对应的缓存是否有效;
若缓存无效,则更新所述SQL语句对应的缓存,并返回数据库查询结果;
若缓存有效,则根据所述SQL语句对应的缓存返回缓存结果。
由上述描述可知,只有当存在对应的缓存且当前缓存有效时才直接返回缓存结果。
进一步地,所述“判断所述SQL语句对应的缓存是否有效”具体为:
获取所述SQL语句对应的缓存的值,并将所述缓存的值存储到监听器中;
判断是否存在第一记录且第一记录的值等于缓存的值中第一记录的值;
若否,则判定所述SQL语句对应的缓存无效;
若是,则判断是否存在第二记录且第二记录的值等于缓存的值中第二记录的值;
若否,则判定所述SQL语句对应的缓存无效;
若是,则判断所述SQL语句对应的条件是否只涉及一条数据;
若只涉及一条数据,则判定所述SQL语句对应的缓存有效;
若不只涉及一条数据,则判断是否存在第三记录且第三记录的值等于缓存的值中第三记录的值;
若是,则判定所述SQL语句对应的缓存有效;
若否,则判定所述SQL语句对应的缓存无效。
由上述描述可知,通过比对第一记录、第二记录和第三记录中的一个值或几个值与缓存中对应的值是否相同,来判断在此次查询操作之前,数据表中的数据是否有发生变化,从而判断当前缓存是否仍有效。
进一步地,若所述SQL语句对应的操作类型为更新操作,则判断所述SQL语句对应的条件是否只涉及一条数据;
若否,且存在键为所述表名的第一记录,则更新所述第一记录的值;
若是,且存在键为所述表名和所述条件的第二记录以及键为所述表名和Batch的第三记录,则更新所述第二记录的值和所述第三记录的值;
在数据库服务器中执行数据库更新操作,并返回更新结果。
进一步地,若所述SQL语句对应的操作类型为插入操作,则判断所述SQL语句中是否包含查询操作对应的字符串;
若包含,且存在键为所述表名的第一记录,则更新所述第一记录的值;
若不包含,且存在键为所述表名和Batch的第三记录,则更新所述第三记录的值;
在数据库服务器中执行数据库插入操作,并返回插入结果。
由上述描述可知,更新操作和插入操作涉及对数据表的数据更新,因此,当SQL语句为更新操作和插入操作时,要对应修改第一记录、第二记录和第三记录中的一个值或几个值。
进一步地,所述“更新所述SQL语句对应的缓存并返回数据库查询结果”具体为:
在数据库服务器中执行所述SQL语句,得到查询结果;
根据更新后的第一记录的值、第二记录的值、第三记录的值以及所述查询结果,更新所述SQL语句对应的缓存;
返回所述查询结果。
由上述描述可知,通过将缓存中的值修改为对应的记录更新后的值,来实现缓存的更新。
请参照图8,本发明还提出一种数据库缓存实现系统,包括:
创建模块,用于在传输层创建监听器;
捕获模块,用于监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
第一判断模块,用于若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
生成模块,用于若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
返回模块,用于若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。
进一步地,所述第一判断模块包括:
第一判断单元,用于若所述SQL语句对应的操作类型为查询操作,则根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存;
第一返回单元,用于若不允许缓存,则返回数据库查询结果;
第二判断单元,用于若允许缓存,则判断是否已存在所述SQL语句对应的缓存。
进一步地,所述第一判断单元包括:
第三判断单元,用于根据所述SQL语句对应的表名和条件,判断所述SQL语句是否同时操作了多张表,以及所述表名是否在预设的黑名单中;
第一判定单元,用于若是,则判定所述SQL语句不允许缓存;
第二判定单元,用于若否,则判断所述SQL语句允许缓存。
进一步地,所述生成模块包括:
第一创建单元,用于创建键为所述表名的第一记录,并进行赋值;
第二创建单元,用于创建键为所述表名和所述条件的第二记录,并进行赋值;
第三创建单元,用于创建键为所述表名和Batch的第三记录,并进行赋值;
第一获取单元,用于在数据库服务器中执行所述SQL语句,获取对应的结果;
第四创建单元,用于将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
进一步地,所述返回模块包括:
第四判断单元,用于若存在所述SQL语句对应的缓存,则根据所述SQL语句对应的表名和条件,判断所述SQL语句对应的缓存是否有效;
第一更新单元,用于若缓存无效,则更新所述SQL语句对应的缓存,并返回数据库查询结果;
第二返回单元,用于若缓存有效,则根据所述SQL语句对应的缓存返回缓存结果。
进一步地,所述第四判断单元包括:
第二获取单元,用于获取所述SQL语句对应的缓存的值,并将所述缓存的值存储到监听器中;
第五判断单元,用于判断是否存在第一记录且第一记录的值等于缓存的值中第一记录的值;
第三判定单元,用于若否,则判定所述SQL语句对应的缓存无效;
第六判断单元,用于若是,则判断是否存在第二记录且第二记录的值等于缓存的值中第二记录的值;
第四判定单元,用于若否,则判定所述SQL语句对应的缓存无效;
第七判断单元,用于若是,则判断所述SQL语句对应的条件是否只涉及一条数据;
第五判定单元,用于若只涉及一条数据,则判定所述SQL语句对应的缓存有效;
第八判断单元,用于若不只涉及一条数据,则判断是否存在第三记录且第三记录的值等于缓存的值中第三记录的值;
第六判定单元,用于若是,则判定所述SQL语句对应的缓存有效;
第七判定单元,用于若否,则判定所述SQL语句对应的缓存无效。
进一步地,还包括:
第二判断模块,用于若所述SQL语句对应的操作类型为更新操作,则判断所述SQL语句对应的条件是否只涉及一条数据;
第一更新模块,用于若否,且存在键为所述表名的第一记录,则更新所述第一记录的值;
第二更新模块,用于若是,且存在键为所述表名和所述条件的第二记录以及键为所述表名和Batch的第三记录,则更新所述第二记录的值和所述第三记录的值;
第一执行模块,用于在数据库服务器中执行数据库更新操作,并返回更新结果。
进一步地,还包括:
第三判断模块,用于若所述SQL语句对应的操作类型为插入操作,则判断所述SQL语句中是否包含查询操作对应的字符串;
第三更新模块,用于若包含,且存在键为所述表名的第一记录,则更新所述第一记录的值;
第四更新模块,用于若不包含,且存在键为所述表名和Batch的第三记录,则更新所述第三记录的值;
第二执行模块,用于在数据库服务器中执行数据库插入操作,并返回插入结果。
进一步地,所述更新单元包括:
得到单元,用于在数据库服务器中执行所述SQL语句,得到查询结果;
第二更新单元,用于根据更新后的第一记录的值、第二记录的值、第三记录的值以及所述查询结果,更新所述SQL语句对应的缓存;
第三返回单元,用于返回所述查询结果。
实施例一
本发明的实施例一为:一种数据库缓存实现方法,可应用于所有使用了数据库技术的前后端应用程序中。如图2所示,包括如下步骤:
S101:在传输层创建监听器;进一步地,可数据库操作接口或数据库连接工具中创建监听器。具体如下:
a)应用程序都会有一个框架层,业务逻辑在这个框架层的基础上进行开发,框架层会提供一些常用的基础功能,其中包括了对数据库所有操作的封装;只要在这些接口中做一个钩子,便可捕获到所有的数据库操作。这种方法的优点是实现简单,而且由于框架层已经对数据库操作做了区分,这样就省去了后期对SQL语句的解析操作。
b)改写应用程序和数据库的连接工具,在连接工具中创建钩子。这种做法的优点是监听器的效率比较高,更加灵活,更加通用。
S102:监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件。SQL语句即结构化查询语言,是一种数据库查询和程序设计语言;通过对捕获到的SQL语句进行分析即可得到该SQL语句的对应的操作类型、表名和条件。
S103:判定所述SQL语句对应的操作类型,若为查询操作(SELECT),则执行步骤S201。
如图3所示,若为查询操作,则执行以下步骤:
S201:根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存;若是,则执行步骤S202,若否,则执行步骤S207。进一步地,即判断所述SQL语句是否同时操作了多张表,以及所述表名是否在预设的黑名单中,若是,则判定所述SQL语句不允许缓存,若否,则判断所述SQL语句允许缓存。
S202:判断是否存在所述SQL语句对应的缓存,若否,则执行步骤S203,若是,则执行步骤S204。
S203:根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存;执行步骤S207。
S204:根据所述SQL语句对应的表名和条件,判断所述SQL语句对应的缓存是否有效,若是,则执行步骤S205,若否,则执行步骤S206。
S205:根据所述SQL语句对应的缓存返回缓存结果。
S206:更新所述SQL语句对应的缓存,执行步骤S207。
S207:返回数据库查询结果。
对于一些更新极其频繁或者事务要求苛刻的表,如果对其进行缓存有可能反而增加了系统负担,因此可以创建一个黑名单,如果监听器发现表名对应的数据表在黑名单列表中,那么直接将该表的所有操作传递到数据库执行。
本实施例通过在数据传输层监听数据库操作的SQL,通过解析SQL语句预判用户的行为,实现业务数据的智能数据缓存以及智能数据更新
实施例二
本实施例为实施例一中步骤S203和S204的进一步拓展。
如图4所示,“生成所述SQL语句对应的缓存”,即所述步骤S203包括如下步骤:
S2031:创建键为所述表名的第一记录,并进行赋值;即创建键为“表名”的第一记录。
S2032:创建键为所述表名和所述条件的第二记录,并进行赋值;即创建键为“表名+条件”的第二记录。
S2033:创建键为所述表名和Batch的第三记录,并进行赋值;即创建键为“表名+Batch”的第三记录。
S2034:在数据库服务器中执行所述SQL语句,获取对应的结果;
S2035:将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
具体地,所述SQL语句对应的缓存为:
键:SQL语句
值:JSON格式的对象
优选地,对第一记录、第二记录和第三记录的初始赋值都为1。所述第一记录、第二记录、第三记录、缓存都存储在缓存服务器中。
如图5所示,“判断所述SQL语句对应的缓存是否有效”,即步骤S204包括如下步骤:
S2041:获取所述SQL语句对应的缓存的值,并将所述缓存的值存储到监听器中。
S2042:判断是否存在第一记录且第一记录的值等于缓存的值中第一记录的值,即判断是否存在键为“表名”的记录且值等于JSON中key为Table的值;若是,则执行步骤S2043,若否,则执行步骤S2047。
S2043:判断是否存在第二记录且第二记录的值等于缓存的值中第二记录的值,即判断是否存在键为“表名+条件”的记录且值等于JSON中key为Condition的值;若是,则执行步骤S2044,若否,则执行步骤S2047。
S2044:判断所述SQL语句对应的条件是否只涉及一条数据,若否,则执行步骤S2045,若是,则执行步骤S2046。具体地,可预先获取数据库中各数据表的表结构信息,包括表名、字段名、主键、唯一索引等,判断所述SQL语句对应的条件是否只有主键或唯一索引并且不包含>、>=、<、<=、like等字符,若是,则该条件只涉及一条数据,若否,则涉及多条数据。
S2045:判断是否存在第三记录且第三记录的值等于缓存的值中第三记录的值,即判断是否存在键为“表名+Batch”的记录且值等于JSON中key为Batch的值;若是,则执行步骤S2046,若否,则执行步骤S2047。
S2046:判定所述SQL语句对应的缓存有效。
S2047:判定所述SQL语句对应的缓存无效。
本实施例实现了一种缓存的存储方法,根据SQL语句对应的表名和条件,创建第一记录、第二记录和第三记录,并将第一记录、第二记录和第三记录的值也存储进缓存的值中,后续即可通过比对第一记录、第二记录和第三记录中的一个值或几个值与缓存中对应的值是否相同,来判断在此次查询操作之前,数据表中的数据是否有发生变化,从而判断当前缓存是否仍有效。
实施例三
本实施例为实施例一中步骤S103和步骤S206的进一步拓展。
步骤S103中还包括,若为更新操作(UPDATE),则执行步骤S301,若为插入操作(DELETE),则执行步骤S401。
如图6所示,若所述SQL语句对应的操作类型为更新操作,则执行以下步骤:
S301:判断所述SQL语句对应的条件是否只涉及一条数据,若否,则执行步骤S302,若是,则执行步骤S304;判断依据与步骤S2044相同。
S302:判断是否存在键为所述表名的第一记录,若是,则执行步骤S303,若否,则执行步骤S308。
S303:更新所述第一记录的值;执行步骤S308。
S304:判断是否存在键为所述表名和所述条件的第二记录,若是,则执行步骤S305,若否,则执行步骤S306。
S305:更新所述第二记录的值;执行步骤S306。
S306:判断是否存在键为所述表名和Batch的第三记录,若是,则执行步骤S307,若否,则执行步骤S308。
S307:更新所述第三记录的值;执行步骤S308。
S308:在数据库服务器中执行数据库更新操作,并返回更新结果。
优选地,值的更新方法为当前值加一。
如图7所示,若所述SQL语句对应的操作类型为插入操作,则执行以下步骤:
S401:判断所述SQL语句中是否包含查询操作对应的字符串,即是否包含字符串SELECT,若是,则执行步骤S402,若否,则执行步骤S404。
S402:判断是否存在键为所述表名的第一记录,若是,则执行步骤S403,若否,则执行步骤S406。
S403:更新所述第一记录的值;执行步骤S406。
S404:判断是否存在键为所述表名和Batch的第三记录,若是,则执行步骤S405,若否,则执行步骤S406。
S405:更新所述第三记录的值;执行步骤S406。
S406:在数据库服务器中执行数据库插入操作,并返回插入结果。
优选地,值的更新方法为当前值加一。
基于上述的更新操作和插入操作,“更新所述SQL语句对应的缓存”,即步骤S206具体为:在数据库服务器中执行所述SQL语句,得到查询结果;根据更新后的第一记录的值、第二记录的值、第三记录的值以及所述查询结果,更新所述SQL语句对应的缓存。
对于更新后返回数据库查询结果即为返回所述查询结果。
更新操作和插入操作涉及对数据表的数据更新,因此,当SQL语句为更新操作和插入操作时,要对应修改第一记录、第二记录和第三记录中的一个值或几个值,后续才可通过比对第一记录、第二记录和第三记录的值与缓存中对应的值是否相同,来判断缓存是否有效。
实施例四
本实施例为对应上述实施例的一具体应用场景。
假设有一数据表,表名为user(用户表),数据字段包括uid(用户ID)、name(昵称)、sex(性别)、favourite(喜好),其中,uid为主键。
首先,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid=100
对这条SQL语句进行分析,分析结果发现这是一个“查询操作”,查询表名:user,查询条件:uid=100。
进行是否允许缓存的判断后返回其可以缓存,但当前不存在该SQL语句对应的缓存,因此,生成该SQL语句对应的缓存,创建的信息如下所示:
生成缓存后,返回数据库查询结果。
之后,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid=100
对这条SQL语句进行分析,分析结果发现这是一个“查询操作”,查询表名:user,查询条件:uid=100。
进行是否允许缓存的判断后返回其可以缓存,且当前存在其对应的缓存,则进行缓存是否有效的判断,发现存在键为“user”的记录且其值等于JSON中key为Table的值,存在键为“user_uid=100”的记录且其值等于JSON中key为Condition的值,查询条件uid是主键且不包含“>,>=,<,<=,like”,因此判定当前缓存有效,直接返回JSON中key为Value的值,无需执行数据库操作。
若监听器捕获到对数据库操作的SQL:UPDATE name=’tiago’FROM user WHEREuid=100
对这条SQL语句进行分析,分析结果发现这是一个“更新操作”,更新表名:user,更新条件:uid=100。由于更新条件只涉及一条数据,因此更新第二记录和第三记录的值,更新后如下所示:
键 | 值 |
user_uid=100 | 2 |
user_Batch | 2 |
之后,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid=100
对这条SQL语句进行分析,分析结果发现这是一个“查询操作”,查询表名:user,查询条件:uid=100。
进行是否允许缓存的判断后返回其可以缓存,且当前存在其对应的缓存,则进行缓存是否有效的判断,发现缓存中键为“user_uid=100”的值不等于JSON中key为Condition的值,因此当前缓存失效,需对缓存进行更新,更新后的缓存如下所示:
更新后,返回数据库查询结果。
上述为查询操作和更新操作的情况,下述以查询操作和插入操作为例。
监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid=100
同上所述,创建如下信息:
之后,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid>100
同理,创建如下信息:
若监听器捕获到对数据库操作的SQL:INSERT INTO user Values(name=’tiago’,uid=101)
对这条SQL语句进行分析,分析结果发现这是一个“插入操作”,插入表名:user,插入条件:空。对上述信息进行更新,更新后的信息如下:
键 | 值 |
user_Batch | 2 |
之后,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid=100
同上所述,此时当前缓存有效,直接返回JSON中key为Value的值。
之后,监听器捕获到对数据库操作的SQL:SELECT*FROM user WHERE uid>100
对这条SQL语句进行分析,分析结果发现这是一个“查询操作”,查询表名:user,查询条件:uid>100。
进行是否允许缓存的判断后返回其可以缓存,且当前存在其对应的缓存,则进行缓存是否有效的判断,由于条件中包含“>”,所以需要对键为“user_Batch”的记录进行检查,发现其值与JSON中key为Batch的值不相等,因此,当前缓存无效,需对缓存进行更新,更新后的缓存如下所示:
更新后,返回数据库查询结果。
实施例五
请参照图9,本实施例是对应上述实施例的一种数据库缓存实现系统,包括:
创建模块1,用于在传输层创建监听器;
捕获模块2,用于监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
第一判断模块3,用于若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
生成模块4,用于若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
返回模块5,用于若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果。
进一步地,所述第一判断模块3包括:
第一判断单元31,用于若所述SQL语句对应的操作类型为查询操作,则根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存;
第一返回单元32,用于若不允许缓存,则返回数据库查询结果;
第二判断单元33,用于若允许缓存,则判断是否已存在所述SQL语句对应的缓存。
进一步地,所述第一判断单元31包括:
第三判断单元311,用于根据所述SQL语句对应的表名和条件,判断所述SQL语句是否同时操作了多张表,以及所述表名是否在预设的黑名单中;
第一判定单元312,用于若是,则判定所述SQL语句不允许缓存;
第二判定单元313,用于若否,则判断所述SQL语句允许缓存。
进一步地,所述生成模块4包括:
第一创建单元41,用于创建键为所述表名的第一记录,并进行赋值;
第二创建单元42,用于创建键为所述表名和所述条件的第二记录,并进行赋值;
第三创建单元43,用于创建键为所述表名和Batch的第三记录,并进行赋值;
第一获取单元44,用于在数据库服务器中执行所述SQL语句,获取对应的结果;
第四创建单元45,用于将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
进一步地,所述返回模块5包括:
第四判断单元51,用于若存在所述SQL语句对应的缓存,则根据所述SQL语句对应的表名和条件,判断所述SQL语句对应的缓存是否有效;
第一更新单元52,用于若缓存无效,则更新所述SQL语句对应的缓存,并返回数据库查询结果;
第二返回单元53,用于若缓存有效,则根据所述SQL语句对应的缓存返回缓存结果。
进一步地,所述第四判断单元51包括:
第二获取单元510,用于获取所述SQL语句对应的缓存的值,并将所述缓存的值存储到监听器中;
第五判断单元511,用于判断是否存在第一记录且第一记录的值等于缓存的值中第一记录的值;
第三判定单元512,用于若否,则判定所述SQL语句对应的缓存无效;
第六判断单元513,用于若是,则判断是否存在第二记录且第二记录的值等于缓存的值中第二记录的值;
第四判定单元514,用于若否,则判定所述SQL语句对应的缓存无效;
第七判断单元515,用于若是,则判断所述SQL语句对应的条件是否只涉及一条数据;
第五判定单元516,用于若只涉及一条数据,则判定所述SQL语句对应的缓存有效;
第八判断单元517,用于若不只涉及一条数据,则判断是否存在第三记录且第三记录的值等于缓存的值中第三记录的值;
第六判定单元518,用于若是,则判定所述SQL语句对应的缓存有效;
第七判定单元519,用于若否,则判定所述SQL语句对应的缓存无效。
进一步地,还包括:
第二判断模块6,用于若所述SQL语句对应的操作类型为更新操作,则判断所述SQL语句对应的条件是否只涉及一条数据;
第一更新模块7,用于若否,且存在键为所述表名的第一记录,则更新所述第一记录的值;
第二更新模块8,用于若是,且存在键为所述表名和所述条件的第二记录以及键为所述表名和Batch的第三记录,则更新所述第二记录的值和所述第三记录的值;
第一执行模块9,用于在数据库服务器中执行数据库更新操作,并返回更新结果。
进一步地,还包括:
第三判断模块10,用于若所述SQL语句对应的操作类型为插入操作,则判断所述SQL语句中是否包含查询操作对应的字符串;
第三更新模块11,用于若包含,且存在键为所述表名的第一记录,则更新所述第一记录的值;
第四更新模块12,用于若不包含,且存在键为所述表名和Batch的第三记录,则更新所述第三记录的值;
第二执行模块13,用于在数据库服务器中执行数据库插入操作,并返回插入结果。
进一步地,所述第一更新单元52包括:
得到单元521,用于在数据库服务器中执行所述SQL语句,得到查询结果;
第二更新单元522,用于根据更新后的第一记录的值、第二记录的值、第三记录的值以及所述查询结果,更新所述SQL语句对应的缓存;
第三返回单元523,用于返回所述查询结果。
综上所述,本发明提供的一种数据库缓存实现方法及其系统,通过在数据传输层监听数据库操作的SQL,通过解析SQL语句预判用户的行为,实现业务数据的智能数据缓存以及智能数据更新;由于基于SQL语句的分析实现缓存,不牵扯具体业务逻辑,所以无需专门的需求分析人员介入,即使业务逻辑的复杂度呈现指数增长,仍然能够很好的应用到各系统中;并且,由于和具体业务逻辑彻底解耦,不存在对现有系统的侵入,所以完全可以作为一个独立的系统进行开发和维护。特别是当一个公司(部门)有多个产品时,也只需开发一次,就可以同时部署到所有产品中,大幅降低了开发人员投入;同时,由于本发明可以作为独立系统开发和维护,所以QA人员的测试用例只要针对这个独立系统进行设计,省略了对现有复杂系统的测试,且具有完备性,不存在脏数据问题;本发明解决了时间过期算法中脏数据的问题,在有效提升服务器性能的同时实现产品的零开发、维护成本。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种数据库缓存实现方法,其特征在于,包括:
在传输层创建监听器;
监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果;
所述“生成所述SQL语句对应的缓存”具体为:
创建键为所述表名的第一记录,并进行赋值;
创建键为所述表名和所述条件的第二记录,并进行赋值;
创建键为所述表名和Batch的第三记录,并进行赋值;
在数据库服务器中执行所述SQL语句,获取对应的结果;
将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
2.根据权利要求1所述的数据库缓存实现方法,其特征在于,所述“若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存”具体为:
若所述SQL语句对应的操作类型为查询操作,则根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存;
若不允许缓存,则返回数据库查询结果;
若允许缓存,则判断是否已存在所述SQL语句对应的缓存。
3.根据权利要求2所述的数据库缓存实现方法,其特征在于,所述“根据所述SQL语句对应的表名和条件,判断所述SQL语句是否允许缓存”具体为:
根据所述SQL语句对应的表名和条件,判断所述SQL语句是否同时操作了多张表或所述表名是否在预设的黑名单中;
若是,则判定所述SQL语句不允许缓存;
若否,则判定所述SQL语句允许缓存。
4.根据权利要求1所述的数据库缓存实现方法,其特征在于,所述“若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果”具体为:
若存在所述SQL语句对应的缓存,则根据所述SQL语句对应的表名和条件,判断所述SQL语句对应的缓存是否有效;
若缓存无效,则更新所述SQL语句对应的缓存,并返回数据库查询结果;
若缓存有效,则根据所述SQL语句对应的缓存返回缓存结果。
5.根据权利要求4所述的数据库缓存实现方法,其特征在于,所述“判断所述SQL语句对应的缓存是否有效”具体为:
获取所述SQL语句对应的缓存的值,并将所述缓存的值存储到监听器中;
判断是否存在第一记录且第一记录的值等于缓存的值中第一记录的值;
若否,则判定所述SQL语句对应的缓存无效;
若是,则判断是否存在第二记录且第二记录的值等于缓存的值中第二记录的值;
若否,则判定所述SQL语句对应的缓存无效;
若是,则判断所述SQL语句对应的条件是否只涉及一条数据;
若只涉及一条数据,则判定所述SQL语句对应的缓存有效;
若不只涉及一条数据,则判断是否存在第三记录且第三记录的值等于缓存的值中第三记录的值;
若是,则判定所述SQL语句对应的缓存有效;
若否,则判定所述SQL语句对应的缓存无效。
6.根据权利要求4所述的数据库缓存实现方法,其特征在于,
若所述SQL语句对应的操作类型为更新操作,则判断所述SQL语句对应的条件是否只涉及一条数据;
若否,且存在键为所述表名的第一记录,则更新所述第一记录的值;
若是,且存在键为所述表名和所述条件的第二记录以及键为所述表名和Batch的第三记录,则更新所述第二记录的值和所述第三记录的值;
在数据库服务器中执行数据库更新操作,并返回更新结果。
7.根据权利要求4所述的数据库缓存实现方法,其特征在于,
若所述SQL语句对应的操作类型为插入操作,则判断所述SQL语句中是否包含查询操作对应的字符串;
若包含,且存在键为所述表名的第一记录,则更新所述第一记录的值;
若不包含,且存在键为所述表名和Batch的第三记录,则更新所述第三记录的值;
在数据库服务器中执行数据库插入操作,并返回插入结果。
8.根据权利要求6或7所述的数据库缓存实现方法,其特征在于,所述“更新所述SQL语句对应的缓存并返回数据库查询结果”具体为:
在数据库服务器中执行所述SQL语句,得到查询结果;
根据更新后的第一记录的值、第二记录的值、第三记录的值以及所述查询结果,更新所述SQL语句对应的缓存;
返回所述查询结果。
9.一种数据库缓存实现系统,其特征在于,包括:
创建模块,用于在传输层创建监听器;
捕获模块,用于监听器捕获SQL语句,并分析得到所述SQL语句对应的操作类型、表名和条件;
第一判断模块,用于若所述SQL语句对应的操作类型为查询操作,则判断是否存在所述SQL语句对应的缓存;
生成模块,用于若否,则根据所述SQL语句对应的表名和条件,生成所述SQL语句对应的缓存并返回数据库查询结果;
返回模块,用于若是,则根据所述SQL语句对应的表名和条件,更新所述SQL语句对应的缓存并返回数据库查询结果,或根据所述SQL语句对应的缓存返回缓存结果;
所述生成模块包括:
第一创建单元,用于创建键为所述表名的第一记录,并进行赋值;
第二创建单元,用于创建键为所述表名和所述条件的第二记录,并进行赋值;
第三创建单元,用于创建键为所述表名和Batch的第三记录,并进行赋值;
第一获取单元,用于在数据库服务器中执行所述SQL语句,获取对应的结果;
第四创建单元,用于将所述SQL语句作为键,将所述第一记录的值、第二记录的值、第三记录的值以及所述对应的结果作为值,创建所述SQL语句对应的缓存,所述缓存的值以JSON格式的对象的形式进行存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710182550.3A CN107038222B (zh) | 2017-03-24 | 2017-03-24 | 数据库缓存实现方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710182550.3A CN107038222B (zh) | 2017-03-24 | 2017-03-24 | 数据库缓存实现方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107038222A CN107038222A (zh) | 2017-08-11 |
CN107038222B true CN107038222B (zh) | 2020-02-28 |
Family
ID=59533768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710182550.3A Active CN107038222B (zh) | 2017-03-24 | 2017-03-24 | 数据库缓存实现方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107038222B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947780A (zh) * | 2017-08-17 | 2019-06-28 | 天津数观科技有限公司 | 一种利用代理程序更新缓存的方法、装置及系统 |
CN107644071A (zh) * | 2017-09-18 | 2018-01-30 | 广州爱九游信息技术有限公司 | 缓存更新方法、装置及数据存储系统 |
CN108345646B (zh) * | 2018-01-16 | 2022-02-22 | 广东电网有限责任公司信息中心 | 一种运用拦截技术快速自动构建多维度报表的方法 |
CN110134705A (zh) * | 2018-02-09 | 2019-08-16 | 中国移动通信集团有限公司 | 一种数据查询方法、缓存服务器及终端 |
CN109669878B (zh) * | 2018-11-30 | 2021-04-02 | 环球雅途集团有限公司 | 一种最简化缓存数据操作方法 |
CN111324607B (zh) * | 2020-02-04 | 2021-09-14 | 中科驭数(北京)科技有限公司 | Sql语句复用方法和装置 |
CN112199398A (zh) * | 2020-10-22 | 2021-01-08 | 上海擎感智能科技有限公司 | 缓存处理方法、终端及计算机存储介质 |
CN112307068A (zh) * | 2020-11-10 | 2021-02-02 | 天元大数据信用管理有限公司 | 一种动态sql查询方法 |
CN113312376B (zh) * | 2021-05-21 | 2022-10-21 | 福建天泉教育科技有限公司 | 一种用于Nginx日志实时处理分析的方法及终端 |
CN113641690B (zh) * | 2021-08-10 | 2023-10-27 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
CN117453732B (zh) * | 2023-12-25 | 2024-03-01 | 智业软件股份有限公司 | 一种cdss医嘱数据查询优化方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402596A (zh) * | 2011-11-07 | 2012-04-04 | 北京搜狗科技发展有限公司 | 一种主从分离数据库的读写方法和系统 |
CN104050276A (zh) * | 2014-06-26 | 2014-09-17 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库的缓存处理方法及系统 |
CN104239508A (zh) * | 2014-09-12 | 2014-12-24 | 中国工商银行股份有限公司 | 数据查询方法和装置 |
CN104572979A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 一种处理结构化查询语言sql的方法及装置 |
CN105740383A (zh) * | 2016-01-27 | 2016-07-06 | 中国科学院计算技术研究所 | 一种大数据平台下数据库与缓存的数据一致性方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996503B2 (en) * | 2010-10-04 | 2015-03-31 | Sybase, Inc. | Query plan optimization for prepared SQL statements |
US20140279944A1 (en) * | 2013-03-15 | 2014-09-18 | University Of Southern California | Sql query to trigger translation for maintaining consistency of cache augmented sql systems |
-
2017
- 2017-03-24 CN CN201710182550.3A patent/CN107038222B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402596A (zh) * | 2011-11-07 | 2012-04-04 | 北京搜狗科技发展有限公司 | 一种主从分离数据库的读写方法和系统 |
CN104050276A (zh) * | 2014-06-26 | 2014-09-17 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库的缓存处理方法及系统 |
CN104239508A (zh) * | 2014-09-12 | 2014-12-24 | 中国工商银行股份有限公司 | 数据查询方法和装置 |
CN104572979A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 一种处理结构化查询语言sql的方法及装置 |
CN105740383A (zh) * | 2016-01-27 | 2016-07-06 | 中国科学院计算技术研究所 | 一种大数据平台下数据库与缓存的数据一致性方法及系统 |
Non-Patent Citations (3)
Title |
---|
Cache and consistency in NOSQL;Peng Xiang et al;《2010 3rd International Conference on Computer Science and Information Technology》;20100907;第117-120页 * |
一种高效的SQL语句执行线程;洪承煜 等;《计算机系统应用》;20141231;第23卷(第1期);第162-165页 * |
面向非结构化数据查询优化的存储系统;李浩;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;第2012年卷(第07期);第I137-91页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107038222A (zh) | 2017-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
CN107391653B (zh) | 一种分布式NewSQL数据库系统及图片数据储存方法 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN108536705B (zh) | 数据库系统中对象的编码及运算方法与数据库服务器 | |
US7822710B1 (en) | System and method for data collection | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
US8949222B2 (en) | Changing the compression level of query plans | |
CN111752959B (zh) | 一种实时数据库跨库sql交互方法和系统 | |
CN111949650A (zh) | 一种多语言融合查询方法及多模数据库系统 | |
CN105550206B (zh) | 结构化查询语句的版本控制方法及装置 | |
KR20160130256A (ko) | 데이터 유형에 관련된 데이터 프로파일링 동작 관리 | |
US20160063107A1 (en) | Data retrieval via a telecommunication network | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN113886485A (zh) | 数据处理方法、装置、电子设备、系统和存储介质 | |
CN115269631A (zh) | 数据查询方法、数据查询系统、设备及存储介质 | |
US8024374B2 (en) | Computer object conversion using an intermediate object | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN114969441A (zh) | 基于图数据库的知识挖掘引擎系统 | |
CN115114325B (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN112506961A (zh) | 一种提高数据查询效率的方法 | |
CN115827676A (zh) | Sql子查询的执行方法、装置、终端设备以及介质 | |
CN116028505A (zh) | 一种在分布式数据库中实现高可用序列的方法 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN113722337B (zh) | 业务数据确定方法、装置、设备及存储介质 | |
CN114461454A (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 |