CN110457345B - 数据库读取方法、装置及计算机可读存储介质 - Google Patents
数据库读取方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110457345B CN110457345B CN201910607940.XA CN201910607940A CN110457345B CN 110457345 B CN110457345 B CN 110457345B CN 201910607940 A CN201910607940 A CN 201910607940A CN 110457345 B CN110457345 B CN 110457345B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- file
- shared library
- reading
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000005457 optimization Methods 0.000 claims abstract description 69
- 230000008569 process Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 description 8
- 241000994536 Biza Species 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Abstract
本发明涉及云存储技术领域,揭露了一种数据库读取方法,包括:使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中,获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑,在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果。本发明还提出一种数据库读取装置以及一种计算机可读存储介质。本发明实现了数据库的高效读取。
Description
技术领域
本发明涉及云存储技术领域,尤其涉及一种基于动态执行文件的数据库读取方法、装置及计算机可读存储介质。
背景技术
随着信息技术的快速发展和数据量的快速增加,数据库在存储海量数据的情况下读写速度常常难以达到实际产品的需要,尤其是在诸如金融行业等对数据实时性、准确性要求较高的场景下,对数据库读写速度的优化需求更加强烈。在此情况下,需要在客户机和服务器连接的各个环节中优化数据库访问和读写速度。
常用的数据库读性能优化方式主要包括硬件扩容、分库分表、数据归档、减少异地部署/跨机房访问等。其中,所述硬件扩容主要指通过提升硬盘读写速度、增加内存、升级CPU等硬件性能达到提升数据库读写速度的方法;所述分库分表基本思想是把一个数据库切分成多个部分放到不同的数据库上,从而缓解单一数据库的性能问题;所述数据归档是将不再经常使用的数据移到一个单独的存储设备来进行长期保存;所述减少异地部署/跨机房访问主要通过减少客户机和服务器的物理距离提升发出指令和返回结果的时间损耗。
上述优化方式均需较多的变动数据架构和硬件变更,实际执行过程中易造成数据丢失、数据表损坏、新录入数据出错、服务暂时中断等异常情况,产生巨大的经济和声誉损失。另外对硬件的升级、网络布线的更新也会带来成本的增加。
发明内容
本发明提供一种数据库读取方法、装置及计算机可读存储介质,其主要目的在于当用户在数据库进行读取数据时,给用户呈现出较快的读取结果。
为实现上述目的,本发明提供的一种数据库读取方法,包括:
使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中;
获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑;
在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果;
在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果。
可选地,在使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中之前,该方法还包括:
新增一个自定义的动态共享库so文件,该动态共享库so文件封装了一个用于读取所述数据库中数据的数据读取接口。
可选地,所述使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中,包括:
将所述动态共享库so文件的优化逻辑加载在该动态共享库so文件所封装的数据读取接口上;
通过使用构造函数预先加载所述的动态共享库so文件。
可选地,所述通过使用构造函数预先加载所述的动态共享库so文件,包括:
通过GNU C编译器中提供__attribute__((constructor))方法定义所述构造函数,并在所述构造函数定义一个进程启动预先加载的运行入口;
将所述封装的动态共享库so文件加载逻辑放至所述预先加载的运行入口里。
可选地,所述本地数据缓存优先策略,包括:
根据索引从本地数据仓库查找所述查询命令对应的所述数据库数据;
当未查找到对应的所述数据库数据时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当查找到对应的所述数据库数据时,对所查询到的数据的时间戳进行校验,根据外部配置文件中的配置参数判断所述时间戳是否过期;
当所述时间戳已过期时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当所述时间戳未过期时,直接将查询结果返回给所述客户端程序,并保留原时间戳。
此外,为实现上述目的,本发明还提供一种数据库读取装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的数据库读取程序,所述数据库读取程序被所述处理器执行时实现如下步骤:
使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中;
获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑;
在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果;
在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果。
可选地,在使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中之前,该方法还包括:
新增一个自定义的动态共享库so文件,该动态共享库so文件封装了一个用于读取所述数据库中数据的数据读取接口。
可选地,所述使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中,包括:
将所述动态共享库so文件的优化逻辑加载在该动态共享库so文件所封装的数据读取接口上;
通过使用构造函数预先加载所述的动态共享库so文件。
可选地,所述本地数据缓存优先策略,包括:
根据索引从本地数据仓库查找所述查询命令对应的所述数据库数据;
当未查找到对应的所述数据库数据时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当查找到对应的所述数据库数据时,对所查询到的数据的时间戳进行校验,根据外部配置文件中的配置参数判断所述时间戳是否过期;
当所述时间戳已过期时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当所述时间戳未过期时,直接将查询结果返回给所述客户端程序,并保留原时间戳。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据库读取程序,所述数据库读取程序可被一个或者多个处理器执行,以实现如上所述的数据库读取方法的步骤。
本发明提出的数据库读取方法、装置及计算机可读存储介质,使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中,客户端程序的查询命令通过调用so文件提供的数据读取接口,加快对数据库读取的速度,从而可以给用户呈现出较快的读取结果。
附图说明
图1为本发明一实施例提供的数据库读取方法的流程示意图;
图2为本发明一实施例提供的数据库读取装置的内部结构示意图;
图3为本发明一实施例提供的数据库读取装置中数据库读取程序的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种数据库读取方法。参照图1所示,为本发明一实施例提供的数据库读取方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,数据库读取方法包括:
S1、使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中。
本发明较佳实施例中,所述的数据库可以为Oracle数据库。其他实施例中,所述数据库也可以为mysql、SQLServer等数据库。
所述动态共享库so文件是UNIX系统中使用的动态共享库文件,用于动态连接。所述客户端程序可以是某个读取操作多,写入操作少的程序,用于从所述数据库中查询/读取数据。例如,所述客户端程序可以是某手机软件应用商店,该应用商店根据用户的查询命令从所述数据库中查询/下载应用程序数据。
本发明较佳实施例可以新增一个自定义的动态共享库so文件,例如bizA.so,该动态共享库so文件封装了一个用于读取所述数据库中数据的数据读取接口,例如PA_ReadBizDataA接口,供上述客户端程序调用。进一步地,本发明较佳实施例将所述动态共享库so文件的优化逻辑加载至该动态共享库so文件所封装的数据读取接口。
所述的优化逻辑指的是上述客户端程序在访问所述数据库时,所述动态共享库so文件提供的一种数据查询的流程优化方法。
进一步地,所述客户端程序在调用所述动态共享库so文件封装的数据读取接口之前,会使用一个构造函数预先加载上述的动态共享库so文件。
所述的构造函数是由GNU C编译器提供的一种__attribute__((constructor))方法,并在所述构造函数上定义一个进程启动预先加载的运行入口(pa_ue_init(void)),将上述动态共享库so文件加载在所述的运行入口中,于是,所述动态共享库so文件提供的数据读取接口可以被上述客户端程序调用。优选地,所述构造函数的参数配置为:
dlopen(“bizA.so”,RTLD_LAZY|RTLD_GLOBAL|RTLD_NODELETE))
其中:
RTLD_LAZY表示:在dlopen返回前,对于动态库中的未定义的符号不执行解析(只对函数引用有效,对于变量引用总是立即解析);
RTLD_GLOBAL表示:动态库中定义的符号可被其后打开的其它库解析;
RTLD_NODELETE表示:在dlclose()期间不卸载库,并且在以后使用dlopen()重新加载库时不初始化库中的静态变量。
S2、获取所述客户端程序的查询命令,在根据所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,根据一个预先设置的外部配置文件中的配置参数,判断所述查询命令是否要进行优化查询逻辑。
本发明较佳实施例中,预先加载了动态共享库的客户端程序在输出的查询命令进入到Oracle数据库之前,根据所述在预先加载的动态共享库so文件命令上添加的外部配置文件中的配置参数,对所述的查询命令进行优化逻辑判断。当根据所述外部配置文件中的配置参数判断所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向Oracle数据库读取数据,并将数据返回给所述客户端程序。当根据所述外部配置文件中的配置参数判断所述查询命令需要进行优化逻辑时,执行下述的S3步骤。
S3、获取上述需要进行优化逻辑的查询命令,利用上述动态共享库so文件的本地数据缓存优先策略,执行对读取Oracle数据库中数据的流程优化,并将查询结果返回到所述客户端程序。
本发明较佳实施例中,所述Oracle数据库在接收到上述需要优化逻辑的查询命令前,所述动态共享库so文件通过本地数据缓存优先策略,实现对读取Oracle数据库的优化逻辑流程。
本发明较佳实施例中,所述本地数据缓存优先策略包括:根据索引从本地数据仓库查找所述查询命令对应的所述数据库数据;
当未查找到对应的所述数据库数据时,访问Oracle数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当查找到对应的所述数据库数据时,对所查询到的数据的时间戳进行校验,根据上述外部配置文件中的配置参数判断所述时间戳是否过期;
当所述时间戳已过期时,访问Oracle数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当所述时间戳未过期时,直接将查询结果返回给所述客户端程序,并保留原时间戳。
本发明较佳实施例根据上述在预先加载的动态共享库so文件命令上添加的配置参数检验所述时间戳是否过期。所述时间戳是对数据时效性进行判断的主要依据,在数据中附加时间戳标记是标识着所述时间戳被读取的时间。时间戳过期表示本地数据仓库中的数据为较早时被读取的,当前Oracle数据库中的数据可能已经被修改。为了保证数据一致性的要求,需要舍弃本地数据仓库中的数据,从Oracle数据库中重新读取。
发明还提供一种数据库读取装置。参照图2所示,为本发明一实施例提供的数据库读取装置的内部结构示意图。
在本实施例中,所述数据库读取装置1可以是PC(Personal Computer,个人电脑),或者是智能手机、平板电脑、便携计算机等终端设备,也可以是一种服务器等。该数据库读取装置1至少包括存储器11、处理器12,通信总线13,以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是数据库读取装置1的内部存储单元,例如该数据库读取装置1的硬盘。存储器11在另一些实施例中也可以是数据库读取装置1的外部存储设备,例如数据库读取装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括数据库读取装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于数据库读取装置1的应用软件及各类数据,例如数据库读取程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据库读取程序01等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在Oracle数据库读取装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-14以及数据库读取程序01的数据库读取装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对Oracle数据库读取装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,存储器11中存储有数据库读取程序01;处理器12执行存储器11中存储的数据库读取程序01时实现如下步骤:
步骤一、使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中。
本发明较佳实施例中,所述的数据库可以为Oracle数据库。其他实施例中,所述数据库也可以为mysql、SQLServer等数据库。
所述动态共享库so文件是UNIX系统中使用的动态共享库文件,用于动态连接。所述客户端程序可以是某个读取操作多,写入操作少的程序,用于从所述数据库中查询/读取数据。例如,所述客户端程序可以是某手机软件应用商店,该应用商店根据用户的查询命令从所述数据库中查询/下载应用程序数据。
本发明较佳实施例可以新增一个自定义的动态共享库so文件,例如bizA.so,该动态共享库so文件封装了一个用于读取所述数据库中数据的数据读取接口,例如PA_ReadBizDataA接口,供上述客户端程序调用。进一步地,本发明较佳实施例将所述动态共享库so文件的优化逻辑加载至该动态共享库so文件所封装的数据读取接口。
所述的优化逻辑指的是上述客户端程序在访问所述数据库时,所述动态共享库so文件提供的一种数据查询的流程优化方法。
进一步地,所述客户端程序在调用所述动态共享库so文件封装的数据读取接口之前,会使用一个构造函数预先加载上述的动态共享库so文件。
所述的构造函数是由GNU C编译器提供的一种__attribute__((constructor))方法,并在所述构造函数上定义一个进程启动预先加载的运行入口(pa_ue_init(void)),将上述动态共享库so文件加载在所述的运行入口中,于是,所述动态共享库so文件提供的数据读取接口可以被上述客户端程序调用。优选地,所述构造函数的参数配置为:
dlopen(“bizA.so”,RTLD_LAZY|RTLD_GLOBAL|RTLD_NODELETE))
其中:
RTLD_LAZY表示:在dlopen返回前,对于动态库中的未定义的符号不执行解析(只对函数引用有效,对于变量引用总是立即解析);
RTLD_GLOBAL表示:动态库中定义的符号可被其后打开的其它库解析;
RTLD_NODELETE表示:在dlclose()期间不卸载库,并且在以后使用dlopen()重新加载库时不初始化库中的静态变量。
步骤二、获取所述客户端程序的查询命令,在根据所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,根据一个预先设置的外部配置文件中的配置参数,判断所述查询命令是否要进行优化查询逻辑。
本发明较佳实施例中,预先加载了动态共享库的客户端程序在输出的查询命令进入到Oracle数据库之前,根据所述在预先加载的动态共享库so文件命令上添加的外部配置文件中的配置参数,对所述的查询命令进行优化逻辑判断。当根据所述外部配置文件中的配置参数判断所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向Oracle数据库读取数据,并将数据返回给所述客户端程序。当根据所述外部配置文件中的配置参数判断所述查询命令需要进行优化逻辑时,执行下述的S3步骤。
步骤三、获取上述需要进行优化逻辑的查询命令,利用上述动态共享库so文件的本地数据缓存优先策略,执行对读取Oracle数据库中数据的流程优化,并将查询结果返回到所述客户端程序。
本发明较佳实施例中,所述Oracle数据库在接收到上述需要优化逻辑的查询命令前,所述动态共享库so文件通过本地数据缓存优先策略,实现对读取Oracle数据库的优化逻辑流程。
本发明较佳实施例中,所述本地数据缓存优先策略包括:根据索引从本地数据仓库查找所述查询命令对应的所述数据库数据;
当未查找到对应的所述数据库数据时,访问Oracle数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当查找到对应的所述数据库数据时,对所查询到的数据的时间戳进行校验,根据上述外部配置文件中的配置参数判断所述时间戳是否过期;
当所述时间戳已过期时,访问Oracle数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;
当所述时间戳未过期时,直接将查询结果返回给所述客户端程序,并保留原时间戳。
本发明较佳实施例根据上述在预先加载的动态共享库so文件命令上添加的配置参数检验所述时间戳是否过期。所述时间戳是对数据时效性进行判断的主要依据,在数据中附加时间戳标记是标识着所述时间戳被读取的时间。时间戳过期表示本地数据仓库中的数据为较早时被读取的,当前Oracle数据库中的数据可能已经被修改。为了保证数据一致性的要求,需要舍弃本地数据仓库中的数据,从Oracle数据库中重新读取。
可选地,在其他实施例中,数据库读取程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述数据库读取程序在数据库读取装置中的执行过程。
例如,参照图3所示,为本发明数据库读取装置一实施例中的数据库读取程序的程序模块示意图,该实施例中,所述数据库读取程序可以被分割为优化逻辑加载模块10、优化逻辑识别模块20、流程读取优化模块30示例性地:
所述优化逻辑加载模块10用于:使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中。
所述优化逻辑识别模块20用于:获取所述客户端程序的查询命令,在根据所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,根据一个预先设置的外部配置文件中的配置参数,判断所述查询命令是否要进行优化查询逻辑。
所述流程读取优化模块30用于:获取上述需要进行优化逻辑的查询命令,利用上述动态共享库so文件的本地数据缓存优先策略,执行对读取Oracle数据库中数据的流程优化,并将查询结果返回到所述客户端程序。
上述优化逻辑加载模块10、优化逻辑识别模块20、流程读取优化模块30等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据库读取程序,所述数据库读取程序可被一个或多个处理器执行,以实现如下操作:
使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中;
获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑;
在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果;
在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果。
本发明计算机可读存储介质具体实施方式与上述数据库读取装置和方法各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (4)
1.一种数据库读取方法,其特征在于,所述方法包括:
使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中;
获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑;
在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果;
在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果;
其中,在使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中之前,该方法还包括:新增一个自定义的动态共享库so文件,该动态共享库so文件封装了一个用于读取所述数据库中数据的数据读取接口;
所述使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中,包括:将所述动态共享库so文件的优化逻辑加载在该动态共享库so文件所封装的数据读取接口上;通过使用构造函数预先加载所述的动态共享库so文件;
所述本地数据缓存优先策略,包括:根据索引从本地数据仓库查找所述查询命令对应的所述数据库数据;当未查找到对应的所述数据库数据时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;当查找到对应的所述数据库数据时,对所查询到的数据的时间戳进行校验,根据外部配置文件中的配置参数判断所述时间戳是否过期;当所述时间戳已过期时,访问数据库读取所述查询命令对应的数据,并将获得的数据附加上当前的时间戳后,存入本地内存数据仓库中,返回查询结果给所述客户端程序;当所述时间戳未过期时,直接将查询结果返回给所述客户端程序,并保留原时间戳。
2.如权利要求1所述的数据库读取方法,其特征在于,所述通过使用构造函数预先加载所述的动态共享库so文件,包括:
通过GNU C编译器中提供__attribute__((constructor))方法定义所述构造函数,并在所述构造函数定义一个进程启动预先加载的运行入口;
将封装的所述动态共享库so文件加载逻辑放至所述预先加载的运行入口里。
3.一种数据库读取装置,用于实现如权利要求1至2任一项所述的数据库读取方法,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的数据库读取程序,所述数据库读取程序被所述处理器执行时实现如下步骤:
使用封装动态共享库so文件将数据库读取优化逻辑加载至客户端程序中;
获取所述客户端程序的查询命令,在所述动态共享库so文件提供的数据读取接口请求执行上述查询命令时,判断所述查询命令是否要进行所述优化逻辑;
在所述查询命令不需要进行优化逻辑时,所述动态共享库so文件直接向数据库进行查询,返回查询结果;
在所述查询命令需要进行优化逻辑时,所述客户端程序通过调用so文件提供的数据读取接口,采用本地数据缓存优先策略,执行所述数据库数据查询操作的优化逻辑的流程,返回查询结果。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据库读取程序,所述数据库读取程序可被一个或者多个处理器执行,以实现如权利要求1至2中任一项所述的数据库读取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910607940.XA CN110457345B (zh) | 2019-07-05 | 2019-07-05 | 数据库读取方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910607940.XA CN110457345B (zh) | 2019-07-05 | 2019-07-05 | 数据库读取方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457345A CN110457345A (zh) | 2019-11-15 |
CN110457345B true CN110457345B (zh) | 2023-11-03 |
Family
ID=68482452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910607940.XA Active CN110457345B (zh) | 2019-07-05 | 2019-07-05 | 数据库读取方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457345B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110885A (zh) * | 2019-12-25 | 2021-07-13 | 深圳市华胜软件技术有限公司 | 一种应用软件连接数据库的方法、存储介质及终端设备 |
CN111506601B (zh) * | 2020-03-31 | 2022-08-30 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015074526A1 (en) * | 2013-11-21 | 2015-05-28 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for injecting java by tecode into target process |
CN105847446A (zh) * | 2016-05-31 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 一种网络数据的获取方法、装置和系统 |
CN107357607A (zh) * | 2017-06-20 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 文件数据的读取方法及装置 |
CN108052569A (zh) * | 2017-12-07 | 2018-05-18 | 深圳市康必达控制技术有限公司 | 数据库访问方法、装置、计算机可读存储介质和计算设备 |
CN108681773A (zh) * | 2018-05-23 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 数据运算的加速方法、装置、终端及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931395B2 (en) * | 2001-10-25 | 2005-08-16 | International Business Machines Corporation | Method and apparatus for optimizing queries in a logically partitioned computer system |
US11714811B2 (en) * | 2017-09-27 | 2023-08-01 | Salesforce, Inc. | Run-time querying of multi-tenant non-relational platform objects |
-
2019
- 2019-07-05 CN CN201910607940.XA patent/CN110457345B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015074526A1 (en) * | 2013-11-21 | 2015-05-28 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for injecting java by tecode into target process |
CN105847446A (zh) * | 2016-05-31 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 一种网络数据的获取方法、装置和系统 |
CN107357607A (zh) * | 2017-06-20 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 文件数据的读取方法及装置 |
CN108052569A (zh) * | 2017-12-07 | 2018-05-18 | 深圳市康必达控制技术有限公司 | 数据库访问方法、装置、计算机可读存储介质和计算设备 |
CN108681773A (zh) * | 2018-05-23 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 数据运算的加速方法、装置、终端及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
周建鸿等." 海量数据库的查询优化研究及实现".《西南民族大学学报(自然科学版)》.2010,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110457345A (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110674432B (zh) | 二级缓存方法、装置及计算机可读存储介质 | |
CN111400308B (zh) | 缓存数据的处理方法、电子装置及可读存储介质 | |
CN110865888A (zh) | 一种资源加载方法、装置、服务器及存储介质 | |
CN111339041A (zh) | 文件解析入库、文件生成方法及装置 | |
US10635666B2 (en) | System, method and device for index compilation to optimize index usage | |
CN110457345B (zh) | 数据库读取方法、装置及计算机可读存储介质 | |
CN115757495A (zh) | 缓存数据处理方法、装置、计算机设备及存储介质 | |
CN112612982A (zh) | 网页预加载方法、装置及计算机设备 | |
CN111400578B (zh) | 货物数据查询方法、装置、计算机设备和存储介质 | |
CN111124544A (zh) | 界面显示方法、装置、电子设备及存储介质 | |
CN115455058A (zh) | 缓存数据的处理方法、装置、计算机设备及存储介质 | |
CN112612489A (zh) | 软件的升级包构建方法、装置和电子设备 | |
CN104317660A (zh) | 一种银行参数管理系统 | |
CN103440130A (zh) | 一种数据处理方法以及装置 | |
US20200257989A1 (en) | Method and apparatus for managing knowledge base, device and medium | |
CN111382179A (zh) | 数据处理方法、装置及电子设备 | |
CN112612530B (zh) | 类查询方法及装置 | |
CN103809915A (zh) | 一种磁盘文件的读写方法和装置 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN113449216A (zh) | 一种文件处理方法、装置及存储介质 | |
CN111400396A (zh) | 数据同步脚本的生成方法、装置及计算机可读存储介质 | |
CN111221917A (zh) | 智能分区存储方法、装置及计算机可读存储介质 | |
CN113342379B (zh) | 微服务升级方法、装置、电子设备及存储介质 | |
CN116302847B (zh) | 异常信息的动态采集方法、装置、计算机设备及介质 | |
CN110413644B (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 |