有鉴于此,本发明
实施例提供了一种存储数据的方法及系统,以实现方便高效的存取数据。
为了实现上述目的,本发明实施例提供了如下技术方案:
一种存储数据的方法,包括:
存储
服务器接收到数据后,根据数据种类和数据的时间信息确定数据的存储目录;将数据以数据文件的形式存储,所述数据文件的文件名中包括有时间信息;
存储服务器接收到查询
请求后,根据请求查询的数据种类和时间信息查询数据文件并将查询到的数据文件放到一个文件列表中;
根据资源或配置创建多个读取线程来依次从列表中提取数据文件,读取数据文件中的数据。
优选的,本发明实施例中,还包括:
用于存储数据的存储服务器中包括由多个磁盘
驱动器组成的磁盘阵列,预先对所述磁盘阵列进行逻辑分区;
存储服务器接收到数据后,为每种所述数据启动一个
进程,进程启动时为本服务器中用于存储数据的每个逻辑分区创建线程;根据对应所述存储数据的逻辑分区、数据的时间信息和数据种类确定数据的存储目录;将数据以数据文件的形式存储,所述数据文件的文件名中包括有时间信息。
优选的,本发明实施例中,还包括:
存储数据前,策略服务器将需要存储的数据按设定策略分发给存储服务器;
存储服务器查询数据前,负载均衡器接收查询请求,根据各
接口服务器的负载情况确定用于执行查询任务的接口服务器;
执行查询任务的接口服务器根据查询请求数据的种类在策略服务器上查询保存了该种类数据的存储服务器,并向所述存储服务器发送查询请求。
优选的,本发明实施例中,还包括:
在进行逻辑分区后,在每一个逻辑分区内按设定规则建立多级文件目录;
建立数据文件的划分规则,使存储的数据文件的大小在设定的范围内;
存储数据时,存储服务器存储数据前,先分析数据并根据多级目录的建立规则确定存储目录;
为经过设定时间的存储数据文件建立索引;
存储服务器查询数据采用分段多线程并发技术来扫描索引和数据文件的路径。
优选的,本发明实施例中,所述建立索引为建立多级索引。
优选的,本发明实施例中,还包括步骤:索引建立后,定时更新索引。
优选的,本发明实施例中,所述按设定规则建立多级文件目录为:
建立一级目录,一级目录中包括正常数据和延迟数据两个文件目录;
正常数据目录用于存储在设定时间范围内能够到达存储系统的数据;延迟数据目录用于存储超过设定时间到达系统的数据;
在每个一级目录中建立相同的二级目录;二级目录为各种业务的文件目录,数据按业务类别分类,每种业务的数据存于与之对应的二级目录下;
每个二级目录中建立相同的三级目录;三级目录按月份分为12个文件目录,三级目录用于将数据按照存储的月份存储数据;
存储数据时,所述根据多级目录的建立规则确定存储目录为:
跟当前时间比较,确定是需要存入正常数据目录还是延迟数据目录;根据业务种类判断需要存入那种业务目录;
根据当前月份判断需要存入哪个月的目录;
根据预先建立的划分文件规则划分确定文件名,将数据写入文件;
所述创建索引具体为:
索引包括与数据文件对应的索引、对多个索引文件进行汇总的汇总索引和多级索引。
优选的,本发明实施例中,还包括步骤:
根据数据的存储要求定义各种业务需保留的时间,当磁盘空间低于配置的设定值时以数据文件为单位删除超过保留时间的数据。
优选的,本发明实施例中,还包括步骤:当现有的磁盘空间不能满足存储需求时增加磁盘分区。
一种存储数据的系统,包括,
在逻辑结构上设有:
用于存储业务数据存储的服务器;
用于将数据按设定策略分发给存储服务器的策略服务器;
用于执行查询任务的接口服务器;
用于对接口服务器均衡负载的负载均衡器;
在所述存储服务器中的多个磁盘驱动器上根据需要进行逻辑分区;
存储服务器为每种需要存储的业务数据启动一个进程,进程启动时会根据本服务器用于存储数据的磁盘分区数量创建若干线程;每个线程根据对应的磁盘分区和业务确定存储目录,每个线程通过数据分流技术均匀分担本业务数据的处理;
负载均衡器收到查询请求时,确定接口服务器;查询请求向所述接口服务器发出查询请求;
接口服务器根据请求的业务在策略服务器上查询保存了该业务的数据的存储服务器,并向所述存储服务器发送查询请求;
存储服务器接到查询请求后查询文件并将其放到一个文件列表中,并根据资源或配置创建多个读取线程,每个读取线程依次从队列中提取文件,读取文件中的数据。
在本发明实施例中,通过在磁盘阵列中划分多个逻辑分区,并使用多线程分别对不同的分区进行读写,从而提高了对IO带宽的利用。因为IO通常是存储时的
瓶颈所在,所以提高了对IO带宽的利用也就提高了存储服务器的数据吞吐能
力。并且,本发明实施例中,以数据文件的形式存储和取出数据,数据在存储和传输时采用的是相同的格式,不需要格式转换,所以节省了数据转换的步骤,提高了数据的存取效率。而且,本发明实施例中,通过将查询条件下发到存储服务器,由存储服务器执行查询任务获取所需数据文件,网络只传输所需数据文件,从而减少数据传输量,提高效率。避免了现有技术中,使用云计算系统时先读取全部数据然后再经查询过滤方案,从而造成的需要传输大量数据带来的网络拥塞问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中所述方法的步骤
流程图;
图2为本发明又一实施例中所述方法的步骤流程图;
图3为本发明又一实施例中所述方法的步骤流程图;
图4为本发明实施例中所述系统的组成示意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种存储数据的方法,以实现高效的存储数据以及高效的查询数据,如图1所示,具体步骤如下:
S11、在用于存储数据的存储服务器中的多个磁盘驱动器上根据需要进行逻辑分区;
在实际应用中,一般会根据需要存储的数据量及服务器的处理能力,配置多个磁盘驱动器,通过组成磁盘阵列并在所述磁盘阵列上进行逻辑分区以提高对数据的读写速度。而且,使用多个磁盘驱动器组成的磁盘阵列上进行逻辑分区可以不受单个磁盘的容量限制,可以极大的提高存储服务器的数据容量。
S12、数据存储时,在存储服务器接收到数据后,为每种所述数据启动一个进程,进程启动时为本服务器中用于存储数据的每个逻辑分区创建线程;每个线程根据对应所述存储数据的逻辑分区和数据种类确定数据的存储目录;将数据以数据文件的形式存储,所述数据文件的文件名中包括有时间信息;
在本发明实施例中,通过划分多个逻辑分区,并使用多线程分别对不同的逻辑分区进行读写,从而提高了对IO带宽的利用。因为IO通常是存储时的瓶颈所在,所以提高了对IO带宽的利用也就提高了存储服务器的数据吞吐能力。在现有技术中的存储技术,例如数据库,在数据存储和传输中使用的不同的数据格式(编码),这样在接受到存储需要做数据格式转换,在查询到返回时还需要数据格式转换。在本发明实施例中,采用文件存储的方式,数据在存储和传输时采用的是相同的格式,不需要格式转换,所以节省了数据转换的步骤,提高了数据的存取效率。
另外,通过以包括有时间信息的名称命名数据文件的方案使得在查询数据时可以以时间为查询条件,方便高效的查询所需数据。
S13、数据查询时,存储服务器接到查询请求后,根据数据文件的文件名中包括有的时间信息查询数据文件并将查询到的数据文件放到一个文件列表中,并根据资源或配置创建多个读取线程来依次从列表中提取数据文件,读取数据文件中的数据。
在本发明实施例中,通过将查询条件下发到存储服务器,存储服务器执行查询任务并获取所需数据文件,网络只传输所需数据文件,从而减少数据传输量,提高效率。避免了现有技术中,使用云计算系统时先读取全部数据然后再经查询过滤方案,从而造成的需要传输大量数据带来的网络拥塞问题。
在另一实施例中,如图2所示,还可以包括有以下步骤:
S21、为用于存储数据的存储服务器中的多个磁盘驱动器上根据需要进行逻辑分区;
在实际应用中,一般会根据需要存储的数据量及服务器的处理能力,配置多个磁盘驱动器,通过组成磁盘阵列并在所述磁盘阵列上进行逻辑分区以提高对数据的读写速度。而且,使用多个磁盘驱动器组成的磁盘阵列上进行逻辑分区可以不受单个磁盘的容量限制,可以极大的提高存储服务器的数据容量。
S22、数据存储前,使用策略服务器将需要存储的数据按设定策略分发给存储服务器;
在本发明实施例中,在将数据存储到存储服务器前,先使用策略服务器将需要存储的数据按设定策略分发给存储服务器;所述设定策略通常是按服务器的存储和处理能力按比例分配,这样可以保证所有中存储数据的存储服务器的负载保持均衡。
S23、数据存储时,在存储服务器接收到数据后,为每种所述数据启动一个进程,进程启动时为本服务器中用于存储数据的每个逻辑分区创建线程;每个线程根据对应所述存储数据的逻辑分区和数据种类确定数据的存储目录;将数据以数据文件的形式存储,所述数据文件的文件名中包括有时间信息;
在本发明实施例中,通过划分多个逻辑分区,并使用多线程分别对不同的逻辑分区进行读写,从而提高了对IO带宽的利用。因为IO通常是存储时的瓶颈所在,所以提高了对IO带宽的利用也就提高了存储服务器的数据吞吐能力。
S24、数据查询前,先使用负载均衡器接收查询请求,根据各接口服务器的负载情况确定用于执行查询任务的接口服务器,从而起到了均衡各接口服务器负载的作用。
S25、执行查询任务的接口服务器根据查询请求数据的种类在策略服务器上查询保存了该种类数据的存储服务器,并向所述存储服务器发送查询请求。
S26、数据查询时,存储服务器接到查询请求后,根据数据文件的文件名中包括有的时间信息查询数据文件并将查询到的数据文件放到一个文件列表中,并根据资源或配置创建多个读取线程来依次从列表中提取数据文件,读取数据文件中的数据。在本发明实施例中,通过将查询条件下发到存储服务器,由存储服务器执行查询任务并获取所需数据文件,网络只传输所需数据文件,从而减少数据传输量,提高效率。避免了现有技术中,使用云计算系统时先读取全部数据然后再经查询过滤方案,从而造成的需要传输大量数据带来的网络拥塞问题。
另外,通过采用多线程读取数据,提高了存储服务器对数据的读取速度,提高了存储服务器的工作效率。
在另一发明实施例中,如图3所示,还可以包括以下步骤:
S31、为用于存储数据的存储服务器中的多个磁盘驱动器上根据需要进行逻辑分区;
在实际应用中,一般会根据需要存储的数据量及服务器的处理能力,配置多个磁盘驱动器,通过组成磁盘阵列并在所述磁盘阵列上进行逻辑分区以提高对数据的读写速度。而且,使用多个磁盘驱动器组成的磁盘阵列上进行逻辑分区可以不受单个磁盘的容量限制,可以极大的提高存储服务器的数据容量。
S32、在每一个逻辑分区内按设定规则建立多级文件目录;
所述按设定规则建立多级文件目录为:
建立一级目录,一级目录中包括正常数据和延迟数据两个文件目录;
正常数据目录用于存储在设定时间范围内能够到达存储系统的数据;延迟数据目录用于存储超过设定时间到达系统的数据;
在每个一级目录中建立相同的二级目录;二级目录为各种业务的文件目录,数据按业务类别分类,每种业务的数据存于与之对应的二级目录下;
每个二级目录中建立相同的三级目录;三级目录按月份分为12个文件目录,三级目录用于将数据按照存储的月份存储数据。
通过按设定的规则建立目录,使存储数据可以按设定规则分类存储,从而可以为存储数据建立相应索引,进而方便了数据的查询。在本发明实施例中,存储数据采用了多级目录,从而保证了各个目录下的文件不会太多,保证了检索文件的效率。同时也为移动或备份数据提供了方便,当我们需要某种数据的时候,仅需要拷贝一个目录而不是在很多文件中去查找。
S33、建立数据文件的划分规则,使数据文件的大小在设定的范围内;根据数据量可以有按小时、按天、按周、按月等划分方式,保证一个数据文件不会过大。也不能造成大量的小文件,太多的小文件会影响查询效率。
在现有技术中的存储技术,例如数据库,在数据存储和传输中使用的不同的数据格式(编码),这样在接受到存储需要做数据格式转换,在查询到返回时还需要数据格式转换。在本发明实施例中,采用文件存储的方式,数据在存储和传输时采用的是相同的格式,不需要格式转换,所以节省了数据转换的步骤,提高了数据的存取效率。
S34、数据存储前,使用策略服务器将需要存储的数据按设定策略分发给存储服务器;
在本发明实施例中,在将数据存储到存储服务器前,先使用策略服务器将需要存储的数据按设定策略分发给存储服务器;所述设定策略通常是按服务器的存储和处理能力按比例分配,这样可以保证所有中存储数据的存储服务器的负载保持均衡。
S35、存储数据时,在存储服务器接收到需要存储的数据后,为每种所述数据启动一个进程,进程启动时为本服务器中用于存储数据的每个逻辑分区创建线程;线程根据多级目录的建立规则确定存储目录;将数据以数据文件的形式存储,所述数据文件的文件名中包括有时间信息;
所述根据多级目录的建立规则确定存储目录为:
跟当前时间比较,确定是需要存入正常数据目录还是延迟数据目录;根据业务种类判断需要存入那种业务目录;
根据当前月份判断需要存入哪个月的目录;
根据预先建立的划分文件规则划分确定文件名,将数据写入文件。
按照设定的目录规则存储数据,从而方便数据的查询。在本发明实施例中,存储数据采用了多级目录,从而保证了各个目录下的文件不会太多,保证了检索文件的效率。同时也为移动或备份数据提供了方便,当我们需要某种数据的时候,仅需要拷贝一个目录而不是在很多文件中去查找。
S36、在经过设定时间后,为数据文件建立索引文件;索引文件包括与数据文件对应的索引、对多个索引文件进行汇总的汇总索引和多级索引。
所述建立索引为建立多级索引。索引文件建立后,定时更新索引文件。
通过建立索引,使得在查询数据文件时,减少了扫描文件的个数,提高了查询文件的性能,而多级数据索引进一步减少了扫描文件的个数,减少了打
开关闭文件的次数,提高了数据查询的效率。
S37、数据查询前,先使用负载均衡器接收查询请求,根据各接口服务器的负载情况确定用于执行查询任务的接口服务器;
S38、执行查询任务的接口服务器根据查询请求数据的种类在策略服务器上查询保存了该种类数据的存储服务器,并向所述存储服务器发送查询请求。
S39、所述存储服务器查询数据时,先采用分段多线程并发技术来扫描索引和数据文件的路径。如果没有索引文件,则根据数据文件的文件名中包括有的时间信息查询数据文件。
在本发明实施例中,数据的查询过程中会扫描索引,如果创建了索引文件,并且在查询请求中有相关的查询条件则,则可以利用索引文件。检查索引又分为多级,检查汇总索引,如果有汇总索引优先使用汇总索引,如果汇总索引比分时索引或数据文件旧,则不用汇总索引,而是通过扫描数据文件来查询。
S40、存储服务器将查询到数据文件并将其放到一个文件列表中,并根据资源或配置创建多个读取线程来依次从列表中提取数据文件,读取数据文件中的数据。在本发明实施例中,通过将查询条件下发到存储服务器,存储服务器执行查询任务,获取所需数据文件后,网络只传输所需数据文件,从而减少数据传输量,提高效率。避免了现有技术中,使用云计算系统时先读取全部数据然后再经查询过滤方案,从而造成的需要传输大量数据带来的网络拥塞问题。
另外,通过采用多线程读取数据,提高了存储服务器对数据的读取速度,提高了存储服务器的工作效率。
在另一实施例中,上述所有实施例中,还包括步骤:根据数据的存储要求,定义各种业务需要保留的时间和逻辑分区中的空闲空间
阈值,逻辑分区中的空闲空间低于设定的
阀值时,删除超过保留时间的数据;
由于在本发明实施例中,数据是以文件为单位存储的,所以删除时,以文件为单位对数据进行删除即可。
在另一实施例中,上述所有实施例中,还包括:
当现有的磁盘空间不能满足存储需求时增加逻辑分区。
在本发明实施例中,当存储服务器上现有的空间不足以满足存储需求时,采用增加逻辑分区的方法实现存储空间的扩展,新逻辑分区加入时,因为各个逻辑分区接收的数据量是均衡的,新增的逻辑分区数据量会较小,旧逻辑分区的数据量会较大,但只要逻辑分区增加的及时,旧逻辑分区的新增数据量得到分担,新写入的数据量与维护删除的数据量相当,就不会造成旧的逻辑分区空间不足而丢数据的问题,随着时间的推移,各个逻辑分区数据量达到均衡一致。
此外,如图4所示,本发明实施例中还提供了一种存储数据系统,包括,用于存储数据的存储服务器1、用于按设定策略将需要存储的数据分发给存储服务器的策略服务器2、用于执行查询任务的接口服务器3和用于根据各接口服务器的负载情况确定用于执行查询任务的接口服务器的负载均衡器4;
首先,在用于存储数据的存储服务器1中的多个磁盘驱动器上根据需要进行逻辑分区。
本发明实施例通过划分多个逻辑分区,并使用多线程分别对不同的逻辑分区进行读写,从而提高了对IO带宽的利用。因为IO通常是存储时的瓶颈所在,所以提高了对IO带宽的利用也就提高了存储服务器的数据吞吐能力。
数据存储时,先使用策略服务器2将需要存储的数据按设定策略分发给存储服务器1;在存储服务器1接收到数据后,为每种所述数据启动一个进程,进程启动时为本服务器中用于存储数据的每个逻辑分区创建线程;每个线程根据对应所述存储数据的逻辑分区和数据种类确定数据的存储目录并存储数据,每个线程通过数据分流技术均匀分担本业务数据的处理;
数据查询时,先使用负载均衡器4接收查询请求,根据各接口服务器3的负载情况确定用于执行查询任务的接口服务器3;
执行查询任务的接口服务3器根据查询请求数据的种类在策略服务器2上查询保存了该种类数据的存储服务器1,并向所述存储服务器1发送查询请求。
存储服务器1接到查询请求后查询数据文件并将其放到一个文件列表中,并根据资源或配置创建多个读取线程来依次从列表中提取数据文件,读取数据文件中的数据。
本发明实施例中在查询数据文件时扫描数据文件采用的分段多线程并发技术,这种多线程并发技术可以大大提高了查询效率。而且,本发明实施例中从文件中读取的数据会根据查询条件在本服务器上过滤,过滤后再返回给接口服务器,大大减少了网络传输量。
本
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。