CN110209717B - 基础数据库的封装方法、装置、计算机设备和存储介质 - Google Patents
基础数据库的封装方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110209717B CN110209717B CN201910340529.0A CN201910340529A CN110209717B CN 110209717 B CN110209717 B CN 110209717B CN 201910340529 A CN201910340529 A CN 201910340529A CN 110209717 B CN110209717 B CN 110209717B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- sub
- interface
- basic
- 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 78
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 75
- 238000005538 encapsulation Methods 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 28
- 238000006243 chemical reaction Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001815 facial effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 30
- 230000006978 adaptation Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003068 static 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请揭示了基础数据库的封装方法,包括:构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中,所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存,所述数据库接口至少包括封装接口;获取所述基础数据库的第一配置参数,其中,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;识别各所述第一配置参数分别对应的信息类别,并将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件;通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
Description
技术领域
本申请涉及到数据库领域,特别是涉及到基础数据库的封装方法、装置、计算机设备和存储介质。
背景技术
随着自动化技术的推广,数据库应用的范围越来越广泛,但不同业务及不同应用场景下通常调用不同类型的基础数据库,但现有基础数据库只是提供了最基本的数据库操作接口,基于这些接口难以满足项目更新的需要,每次更新新项目需要调用新数据类型的基础数据库或更新原基础数据库,导致原接口不能很好的兼容这些变化,需要重新开发基础数据库的接口,增加了每次项目开发的工作量和出错的几率。
发明内容
本申请的主要目的为提供基础数据库的封装方法,旨在解决现有基础数据库的接口兼容性差的技术问题。
本申请提出一种基础数据库的封装方法,包括:
构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中,所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存,所述数据库接口至少包括封装接口;
获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;
识别各所述第一配置参数分别对应的信息类别,并将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与所述封装接口关联;
通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
优选地,所述获取所述基础数据库的第一配置参数的步骤之前,包括:
判断所述基础数据库的数据格式是否为所述键值格式;
若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
优选地,所述第一数据库所使用的基础数据库为关系型基础数据库,所述按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式的步骤,包括:
根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值;
将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的键,所述赋值对应所述键值表的值。
优选地,所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:
判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态;
若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配;
若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库;
若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
优选地,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:
获取所述第一数据库的历史应用场景数据;
从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中,所述历史最小数据流通量为数据源子数据库启动、本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用、本地缓存子数据库启动的小数据流通场景对应的最大数据流通量;
评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系;
若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态;
若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
优选地,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:
判断当前预调用的第二数据库是否与所述第一数据库相同;
若否,则获取所述第二数据库对应的第二配置参数;
通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件;
通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
优选地,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:
获取当前待验证身份用户的第一脸部图像;
从所述第一脸部图像提取第一人脸特征数据;
通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据;
若是,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
本申请还提供了一种基础数据库的封装装置,包括:
构建模块,用于构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存,所述数据库接口至少包括封装接口;
第一获取模块,用于获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;
形成模块,用于识别各所述第一配置参数分别对应的信息类别,并将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与所述封装接口关联;
加载模块,用于通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本申请通过数据库的数据格式为键值格式,简化了数据之间的关联关系,容易做到快速查询以及不同基础数据库之间的快速切换,以满足不同应用场景对不同基础数据库的需求,采用配置参数和适配类的办法,通过配置文件能够很方便的切换不同类型的基础数据库,节省了调用数据库的接口代码重新开发过程。通过配置文件能够很方便的切换不同类型的基础数据库,同时具有数据源、缓存、本地缓存的定制功能,数据源可以通过配置参数选择数据源子数据库、本地缓存子数据库、HTTP请求等模式。通过对基础数据库提供不同功能的接口实现基础数据库的业务扩展,通过封装接口封装不同类型的基础数据库,以满足不同业务以及不同应用场景的需求。
附图说明
图1本申请一实施例的基础数据库的封装方法流程示意图;
图2本申请一实施例的基础数据库的封装装置结构示意图;
图3本申请一实施例的计算机设备内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本实施例的基础数据库的封装方法,包括:
S1a:构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存。
本实施例的数据库管理模块为FeaDBManager,管理两个子数据库:数据源子数据库和本地缓存子数据库,数据源子数据库和本地缓存子数据库的结构相同,均通过调用基础数据库形成,但因为数据源子数据库和本地缓存子数据库的配置参数不同,所以基础数据库的接口调用也不同,本实施例采用配置参数和适配类的办法,通过更换配置文件来增加或切换新的基础数据库。上述数据库接口至少包括增删改查接口、本地缓存增删改查接口、封装接口等。第一数据库即为最终提供的键值数据库,是由基础数据库封装而来,能够很好的存储人像识别的特征值数据,故在人像识别领域也可称为特征值数据库。数据库缓存用于用于存储数据库被调用过程中的数据记录,再次调用同一类数据时,可不通过连网数据库进行数据调用,提高调用数据库的效率。
S1:获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值。
本实施例第一文档为第一数据库的属性文档,包括基础数据库的类型、基础数据库的调用方法等属性参数,以便用户根据第一文档调用基础数据库。上述第一配置参数包括调用基础数据库的相关参量,比如至少包括“SourceDBEnable(数据源子数据库使用状态)”、“SourceDBModule(数据源子数据库类型)”、“CacheDBEnable(本地缓存子数据库使用状态)”、“CacheDBModule(本地缓存子数据库类型)”,对于各个子数据库的具体数据库类型,可能需要其他额外的配置参数,如redis类型基础数据库需要配置用户名、密码等配置参数;再如文件类型基础数据库需要配置数据库对应文件夹路径等等,上述文件类型基础数据库就是把数据以文件的形式存储而形成的一种基础数据库。本实施例的基础数据库的数据格式为键值格式(包括由其他格式转化而来的键值格式),简化了数据之间的关联关系,容易做到快速查询以及不同类型基础数据库之间的快速切换,使满足不同应用场景对不同类型基础数据库的需求。
S2:将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与封装接口关联。
本实施例的空值配置文件为无数据填充的配置文件,以便接收待封装基础数据库的配置参数,实现对基础数据库的封装。本实施例通过配置文件与封装接口进行关联,方便快速封装基础数据库以及更换待封装的基础数据库,以便进行基础数据库切换与变更。比如,一个项目开始时候会先选定一种基础数据库,而正式开发的时候,会根据业务需要会增加其他基础数据库;或在开发过程中发现原来选定的基础数据库不能满足要求,或新项目与旧项目选择的基础数据库不同,需要切换新类型的基础数据库,均可通过更换配置文件来增加或切换新的基础数据库,节省了调用基础数据库的接口代码重新开发过程。
S3:通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
本实施例通过配置参数和适配类的方法实现对基础数据库的封装,只要封装接口与配置参数项匹配即可通过封装接口读取并加载配置文件中的配置参数,完成对配置文件对应的基础数据库的封装,封装接口可对适配的配置文件对应的各种类型的键值格式的基础数据库实现封装,无需在更换新的基础数据库时重新开发基础数据库调用代码,使基础数据库的封装方便快捷且扩展性更好。
进一步地,所述获取所述基础数据库的第一配置参数的步骤S1之前,包括:
S10:判断所述基础数据库的数据格式是否为所述键值格式。
本实施例通过识别数据格式进行判断,数据格式包括键值格式的键和值,则判定为键值格式,否则不是键值格式。
S11:若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
本实施例中将其他数据格式的基础数据库转换为键值格式的基础数据库的转换方案,与具体基础数据库的数据结构相关,所以不同数据格式的基础数据库的转化方案会有一些差别。但根据转换方案转化为键值格式的基础数据库后,这些新的键值格式的基础数据库均可通过上述封装方法完成封装。本实施例在按照预设转换方案将其他数据类型的基础数据库转换成键值格式时,会同时生成转换后的键值格式的基础数据库对应的文档说明,以获取到对应的配置参数。
进一步地,所述第一数据库所使用的基础数据库为关系型基础数据库,所述按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式的步骤S11,包括:
S111:根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值。
S112:将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的key(键),所述赋值对应所述键值表的value(值)。
本实施例以关系型基础数据库为基础数据库为例,并将关系型基础数据库转换为键值格式的基础数据库。本实施例的属性表的行数与关系型基础数据库的关系数据的数据量相关,列数为两列,分别对应键值格式的键和值,键起到索引作用,而值为对应键的赋值。本实施例将指定关系数据的属性名称对应为键,将指定关系数据的赋值对应为值,以便将关系复杂的关系型基础数据库,通过建立存储表格的方式进行数据存储,上述存储表格即相当于键值表。
进一步地,所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤S3,包括:
S31:判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态。
本实施例通过识别数据源子数据库和本地缓存子数据库调用状态是否为“true”,若是则为可调用状态,若为“false”则为禁用状态。
S32:若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配。
本实施例的基础数据库的封装过程为读取和加载基础数据库配置参数的过程,以便根据配置参数正常调用基础数据库。在加载时要判断基础数据库的接口文件与数据源子数据库类型和本地缓存子数据库类型是否匹配,是否与封装接口传入的参数适配,以便通过封装接口有效调用适配的基础数据库接口。根据封装接口传入的各个子数据库的调用状态参数,来适配各个子数据库的调用状态(启动或关闭)。根据封装接口传入的各个子数据库的类型参数,来适配子数据库的类型。如果子数据库支持的基础数据库类型包含传入的类型参数,则适配成功,并使用对应类型的基础数据库如redis。比如:第一数据库接口支持pocoredis类型数据,如果配置文件中配置“DBModule”=“pocoredis”,则第一数据库就会初始化成功,如果配置文件中配置“DBModule”=“helloworld”,那第一数据库初始化就会失败,并发送失败提醒即失败原因。
S33:若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库。
S34:若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
本实施例通过链接地址实现对所述数据源子数据库或本地缓存子数据库进行有效调用。对已大多数应用场景,本实施例在数据流通量较小时优先选用本地缓存子数据库存储从数据源获取的数据,方便数据调用与更新,但当数据流通量较大时,则需要选择调用默认的数据源子数据库来存储数据源数据,以支撑数据流通需求。
进一步地,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤S3之后,包括:
S101:获取所述第一数据库的历史应用场景数据。
本实施例的配置参数包括数据库固有属性参数,比如数据源子数据库类型、本地缓存子数据库类型等。上述固有属性参数可从第一数据库的文档说明中直接获得。本实施例的配置参数还包括依据历史使用数据得到的状态参数,比如数据源子数据库调用状态、本地缓存子数据库调用状态等,上述状态参数根据不同的应用场景处于不同的调用状态。本实施例的历史应用场景数据用于获取数据库的状态参数的历史状态,以便为当前应用场景提供状态设定依据。
S102:从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中所述历史最小数据流通量为数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的最大数据流通量。
S103:评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系。
本实施例的历史应用场景数据中至少包括数据流通量以及各状态参数对应的赋值。本实施例数据流通量有两个阈值,一个是数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的历史最小数据流通量;一个是数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的历史最大数据流通量。本实施例通过比较数据流通量的大小进行评估,如果当前应用场景的数据流通量大于大数据流通量场景对应的历史最小数据流通量,则优先选择大数据流通量场景的配置;如果当前应用场景的数据流通量小于小数据流通量场景对应的历史最大数据流通量,则优先选择小数据流通量场景的配置;如果当前应用场景的数据流通量介于两者之间,则根据人为经验判断和实践测试选择对应的大数据流通量应用场景配置或小数据流通量应用场景配置,并更新数据流通量阈值。
S104:若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态。
S105:若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
本实施例选用本地缓存子数据库,则将本地缓存子数据库对应的调用状态设为:“true”,将数据源对应的调用状态设为“false”,否则相反。举例地,第一数据库为特征值数据库,数据量非常庞大(百万级别),对特征值数据更新的速度影响较大,需要使用数据源子数据库如Redis基础数据库,而不使用本地缓存子数据库,配置文件中对应的配置参数分别为:"sourceDBEnable":true;"sourceDBModule":"pocoredis";"redisHostAddr":"192.168.0.101";"redisPasswd":"root";"redisConnectTimeout":2000;“redisDataTimeout”:2000;"redisRetryTimes":3;"redisRetryInterval":1000;"cacheDBEnable":false,本实施例的配置参数的配置状态可根据具体的应用场景进行合理调整。
进一步地,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤S3之后,包括:
S301:判断当前预调用的第二数据库是否与所述第一数据库相同。
本实施例的第一数据库为切换前的键值数据库,第二数据库为切换后的键值数据库,第一数据库与第二数据库所对应的基础数据库不同,第一数据库对应的第一配置参数与第二数据库对应的第二配置参数不同。比如,本实施例的第一数据库为封装Redis基础数据库形成的键值数据库,Redis基础数据库也是key-value存储***,它支持存储的字符类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和hash(哈希类型)。第二数据库以封装Redis基础数据库以外的其他类型基础数据库形成的键值数据库。预调用的第二数据库指项目对数据库的使用场景有变更时对应的键值数据库,他和场景变更前的键值数据库即第一数据库可能完全一样,也可能不一样。如果一样,则沿用第一数据库,不做任何改变。如果不一样,则将预调用第二数据库替换第一数据库,从而成为切换数据库之后的第二数据库。
S302:若否,则获取所述第二数据库对应的第二配置参数。
本实施例第一数据库为封装Redis基础数据库形成的键值数据库,当业务判断需要调用其他类型的基础数据库时,需要进行基础数据库切换,以满足业务需求。Redis基础数据库除了常用的配置参数外,通常还需要配置用户名、密码等参数,使得Redis基础数据库的配置参数不同于其他类型的基础数据库的配置参数。
S303:通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件。
本实施例以封装Redis基础数据库以外的其他类型基础数据库作为第二数据库,第二数据库与第一数据库的配置参数差异较大,需要重新更新配置文件方可实现第一数据库到第二数据库的切换。本实施例通过将第二配置参数导入第一配置文件,以逐一有序覆盖第一配置文件中键值对的方式,实现配置文件的更新。
S304:通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
本实施例每一次配置文件的更新均会触发一次封装接口加载配置参数进行初始化的过程,以便及时更新或切换键值数据库。
进一步地,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤S3之后,包括:
S305:获取当前待验证身份用户的第一脸部图像。
本实施例以智能考勤使用的人脸特征数据库为例,具体说明数据库封装后的应用场景调用过程。上述人脸特征数据库至少包括数据增加接口和数据查询接口,以便实现数据库封装调用,并在调用过程中支持对数据库中的数据查询和更新。
S306:从所述第一脸部图像提取第一人脸特征数据。
本实施例从第一脸部图像提取第一人脸特征数据通过预设的卷积云模型实现,过程不赘述。
S307:通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据。
本实施例的人脸特征值数据库内部包含两个子数据库,一个是数据源子数据库,一个是本地缓存子数据库,还具有一个缓存模块,缓存模块是缓存运行过程中的数据,数据源子数据库是数据的来源,本地缓存子数据库是将数据在本地进行缓存上述两个字数据库可择一使用。上述可以理解为人脸特征值数据库框架的功能模块组件,人脸特征值数据库的接口至少包含增删改查的接口,且这些接口是对外提供的上层封装接口。本实施例的人脸特征值数据库是智能考勤项目设计和开发的数据库,现有的接口有:单库多样本增加接口、单库多样本删除接口、单库加载接口、多库加载接口、全库加载接口、多库删除接口、单库多样本增加本地缓存更新接口、单库多样本删除本地缓存更新接口、多库删除本地缓存更新接口、单库加载本地缓存更新接口、本地缓存全库删除接口、缓存的单库查询接口、缓存的全库名称查询接口、特征值数据库初始化接口。上述单库、多库表示键值表的数量,单库为一个键值表,上述加载为存储数据到内存的过程。比如调用缓存的全库名称查询接口查询第一数据库中是否存在与第一人脸特征数据满足相似度阈值要求的预设人脸特征数据,若存在,说明是待记录考勤数据的待验证身份用户,否则不是。本实施例的阈值为大于90%。
S308:若所述第一数据库中查寻存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
本实施例通过单库加载本地缓存更新接口将待记录考勤数据的待验证身份用户的考勤数据加载到本地缓存子数据库中。本实施例的人脸识别功能,希望数据库部署和使用更便捷,且针对的待验证身份用户的人数较少,对数据库的压力较小,所以人脸特征值数据库使用本地缓存文件模式,配置文件中对应的配置参数为:"sourceDBEnable":false;"cacheDBEnable":true;"cacheDBModule":"filemodule";"dataDir":"../data/"。
本实施例通过数据库的数据格式为键值格式,简化了数据之间的关联关系,容易做到快速查询以及不同基础数据库之间的快速切换,以满足不同应用场景对不同基础数据库的需求,采用配置参数和适配类的办法,通过配置文件能够很方便的切换不同类型的基础数据库,节省了调用数据库的接口代码重新开发过程。通过配置文件能够很方便的切换不同类型的基础数据库,同时具有数据源、缓存、本地缓存的定制功能,数据源可以通过配置参数选择数据源子数据库、本地缓存子数据库、HTTP请求等模式。通过对基础数据库提供不同功能的接口实现基础数据库的业务扩展,通过封装接口封装不同类型的基础数据库,以满足不同业务以及不同应用场景的需求。
参照图2,本实施例的基础数据库的封装装置,包括:
构建模块1a,用于构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存。
本实施例的数据库管理模块为FeaDBManager,管理两个子数据库:数据源子数据库和本地缓存子数据库,数据源子数据库和本地缓存子数据库的结构相同,均通过调用基础数据库形成,但因为数据源子数据库和本地缓存子数据库的配置参数不同,所以基础数据库的接口调用也不同。上述数据库接口至少包括增删改查接口、本地缓存增删改查接口、封装接口等。第一数据库即为最终提供的键值数据库,是由基础数据库封装而来,能够很好的存储人像识别的特征值数据,故在人像识别领域也可称为特征值数据库。
第一获取模块1,用于获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值。
本实施例第一文档为第一数据库的属性文档,包括基础数据库的类型、基础数据库的调用方法等属性参数,以便用户根据第一文档调用基础数据库。上述第一配置参数包括调用基础数据库的相关参量,比如至少包括“SourceDBEnable(数据源子数据库使用状态)”、“SourceDBModule(数据源子数据库类型)”、“CacheDBEnable(本地缓存子数据库使用状态)”、“CacheDBModule(本地缓存子数据库类型)”,对于各个子数据库的具体数据库类型,可能需要其他额外的配置参数,如redis类型基础数据库需要配置用户名、密码等配置参数;再如文件类型基础数据库需要配置数据库对应文件夹路径等等,上述文件类型基础数据库就是把数据以文件的形式存储而形成的一种基础数据库。本实施例的基础数据库的数据格式为键值格式(包括由其他格式转化而来的键值格式),简化了数据之间的关联关系,容易做到快速查询以及不同类型基础数据库之间的快速切换,使满足不同应用场景对不同类型基础数据库的需求。
形成模块2,用于将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与封装接口关联。
本实施例的空值配置文件为无数据填充的配置文件,以便接收待封装基础数据库的配置参数,实现对基础数据库的封装。本实施例通过配置文件与封装接口进行关联,方便快速封装基础数据库以及更换待封装的基础数据库,以便进行基础数据库切换与变更。比如,一个项目开始时候会先选定一种基础数据库,而正式开发的时候,会根据业务需要会增加其他基础数据库;或在开发过程中发现原来选定的基础数据库不能满足要求,或新项目与旧项目选择的基础数据库不同,需要切换新类型的基础数据库,均可通过更换配置文件来增加或切换新的基础数据库,节省了调用基础数据库的接口代码重新开发过程。
加载模块3,用于通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
本实施例通过配置参数和适配类的方法实现对基础数据库的封装,只要封装接口与配置参数项匹配即可通过封装接口读取并加载配置文件中的配置参数,完成对配置文件对应的基础数据库的封装,封装接口可对适配的配置文件对应的各种类型的键值格式的基础数据库实现封装,无需在更换新的基础数据库时重新开发基础数据库调用代码,使基础数据库的封装方便快捷且扩展性更好。
进一步地,基础数据库的封装装置,包括:
第一判断模块,用于判断所述基础数据库的数据格式是否为所述键值格式。
本实施例通过识别数据格式进行判断,数据格式包括键值格式的键和值,则判定为键值格式,否则不是键值格式。
转换模块,用于若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
本实施例中将其他数据格式的基础数据库转换为键值格式的基础数据库的转换方案,与具体基础数据库的数据结构相关,所以不同数据格式的基础数据库的转化方案会有一些差别。但根据转换方案转化为键值格式的基础数据库后,这些新的键值格式的基础数据库均可通过上述封装方法完成封装。本实施例在按照预设转换方案将其他数据类型的基础数据库转换成键值格式时,会同时生成转换后的键值格式的基础数据库对应的文档说明,以获取到对应的配置参数。
进一步地,所述转换模块,包括:
建立单元,用于根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值。
对应单元,用于将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的key(键),所述赋值对应所述键值表的value(值)。
本实施例以关系型基础数据库为基础数据库为例,并将关系型基础数据库转换为键值格式的基础数据库。本实施例的属性表的行数与关系型基础数据库的关系数据的数据量相关,列数为两列,分别对应键值格式的键和值,键起到索引作用,而值为对应键的赋值。本实施例将指定关系数据的属性名称对应为键,将指定关系数据的赋值对应为值,以便将关系复杂的关系型基础数据库,通过建立存储表格的方式进行数据存储,上述存储表格即相当于键值表。
进一步地,所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,所述加载模块3,包括:
第一判断单元,用于判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态。
本实施例通过识别数据源子数据库和本地缓存子数据库调用状态是否为“true”,若是则为可调用状态,若为“false”则为禁用状态。
第二判断单元,用于若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配。
本实施例的基础数据库的封装过程为读取和加载基础数据库配置参数的过程,以便根据配置参数正常调用基础数据库。在加载时要判断基础数据库的接口文件与数据源子数据库类型和本地缓存子数据库类型是否匹配,是否与封装接口传入的参数适配,以便通过封装接口有效调用适配的基础数据库接口。根据封装接口传入的各个子数据库的调用状态参数,来适配各个子数据库的调用状态(启动或关闭)。根据封装接口传入的各个子数据库的类型参数,来适配子数据库的类型。如果子数据库支持的基础数据库类型包含传入的类型参数,则适配成功,并使用对应类型的基础数据库如redis。比如:第一数据库接口支持pocoredis类型数据,如果配置文件中配置“DBModule”=“pocoredis”,则第一数据库就会初始化成功,如果配置文件中配置“DBModule”=“helloworld”,那第一数据库初始化就会失败,并发送失败提醒即失败原因。
获取单元,用于若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库。
限制单元,用于若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
本实施例通过链接地址实现对所述数据源子数据库或本地缓存子数据库进行有效调用。对已大多数应用场景,本实施例在数据流通量较小时优先选用本地缓存子数据库存储从数据源获取的数据,方便数据调用与更新,但当数据流通量较大时,则需要选择调用默认的数据源子数据库来存储数据源数据,以支撑数据流通需求。
进一步地,所述基础数据库的封装装置,包括:
第二获取模块,用于获取所述第一数据库的历史应用场景数据。
本实施例的配置参数包括数据库固有属性参数,比如数据源子数据库类型、本地缓存子数据库类型等。上述固有属性参数可从第一数据库的文档说明中直接获得。本实施例的配置参数还包括依据历史使用数据得到的状态参数,比如数据源子数据库调用状态、本地缓存子数据库调用状态等,上述状态参数根据不同的应用场景处于不同的调用状态。本实施例的历史应用场景数据用于获取数据库的状态参数的历史状态,以便为当前应用场景提供状态设定依据。
确定模块,用于从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中所述历史最小数据流通量为数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的最大数据流通量。
本实施例的历史应用场景数据中至少包括数据流通量以及各状态参数对应的赋值。本实施例数据流通量有两个阈值,一个是数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的历史最小数据流通量;一个是数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的历史最大数据流通量。如果当前应用场景的数据流通量大于大数据流通量场景对应的历史最小数据流通量,则优先选择大数据流通量场景的配置;如果当前应用场景的数据流通量小于小数据流通量场景对应的历史最大数据流通量,则优先选择小数据流通量场景的配置;如果当前应用场景的数据流通量介于两者之间,则根据人为经验判断和实践测试选择对应的大数据流通量应用场景配置或小数据流通量应用场景配置,并更新数据流通量阈值。
评估模块,用于评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系。
第一设定模块,用于若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态。
第二设定模块,用于若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
本实施例选用本地缓存子数据库,则将本地缓存子数据库对应的调用状态设为:“true”,将数据源对应的调用状态设为“false”,否则相反。举例地,第一数据库为特征值数据库,数据量非常庞大(百万级别),对特征值数据更新的速度影响较大,需要使用数据源子数据库如Redis基础数据库,而不使用本地缓存子数据库,配置文件中对应的配置参数分别为:"sourceDBEnable":true;"sourceDBModule":"pocoredis";"redisHostAddr":"192.168.0.101";"redisPasswd":"root";"redisConnectTimeout":2000;“redisDataTimeout”:2000;"redisRetryTimes":3;"redisRetryInterval":1000;"cacheDBEnable":false,本实施例的配置参数的配置状态可根据具体的应用场景进行合理调整。
进一步地,所述基础数据库的封装装置,包括:
第二判断模块,用于判断当前预调用的第二数据库是否与所述第一数据库相同。
本实施例的第一数据库为切换前的键值数据库,第二数据库为切换后的键值数据库,第一数据库与第二数据库所对应的基础数据库不同,第一数据库对应的第一配置参数与第二数据库对应的第二配置参数不同。比如,本实施例的第一数据库为封装Redis基础数据库形成的键值数据库,Redis基础数据库也是key-value存储***,它支持存储的字符类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和hash(哈希类型)。第二数据库以封装Redis基础数据库以外的其他类型基础数据库形成的键值数据库。预调用的第二数据库指项目对数据库的使用场景有变更时对应的键值数据库,他和场景变更前的键值数据库即第一数据库可能完全一样,也可能不一样。如果一样,则沿用第一数据库,不做任何改变。如果不一样,则将预调用第二数据库替换第一数据库,从而成为切换数据库之后的第二数据库。
第三获取模块,用于若第二数据库不与所述第一数据库相同,则获取所述第二数据库对应的第二配置参数。
本实施例第一数据库为封装Redis基础数据库形成的键值数据库,当业务判断需要调用其他类型的基础数据库时,需要进行基础数据库切换,以满足业务需求。Redis基础数据库除了常用的配置参数外,通常还需要配置用户名、密码等参数,使得Redis基础数据库的配置参数不同于其他类型的基础数据库的配置参数。
替换模块,用于通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件。
本实施例以封装Redis基础数据库以外的其他类型基础数据库作为第二数据库,第二数据库与第一数据库的配置参数差异较大,需要重新更新配置文件方可实现第一数据库到第二数据库的切换。本实施例通过将第二配置参数导入第一配置文件,以逐一有序覆盖第一配置文件中键值对的方式,实现配置文件的更新。
完成模块,用于通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
本实施例每一次配置文件的更新均会触发一次封装接口加载配置参数进行初始化的过程,以便及时更新或切换键值数据库。
进一步地,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,所述基础数据库的封装装置,包括:
第四获取模块,用于获取当前待验证身份用户的第一脸部图像。
本实施例以智能考勤使用的人脸特征数据库为例,具体说明数据库封装后的应用场景调用过程。上述人脸特征数据库至少包括数据增加接口和数据查询接口,以便实现数据库封装调用,并在调用过程中支持对数据库中的数据查询和更新。
提取模块,用于从所述第一脸部图像提取第一人脸特征数据。
本实施例从第一脸部图像提取第一人脸特征数据通过预设的卷积云模型实现,过程不赘述。
查寻模块,用于通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据。
本实施例的人脸特征值数据库内部包含两个子数据库,一个是数据源子数据库,一个是本地缓存子数据库,还具有一个缓存模块,缓存模块是缓存运行过程中的数据,数据源子数据库是数据的来源,本地缓存子数据库是将数据在本地进行缓存上述两个字数据库可择一使用。上述可以理解为人脸特征值数据库框架的功能模块组件,人脸特征值数据库的接口至少包含增删改查的接口,且这些接口是对外提供的上层封装接口。本实施例的人脸特征值数据库是智能考勤项目设计和开发的数据库,现有的接口有:单库多样本增加接口、单库多样本删除接口、单库加载接口、多库加载接口、全库加载接口、多库删除接口、单库多样本增加本地缓存更新接口、单库多样本删除本地缓存更新接口、多库删除本地缓存更新接口、单库加载本地缓存更新接口、本地缓存全库删除接口、缓存的单库查询接口、缓存的全库名称查询接口、特征值数据库初始化接口。上述单库、多库表示键值表的数量,单库为一个键值表,上述加载为存储数据到内存的过程。比如调用缓存的全库名称查询接口查询第一数据库中是否存在与第一人脸特征数据满足相似度阈值要求的预设人脸特征数据,若存在,说明是待记录考勤数据的待验证身份用户,否则不是。本实施例的阈值为大于90%。
记录模块,用于若所述第一数据库中查寻存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
本实施例通过单库加载本地缓存更新接口将待记录考勤数据的待验证身份用户的考勤数据加载到本地缓存子数据库中。本实施例的人脸识别功能,希望数据库部署和使用更便捷,且针对的待验证身份用户的人数较少,对数据库的压力较小,所以人脸特征值数据库使用本地缓存文件模式,配置文件中对应的配置参数为:"sourceDBEnable":false;"cacheDBEnable":true;"cacheDBModule":"filemodule";"dataDir":"../data/"。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储基础数据库的封装过程需要的所有数据。该计算机设备的网络接口用于与外部的端通过网络连接通信。该计算机程序被处理器执行时以实现基础数据库的封装方法。
上述处理器执行上述基础数据库的封装方法,包括:构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存;获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与封装接口关联;通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
上述计算机设备,通过数据库的数据格式为键值格式,简化了数据之间的关联关系,容易做到快速查询以及不同基础数据库之间的快速切换,以满足不同应用场景对不同基础数据库的需求,采用配置参数和适配类的办法,通过配置文件能够很方便的切换不同类型的基础数据库,节省了调用数据库的接口代码重新开发过程。通过配置文件能够很方便的切换不同类型的基础数据库,同时具有数据源、缓存、本地缓存的定制功能,数据源可以通过配置参数选择数据源子数据库、本地缓存子数据库、HTTP请求等模式。通过对基础数据库提供不同功能的接口实现基础数据库的业务扩展,通过封装接口封装不同类型的基础数据库,以满足不同业务以及不同应用场景的需求。
在一个实施例中,上述处理器获取所述基础数据库的第一配置参数的步骤之前,包括:判断所述基础数据库的数据格式是否为所述键值格式;若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
在一个实施例中,所述第一数据库所使用的基础数据库为关系型基础数据库,上述处理器按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式的步骤,包括:根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值;将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的key,所述赋值对应所述键值表的value。
在一个实施例中,所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态;若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配;若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库;若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
在一个实施例中,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:获取所述第一数据库的历史应用场景数据;从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中所述历史最小数据流通量为数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的最大数据流通量;评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系;若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态;若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
在一个实施例中,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:判断当前预调用的第二数据库是否与所述第一数据库相同;若否,则获取所述第二数据库对应的第二配置参数;通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件;通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
在一个实施例中,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:获取当前待验证身份用户的第一脸部图像;从所述第一脸部图像提取第一人脸特征数据;通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据;若是,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现基础数据库的封装方法,包括:构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存;获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与封装接口关联;通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
上述计算机可读存储介质,通过数据库的数据格式为键值格式,简化了数据之间的关联关系,容易做到快速查询以及不同基础数据库之间的快速切换,以满足不同应用场景对不同基础数据库的需求,采用配置参数和适配类的办法,通过配置文件能够很方便的切换不同类型的基础数据库,节省了调用数据库的接口代码重新开发过程。通过配置文件能够很方便的切换不同类型的基础数据库,同时具有数据源、缓存、本地缓存的定制功能,数据源可以通过配置参数选择数据源子数据库、本地缓存子数据库、HTTP请求等模式。通过对基础数据库提供不同功能的接口实现基础数据库的业务扩展,通过封装接口封装不同类型的基础数据库,以满足不同业务以及不同应用场景的需求。
在一个实施例中,上述处理器获取所述基础数据库的第一配置参数的步骤之前,包括:判断所述基础数据库的数据格式是否为所述键值格式;若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
在一个实施例中,所述第一数据库所使用的基础数据库为关系型基础数据库,上述处理器按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式的步骤,包括:根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值;将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的key,所述赋值对应所述键值表的value。
在一个实施例中,所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态;若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配;若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库;若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
在一个实施例中,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:获取所述第一数据库的历史应用场景数据;从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中所述历史最小数据流通量为数据源子数据库启动,本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用,本地缓存子数据库启动的小数据流通场景对应的最大数据流通量;评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系;若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态;若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
在一个实施例中,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:判断当前预调用的第二数据库是否与所述第一数据库相同;若否,则获取所述第二数据库对应的第二配置参数;通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件;通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
在一个实施例中,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,上述处理器通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:获取当前待验证身份用户的第一脸部图像;从所述第一脸部图像提取第一人脸特征数据;通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据;若是,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种基础数据库的封装方法,其特征在于,包括:
构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中,所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存,所述数据库接口至少包括封装接口;
获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;
识别各所述第一配置参数分别对应的信息类别,并将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与所述封装接口关联;
通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库;
所述第一配置参数至少包括数据源子数据库类型、数据源子数据库调用状态、本地缓存子数据库类型以及本地缓存子数据库调用状态,所述第一数据库包括第一子数据库和第二子数据库,所述第一子数据库默认为存储数据源的数据源子数据库,所述第二子数据库默认为存储本地缓存的本地缓存子数据库,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:
判断所述数据源子数据库调用状态和所述本地缓存子数据库调用状态是否为可调用状态;
若为可调用状态,则判断所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数是否匹配;
若所述数据源子数据库或本地缓存子数据库使用的基础数据库类型和配置参数匹配,则通过所述封装接口获取所述数据源子数据库或本地缓存子数据库的链接地址,以通过所述链接地址调用所述数据源子数据库或本地缓存子数据库;
若所述数据源子数据库或本地缓存子数据库调用状态为禁止调用,则限制调用所述数据源子数据库或本地缓存子数据库。
2.根据权利要求1所述的基础数据库的封装方法,其特征在于,所述获取所述基础数据库的第一配置参数的步骤之前,包括:
判断所述基础数据库的数据格式是否为所述键值格式;
若所述基础数据库不是所述键值格式,则按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式。
3.根据权利要求2所述的基础数据库的封装方法,其特征在于,所述第一数据库所使用的基础数据库为关系型基础数据库,所述按照预设转换方案将所述第一数据库所使用的基础数据库的数据格式转换成所述键值格式的步骤,包括:
根据所述关系型基础数据库建立由多行属性表格组成的属性表,其中,每行所述属性表格包括两个填充字段的属性单元格,一行所述属性表格对应所述关系型基础数据库中的一个关系数据,第一属性单元格内的字段表示所述关系数据的属性名称,第二属性单元格内的字段表示所述关系数据对应的赋值;
将所述属性名称和所述赋值根据在所述属性表格中的关联关系分别成对地对应到键值表中,其中,所述属性名称对应所述键值表的键,所述赋值对应所述键值表的值。
4.根据权利要求1所述的基础数据库的封装方法,其特征在于,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤,包括:
获取所述第一数据库的历史应用场景数据;
从所述历史应用场景数据中确定历史最小数据流通量和历史最大数据流通量,其中,所述历史最小数据流通量为数据源子数据库启动、本地缓存子数据库禁用的大数据流通量场景对应的最小数据流通量,所述历史最大数据流通量为数据源子数据库禁用、本地缓存子数据库启动的小数据流通场景对应的最大数据流通量;
评估第一数据库的当前对应的应用场景的预测数据流通量分别与所述历史最小数据流通量和历史最大数据流通量的关系;
若所述第一数据库的当前待应用场景的预测数据流通量大于所述历史最小数据流通量,则设定所述数据源子数据库调用状态为开启状态,并设定所述本地缓存子数据库调用状态为禁用状态;
若所述第一数据库的当前待应用场景的预测数据流通量小于所述历史最大数据流通量,则设定所述本地缓存子数据库调用状态为开启状态,设定所述数据源子数据库调用状态为禁用状态,并在业务逻辑上第一数据库的本地缓存接口来操作数据。
5.根据权利要求1所述的基础数据库的封装方法,其特征在于,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:
判断当前预调用的第二数据库是否与所述第一数据库相同;
若否,则获取所述第二数据库对应的第二配置参数;
通过将所述第二配置参数导入所述第一配置文件,以替换掉所述第一配置参数形成第二配置文件;
通过所述封装接口加载所述第二配置文件中的第二配置参数,以完成从所述第一数据库切换为所述第二数据库。
6.根据权利要求1所述的基础数据库的封装方法,其特征在于,所述第一数据库为智能考勤使用的人脸特征数据库,所述人脸特征数据库至少包括数据增加接口和数据查询接口,所述通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库的步骤之后,包括:
获取当前待验证身份用户的第一脸部图像;
从所述第一脸部图像提取第一人脸特征数据;
通过所述数据查询接口在所述第一数据库中查寻是否存在与所述第一人脸特征数据满足相似度阈值要求的预设人脸特征数据;
若是,则通过所述数据增加接口在所述第一数据库中记录所述当前待验证身份用户的考勤数据。
7.一种基础数据库的封装装置,用于实现权利要求1至6中任一项所述的方法,其特征在于,包括:
构建模块,用于构建第一数据库对应的功能模块,以根据所述功能模块调用基础数据库,其中,所述功能模块至少包括数据库管理模块、数据库接口和数据库缓存,所述数据库接口至少包括封装接口;
第一获取模块,用于获取所述基础数据库的第一配置参数,其中,所述第一配置参数存储于所述第一数据库对应的第一文档,所述基础数据库的数据格式为键值格式,所述键值格式指数据以键值项保存,所述键值项包括键和值;
形成模块,用于识别各所述第一配置参数分别对应的信息类别,并将所述第一配置参数分别按照信息类别对应导入空值配置文件中形成第一配置文件,其中,所述空值配置文件预先与所述封装接口关联;
加载模块,用于通过所述封装接口加载所述第一配置文件中的第一配置参数,完成对所述基础数据库的封装初始化,形成所述第一数据库。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910340529.0A CN110209717B (zh) | 2019-04-25 | 2019-04-25 | 基础数据库的封装方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910340529.0A CN110209717B (zh) | 2019-04-25 | 2019-04-25 | 基础数据库的封装方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209717A CN110209717A (zh) | 2019-09-06 |
CN110209717B true CN110209717B (zh) | 2024-01-30 |
Family
ID=67786495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910340529.0A Active CN110209717B (zh) | 2019-04-25 | 2019-04-25 | 基础数据库的封装方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209717B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111311435B (zh) * | 2020-02-18 | 2021-03-30 | 国网河北省电力有限公司 | 一种基于卫星地图技术的智慧电力审计方法 |
CN113254686B (zh) * | 2021-04-02 | 2023-08-01 | 青岛以萨数据技术有限公司 | 人员行为检测方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853803A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 数据库的配置文件的封装方法和操作方法及其操作装置 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
CN107402941A (zh) * | 2016-07-22 | 2017-11-28 | 延边众生云计算科技有限公司 | 通用数据交换接口及其实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062496B2 (en) * | 2003-02-12 | 2006-06-13 | International Business Machines Corporation | Automatic data abstraction generation using database schema and related objects |
CN101483651B (zh) * | 2009-01-09 | 2012-04-25 | 南京联创科技集团股份有限公司 | 基于map队列的数据传送方法 |
-
2019
- 2019-04-25 CN CN201910340529.0A patent/CN110209717B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853803A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 数据库的配置文件的封装方法和操作方法及其操作装置 |
CN107402941A (zh) * | 2016-07-22 | 2017-11-28 | 延边众生云计算科技有限公司 | 通用数据交换接口及其实现方法 |
CN106844643A (zh) * | 2017-01-13 | 2017-06-13 | 王洋 | 一种基于模板引擎的数据库动态生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110209717A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474578B (zh) | 报文消息校验方法、装置、计算机设备和存储介质 | |
EP3917115B1 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN110209717B (zh) | 基础数据库的封装方法、装置、计算机设备和存储介质 | |
CN108924258B (zh) | 后台信息推送方法、装置、计算机设备和存储介质 | |
CN110555041A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113127519B (zh) | 文件的查询方法、装置、计算机设备及存储介质 | |
CN108897728B (zh) | 短信拼接处理方法、装置、计算机设备和存储介质 | |
CN109460541B (zh) | 词汇关系标注方法、装置、计算机设备和存储介质 | |
CN108196831B (zh) | 业务***的构建方法和装置 | |
CN109684303B (zh) | 通信码归属地查询方法、装置、计算机设备和存储介质 | |
CN112118133A (zh) | 基于自定义结构数据便于以太坊智能合约快速升级方法 | |
CN112507010B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN112069239B (zh) | 基于http请求使用数据库的方法、***、设备及存储介质 | |
CN111506573B (zh) | 数据库表分区方法、装置、计算机设备及存储介质 | |
CN111291300B (zh) | 网页数据处理方法、装置、网页***及服务器 | |
CN112181563A (zh) | 基于云平台的浏览器视图加载方法、装置、***及服务器 | |
CN115391188A (zh) | 一种场景测试用例生成方法、装置、设备及存储介质 | |
CN112783866A (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
CN113157754A (zh) | 流程表单数据展示方法、装置、设备及存储介质 | |
CN117195790B (zh) | 多级表项验证方法、***及计算机设备及介质 | |
US20050108201A1 (en) | Method to query an embedded database | |
CN113411395B (zh) | 访问请求路由方法、装置、计算机设备和存储介质 | |
CN115730016B (zh) | 数据同步方法、***、装置、计算机设备和存储介质 | |
CN112306972B (zh) | 一种基于云存储的文件生成方法和装置 | |
CN116185966A (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 |