一种数据存储的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据存储的方法和装置。
背景技术
关系型数据库管理系统MYSQL以它高可用性和存储稳定性受到了越来越多企业的青睐,企业将大量业务数据存储到MYSQL数据库服务器中。现有存储数据文件的方式中,可以将数据文件以二进制格式进行存储,也可以将数据文件以JSON格式存储。其中,JSON数据格式相对于二进制格式更容易解析和生成,并且网络传输效率也更高;二进制格式相对于JSON格式更稳定,不易篡改和丢失。
当服务器将数据文件以二进制格式进行存储,查询数据文件时,需要对二进制格式进行解析,当数据文件过大,服务器需要对大量的二进制进行解析,这会加重服务器的数据处理量,使得服务器的运行速度降低。当服务器将数据文件以JSON格式进行存储,数据文件的稳定性不强,容易导致数据文件被篡改或者丢失。因此,如何对数据文件进行存储是目前亟待解决的问题。
发明内容
本申请实施例提供一种数据存储的方法及装置,以JSON数据格式存储数据文件,服务器可以快速转换数据文件格式,更快向客户端发送数据文件。
第一方面,本发明实施例提供了一种数据存储的方法,该方法包括:第一服务器接收客户端发送的存储指令,存储指令用于指示所述第一服务器对第一数据文件进行存储,存储指令携带所述第一数据文件;第一服务器判断所述第一数据文件的数据量是否大于或等于预设阈值;若第一数据文件的数据量大于或等于所述预设阈值,第一服务器将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库;第一服务器接收客户端发送的第第一查询请求,第一查询请求用于请求获取所述第一数据文件;第一服务器根据第一查询请求将JSON数据格式的第一数据文件转换为第一数据格式的第一数据文件;第一服务器将所述第一数据格式的所述第一数据文件发送给所述客户端。
实施本发明实施例,当需要存储的数据文件过大,服务器将数据文件以JSON的数据格式存储在数据库,使得客户端查询数据文件时,服务器易于解析JSON格式的数据文件,服务器更快速的向客户端发送数据文件,有效提高了客户端获取数据文件的速度。
可选的,若第一数据文件的数据量大于或等于预设阈值,第一服务器将第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
实施本发明实施例,服务器将数据文件以JSON格式存储在数据库,服务器快速的向终端发送数据文件,有效提高了终端查询数据文件的速度;服务器将数据文件以二进制数据格式对数据文件进行存储,由于二进制格式不易被篡改和丢失,所以有效保障数据文件存储的稳定性。
可选的,若第一数据文件的数据量小于预设阈值,第一服务器将第一数据文件由第一数据格式转换为二进制数据格式存储至所述第二数据库。
实施本发明实施例,当数据文件较小,数据格式转化为二进制格式的二进制代码也较少,因此将数据量较小的数据文件以二进制格式存储至数据库,即可以保障数据文件的查询速度,也可以保障数据文件的稳定性。
可选的,第一服务器为服务器集群中的一台服务器,服务器集群包括多台服务器,所述方法还包括:
第一服务器将所述存储指令发送给所述服务器集群中的服务器;第一服务器接收服务器集群中各个服务器发送的存储结果,存储结果用于指示服务器集群中的各个服务器是否成功将所述第一数据文件存储成功。
实施本发明实施例,服务器将存储指令发送给服务器集群中的各个服务器,可以快速通知服务器集群中的服务器对第一数据文件进行存储,并且及时得到各个服务器的存储结果。
可选的,第一服务器根据第一查询请求从第一数据库中查询是否存在第一数据文件;
若存在,第一服务器将JSON数据格式的第一数据文件转换为格式为第一数据格式的第一数据文件,将第一数据格式的第一数据文件发送给客户端;
若不存在,第一服务器将二进制数据格式的第一数据文件转换为格式为第一数据格式的第一数据文件,将第一数据格式的第一数据文件发送给客户端。
具体的,服务器根据第一数据文件的标识首先从以JSON格式存储数据文件的第一数据库查找数据文件,如果在第一数据库没有查找到数据文件,然后从以二进制格式存储数据文件的第二数据库查找数据文件,将查找到的数据文件转化为第一数据格式发送给客户端。
实施本发明实施例,服务器首先从以JSON数据格式存储数据文件的第一服务器中查找数据文件,然后对数据文件进行格式解析,由于JSON数据格式服务器解析更快,因此服务器的解析速度更快,从而更快的将数据文件发送给客户端。
可选的,若第一数据文件为N个数据文件,N>1且为整数,第一服务器获取客户端发送的第一查询请求之后,还包括:
第一服务器向服务器集群中的第二服务器发送第二查询请求,第二查询请求用于请求获取所述N个数据文件中的M个数据文件,1≤M<N且为整数;
第一服务器从第一数据库或所述第二数据库中获取N个数据文件中除M个数据文件以外的数据文件,并且将N个数据文件中除M个数据文件以外的数据文件发送给客户端。
可选的,第二服务器可以是服务器集群中的一个服务器,也可以是多个服务器。
具体的,第一服务器接收针对N个数据文件的查询请求,第一服务器将N个数据文件中的M个数据文件的查询请求发送给第二服务器,第二服务器从数据库查找M个数据文件发送给客户端,第一服务器查询除了N个数据文件中除了M个数据文件以外其他的数据文件,然后将这除了N个数据文件中除了M个数据文件以外其他的数据文件发送给客户端。
实施本发明实施例,服务器将针对N个文件中的M个数据文件的查询请求发送给服务器集群中的其他服务器,异步执行查询操作,避免了在单个服务器上同步查询数据文件,可以更快将N个数据文件返回给客户端。
第二方面,本发明实施例提供了一种数据存储的方法,包括:
第二服务器接收第一服务器发送的存储指令,存储指令用于指示第二服务器对第一数据文件进行存储,所述存储指令携带所述第一数据文件;
第二服务器判断第一数据文件的数据量是否大于或等于预设阈值;
若第一数据文件的数据量大于或等于所述预设阈值,第二服务器将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库。
实施本发明实施例,当需要存储的数据文件过大,服务器将数据文件以JSON的数据格式存储在数据库,使得客户端查询数据文件时,服务器易于解析JSON格式的数据文件,服务器快速的向终端发送数据文件,有效提高了终端查询数据文件的速度。
可选的,第二服务器判断所述第一数据文件的数据量大于或等于预设阈值之后,所述方法还包括:
第二服务器将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,第二服务器判断所述第一数据文件的数据量小于预设阈值之后,所述方法还包括:
第二服务器将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,第二服务器将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库之后,还包括:
第二服务器接收第一服务器发送的第二查询请求,所述第二查询请求用于请求获取M个数据文件;
第二服务器根据第二查询请求判断第一数据库是否存在M个数据文件;
若存在,第二服务器将JSON数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端;
若不存在,第二服务器从第二数据库查找M个数据文件,将二进制数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端。
实施本发明实施例,服务器首先从以JSON数据格式存储数据文件的第一服务器中查找数据文件,然后对数据文件进行格式解析,由于JSON数据格式服务器解析更快,因此服务器的解析速度更快,从而更快的将数据文件发送给客户端。
第三方面,本申请实施例提供了一种数据存储装置,包括:
第一接收单元,用于接收客户端发送的存储指令,所述存储指令用于指示所述第一服务器对第一数据文件进行存储,所述存储指令携带所述第一数据文件;
判断单元,用于判断所述第一数据文件的数据量是否大于或等于预设阈值;
第一存储单元,用于若第一数据文件的数据量大于或等于所述预设阈值,将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库;
第二接收单元,用于接收所述客户端发送的第第一查询请求,所述第一查询请求用于请求获取所述第一数据文件;
第一转换单元,用于将格式为JSON数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件;
第一发送单元,用于根据所述第一查询请求将格式为所述第一数据格式的所述第一数据文件发送给所述客户端。
可选的,若所述第一数据文件的数据量大于或等于所述预设阈值,所述装置还包括:
第二存储单元,用于将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,若所述第一数据文件的数据量小于所述预设阈值,所述装置还包括:
第三存储单元,用于将所述第一数据文件由第一数据格式转换为二进制数据格式存储至所述第二数据库。
可选的,所述第一服务器为服务器集群中的一台服务器,所述服务器集群包括多台服务器,所述装置还包括:
第二发送单元,用于将所述存储指令发送给所述服务器集群中的服务器;
第三接收单元,用于接收所述服务器集群中各个服务器发送的存储结果,所述存储结果用于指示所述服务器集群中的各个服务器是否成功将所述第一数据文件存储成功。
可选的,所述装置还包括:
查询单元,用于根据所述第一查询请求从所述第一数据库中查询是否存在所述第一数据文件;
第三发送单元,用于所述查询单元在第一数据库中查询到所述第一数据文件之后,将所述JSON数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件,将所述第一数据格式的所述第一数据文件发送给所述客户端;
第四发送单元,用于所述查询单元在第一数据库中没有查询到所述第一数据文件之后,将所述二进制数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件,将所述第一数据格式的所述第一数据文件发送给所述客户端。
可选的,若所述第一数据文件为N个数据文件,所述N>1且为整数,所述装置还包括:
第五发送单元,用于向所述服务器集群中的第二服务器发送第二查询请求,所述第二查询请求用于请求获取所述N个数据文件中的M个数据文件,所述1≤M<N且为整数;
获取单元,用于从所述第一数据库或所述第二数据库中获取所述N个数据文件中除所述M个数据文件以外的数据文件,并且将所述N个数据文件中除所述M个数据文件以外的数据文件发送给所述客户端。
第三方面,本发明实施例提供了一种数据存储装置,包括:
第一接收单元,用于接收第一服务器发送的存储指令,存储指令用于指示第二服务器对第一数据文件进行存储,所述存储指令携带所述第一数据文件;
判断单元,用于判断第一数据文件的数据量是否大于或等于预设阈值;
第一存储单元,用于若第一数据文件的数据量大于或等于所述预设阈值,将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库。
可选的,所述装置还包括:
第二存储单元,用于若第一数据文件的数据量大于或等于预设阈值,将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,所述装置还包括:
第三存储单元,用于若第一数据文件的数据量小于预设阈值,将第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,所述装置还包括:
第二接收单元,用于接收第一服务器发送的第二查询请求,所述第二查询请求用于请求获取M个数据文件;
第二判断单元,用于判断第一数据库是否存在M个数据文件;
第一发送单元,用于第二判断单元判断M个数据文件在第一数据库之后,将JSON数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端;
第二发送单元,用于第二判断单元判断M个数据文件不在第一数据库之后,从第二数据库查找M个数据文件,将二进制数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端。
第五方面,本申请实施例提供了一种服务器,用于执行第一方面所提供的的方法。该服务器可包括:处理器、通信接口和存储器,处理器、通信接口和存储器相互连接。其中,通信接口用于与其它网络设备(例如终端)进行通信,存储器用于存储第一方面所提供的维修方案提供的方法的实现代码,处理器用于执行存储器中存储的程序代码,即执行第一方面所提供的数据存储的方法。
第六方面,本申请实施例提供了一种服务器,用于执行第二方面所提供的的方法。该服务器可包括:处理器、通信接口和存储器,处理器、通信接口和存储器相互连接。其中,通信接口用于与其它网络设备(例如终端)进行通信,存储器用于存储第一方面所提供的维修方案提供的方法的实现代码,处理器用于执行存储器中存储的程序代码,即执行第二方面所提供的数据存储的方法。
第七方面,本申请实施例还提供了一种通信系统,包括:第一服务器和至少一个第二服务器。其中,第一服务器可以是第三方面描述的装置或第五方面描述的服务器,第二服务器可以是第四方面描述的装置或第六方面描述的服务器。
第八方面,本申请实施例提供一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第一方面描述的数据存储的方法。
第九方面,本申请实施例提供一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第二方面描述的数据存储的方法。
第十方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第一方面描述的数据存储的方法。
第十一方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第二方面描述的数据存储的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中的一种通信系统架构示意图;
图2为一个实施例中的一种服务器的结构示意图;
图3为一个实施例中的一种终端的结构示意图;
图4为一个实施例中的一种数据存储方法流程示意图;
图5为一个实施例中的另一种数据存储方法流程示意图;
图6为一个实施例中的另一种数据存储方法流程示意图;
图7为一个实施例中的另一种数据存储方法流程示意图;
图8为一个实施例中的一种的数据存储装置结构示意图;
图9为一个实施例中的另一种的数据存储装置结构示意图。
具体实施方式
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
请参见图1,图1是本申请实施例涉及的一种通信系统的架构示意图,该通信系统包括终端和服务器集群。服务器集群包括多台服务器,其中终端与服务器集群中的服务器通过互联网相互通信。本申请实施例中提及的终端例如可为手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备或其他移动终端。
终端向服务器集群中的一台服务器,例如第一服务器发送存储指令,第一服务器接收存储指令之后根据数据文件的数据量对数据文件由第一数据格式转换为JSON数据格式或者二进制数据格式存储在数据库,然后将存储指令发送给服务器集群中的其他服务器,例如第二服务器,第二服务器同样的根据数据文件的数据量对数据文件转换为JSON数据格式或者二进制数据格式存储在数据库。
终端向第一服务器查询求之后,第一服务器将数据库内存储的数据文件进行各式解析转换为第一数据格式之后,发送给终端。
其中,存储指令和查询请求可以是通过网站、APP或者其他方式输入,本申请不做限定。
请参见图2,图2示出了本申请实施例提供的一种服务器,该服务器200可包括:存储器201、通信接口202、和一个或多个处理器203。这些部件可通过总线204或者其他方式连接,图2以通过总线连接为例。其中:
存储器201可以和处理器203通过总线204或者输入输出端口耦合,存储器201也可以与处理器203集成在一起。存储器201用于存储各种软件程序和/或多组指令。具体的,存储器201可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器201还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个终端,一个或多个网络设备进行通信。
处理器203可以是通用处理器,例如中央处理器(central processing unit,CPU),还可以是数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。处理器203可处理通过通信接口202接收到的数据。
通信接口202用于服务器200与其他网络设备进行通信,例如终端进行通信。通信接口202可以是收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口,例如终端与服务器之间的接口。通信接口202可以包括有线接口和无线接口,例如标准接口、以太网、多机同步接口。
处理器203可用于读取和执行计算机可读指令。具体的,处理器203可用于调用存储于存储器201中的数据。可选地,当处理器203发送任何消息或数据时,其具体通过驱动或控制通信接口202做所述发送。可选地,当处理器203接收任何消息或数据时,其具体通过驱动或控制通信接口202做所述接收。因此,处理器203可以被视为是执行发送或接收的控制中心,通信接口202是发送和接收操作的具体执行者。
在本申请实施例中,通信接口202具体用于执行下述方法实施例中涉及的数据收发的步骤,处理器203具体用于实施除数据收发之外的数据处理的步骤。
需要说明的是,服务器200的结构可以是第一服务器的结构也可以是服务器集群中任一存储服务器(例如第二存储服务器)的结构。
见图3,图3示出了本申请实施例提供的一种终端,该终端可包括:一个或多个处理器301、存储器302、一个或多个输入设备303和一个或多个输出设备304。这些部件可通过总线305或者其他方式连接,图3以通过总线连接为例。其中:
处理器301可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器302可以包括只读存储器和随机存取存储器,并向处理器301提供指令和数据。存储器302的一部分还可以包括非易失性随机存取存储器。例如,存储器302还可以存储设备类型的信息。
输入设备303可以包括触控板、指纹采传感器(用于采集用户的指纹信息和指纹的方向信息)、麦克风等,输出设备304可以包括显示器(LCD等)、扬声器等。
结合图2所示的服务器和图3所示的终端,本申请实施例提供了一种数据存储的方法,参见图4,图4为本申请的一个实施例提供的一种数据存储方法的流程示意图。其中,如图4所示,本申请的一个实施例提供的一种数据存储方法可以包括:
S401,客户端向第一服务器发送存储指令,第一服务器接收存储指令,存储指令携带第一数据文件。
可选的,第一数据文件可以是一个数据文件,也可以是多个数据文件。
S402:第一服务器判断第一数据文件的数据量是否大于或等于预设阈值,若是,则执行步骤S403。
例如,第一数据文件的数据量1G,预设阈值为1G,则第一数据文件满足大于或等于预设阈值的条件,执行步骤S402。
具体的,预设阈值根据实际需求而定,本发明实施例对此不做限定。
S403:第一服务器将第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库。
可选的,一台服务器可以承载不同数据格式存储数据的数据库,服务器可以将数据以JSON数据格式存储第一数据文件,也可以以二进制数据格式存储第一数据文件。
具体的,客户端将第一数据文件以数据报文的格式发送给第一服务器,第一服务器对数据报文解析后,得到第一数据格式的第一数据文件,第一数据格式针对不同的数据文件有不同的数据格式,例如JAVA对象数据文件的第一数据格式为字段格式,文档数据文件的第一数据格式为文本格式。第一服务器将第一数据文件的第一数据格式转换为JSON格式,然后存储到第一数据库。
S406,客户端向第一服务器发送第一查询请求,第一服务器接收客户端发送的查询请求。
可选的,第一查询请求用于请求获取第一数据文件。
具体的,服务器接收客户发送的查询请求,根据第一数据文件的标识从第一数据库查询第一数据文件。
S407,第一服务器将格式为JSON数据格式的第一数据文件转换为格式为第一数据格式的第一数据文件。
例如,第一数据文件的第一数据格式为文本格式,第一数据文件以JSON格式存储在第一数据库。服务器从第一数据库查询到第一数据文件之后,将第一数据文件由JSON格式转换为文本格式,得到把文本格式的第一数据文件。
S407,第一服务器向客户端发送格式为第一数据格式的第一数据文件,客户端接收第一服务器发送的格式为第一数据格式的第一数据文件。
具体的,服务器将第一数据格式的第一数据文件以数据报文的形式发送给客户端,客户端对数据报文解析后得到第一数据格式的第一数据文件。
实施本发明实施例,当需要存储的数据文件过大,服务器将数据文件以JSON的数据格式存储在数据库,使得客户端查询数据文件时,服务器易于解析JSON格式的数据文件,服务器快速的向客户端发送数据文件,有效提高了客户端获取数据文件的速度。
在第一种可能实现的方式中,第一服务器执行步骤S402:判断第一数据文件的数据量是否大于或等于预设阈值之后,还包括步骤S407。若第一数据文件的数据量大于或等于预设阈值,执行步骤S407;若第一数据文件的数据量小于预设阈值,执行步骤S407。参见图5,图5为本发明实施例提供的又一数据存储方法的流程示意图,下面结合图5对步骤S407做详细介绍:
S407:第一服务器将第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
第一种情况中,第一数据文件的数据量大于或等于预设阈值。由于数据文件较大,由于JSON数据格式的存储方式虽然相较于二进制格式易于查询但是稳定性差,容易丢失数据文件或者数据文件容易被篡改,因此需要第一数据文件以二进制格式存储在第二数据库,便于第一数据文件以JSON格式存储丢失或备篡改后从第二数据库查找第一数据文件。
第二种情况中,第一数据文件的数据量小于预设阈值。由于数据文件较小,因此数据文件以二进制存储时对应的二进制代码较少,因此以二进制存储的查询速度跟以JSON格式存储的查询速度大体一致。因此将数据量小的数据文件以二进制进行存储,既可以保障数据文件的安全性,也保证客户端获取数据文件的速度。
实施本发明实施例,第一服务器将数据量大的数据文件以二进制格式进行存储,有效保障数据文件的安全稳定性;第一服务器将数据量小的数据文件以二进制进行存储,既可以保障数据文件的安全性,也保证客户端获取数据文件的速度。
结合第一种可能实现的方式,在第二种可能实现的方式中,第一服务器将数据文件以JSON格式存储至第一数据库或将数据文件以二进制格式存储至第一数据库之后,还包括步骤S408-S410。参见图6,图6为本发明实施例提供的又一数据存储方法的流程示意图,下面结合图5对步骤S408-S410做详细介绍:
S408,第一服务器从第一数据库中查询是否存在第一数据文件。若存在,执行步骤S405;若不存在,执行步骤S409-S410。
具体的,服务器首先从以JSON数据格式存储数据文件的第一服务器中查找数据文件,然后对数据文件进行格式解析,由于JSON数据格式服务器解析更快,因此服务器的解析速度更快,从而更快的将数据文件发送给客户端。
步骤S405请参照上述步骤S405,此处不再赘述。
S409,第一服务器从第二数据库查找第一数据文件。
具体的,第一服务器在第一数据库没有查找到第一数据文件,然后根据第一数据文件的标识在第二数据库中查找第一数据文件。
S410,第一服务器将格式为二进制数据格式的第一数据文件转换为格式为第一数据格式的第一数据文件。
具体的,第一服务器在第一数据库查找到第一数据文件之后,由于第一数据库是以二进制格式存储数据文件的,因此将格式为二进制数据格式的第一数据文件转换为格式为第一数据格式的第一数据文件。服务器将第一数据文件的数据格式转换为第一数据格式之后,将格式为第一数据格式的第一数据文件发送给客户端。
实施本发明实施例,服务器首先从以JSON数据格式存储数据文件的第一服务器中查找数据文件,再从以二进制数据格式存储数据文件的第二服务器中查找数据文件,大文件的JSON数据格式服务器解析更快,从而更快的将数据文件发送给客户端,小文件的二进制数据格式服务器解析速度跟JSON数据格式解析速度大致相同,因此有效提高了客户端获取数据文件的速度。
在第三种可能实现的方式中,若第一查询请求中的第一数据文件包括N个数据文件,N大于1且为整数,客户端向第一服务器发送查询请求之后,还包括步骤S411-S417。参见图7,图7为本发明实施例提供的又一数据存储方法的流程示意图,下面结合图7对步骤S411-S417做详细介绍:
S411,第一服务器向第二服务器发送存储指令,第二服务器接收第一服务器发送的存储指令,存储指令携带N个数据文件。
具体的,第二服务器接收存储指令后,对N个数据文件进行存储,存储步骤S412-S414与上述数据存储方法中步骤S402-S407相同,此处不再赘述。
S415,第一服务器向第二服务器发送第二查询请求,第二服务器接收第一服务器发送的第二查询请求。
可选的,第一服务器和第二服务器为服务器集群中的服务器,服务器集群包括至少两台服务器。
可选的,第一服务器接收客户端发送的存储指令,第一服务器将存储指令发送给服务器集群中的第二服务器,第二服务器接收第一服务器发送的存储指令,将存储指令携带的第一数据文件存储至数据库,存储方法参见上述数据存储方法,此处不再赘述。
具体的,第一服务器接收客户端发送的第一查询请求,第一查询请求用于请求获取N个数据文件,第一服务器向第二服务器发送第二查询请求,第二查询请求用于请求获取N个数据文件中的M个数据文件,1≤M<N,M为整数。
S412,第二服务器根据第二查询请求查询从数据库获取M个数据文件。
具体的,第二服务器从服务器获取M个数据文件的请参见上述第二方可能实现的方式中所描述发的方法,此处不再赘述。
例如,第一服务器接收的第一查询请求包括4个数据文件,分别为A、B、C和D,如由第一服务器一台服务器对着4个文件进行数据文件的格式转换,需要串行执行。若第一服务器将第二查询请求发送给第二服务器,第二查询请求包括C和D两个数据文件,则第一服务器只需要串行查询A和B两个数据文件,第二服务器需要串行查询C和D两个数据文件。若这四个文件的数据量大小相同且数据格式相同,那么第一服务器将第二查询请求发送给第二服务器的之后,第一服务器对数据文件A和B进行格式转换的时间是对数据文件A、B、C和D进行格式转换的时间的一半。
S413,第二服务器向客户端发送M个数据文件,客户端接收第二服务器发送的M个数据文件。
具体的,第二服务器查询到M个数据文件之后将M个数据文件的存储格式转换为各自对应的第一数据格式,然后发送给客户端。
同样的,第一服务器查询N个数据文件中除M个数据文件之外的其他数据文件,查询到之后将数据文件的存储格式转换为对应的第一数据格式发送给客户端。具体实现方式参照上述数据存方法中描述的方式,此处不再赘述。
实施本发明实施例,服务器将针对N个文件中的M个数据文件的查询请求发送给服务器集群中的其他服务器,异步执行查询操作,避免了在单个服务器上同步查询数据文件,可以更快将N个数据文件返回给客户端。
参见图8,图8示给出了一种数据存储装置的结构示意图,如图7所示,该维修方案提供的装置800包括:第一接收单元801,判断单元802,第一存储单元803,第二接收单元804,第一转换单元805和第一发送单元806。
其中,第一接收单元801,用于接收客户端发送的存储指令,所述存储指令用于指示所述第一服务器对第一数据文件进行存储,所述存储指令携带所述第一数据文件;判断单元802,用于判断所述第一数据文件的数据量是否大于或等于预设阈值;第一存储单元803,用于若第一数据文件的数据量大于或等于所述预设阈值,将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库;第二接收单元804,用于接收所述客户端发送的第第一查询请求,所述第一查询请求用于请求获取所述第一数据文件;第一转换单元805,用于将格式为JSON数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件;第一发送单元806,用于根据所述第一查询请求将格式为所述第一数据格式的所述第一数据文件发送给所述客户端。
可选的,若所述第一数据文件的数据量大于或等于所述预设阈值,所述装置还包括:第二存储单元,用于将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,若所述第一数据文件的数据量小于所述预设阈值,所述装置还包括:第三存储单元,用于将所述第一数据文件由第一数据格式转换为二进制数据格式存储至所述第二数据库。
可选的,所述第一服务器为服务器集群中的一台服务器,所述服务器集群包括多台服务器,所述装置还包括:
第二发送单元,用于将所述存储指令发送给所述服务器集群中的服务器;
第三接收单元,用于接收所述服务器集群中各个服务器发送的存储结果,所述存储结果用于指示所述服务器集群中的各个服务器是否成功将所述第一数据文件存储成功。
可选的,所述装置还包括:
查询单元,用于根据所述第一查询请求从所述第一数据库中查询是否存在所述第一数据文件;
第三发送单元,用于所述查询单元在第一数据库中查询到所述第一数据文件之后,将所述JSON数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件,将所述第一数据格式的所述第一数据文件发送给所述客户端;
第四发送单元,用于所述查询单元在第一数据库中没有查询到所述第一数据文件之后,将所述二进制数据格式的所述第一数据文件转换为格式为所述第一数据格式的所述第一数据文件,将所述第一数据格式的所述第一数据文件发送给所述客户端。
可选的,若所述第一数据文件为N个数据文件,所述N>1且为整数,所述装置还包括:
第五发送单元,用于向所述服务器集群中的第二服务器发送第二查询请求,所述第二查询请求用于请求获取所述N个数据文件中的M个数据文件,所述1≤M<N且为整数;
获取单元,用于从所述第一数据库或所述第二数据库中获取所述N个数据文件中除所述M个数据文件以外的数据文件,并且将所述N个数据文件中除所述M个数据文件以外的数据文件发送给所述客户端。
参见图9,图9示给出了另一种数据存储装置的结构示意图,如图9所示,该维修方案提供的装置900包括:第一接收单元901、判断单元902和第一存储单元903。
其中,第一接收单元901,用于接收第一服务器发送的存储指令,存储指令用于指示第二服务器对第一数据文件进行存储,所述存储指令携带所述第一数据文件;判断单元902,用于判断第一数据文件的数据量是否大于或等于预设阈值;第一存储单元903,用于若第一数据文件的数据量大于或等于所述预设阈值,将所述第一数据文件由第一数据格式转换为JSON数据格式存储至第一数据库。
可选的,所述装置还包括:
第二存储单元,用于若第一数据文件的数据量大于或等于预设阈值,将所述第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,所述装置还包括:
第三存储单元,用于若第一数据文件的数据量小于预设阈值,将第一数据文件由第一数据格式转换为二进制数据格式存储至第二数据库。
可选的,所述装置还包括:
第二接收单元,用于接收第一服务器发送的第二查询请求,所述第二查询请求用于请求获取M个数据文件;
第二判断单元,用于判断第一数据库是否存在M个数据文件;
第一发送单元,用于第二判断单元判断M个数据文件在第一数据库之后,将JSON数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端;
第二发送单元,用于第二判断单元判断M个数据文件不在第一数据库之后,从第二数据库查找M个数据文件,将二进制数据格式的M数据文件转换为格式为第一数据格式的M个数据文件,将格式转换后的M个数据文件发送个客户端。
在本申请的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如数字多功能光盘(digital versatile disc,DVD)、半导体介质(例如固态硬盘solid state disk,SSD)等。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明实施例的保护范围,凡在本发明实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明实施例的保护范围之内。