CN115237853A - 数据查询的方法、装置、电子设备和存储介质 - Google Patents
数据查询的方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115237853A CN115237853A CN202110437274.7A CN202110437274A CN115237853A CN 115237853 A CN115237853 A CN 115237853A CN 202110437274 A CN202110437274 A CN 202110437274A CN 115237853 A CN115237853 A CN 115237853A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- binary
- target
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/63—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及计算机技术领域,涉及一种数据查询的方法、装置、电子设备和存储介质。该方法包括:获取数据查询指令;响应于数据查询指令,获取文件索引信息,其中,文件索引信息包括文件标识与数据文件的对应关系,数据文件包括数据描述信息以及至少一个二进制数据行,数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;根据文件索引信息,读取与待查询文件标识对应的目标数据文件;根据目标数据文件的数据描述信息,从目标数据文件的目标二进制数据行中获取与待查询数据标识对应的目标二进制数据字段。该方法能够去掉数据表文件中的结构化信息,从而降低了数据文件的体积以及对内存空间的占用,并且加快加载速度、运行速度和效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询的方法、装置、电子设备和存储介质。
背景技术
随着计算机技术和移动互联网的高速发展,电子游戏成为了人们可以随时随地进行的娱乐活动。电子游戏通常利用游戏引擎进行开发制作。游戏引擎是指一些已编写好的可编辑电子游戏***或者一些交互式实时图像应用程序的核心组件。游戏引擎为游戏设计者提供各种编写游戏程序所需的各种工具,以便让游戏设计者能容易和快速地做出游戏程序而不用由零开始。
目前,游戏引擎中的游戏数据通常在引擎外部制定,记录在数据表文件中,然后将数据表文件导入到游戏引擎进行相应数据结构的开发。游戏程序在运行时,对数据表进行加载和解析,从而获取数据表中的游戏数据。
然而,在目前的方案中,游戏程序加载游戏数据的过程需要对整个数据表文件进行加载和解析,加载速度较慢,并且占用内存空间大,造成***开销较大,运行速度和运行效率不高。
发明内容
基于上述技术问题,本申请提供一种数据查询的方法,以降低了数据文件的体积,降低了对内存空间的占用,并且加快了加载速度,提升运行速度和效率。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数据查询的方法,包括:
获取数据查询指令,其中,所述数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识;
响应于所述数据查询指令,获取文件索引信息,其中,所述文件索引信息包括文件标识与数据文件的对应关系,所述数据文件是根据原始数据文件进行二进制编码后生成的,所述数据文件包括数据描述信息以及至少一个二进制数据行,所述二进制数据行包括至少一个二进制数据字段,所述数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;
根据所述文件索引信息,读取与所述待查询文件标识对应的目标数据文件;
根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段。
根据本申请实施例的一个方面,提供一种数据查询装置,包括:
指令获取模块,用于获取数据查询指令,其中,所述数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识;
索引信息获取模块,用于响应于所述数据查询指令,获取文件索引信息,其中,所述文件索引信息包括文件标识与数据文件的对应关系,所述数据文件是根据原始数据文件进行二进制编码后生成的,所述数据文件包括数据描述信息以及至少一个二进制数据行,所述二进制数据行包括至少一个二进制数据字段,所述数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;
文件读取模块,用于根据所述文件索引信息,读取与所述待查询文件标识对应的目标数据文件;
字段获取模块,用于根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段。
在本申请的一些实施例中,基于以上技术方案,数据查询装置包括:
原始文件获取模块,用于获取原始数据文件,其中,所述原始数据文件包括表头信息和至少一个原始数据行;
二进制处理模块,用于对所述原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件;
文件生成模块,用于根据所述原始数据文件的数据描述信息与所述中间数据文件结合生成所述目标数据文件;
索引更新模块,用于在所述文件索引信息中添加所述目标数据文件的索引信息。
在本申请的一些实施例中,基于以上技术方案,二进制处理模块包括:
导入指令接收单元,用于通过编辑器接收数据导入指令;
编码单元,用于响应于所述数据导入指令,对所述原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,其中,每个原始数据行对应于一个二进制数据行,所述原始数据行中的每个数据值对应于一个二进制数据字段;
合并单元,用于将所述至少一个二进制数据行合并生成中间数据文件。
在本申请的一些实施例中,基于以上技术方案,编码单元包括:
计算子单元,用于对于所述原始数据行中的每个数据值,根据所述数据值的数据类型和在所述原始数据行中的序列顺序,计算所述数据值的数据头;
数据编码子单元,用于对所述数据头和所述数据值进行二进制编码,得到二进制数据字段;
序列组合子单元,用于将所述二进制数据字段按照所述序列顺序组合为二进制序列;
数据行合并子单元,用于对所述二进制序列的数据长度信息进行二进制编码,并将编码结果与所述二进制序列合并,生成所述数据值对应的二进制数据行。
在本申请的一些实施例中,基于以上技术方案,文件生成模块包括:
生成指令接收单元,用于通过所述编辑器接收描述信息生成指令;
解析单元,用于响应于所述描述信息生成指令,对所述原始数据文件中的表头信息进行解析,得到至少一个数据标识;
地址映射确定单元,用于根据所述中间数据文件中二进制数据行的主键数据以及所述二进制数据行的起始地址和数据长度,确定所述二进制数据行的地址映射信息;
数据映射确定单元,用于根据所述至少一个数据标识与所述二进制数据行中二进制数据字段的映射关系,确定所述二进制数据字段的数据映射信息;
文件组成单元,用于根据所述地址映射信息、所述数据映射信息以及所述中间数据文件,生成所述目标数据文件。
在本申请的一些实施例中,基于以上技术方案,原始文件获取模块包括:
导入指令接收单元,用于通过编辑器接收文件导入指令;
导入指令相应单元,用于响应于所述文件导入指令,根据预设的待处理文件列表获取待处理文件;
数据表拆分单元,用于对所述待处理文件中的数据表进行拆分,得到原始数据文件。
在本申请的一些实施例中,基于以上技术方案,待查询数据标识包括待查询主键以及待查询字段标识;字段获取模块,包括:
查找单元,用于从所述数据描述信息中查找所述待查询主键对应的起始地址以及数据长度;
读取单元,用于根据所述待查询主键对应起始地址以及数据长度,从所述目标数据文件中读取所述目标二进制数据行;
字段获取单元,用于根据所述目标数据文件的数据描述信息,从所述目标二进制数据行中获取与所述待查询字段标识对应的所述目标二进制数据字段。
根据本申请实施例的一个方面,提供一种电子设备,该电子示设备包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,该处理器配置为经由执行可执行指令来执行如以上技术方案中的数据查询的方法。
根据本申请实施例的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器执行时实现如以上技术方案中的数据查询的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供数据查询的方法。
在本申请的实施例中,在查询游戏数据、应用数据、结构数据等待查询数据时,根据数据查询指令从文件索引信息中查询需要读取的目标数据文件,在根据数据标识从目标数据文件中读取出二进制数据字段。由于待查询数据本身采用二进制的形式进行存储,在省去了解析过程的基础上,还去掉了数据表文件中的结构化信息,从而降低了数据文件的体积,降低了对内存空间的占用,并且加快了加载速度,提升运行速度和效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
在附图中:
图1示意性地示出了本申请技术方案在一个应用场景中的示例性***构架示意图;
图2示出了本申请实施例中的一种数据查询的方法的流程示意图;
图3为本申请实施例中原始数据文件内容的示意图;
图4为本申请实施例中编辑器界面的示意图;
图5为本申请实施例中目标数据文件的结构示意图;
图6为本申请实施例中进行数据更新的整体流程图;
图7示意性地示出了本申请实施例中数据查询装置的组成框图;
图8示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,本申请的方案可以应用于游戏应用的场景,并且具体应用于游戏客户端或者游戏服务器的中的游戏应用程序中。在此类场景中,客户端或者服务器通常需要根据用户的游戏行为,获取与游戏内容相关的各类游戏数据来进行展示和计算,以供用户进行游玩行为。例如,对于家园建设类游戏,用户在客户端上浏览各类建筑的属性,例如建筑金额、功能、产出或者建设条件等信息,客户端通常需要在用户选择浏览此类数据时从本地或者从服务器或云端获取相关的数据进行展示。本申请的方案在此类场景中,可以用于对按照用户或者客户端运行的需求对此类数据进行查询,以用于后续向用户展示相关信息,或者根据用户的操作和客户端的运行情况进行计算和更新,例如,根据用户的选择建设的建筑来更新用户的花销和营收等内容。本申请的方案还可以应用于其他种类的应用程序来查询应用数据,例如,在短视频应用中可以用于查询短视频的属性信息,或者在通信类应用中用于查询通信历史记录等。本申请的方案还可以应用于制图或者三维建模场景,用于查询图形或三维模型的结构数据或者属性信息,或者浏览和加载图形或者三维模型时用于读取结构数据或者属性信息。
本申请的应用场景可以是仅运行于一台终端设备上的单机程序,运行于多台终端设备上的联机程序,运行于终端和服务器上的联网程序或者基于云技术的云游戏。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云游戏(Cloud gaming)又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端,而是在云端服务器中运行,并由云端服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。
本申请的应用场景中的应用程序还可以是采用了区块链技术的区块链程序,通过本申请的方案从区块链所存储的数据中查询目标数据。具体地,区块链中的数据在上链之前可以采用本申请所介绍的方案进行处理。在使用时,从区块链中读取所存储的二进制内容,并且按照本申请介绍的方案进行查询。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
为了便于理解,以本申请的方案应用于网络游戏为例进行说明。请参阅图1,图1示意性地示出了本申请技术方案在一个应用场景中的示例性***构架示意图。
由图1可以看出,该场景包括服务器以及终端、笔记本电脑等终端设备。网络游戏的客户端在终端、笔记本电脑、手机等终端设备上执行,并且与服务器进行通信。终端设备根据用户操作或者客户端运行的需要向服务器发送数据请求,服务器根据数据请求查询相关的数据并且向终端设备数据信息。终端设备也可以根据用户操作或者客户端运行的需要从终端设备本地存储的信息中获取需要的数据。例如,用户通过手机上的客户端向服务器发送购买建筑的请求,服务器则将购买建筑请求的相关数据和计算结果发送给客户端。客户端则根据所接收到的数据信息进行展示或者计算,并继续进行游戏。对于一部分高频率使用的数据,客户端会将数据存储到终端设备的高速缓存中,客户端在下次使用时将直接从高速缓存获取此数据而不必从硬盘或者服务器查询和获取。
图1中的服务器具体可以是单个服务器、服务器集群或者云服务器等各类形式。服务器用于支持客户端上的游戏运行。在本申请中,客户端还可以是用于进行游戏制作的终端。终端上将会运行游戏引擎,游戏开发者在制定好游戏数据后,在游戏引擎中导入和配置游戏数据,并且在制作完成后发布或者更新游戏。用户在后续使用的过程中,游戏客户端根据游戏数据来运行。
客户端与服务器之间的通信方式可以采用任何有线或无线通信方式,本申请对此不作限制。
可以理解的是,图1中所示出的场景仅为本申请的方案所应用的场景示例,实际的应用场景可以采用其他适合网络结构,例如加入代理服务器和多级网络等,本申请对此不作限制。
下面结合具体实施方式对本申请提供的技术方案做出详细说明。
请参阅图2,图2示出了本申请实施例中的一种数据查询的方法的流程示意图,本实施例的方法可以应用于如上文的终端设备中,由终端设备或者终端设备中的客户端执行。本实施例的方法可以包括如下步骤S201至步骤S204:
步骤S201,获取数据查询指令,其中,数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识。
数据查询指令是由客户端或者服务器上进行在需要获取相关数据来进行时生成的指令,用于从存储数据的文件中获取指定的数据。例如,在游戏客户端中,用户选择浏览游戏中的建筑信息,则客户端将会查询此类信息,并且向用户进行展示,例如存在多少种建筑、每种建筑的价格等相关数据。查询数据的过程可以由终端设备独自执行,后者由终端设备与服务器通信来执行,具体涉及的设备取决于存储相关数据的文件的物理存储位置,当存储在终端设备时则可以由终端设备独自执行。
数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识。待查询文件标识用于标识存储待查询数据的文件,具体地,可以是文件名称或者文件路径等信息。待查询数据标识是数据文件中用于标识具体数据。数据文件中的数据通常采用表格的组织形式,同一个数据文件中存储同类的数据,各个不同数据通过数据标识进行区分,例如,数据标识可以是行号列号、字段名称等。以卡牌游戏为例,用户在客户端中点击查看一张名为“大王”卡牌的详细信息,则客户端会生成数据查询指令,其中包括待查询文件标识“卡牌信息”,以及卡牌名称“大王”,以便查询此卡牌的详细数据。
步骤S202,响应于数据查询指令,获取文件索引信息,其中,文件索引信息包括文件标识与数据文件的对应关系,数据文件是根据原始数据文件进行二进制编码后生成的,数据文件包括数据描述信息以及至少一个二进制数据行,二进制数据行包括至少一个二进制数据字段,数据描述信息用于指示数据标识与二进制数据字段之间的对应关系。
在本实施例中,客户端在接收到数据查询指令后,将会获取文件索引信息。具体地,文件索引信息可以存储在预定的文件中,或者已经被加载到内存中。获取的方式则相应地为根据预设的文件存储地址读取预设的文件,或者直接从内存中获取相关的索引信息。文件索引信息可以采用键值对的形式,其中包括文件标识与数据文件的对应关系,具体地,对应关系可以是文件名与文件的存储地址之间的关系,或者可以是文件简称或者编号与文件地址之间的关系。文件索引信息中通常覆盖可供查询的所有数据文件。数据文件是根据原始数据文件进行二进制编码后生成的,并且具体可以是采用协议缓冲(ProtocolBuffers,protobuf)的编码方式生成的。数据文件包括数据描述信息以及至少一个二进制数据行,二进制数据行包括至少一个二进制数据字段,数据描述信息用于指示数据标识与二进制数据字段之间的对应关系。具体地,取决于具体的实现,数据文件的格式可以不同,例如在虚幻引擎(Unreal Engine)中,数据文件可以的格式可以是虚幻资产文件(UnrealAsset File,uasset)。
步骤S203,根据文件索引信息,读取与待查询文件标识对应的目标数据文件。
在本实施例中,客户端根据文件索引信息,读取与待查询文件标识对应的目标数据文件。具体地,客户端根据待查询文件标识在文件索引信息中查询数据文件的存储地址,并且根据存储地址在终端设备上查找并读取相对应的数据文件。在一个实施例中,文件索引信息中对部分数据文件含有特定预先加载标识,客户端在启动时,将会首先对文件索引信息所记录的内容进行检查,并且将具有特定预先加载标识的数据文件直接加载到内存。在此情况下,客户端根据待查询文件标识在文件索引信息中确认其已经被加载,则可以直接从内存中读取目标数据文件。
目标数据文件包括具体数据的文件,其包括数据描述信息以及至少一个二进制数据行。数据描述信息是用于描述实际数据具体含义的信息,其通常是根据数据表中的列名和描述信息生成,并且与实际数据具有对应关系。在目标数据文件的数据表中,存在用于区分每行数据的主键数据,在每个数据文件中,主键数据可以用于唯一标识一个二进制数据行。至少一个二进制数据行是数据文件中的实际数据,其包括至少一个二进制数据字段。例如,目标数据文件中包括一列数据,列名为时间,实际的数据内容为300,则在目标数据文件中,数据描述信息中的该列的信息为“时间”,而二进制数据行中对应的二进制数据字段可以是“100101100”。在一个实施例中,二进制数据行中的数据还可以进一步采用压缩转换协议进行处理,从而将数据所占用的空间进行压缩,进一步加快读取速度。
步骤S204,根据目标数据文件的数据描述信息,从目标数据文件的目标二进制数据行中获取与待查询数据标识对应的目标二进制数据字段。
在本实施例中,客户端根据目标数据文件的数据描述信息,从目标数据文件的目标二进制数据行中获取与待查询数据标识对应的目标二进制数据字段。具体地,客户端可以根据待查询数据标识中的识别信息,从目标数据文件中确定目标二进制数据行,然后再确定待查询数据标识和数据描述信息获取待查询数据标识对应的目标二进制数据字段。例如,待查询数据标识中包括对于数据行的识别信息为100,则客户端会从预先约定的用于区分数据行的数据列中选择数值为100的数据行,例如为“001100100,011001000,100101100”,然后再根据待查询数据标识中的数据列的标识来获取目标二进制数据字段,例如,数据列对应数据描述信息为“等级,数量,单价,”,待查询数据标识中的数据列标识为数量,则获取的目标二进制数据字段为“011001000”。取决于数据存储的形式不同,目标数据文件中可以仅包括一行数据,在此情况下,则不需要数据行的标识,仅利用数据列的标识即可获取目标二进制数据字段。
在本申请的实施例中,在查询游戏数据时,根据数据查询指令从文件索引信息中查询需要读取的目标数据文件,在根据数据标识从目标数据文件中读取出二进制数据字段。由于游戏数据本身采用二进制的形式进行存储,在省去了解析过程的基础上,还去掉了数据表文件中的结构化信息,从而降低了数据文件的体积,降低了对内存空间的占用,并且加快了加载速度,提升运行速度和效率。
在本申请的一个实施例中,为了在客户端中导入新数据,本实施例的方法可以包括如下步骤S301至步骤S304:
步骤S301,获取原始数据文件,其中,原始数据文件包括表头信息和至少一个原始数据行。
具体地,本实施例的方法可以由终端设备上游戏开发引擎来执行。数据文件在导入完成后随客户端一起被打包发布,其他的客户端在安装或者更新客户端后获取到新的数据文件。原始数据文件指的是设计人员用于编辑数据和存储数据的文件,通常采用表格的形式,例如可以采用标记语言、电子表格或者逗号分隔值文件等形式进行存储。原始数据文件包括表头信息和至少一个原始数据行,其中,表头信息用于介绍每个数据列的数据的名称、数据类型和具体含义等内容,原始数据行中则包括数据信息。
具体地,为了便于介绍,请参阅图3,图3为本申请实施例中原始数据文件内容的示意图。表头信息为表格的前4行,并且前4行的内容按照预先约定的内容填写。从文件的第五行开始为原始数据行。
游戏开发引擎获取原始数据文件。具体地,游戏开发引擎可以直接读取预设的配置文件,配置文件中包括需要导入的所有原始数据文件的存储地址,随后,游戏开发引擎根据各个存储地址读取相应的原始数据文件。在另一个实施例中,游戏开发引擎可以通过编辑器界面获取相关的处理指令,用户可以在编辑器界面中直接指定需要导入的原始数据文件。编辑器例如可以是数据编辑器,用户可以通过数据编辑器来直接定义和修改应用中所需要使用的数据信息,例如,数据名称、数据类型、具体取值或者取值范围等。编辑器界面也可以是画面编辑器,用户可以通过画面编辑器来对应用所需要使用的各类图形和画面进行绘制和修改等,同时,还可以将所绘制的图形和画面与定义好的数据内容进行关联,以便在应用的业务逻辑使用相关数据。为了便于介绍,请参阅图4,图4为本申请实施例中编辑器界面的示意图。如图4所示,在编辑器界面上的下拉菜单选项中包括“导入数据文件”按钮,用户通过点击该按钮可以触发文件导入指令。游戏开发引擎在接收到文件导入指令后,将会按照预设的地址获取原始数据文件列表,并且按照列表中的地址读取原始数据文件,或者,用户通过点击“导入数据文件”按钮后,可以在弹出窗口中选择或者输入要导入的数据文件的地址,游戏开发引擎将按照所选择或输入的地址读取相应的原始数据文件。
步骤S302,对原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件。
具体地,客户端按照预设的规则对原始数据文件中的数据进行解析,从而将文件中的数据行按照行为单位提取,并且每行数据中按照数据列进行划分各个数据字段。随后对解析出的数据进行二进制转换处理,从而将原始数据文件中的数据转换为二进制格式的数据,然后再将转换后的数据按照数据行的形式连接起来,形成中间数据文件。二进制数据转换的方式可以采用现有的二进制序列化协议进行转换。
步骤S303,根据原始数据文件的数据描述信息与中间数据文件结合生成目标数据文件。
描述信息是根据原始数据文件中的表头信息生成的信息,主要用于指示中间数据文件中二进制数据的具体含义。中间数据文件中的二进制数据通常按照数据行的形式来存储,而描述信息中则对应地标注数据行的每个字段的具体数据含义、数据类型等信息。继续参考图3,其中,第一行、第二行和第三行的信息分别为数据标识,数据类型和中文名称,这三种数据通常被包含在描述信息中,第四行的数据则主要用于标识对每个数据列中数据的特定操作,其内容可以不被包含在描述信息中,而是在生成目标数据文件时,按照标识进行预订数据操作,图3中的第四列被标识为“Skip”,表示这个字段为说明性字段,在生成二进制数据时将会略过此字段。客户端将描述信息与中间数据文件结合生成目标数据文件。
步骤S304,在文件索引信息中添加目标数据文件的索引信息。
所生成的目标数据文件将会被存储预定的存储目录中。客户端将会将目标数据文件的存储地址添加到文件索引信息中,以便于后续进行使用。具体地,若文件索引信息不包含目标数据文件的存储地址,则会将存储地址新增到文件索引信息中,若文件索引信息已经包含目标数据文件的存储地址,则将会在目前的记录中添加新文件的存储地址但仍保留旧文件的存储地址。在从目标数据文件中获取数据时,首先会从更新时间最近的文件中获取,若从中并未获取到需要的信息,则进一步尝试从时间更早的文件中获取,直至获取到所需的数据或者确认无法获得所需信息。
可以理解的是,将新数据导入客户端所用的终端设备与客户端实际运行的终端设备可以是不同的设备。因此,文件索引信息中所记录的地址通常为相对地址。
在本申请的实施例中,通过将原始数据文件中的数据进行二进制转换,将数据文件中的结构信息省略,从而能够降低数据文件中与数据内容无关的数据量,从而减少缩减数据内容,节约存储空间。
在本申请的一个实施例中,为了生成二进制的中间数据文件,上述步骤S302,对原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件,可以包括如下步骤:
通过编辑器接收数据导入指令;
响应于数据导入指令,对原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,其中,每个原始数据行对应于一个二进制数据行,原始数据行中的每个数据值对应于一个二进制数据字段;
将至少一个二进制数据行合并生成中间数据文件。
本实施例的方案在终端设备上执行,并且具体可以由游戏开发引擎来执行。客户端通过编辑器接收数据导入指令,其中,编辑器通常可以是游戏开发引擎的客户端界面。再次参考图4,在编辑器界面上的下拉菜单选项中包括“生成二进制文件”按钮,用户通过点击该按钮可以触发数据导入指令。游戏开发引擎在接收到数据导入指令后,将会对在之前的步骤中获取到的原始数据文件依次进行二进制编码。对于一个原始数据文件,二进制编码过程以数据行为单位进行,即将原始数据文件中的数据表被解析为多个原始数据行,每个原始数据行被解析为多个数据值,然后对每个数据值进行二进制编码转换,再按照其在原始数据行中的位置和顺序拼接起来,生成该数据值对应的二进制数据行,其中,在每个二进制数据行的行首位置还包括该二进制数据行的总行数。二进制编码可以采用ASCII码、GBK码等编码规则。
将一个原始数据文件中的所有原始数据行转换成二进制数据行后,游戏开发引擎所获得的所有二进制数据行合并连接,得到二进制数据,并统计数据总行数,然后将该总行数设置到二进制数据的首位,形成中间数据文件。即,中间数据文件的具体形式为开头为文件的总行数,随后连接各个二进数数据行,并且每个二进制数据行的开头为该行的长度。
在本申请的实施例中,根据用户指令通过对原始数据行进行二进制编码来对原始数据文件进行编码,由于仅需单次操作即可以完成编码工作,也不需要与数据相配合额外编码工作,节约开发时间,提升编码效率。
在本申请的一个实施例中,为了生成二进制的中间数据文件,上述步骤,对原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,可以包括如下步骤:
对于原始数据行中的每个数据值,根据数据值的数据类型和在原始数据行中的序列顺序,计算数据值的数据头;
对数据头和数据值进行二进制编码,得到二进制数据字段;
将二进制数据字段按照序列顺序组合为二进制序列;
对二进制序列的数据长度信息进行二进制编码,并将编码结果与二进制序列合并,生成数据值对应的二进制数据行。
具体地,在二进制编码的过程中,原始数据行首先被分接为多个数据值,然后对于每个数据值进行操作。编码过程可以按照数据值在数据行中的顺序进行,首先,根据数据值的数据类型,确定对应的数据类型标识。具体的,数据类型与数据类型标识对应关系为,0对应于可变长度值,例如,32位整数、64位整数、无符号64位数、无符号32位数、有符号64位数、有符号32位数、布尔值以及枚举值,1对应于64比特数,例如双浮点数,2对应于长度限制值,例如字符串,5对应于32比特数,例如单浮点数。然后将其在原始数据行中的序列顺序确定该字段的字段唯一标识。在具体进行计算时,各个数据采用二进制来表示,例如,数据列的第二数据值为一串数字,则其数据头可以是20,其中2为序列位置,0为数据类型。
随后,将数据头与数据值进行二进制编码,得到二进制数据字段,具体地,数据头的编码方式可以采用左移的方式进行处理,例如,将字段唯一标识的数字左移三位后与数据类型标识一起形成数据头编码。数据值则可以直接按照ASCII码等编码方式进行二进制编码,将数据头编码与数据值的二进制编码合并成为二进制数据字段。例如,假定一行中第二个字段的数据值为“zhangsan”,这一数据值的二进制编码用十六进制可以表示为“11 7A68 61 6E 67 73 61 6E”,其中,“11”为字段唯一标识2左移三位后与数据类型标识1进行或运算的结果,而“7A 68 61 6E 67 73 61 6E”则为“zhangsan”的ASCII码的转换结果。
在将每个字段进行转换后,将各个字段的转换结果按照原本的序列顺序组合,形成二进制序列。此时,可以统计出二进制序列的具体长度,再将该长度转换成二进制格式后至于二进制序列的队首,即可生成数据值对应的二进制数据行。
在一个实施例中,编码过程可以使用现有的二进制编码压缩技术,例如使用protobuf等加密协议。
在本申请的实施例中,通过二进制编码的方式对数据行中的各个字段进行转换,从而省略了数据表达中对于数据表的结构进行表达所需要的数据内容,因此能够压缩数据行的数据量,从而降低存储消耗。
在本申请的一个实施例中,为了生成目标数据文件,上述步骤S303,根据原始数据文件的数据描述信息与中间数据文件结合生成目标数据文件,可以包括如下步骤:
通过编辑器接收描述信息生成指令;
响应于描述信息生成指令,对原始数据文件中的表头信息进行解析,得到至少一个数据标识;
根据中间数据文件中二进制数据行的主键数据以及二进制数据行的起始地址和数据长度,确定二进制数据行的地址映射信息;
根据至少一个数据标识与二进制数据行中二进制数据字段的映射关系,确定二进制数据字段的数据映射信息;
根据地址映射信息、数据映射信息以及中间数据文件,生成目标数据文件。
在本实施例中,提供了一种为二进制文件添加描述信息从而生成目标数据文件的方法。本实施例的方案在终端设备上执行,并且具体可以由游戏开发引擎来执行。再次参考图4,在编辑器界面上的下拉菜单选项中还包括“生成数据文件”的按钮,用户通过点击该按钮可以触发描述信息生成指令。该操作通常是在上述实施例中的点击“生成二进制文件”按钮的操作之后进行。在另一个实施例中,该描述信息生成指令也可以随着上述实施例中描述的过程由编辑器自动触发,而不需要进一步的操作。游戏开发引擎在接收到描述信息生成指令之后,会对之前被转换成二进制文件的原始数据文件处理。首先获取原始数据文件中的表头信息。原始数据文件中的表头信息通常按照预先约定的格式填写在固定位置,例如固定填写在表格的前四行中。通过按照预设的规则对表头信息进行解析,可以得到表格中各个数据列的数据标识以及相关信息,例如,数据列的列名和列标识以及数据类型等。表头信息中包括对各个数据列的注解信息,其中标识中数据表中的主键数据。根据中间数据文件中二进制数据行的主键数据以及二进制数据行的起始地址和数据长度,确定二进制数据行的地址映射信息。具体地,地址映射信息可以采用键值对的形式,键值对中的数据键是各个数据行的主键数据。表头信息中对于各个数据列可以具有附加的额外标注,额外标注用于表示各个数据列需要进行的额外操作,包括主键标注、略过标注、客户端标注和服务器标注、以及额外处理标注,主键标注用于表示该数据列为主键,略过标注表示该数据列所包括的数据为说明性信息,该列数据不会被包含在二进制的中间数据文件中,客户端标注表示该列数据仅用于客户端使用,因此在服务器端的应用中不会包含该信息,相对应地,具有服务器标注的数据列则不会被包含在客户端的应用中,额外处理标注表示该数据列需要进行额外的转换处理,例如,需要进行万分比保留2位小数等。主键数据的所包括的数据列可以根据对应的额外标注而定,具体数据则是主键数据列的具体内容,可以是原始的数据形式,也可以是二进制的数据。键值对中的数据值则是由主键数据所在的二进制数据行的起始地址和数据长度。地址映射信息用于根据数据行的主键信息来查询该行数据的起始地址和数据长度,进而可以获取该二进制数据行。
根据至少一个数据标识与对应的数据的二进制数据字段的对应关系,可以确定二进制数据字段的数据映射信息。具体地,数据映射信息同样可以采用键值对的形式,其中,键值对的数据键为各个数据列的列名或者标识,而键值对的数据值为对应数据字段类型以及额外标注。根据数据映射信息,可以在对二进制数据行进行解析时获取各个字段的数据类型以及所需要进行的特殊处理。
随后,游戏数据引擎将所获得的地址映射信息、数据映射信息以及中间数据文件组成目标数据文件。此外,目标数据文件中还可以包括其他额外的数据,包括原始数据文件的名称、二进制转换所采用的协议的名称、数据表的主键、以及各个数据列的标识信息等。
具体地,请参阅图5,图5为本申请实施例中目标数据文件的结构示意图。如图5所示,目标数据文件由二进制的中间数据文件以及数据的描述信息组成。中间数据文件结构为,前4字节为文件中所包括的数据行数,紧接为一条数据的数据长度,根据这个长度可以向后偏移取出对应一行数据的二进制信息,一条数据结束后重复数据长度和数据信息的结构,直到中间数据文件结束。数据的描述信息包括原始数据文件的名称、二进制转换所采用的协议的名称、数据表的主键、主键对应的一行数据对应在二进制文件内的起始地址、主键对应的一行数据对应在二进制文件内的长度、字段对应的数据类型、字段对应的额外处理标注、以及各个数据列的标识信息。
在本申请的实施例中,生成地址映射信息和数据映射信息,并且将它们与中间数据文件组成目标数据文件,提供了生成目标数据文件的具体方式,提升方案的可操作性。
在本申请的一个实施例中,为了获取到原始数据文件,本申请的方案还可以包括如下的步骤:
通过编辑器接收文件导入指令;
响应于文件导入指令,根据预设的待处理文件列表获取待处理文件;
对待处理文件中的数据表进行拆分,得到原始数据文件。
具体地,再次参阅图4,在编辑器界面上的下拉菜单选项中包括“导入数据文件”按钮,用户通过点击该按钮可以触发文件导入指令。游戏开发引擎在接收到文件导入指令后,会按照文件导入指令中设定的地址或者按照预设地址获取导入列表文件。导入列表文件中包括需要导入所有原始数据文件的信息。导入列表文件中包括所有需要导入的待处理文件的文件名称、文件中数据页的名称、对应的数据元素的名称、数据类别以及其他相关的信息。游戏开发引擎将会对所有的这些表格进行遍历处理,将各个待处理文件按照数据页拆分成各个数据表,然后再基于各个数据表进行导入。
下面对导入过程的整体流程进行举例说明。为了便于介绍,请参阅图6,图6为本申请实施例中进行数据更新的整体流程图。如图6所示,导入之前,在步骤301中,需要按照预设的规则配置原始数据文件(例如,Excel文件),然后在步骤302中,将原始数据文件放置在指定路径中并且随后在步骤303中将其文件信息添加到导入文件列表(例如,Config.Excel文件)中。在步骤304中,根据二进制编码所采用的规则和方式,还需要定义各个数据表的数据定义(例如,Protobuf定义),即,数据导入游戏开发引擎后的数据实体形式,例如,确定各个数据列的数据格式,定义枚举型数据列的枚举值等。然后,在步骤305中,对于导入文件列表中的每个文件,对其中各个数据行进行二进制编码,生成中间数据(例如,Protobin),并且在步骤306中在中间数据中的每行的行首加入长度信息。在步骤307中,将所有的数据行合并,并且在第一行的行首在加入数据行的数量,则可以形成数据表的二进制文件(binaryfile,bin)。
对于原始数据文件中的表头内容,在步骤308中,游戏开发引擎会按照预设的分析其结构,并且在步骤309中将分析得到的各个数据列的描述信息提取出来形成描述信息,包括上述实施例中所描述的地址映射信息、数据映射信息、表格名称、主键信息以及数据标识等内容,并且记录在目标数据文件(例如,Uasset)中。可以理解的是,在此时,目标数据文件中可以不包含数据表实体内容的二进制文件。即,描述信息的生成过程与二进制文件的生成过程是相互独立的过程,可以并行执行,也可以先后执行。在步骤310中将描述信息以及二进制内容部分填充到目标数据文件中可以形成完整的目标数据文件。之后,在步骤311中,将所生成的目标数据文件的信息更新到文件索引信息中,以便在后续使用。数据更新过程到此结束。
在本申请的实施例中,通过预设待处理文件列表,从而对原始数据文件进行批量处理,简化了技术人员的操作过程,提高了数据导入的效率。
在本申请的一个实施例中,待查询数据标识包括待查询主键以及待查询字段标识,为了获取目标二进制数据字段,上述步骤S204,根据目标数据文件的数据描述信息,从目标数据文件的目标二进制数据行中获取与待查询数据标识对应的目标二进制数据字段,可以包括如下步骤:
从数据描述信息中查找待查询主键对应的起始地址以及数据长度;
根据待查询主键对应起始地址以及数据长度,从目标数据文件中读取目标二进制数据行;
根据目标数据文件的数据描述信息,从目标二进制数据行中获取与待查询字段标识对应的目标二进制数据字段。
在本实施例中,提供了查询二进制数据字段的具体方法。待查询数据标识通常包括待查询主键以及待查询字段标识。其中,待查询主键为根据业务需求确定的查询的数据所在的数据行的主键,而待查询字段标识则为目标数据的数据列的标识。例如,在游戏的过程中,需要某个建筑物价格,假定建筑物价格所在的数据表的主键包括建筑类型、细分类型以及建筑等级三列,则待查询主键可以由建筑类型“1”、细分类型“1”以及建筑等级“1”组成,而待查询字段标识为“JG”,对应于价格。在目标数据文件中,根据待查询主键可以从二进制数据文件中读取目标二进制数据行。具体地,根据待查询主键,可以从地址映射信息中查询到目标二进制数据行在二进制数据文件中的起始地址和数据长度。从起始地址开始按照数据长度进行地址偏移,即可以读取出目标二进制数据行。
随后,目标二进制数据行可以根据预设的结构进行解析。例如,每个二进制字段都具有固定的长度。在一个实施例中,数据描述信息中包含进行二进制数据编码时所采用的协议规则。在进行二进制数据行解析时,可以先获取协议规则,然后根据协议规则将数据行进行解析为数据字段。在获取到各个二进制字段后,即可以按照数据描述信息中的数据映射关系,来确认各个数据字段所对应的数据标识,并且可以根据待查询字段标识来查询目标二进制数据字段。
在另一个实施例中,游戏应用在对游戏进行加载的过程中,或者在需要进行数据读取时,根据数据描述信息中保存的表头信息,对整张数据表中的所有数据行进行解析。具体地,首先获取数据列的数量以及各个数据列的数据标识。随后再对二进数数据中的所有数据进行遍历,将每行二进制数据实例化为一个实例对象,从而加载一个数据表中的所有数据。这样,则可以直接根据待查询主键以及待查询字段标识直接获取到对应的二进制数据字段。
在本申请的实施例中,提供了一种获取需要的二进制字段的具体方式,由于能够直接读取二进制的数据字段,不需要对数据进行还原,读取结果可以直接用于进行计算,从而能够免去读取数据后对数据进行转码的过程,提高数据处理速度。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施,可以用于执行本申请上述实施例中的数据查询的方法。图7示意性地示出了本申请实施例中数据查询装置的组成框图。如图7所示,数据查询装置400主要可以包括:
根据本申请实施例的一个方面,提供一种数据查询装置,包括:
指令获取模块410,用于获取数据查询指令,其中,所述数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识;
索引信息获取模块420,用于响应于所述数据查询指令,获取文件索引信息,其中,所述文件索引信息包括文件标识与数据文件的对应关系,所述数据文件是根据原始数据文件进行二进制编码后生成的,所述数据文件包括数据描述信息以及至少一个二进制数据行,所述二进制数据行包括至少一个二进制数据字段,所述数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;
文件读取模块430,用于根据所述文件索引信息,读取与所述待查询文件标识对应的目标数据文件;
字段获取模块440,用于根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段。
在本申请的一些实施例中,基于以上技术方案,数据查询装置400还包括:
原始文件获取模块,用于获取原始数据文件,其中,所述原始数据文件包括表头信息和至少一个原始数据行;
二进制处理模块,用于对所述原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件;
文件生成模块,用于根据所述原始数据文件的数据描述信息与所述中间数据文件结合生成所述目标数据文件;
索引更新模块,用于在所述文件索引信息中添加所述目标数据文件的索引信息。
在本申请的一些实施例中,基于以上技术方案,二进制处理模块包括:
导入指令接收单元,用于通过编辑器接收数据导入指令;
编码单元,用于响应于所述数据导入指令,对所述原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,其中,每个原始数据行对应于一个二进制数据行,所述原始数据行中的每个数据值对应于一个二进制数据字段;
合并单元,用于将所述至少一个二进制数据行合并生成中间数据文件。
在本申请的一些实施例中,基于以上技术方案,编码单元包括:
计算子单元,用于对于所述原始数据行中的每个数据值,根据所述数据值的数据类型和在所述原始数据行中的序列顺序,计算所述数据值的数据头;
数据编码子单元,用于对所述数据头和所述数据值进行二进制编码,得到二进制数据字段;
序列组合子单元,用于将所述二进制数据字段按照所述序列顺序组合为二进制序列;
数据行合并子单元,用于对所述二进制序列的数据长度信息进行二进制编码,并将编码结果与所述二进制序列合并,生成所述数据值对应的二进制数据行。
在本申请的一些实施例中,基于以上技术方案,文件生成模块包括:
生成指令接收单元,用于通过所述编辑器接收描述信息生成指令;
解析单元,用于响应于所述描述信息生成指令,对所述原始数据文件中的表头信息进行解析,得到至少一个数据标识;
地址映射确定单元,用于根据所述中间数据文件中二进制数据行的主键数据以及所述二进制数据行的起始地址和数据长度,确定所述二进制数据行的地址映射信息;
数据映射确定单元,用于根据所述至少一个数据标识与所述二进制数据行中二进制数据字段的映射关系,确定所述二进制数据字段的数据映射信息;
文件组成单元,用于根据所述地址映射信息、所述数据映射信息以及所述中间数据文件,生成所述目标数据文件。
在本申请的一些实施例中,基于以上技术方案,原始文件获取模块包括:
导入指令接收单元,用于通过编辑器接收文件导入指令;
导入指令相应单元,用于响应于所述文件导入指令,根据预设的待处理文件列表获取待处理文件;
数据表拆分单元,用于对所述待处理文件中的数据表进行拆分,得到原始数据文件。
在本申请的一些实施例中,基于以上技术方案,待查询数据标识包括待查询主键以及待查询数据标识;字段获取模块440,包括:
查找单元,用于从所述数据描述信息中查找所述待查询主键对应的起始地址以及数据长度;
读取单元,用于根据所述待查询主键对应起始地址以及数据长度,从所述目标数据文件中读取所述目标二进制数据行;
字段获取单元,用于根据所述目标数据文件的数据描述信息,从所述目标二进制数据行中获取与所述待查询字段标识对应的所述目标二进制数据字段。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
图8示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图8示出的电子设备的计算机***500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机***500包括中央处理单元(Central Processing Unit,CPU)501,其可以根据存储在只读存储器(Read-Only Memory,ROM)502中的程序或者从储存部分508加载到随机访问存储器(Random Access Memory,RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(Input/Output,I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分507;包括硬盘等的储存部分508;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入储存部分508。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据查询的方法,其特征在于,包括:
获取数据查询指令,其中,所述数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识;
响应于所述数据查询指令,获取文件索引信息,其中,所述文件索引信息包括文件标识与数据文件的对应关系,所述数据文件是根据原始数据文件进行二进制编码后生成的,所述数据文件包括数据描述信息以及至少一个二进制数据行,所述二进制数据行包括至少一个二进制数据字段,所述数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;
根据所述文件索引信息,读取与所述待查询文件标识对应的目标数据文件;
根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取原始数据文件,其中,所述原始数据文件包括表头信息和至少一个原始数据行;
对所述原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件;
根据所述原始数据文件的数据描述信息与所述中间数据文件结合生成所述目标数据文件;
在所述文件索引信息中添加所述目标数据文件的索引信息。
3.根据权利要求2所述的方法,其特征在于,所述对所述原始数据文件中的数据进行解析和二进制转换处理,得到中间数据文件,包括:
通过编辑器接收数据导入指令;
响应于所述数据导入指令,对所述原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,其中,每个原始数据行对应于一个二进制数据行,所述原始数据行中的每个数据值对应于一个二进制数据字段;
将所述至少一个二进制数据行合并生成中间数据文件。
4.根据权利要求3所述的方法,其特征在于,所述对所述原始数据文件中的至少一个原始数据行进行二进制编码,得到至少一个二进制数据行,包括:
对于所述原始数据行中的每个数据值,根据所述数据值的数据类型和在所述原始数据行中的序列顺序,计算所述数据值的数据头;
对所述数据头和所述数据值进行二进制编码,得到二进制数据字段;
将所述二进制数据字段按照所述序列顺序组合为二进制序列;
对所述二进制序列的数据长度信息进行二进制编码,并将编码结果与所述二进制序列合并,生成所述数据值对应的二进制数据行。
5.根据权利要求2所述的方法,其特征在于,所述根据所述原始数据文件的数据描述信息与所述中间数据文件结合生成所述目标数据文件,包括:
通过编辑器接收描述信息生成指令;
响应于所述描述信息生成指令,对所述原始数据文件中的表头信息进行解析,得到至少一个数据标识;
根据所述中间数据文件中二进制数据行的主键数据以及所述二进制数据行的起始地址和数据长度,确定所述二进制数据行的地址映射信息;
根据所述至少一个数据标识与所述二进制数据行中二进制数据字段的映射关系,确定所述二进制数据字段的数据映射信息;
根据所述地址映射信息、所述数据映射信息以及所述中间数据文件,生成所述目标数据文件。
6.根据权利要求2所述的方法,其特征在于,所述获取原始数据文件,包括:
通过编辑器接收文件导入指令;
响应于所述文件导入指令,根据预设的待处理文件列表获取待处理文件;
对所述待处理文件中的数据表进行拆分,得到原始数据文件。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述待查询数据标识包括待查询主键以及待查询字段标识;所述根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段,包括:
从所述数据描述信息中查找所述待查询主键对应的起始地址以及数据长度;
根据所述待查询主键对应的起始地址以及数据长度,从所述目标数据文件中读取所述目标二进制数据行;
根据所述目标数据文件的数据描述信息,从所述目标二进制数据行中获取与所述待查询字段标识对应的所述目标二进制数据字段。
8.一种数据查询装置,其特征在于,包括:
指令获取模块,用于获取数据查询指令,其中,所述数据查询指令包括待查询数据对应的待查询文件标识和待查询数据标识;
索引信息获取模块,用于响应于所述数据查询指令,获取文件索引信息,其中,所述文件索引信息包括文件标识与数据文件的对应关系,所述数据文件是根据原始数据文件进行二进制编码后生成的,所述数据文件包括数据描述信息以及至少一个二进制数据行,所述二进制数据行包括至少一个二进制数据字段,所述数据描述信息用于指示数据标识与二进制数据字段之间的对应关系;
文件读取模块,用于根据所述文件索引信息,读取与所述待查询文件标识对应的目标数据文件;
字段获取模块,用于根据所述目标数据文件的数据描述信息,从所述目标数据文件的目标二进制数据行中获取与所述待查询数据标识对应的目标二进制数据字段。
9.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7中任意一项所述的数据查询的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据查询的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437274.7A CN115237853A (zh) | 2021-04-22 | 2021-04-22 | 数据查询的方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437274.7A CN115237853A (zh) | 2021-04-22 | 2021-04-22 | 数据查询的方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237853A true CN115237853A (zh) | 2022-10-25 |
Family
ID=83666313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110437274.7A Pending CN115237853A (zh) | 2021-04-22 | 2021-04-22 | 数据查询的方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237853A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115604365A (zh) * | 2022-11-15 | 2023-01-13 | 南京芯传汇电子科技有限公司(Cn) | 数据编解码方法、装置、电子设备及可读存储介质 |
CN116627568A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602A (zh) * | 2023-05-25 | 2023-09-29 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
CN116933298A (zh) * | 2023-09-18 | 2023-10-24 | 广东省科技基础条件平台中心 | 一种科技成果数据加密处理方法、装置、存储介质及设备 |
-
2021
- 2021-04-22 CN CN202110437274.7A patent/CN115237853A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115604365A (zh) * | 2022-11-15 | 2023-01-13 | 南京芯传汇电子科技有限公司(Cn) | 数据编解码方法、装置、电子设备及可读存储介质 |
CN115604365B (zh) * | 2022-11-15 | 2023-03-10 | 南京芯传汇电子科技有限公司 | 数据编解码方法、装置、电子设备及可读存储介质 |
CN116627568A (zh) * | 2023-05-25 | 2023-08-22 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602A (zh) * | 2023-05-25 | 2023-09-29 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
CN116627568B (zh) * | 2023-05-25 | 2024-02-20 | 成都融见软件科技有限公司 | 一种数据可视化定位*** |
CN116820602B (zh) * | 2023-05-25 | 2024-04-26 | 成都融见软件科技有限公司 | 一种数据库部分加载*** |
CN116933298A (zh) * | 2023-09-18 | 2023-10-24 | 广东省科技基础条件平台中心 | 一种科技成果数据加密处理方法、装置、存储介质及设备 |
CN116933298B (zh) * | 2023-09-18 | 2024-02-09 | 广东省科技基础条件平台中心 | 一种科技成果数据加密处理方法、装置、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115237853A (zh) | 数据查询的方法、装置、电子设备和存储介质 | |
CN111414407A (zh) | 数据库的数据查询方法、装置、计算机设备及存储介质 | |
US20240012641A1 (en) | Model construction method and apparatus, and medium and electronic device | |
CN108733317B (zh) | 数据存储方法和装置 | |
CN111797351A (zh) | 页面数据管理方法、装置、电子设备及介质 | |
CN112070608B (zh) | 信息处理方法、装置、介质及电子设备 | |
CN113377373A (zh) | 基于解析引擎的页面加载方法、装置、计算机设备及介质 | |
CN111881209A (zh) | 异构数据库的数据同步方法、装置、电子设备及介质 | |
CN112256772A (zh) | 数据服务方法、装置以及可读存储介质 | |
CN115660880A (zh) | 费用计算管理方法、装置、电子设备、存储介质及产品 | |
US9934292B2 (en) | Dynamic presentation of a results set by a form-based software application | |
CN116360769A (zh) | 代码生成方法、装置、设备及存储介质 | |
EP4120096A1 (en) | Method and device for data retrieval, electronic device, and storage medium | |
CN112765280B (zh) | 区块数据存储方法、装置、计算机可读介质及电子设备 | |
CN114625407A (zh) | 一种ab实验的实现方法、***、设备及存储介质 | |
CN112434062A (zh) | 准实时数据处理方法、装置、服务器及存储介质 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
CN112416875B (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
US20130097622A1 (en) | Framework for system communication for handling data | |
CN115437906A (zh) | 测试方法和装置 | |
CN110309062A (zh) | 用例生成方法、装置、电子设备及存储介质 | |
CN116861455B (zh) | 事件数据处理方法、***、电子设备及存储介质 | |
CN115187338A (zh) | 一种涉及nft的抵押方法及其装置 | |
CN116702218A (zh) | 小程序中三维模型的渲染方法、装置、终端及存储介质 | |
CN116541010A (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 |