一种处理数据的方法及系统与流程

文档序号:12063468阅读:203来源:国知局
一种处理数据的方法及系统与流程
本发明涉及大数据处理领域,尤其涉及一种处理数据的方法及系统。
背景技术
:随着电子信息技术的发展,大数据处理及应用已成为一项快速发展的领域,并逐渐实现了许多需要海量数据参与计算的业务场景。数据在参与计算的过程中,需要经历查询、读取并传输的过程,若要实现海量数据参与计算,则需要提取大量数据,同时,为了保证计算结果的精确性,还需要保证数据在查询、读取、的传输过程中的错误率低于设计标准。由于分布式系统在处理大容量数据方面具有优势,因此目前通常使用分布式系统来处理大容量的数据,并主要采用数据库表的数据存储、读取方式。但是在实际应用中,数据库表的数据量很大,在查询、读取、的传输过程中需要耗费大量时间,并占用分布式系统较多的接口资源,当出现重读或读取中断等情况时,则会进一步延长处理时间和接口的排队等待时间。导致目前的大数据处理业务存在时效性差以及难以及时反馈结果等问题。技术实现要素:本发明的实施例提供一种处理数据的方法及系统,能够提高数据处理的效率,降低接口资源的占用情况。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本发明的实施例提供一种处理数据的方法,包括:将所述数据库表划分为至少两个部分,并分别建立每一个部分与任务段的对应关系;为各任务段分配计算线程,其中,一个任务段分配一个线程,不同的任务段被分配的线程不同;通过线程处理各自分配的任务段。结合第一方面,在第一方面的第一种可能的实现方式中,还包括:通过自增长主键设置数据行的行标识;按照数据行的排列顺序,对数据库中的数据进行垂直拆分,得到至少两个数据库表。结合第一方面,在第一方面的第二种可能的实现方式中,还包括:在建立每一个部分与任务段的对应关系后,生成分段信息,所述分段信息包括:数据库名称、表名称、分区字段、行标识和处理情况信息;在通过线程处理各自分配的任务段后,更新所述分段信息。结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,包括:任务段服务器对所述数据库中的数据进行划分得到至少两个任务段,并生成所述分段信息,并将所述分段信息存放至同步队列中;所述计算服务器从所述同步队列中获取所述分段信息,并根据所述分段信息从所述数据库中读取数据,并通过预设的线程并行计算所读取的数据;所述计算服务器在对所读取的数据完成并行计算后,向所述任务段服务器发送结果信息,所述任务段服务器根据所述结果信息更新所述分段信息。结合第一方面或第一方面的第一至三种可能的实现方式,在第四种可能的实现方式中,当检测到数据处理异常时,重新处理出现异常时的任务段。第二方面,本发明的实施例提供一种处理数据的系统,包括:任务段服务器,用于将所述数据库表划分为至少两个部分,并分别建立每一个部分与任务段的对应关系;并为各任务段分配计算线程,其中,一个任务段分配一个线程,不同的任务段被分配的线程不同;计算服务器,用于通过线程处理各自分配的任务段。结合第二方面,在第二方面的第一种可能的实现方式中,所述任务段服务器,具体用于通过自增长主键设置数据行的行标识;并按照数据行的排列顺序,对数据库中的数据进行垂直拆分,得到至少两个数据库表。结合第二方面,在第二方面的第二种可能的实现方式中,所述任务段服务器,还用于在建立每一个部分与任务段的对应关系后,生成分段信息,所述分段信息包括:数据库名称、表名称、分区字段、行标识和处理情况信息;并在通过线程处理各自分配的任务段后,更新所述分段信息。结合第二方面或第二方面的第一至二种可能的实现方式,在第三种可能的实现方式中,所述计算服务器,还用于当检测到数据处理异常时,重新处理出现异常时的任务段。本发明实施例提供的处理数据的方法及系统,通过对数据库表划分任务段,并将不同任务段导入不同的线程进行处理,实现了多个线程同时并行处理一个数据库表的功能,并且由于任务段不同,因此当数据处理出现异常或是数据读取出错时,只需重新处理或读取当前任务段的数据内容,并非现有技术中重新处理或读取整个数据库表,提高了数据处理的效率,降低了接口资源的占用情况。并且由于对于数据库表的划分为逻辑划分,没有对数据库中的数据本身就像分割,因此不需要占用数据库的读写接口的资源,只需通过关系型数据库记录任务段的映射信息(例如可以记录为分段信息),因此进一步提高了数据处理的效率,降低了接口资源的占用情况。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一 些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1a为本发明实施例提供的一种处理数据的系统的结构示意图;图1b为本发明实施例提供的另一种处理数据的系统的结构示意图;图1c为本发明实施例提供的服务器的结构示意图;图2为本发明实施例提供的处理数据的方法的流程图;图3、图4为本发明实施例提供的具体应用场景的示意图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本
技术领域
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本
技术领域
技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。本发明实施例可以应用于一种如图1a所示的数据处理系统,该数据处理系统包括:任务段服务器(TSS,TaskSegmentServer)、计算服务器(WS,WorkerServer)和数据库。其中,任务段服务器用于对数据库表进行任务段的划分;计算服务器用于为任务段分配计算线程,并通过线程完成数据处理;数据库用于存储需要被处理的数据,在本实施例适用于关系型数据库的大数据处理。需要说明的是,也可以根据计算量需求的不同,设置不同的计算设备,比如:除了计算服务器,若在计算需求较大的场景中,也可以采用如图1b所示的计算集群。具体的,本实施例中所采用的服务器的基本结构可以如图1c所示,包括:输入单元、处理器单元、输出单元、通信单元、存储单元、外设单元等组件。这些组件通过一条或多条总线进行通信。本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,输入单元用于实现用户与服务器的交互和/或信息输入到服务器中。例如,输入单元可以接收用户输入的数字或字符信息,以产生与用户设置或功能控制有关的信号输入。在本发明具体实施方式中,输入单元可以是键盘、触控面板等,也可以是其他人机交互界面。处理器单元为服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储单元内的软件程序和/或模块,以及调用存储在存储单元内的数据,以执行服务器的各种功能和/或处理数据。所述处理器单元可以由集成电路(IntegratedCircuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器单元可以仅包括中央处理器(CentralProcessingUnit,简称CPU),也可以是GPU、数字信号处理器(DigitalSignalProcessor,简称DSP)、及通信单元中的控制芯片(例如基带芯片)的组合。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。通信单元用于建立通信信道,使服务器通过所述通信信道以连接至远程设备,比如存储了订单数据和/或历史记录的数据库服务器,并从所述远 程服务器下媒体数据。在本发明的不同实施方式中,所述通信单元中的各种通信模块一般以集成电路芯片(IntegratedCircuitChip)的形式出现,并可进行选择性组合,而不必包括所有通信模块及对应的天线组,由通信单元所传输的数据通过数据线向其他设备发送,或者通过互联网向远程设备发送。输出单元包括但不限于影像输出单元和声音输出单元。影像输出单元用于输出文字、图片和/或视频。所述影像输出单元可包括显示面板,例如采用LCD(LiquidCrystalDisplay,液晶显示器)、OLED(OrganicLight-EmittingDiode,有机发光二极管)、场发射显示器(fieldemissiondisplay,简称FED)等形式来配置的显示面板。存储单元可用于存储软件程序以及模块,处理单元通过运行存储在存储单元的软件程序以及模块,从而执行服务器的各种功能应用以及实现数据处理。存储单元主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序,比如声音播放程序、图像播放程序等等;数据存储区可存储根据服务器的使用所创建的数据等。在本发明具体实施方式中,存储单元可以包括易失性存储器,例如非挥发性动态随机存取内存(NonvolatileRandomAccessMemory,简称NVRAM)、相变化随机存取内存(PhaseChangeRAM,简称PRAM)、磁阻式随机存取内存(MagetoresistiveRAM,简称MRAM)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(ElectricallyErasableProgrammableRead-OnlyMemory,简称EEPROM)、闪存器件,例如反或闪存(NORflashmemory)或是反及闪存(NANDflashmemory)。非易失存储器储存处理单元所执行的操作系统及应用程序。所述处理单元从所述非易失存储器加载运行程序与数据到内存并将数字内容储存于大量储存系统中。所述操作系统包括用于控制和管理常规系统任务,例如内存管理、存储设备控制、电源管理等,以及有助于各种软硬件之间通信的各种组件和/或驱动器。在本发明实施方式中,所述操作系统可以是Google公司的Android系统、Apple公司开发的iOS系统或Microsoft公司开发的Windows操作系统等,或者是Vxworks这类的嵌入式操作系统。所述应用程序包括安装在服务器上的任何应用,比如取单系统、锁人系统和派单系统。电源用于给服务器的不同部件进行供电以维持其运行。作为一般性理解,所述电 源可以是内置的电池,例如常见的锂离子电池、镍氢电池等,也包括直接向服务器供电的外接电源,例如AC适配器等。在本发明的一些实施方式中,所述电源还可以作更为广泛的定义,例如还可以包括电源管理系统、充电系统、电源故障检测电路、电源转换器或逆变器、电源状态指示器(如发光二极管),以及与服务器的电能生成、管理及分布相关联的其他任何组件。本发明实施例提供一种处理数据的方法,如图2所示,包括:101,将所述数据库表划分为至少两个部分,并分别建立每一个部分与任务段的对应关系。在本实施例中,对于数据库表的划分可以按照数据行的顺序进行划分,得到至少两个相互连续的部分,例如表一所示的,数据库表的1至10000数据行划分为第一部分,数据库表的10001至20000数据行划分为第二部分。数据库名称表名称分区字段数据行处理情况DB1Tab1_1id1-10000NDB1Tab1_1id10001-20000N表一在本实施例中,一个任务段实际对应所划分出的一个部分的所有数据行的内容,任务段所对应的数据行的内容被计算服务器提取并放入同一个线程进行处理。102,为各任务段分配计算线程。其中,一个任务段分配一个线程,不同的任务段被分配的线程不同。具体的,线程的数量可以根据计算设备自身的配置,如CPU核数、是否支持超线程等认为设定或是按照预设规则由计算设备动态调整。103,通过线程处理各自分配的任务段。在本实施例中,对于数据库表的划分为逻辑划分,并非直接分割数据库表, 从而并不需要对数据库表中的大部分信息和数据库中存储的数据进行处理,减少了接口占用和数据读写所需的时间,对于数据库表划分后得到的各个部分,服务器生成分段信息,用于记录数据库表的划分情况。因此本实施例还包括:在建立每一个部分与任务段的对应关系后,生成分段信息,所述分段信息包括:数据库名称、表名称、分区字段、行标识和处理情况信息。在通过线程处理各自分配的任务段后,更新所述分段信息。在本实施例中,在将所述数据库表划分为至少两个部分之前,还包括以下具体方案,用于标识数据行并划分出数据库表:通过自增长主键设置数据行的行标识。例如:任务段服务器可以通过自增长的主键对数据库表中的每一个数据行进行编号,数据行的编号课作为所述航标识。按照数据行的排列顺序,对数据库中的数据进行垂直拆分,得到至少两个数据库表。例如:任务段服务器拆分数据库的内容,具体可以将将数据库垂直拆分,还可以根据相应的分区键做水平拆分。并通过自增长的主键对数据库表中的每一个数据行进行编号。将数据库表中的数据划分为不同的部分,即进行分段,并将如表二所示的分段信息存放在数据库或者任务段服务器的缓存等存储设备。数据库名称表名称分区字段行编号处理情况DB1Tab1_1id1-10000NDB1Tab1_1id10001-20000NDB2Tab2_1id1-100000N表二在任务段服务器、计算服务器和数据库等节点设备组成的应用场景中,上述方法流程的具体实现包括:任务段服务器对所述数据库中的数据进行划分得到至少两个任务段,并生成所述分段信息,并将所述分段信息存放至同步队列中。本实施例应用在超大数据计算的场景中时,如图3所示,可以通过全局任务段处理器执行任务分配策略,并保证计算服务器中的每个实例是无状态的,以便于进行线性扩展,最大限度的均衡的利用资源。并通过校验器检测故障并判定是否需要重做任务段。所述计算服务器从所述同步队列中获取所述分段信息,并根据所述分段信息从所述数据库中读取数据,并通过预设的线程并行计算所读取的数据。所述计算服务器在对所读取的数据完成并行计算后,向所述任务段服务器发送结果信息,所述任务段服务器根据所述结果信息更新所述分段信息。例如:如表二所示的分段信息在所有划分出的任务段执行完毕后,更新得到表三数据库名称表名称分区字段行编号处理情况DB1Tab1_1id1-10000YDB1Tab1_1id10001-20000YDB2Tab2_1id1-100000Y表三进一步的,在本实施例中,当检测到数据处理异常时,重新处理出现异常时的任务段。例如:在如图4所示的场景中,通过校验器(或称为任务校验器(CS,CheckerServer))监控任务段数据的更新情况并处理故障。本实施例通过对数据库表划分任务段,并将不同任务段导入不同的线程进行处理,实现了多个线程同时并行处理一个数据库表的功能,并且由于任务段 不同,因此当数据处理出现异常或是数据读取出错时,只需重新处理或读取当前任务段的数据内容,并非现有技术中重新处理或读取整个数据库表,提高了数据处理的效率,降低了接口资源的占用情况。并且由于对于数据库表的划分为逻辑划分,没有对数据库中的数据本身就像分割,因此不需要占用数据库的读写接口的资源,只需通过关系型数据库记录任务段的映射信息(例如可以记录为分段信息),因此进一步提高了数据处理的效率,降低了接口资源的占用情况。结合本实施例提供的方案,以大于2000W条数据的数据库为检测实例进行举例说明:其中,数据库中的原始数据的内容包括:0;;商品1;地点1;销售城市1;;;;底价1,销售渠道1;;商品2;地点2;销售城市2;;;;底价2,销售渠道2;;商品3;地点1;销售城市3;;;;底价3,销售渠道…n;;商品n;地点n;销售城市n;;;;底价n,销售渠道处理步骤,如下:(TSS,TaskSegmentServer)、计算服务器(WS,WorkerServer)TSS将数据库的内容拆分10个部分,为每个部分分配10张表,总共拆分为100张数据库表,并生成分段信息:TSS将上述分段信息放入同步队列中。WS由多个无状态的应用服务器组成,WS从TSS上获取任务段,并根据任务段从数据库读取数据,通过多线程处理任务段。具体的,WS可以为每个线程分配处理一个任务段;或者WS可以为多个线程分配处理同一个任务段,其中,一个线程处理这一个任务段所对应的数据行的一部分,比如:任务段所对应的数据行1至10000,WS分配了4个线程处理该任务段,则按照数据行的编号1-2500、2501-5000、5001-7500、7501-10000的顺序依次导入4个线程并行处理,从而实现多个线程并行处理一个任务段,扩大并行处理的规模。WS将处理结果向TSS发送。TSS更新分段信息。CS校验任务处理情况。并处理异常的任务,比如重做出现异常的任务段。通过对2000W的数据进行5亿计算得到的结果集,时间变化和机器使用效率变化明显,WS上实现平均每秒计算560万结果集能力。结合上述方法流程方案,本发明实施例还提供一种如图1a所示的数据处理系统,包括:任务段服务器,用于将所述数据库表划分为至少两个部分,并分别建立每一个部分与任务段的对应关系;并为各任务段分配计算线程,其中,一个任务 段分配一个线程,不同的任务段被分配的线程不同;计算服务器,用于通过线程处理各自分配的任务段。其中,所述任务段服务器,具体用于通过自增长主键设置数据行的行标识;并按照数据行的排列顺序,对数据库中的数据进行垂直拆分,得到至少两个数据库表。进一步的,所述任务段服务器,还用于在建立每一个部分与任务段的对应关系后,生成分段信息,所述分段信息包括:数据库名称、表名称、分区字段、行标识和处理情况信息;并在通过线程处理各自分配的任务段后,更新所述分段信息。所述计算服务器,还用于当检测到数据处理异常时,重新处理出现异常时的任务段。本实施例提供的数据处理系统,通过对数据库表划分任务段,并将不同任务段导入不同的线程进行处理,实现了多个线程同时并行处理一个数据库表的功能,并且由于任务段不同,因此当数据处理出现异常或是数据读取出错时,只需重新处理或读取当前任务段的数据内容,并非现有技术中重新处理或读取整个数据库表,提高了数据处理的效率,降低了接口资源的占用情况。并且由于对于数据库表的划分为逻辑划分,没有对数据库中的数据本身就像分割,因此不需要占用数据库的读写接口的资源,只需通过关系型数据库记录任务段的映射信息(例如可以记录为分段信息),因此进一步提高了数据处理的效率,降低了接口资源的占用情况。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较 简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1