CN114064667A - 一种数据处理的方法以及装置 - Google Patents

一种数据处理的方法以及装置 Download PDF

Info

Publication number
CN114064667A
CN114064667A CN202010789270.0A CN202010789270A CN114064667A CN 114064667 A CN114064667 A CN 114064667A CN 202010789270 A CN202010789270 A CN 202010789270A CN 114064667 A CN114064667 A CN 114064667A
Authority
CN
China
Prior art keywords
data
target
coroutines
coroutine
target data
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
Application number
CN202010789270.0A
Other languages
English (en)
Inventor
刘华敏
刘伯恒
殷锡艺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010789270.0A priority Critical patent/CN114064667A/zh
Publication of CN114064667A publication Critical patent/CN114064667A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请属于数据处理技术领域,公开了一种数据处理的方法以及装置,本申请公开的一种数据处理的方法包括,当确定有目标数据集合需要更新且当前运行的协程总数量低于预设数量阈值时,创建目标协程,并调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行批量数据更新,以及在数据更新结束后,释放目标协程。这样,采用协程进行数据处理以及对数据库进行批量数据处理,降低了耗费的系统资源,提高了数据处理效率以及系统性能。

Description

一种数据处理的方法以及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理的方法以及装置。
背景技术
随着互联网技术的发展以及互联网应用的普及,互联网服务对数据处理的效率的要求也不断提高。
现有技术下,在数据拉取以及数据更新时,通常采用线程多任务并行处理的方式。
但是,线程调度时需要内核态和用户态的频繁切换,性能较低,还需要耗费大量的系统资源和时间,再者,对数据库的操作频率也较高,会进一步耗费大量的系统资源。
由此,在数据处理时,需要一个可以降低耗费的系统资源,提高数据处理效率以及系统性能的数据处理技术方案。
发明内容
本申请实施例提供一种数据处理的方法以及装置,用以在进行数据处理时,降低耗费的系统资源,提高数据处理效率以及系统性能。
一方面,提供一种数据处理的方法,包括:
确定有目标数据集合需要进行数据更新时,获取当前运行的协程总数量;
当协程总数量低于预设数量阈值时,为目标数据集合创建目标协程,并将协程总数量加1,预设数量阈值是根据资源配置信息确定的;
调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行数据更新;
释放目标协程,并将协程总数量减1。
一方面,提供一种数据处理的装置,包括:
获取单元,用于确定有目标数据集合需要进行数据更新时,获取当前运行的协程总数量;
创建单元,用于当协程总数量低于预设数量阈值时,为目标数据集合创建目标协程,并将协程总数量加1,预设数量阈值是根据资源配置信息确定的;
更新单元,用于调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行数据更新;
释放单元,用于释放目标协程,并将协程总数量减1。
一方面,提供一种控制设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时执行上述任一种数据处理的方法的步骤。
一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一种数据处理的方法的步骤。
一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种数据处理的各种可选实现方式中提供的方法。
本申请实施例提供的一种数据处理的方法以及装置中,每当确定有目标数据集合需要更新,且当前运行的协程总数量低于预设数量阈值时,创建目标协程,并调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行批量数据更新,以及在本次数据更新结束后,释放目标协程。这样,采用协程进行数据处理以及对数据库进行批量数据处理,降低了耗费的系统资源,提高了数据处理效率以及系统性能。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施方式中一种数据处理的系统架构示意图;
图2为本申请实施方式中一种数据处理的流程示意图;
图3为本申请实施方式中一种数据处理的装置的结构示意图;
图4为本申请实施方式中一种控制设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
线程:是操作系统的内核对象,线程可以作为独立运行和独立调度的基本单位,线程的作用就在于充分使用中央处理器(Central Processing Unit/Processor,CPU)并行处理任务。
协程:是在应用层模拟的线程,本申请实施例中,以Go协程为例进行说明。Go协程是一个与其他Go协程并发运行在同一地址空间的Go函数或方法。一个运行的程序由一个或更多个Go协程组成。
协程通道:用于在多个Go协程之间发送和接收共享的数据,从而实现数据同步。在使用时,需要知道协程通道中发送和接收的数据类型。协程通道可以看作在两个Go协程之间架设的管道。一个Go协程可以向这个管道里存放数据,另外一个Go协程可以从这个管道里取出数据。
数据切片:数组切片的数据结构可以抽象为以下3个变量:指向原生数组的指针,数组切片中的元素个数以及数组切片已分配的存储空间。从底层实现的角度来看,数组切片实际上仍然使用数组来管理元素,基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且可以被随意传递而不会导致所管理的元素被重复的复制。
互斥锁:用于保证共享数据操作的完整性,在对共享数据加锁后,共享数据只能有一个线程访问。
云存储:是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量通常相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database):简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统:是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、可扩展标记语言或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如,结构化查询语言(Structured QueryLanguageSQL)、XQuery;或依据性能冲量重点来作分类,例如,最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些数据库管理系统能够跨类别,例如,同时支持多种查询语言。
下面介绍本申请实施例的设计思想。
随着互联网技术的发展以及互联网应用的普及,数据量也不断增多。对于需要海量拉取数据进而更新数据库的互联网服务,对数据处理耗费的系统资源以及处理效率的要求也不断提高。
传统方式中,拉取数据以及数据库更新时,通常采用线程或者进程,并发的执行任务。
但是,线程需要在内核态和用户态之间频繁切换,会耗费大量的系统资源和时间成本,造成资源的浪费,性能较低,数据处理效率也较低,当拉取的数据量巨大时,难以满足对实时性要求较高的互联网服务。再者,采用固定大小的栈,不能动态改变,当出现内存溢出等问题时难以排查。
显然,传统技术中并没有提供一种可以降低耗费的系统资源,提高系统性能和数据处理效率的数据处理的技术方案,因此,需要一种数据处理的技术方案,以在数据处理时,降低耗费的系统资源,提高系统性能以及数据处理效率。
协程是一种比线程更加轻量级的存在,消耗的资源在KB级别,采用动态扩张收缩的策略控制栈的大小,实现内存动态可控,且不被操作系统的内核管理,而是完全由程序控制,即在用户态执行,不需要与内核态进行频繁切换,可以极大地提高系统性能和数据处理效率,以及降低耗费的资源,可以有效解决拉取数据不及时的问题,再者,可以根据CPU资源控制协程总数量,实现对CPU的最大化利用,还可以对数据库进行批量数据更新,以降低数据库操作的频率,进一步优化了系统性能。
基于以上考虑和分析,本申请实施例中提供了一种数据处理的方案,该方案中,每当确定有目标数据集合需要更新,且当前运行的协程总数量低于预设数量阈值时,创建目标协程,并调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行批量数据更新,以及在本次数据更新结束后,释放目标协程。这样,采用协程进行数据处理以及对数据库进行批量数据处理,降低了耗费的系统资源,提高了数据处理效率以及系统性能。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
参阅图1所示,为一种数据处理的系统的架构示意图。包括多个用户终端100、控制设备101以及源数据设备102。
控制设备101:当需要执行新的数据更新任务时,从源数据设备102中拉取数据,并创建相应的协程,以及调用协程并行执行数据更新任务,在数据更新任务完成后,执行协程释放操作。
其中,控制设备101可以为服务器,也可以为终端设备,包括用于存储数据的数据库,还可以包括数据库管理系统。例如,控制设备101为数据库服务器。
源数据设备102:用于为控制设备101提供源数据。
可选的,源数据设备102可以采用云存储的方式存储数据,也可以采用其它方式存储数据,可以仅包含一个设备,也可以为多个设备的集合。例如,源数据设备为视频数据服务器,新闻数据服务器。
用户终端100:可以为终端设备,用于从控制设备101中获取数据,以便用户浏览网页等。
一种应用场景中,控制设备101为飞机中的数据库服务器,源数据设备102为云端服务器。
由于飞机起飞后,用户无法通过互联网获取数据,因此,数据库服务器在飞机起飞前从云端服务器中拉取各种数据,并将拉取的数据存储至数据库中。数据库服务器每一次拉取数据时,均会创建一个相应的协程,并调用协程将拉取数据更新至数据库服务器中的数据库中。
飞机起飞后,用户就可以通过用户终端100,采用飞机内部的无线宽带(Wireless-Fidelity,WIFI)等局域网,获取数据库服务器中的存储的新闻、短视频、电影以及电视等数据,为用户提供了便利。
本申请实施例主要应用于对控制设备101的数据库中的目标数据集合进行数据更新。
参阅图2所示,为本申请提供的一种数据处理的方法的实施流程图。该方法的具体流程如下:
步骤200:控制设备创建等待组。
具体的,等待组用于控制多个任务的同步处理,可以保证在并发环境中完成多个任务。针对一组等待任务,不需要分别针对每一个任务都创建一个等待组,只声明一个等待组即可。
一种实施方式中,sync.WaitGroup表示等待组,声明一个等待组可以采用var wgsync.WaitGroup。
需要说明的是,本申请实施例中的数据处理的方法,是以基于Go语言编写为例进行说明的,实际应用中,采用的编程语言也可以根据实际应用场景进行设置,在此不作限制。
步骤201:控制设备确定目标数据集合需要进行数据更新时,获取当前运行的协程总数量。
具体的,执行步骤201时,可以采用以下两种方式中的任意一种或组合:
第一种方式为:当达到预设时长时,控制设备确定目标数据集合需要进行数据更新,并通过等待组,获取当前运行的协程总数量。
需要说明的是,等待组中维护了一个计数器,计数器的初始值为0,创建一个协程后,计数器加1,释放一个协程后,计数器减1,当计数器减至0时,释放等待组。
也就是说,等待组通过计数器,统计当前运行的协程总数量。因此,控制设备可以通过等待组获取当前运行的协程总数量。
实际应用中,预设时长可以为固定时长,也可以为指定时间点,是根据实际应用场景进行设置的,在此不作限制。例如,预设时长为1分钟。
其中,目标数据集合可以为控制设备预先设置的需要不断被更新的目标数据。控制设备可以通过指定的网站或者网址等获取目标数据。
例如,目标数据为指定的电视剧,控制设备将电视剧的更新时间10点,确定为需要对本地的电视剧数据进行更新的时间。
又例如,目标数据为视频应用中收视率最高的前10部电影,控制设备将每周日12点确定为需要对本地电影进行更新的时间。
第二种方式为:源数据设备确定目标数据发生变化时,向控制设备发送数据更新消息。控制设备确定接收到数据更新消息时,判定目标数据集合需要进行数据更新,并通过等待组,获取当前运行的协程总数量。
实际应用中,当目标数据更新不规律时,为减少耗费的资源,控制设备可以不用周期性的向源数据设备发出数据更新请求,而是源数据设备确定目标数据发生变化时,就通知控制设备需要进行数据更新了。
这样,就可以周期性地拉取数据,也可以在源数据发生变化时获取数据。
本申请实施例中,等待组用于创建以及释放协程,以及根据资源配置信息,确定协程总数量的最大值,由于数据接口通常仅为一个,因此,可以通过数据获取的频率以及资源配置信息控制并行运行的协程总数量。
步骤202:控制设备获取目标数据。
具体的,控制设备向源数据设备发送数据获取请求,并接收源数据设备返回的目标数据。
其中,控制设备每一次获取的目标数据的数量可以为一个,也可以为多个。实际应用场景中,通常会获取海量的目标数据,以对数据库进行数据更新。
一种实施方式中,控制设备通过数据接口,向源数据设备发送数据获取请求,并通过该数据接口,接收源数据设备返回的目标数据。
其中,数据接口用于从第三方获取数据的接口。一次获取的目标数据对应的数据类型可以为一种,也可以为多种。每一目标数据可以对应一种数据类型,也可以对应多种数据类型。
例如,目标数据可以为新闻数据,也可以为游戏数据,还可以为学习数据,还可以为娱乐数据,还可以为通过微视获取的数据。
这样,就可以通过数据接口,获取数据。
步骤203:当协程总数量低于预设数量阈值时,控制设备为目标数据集合创建目标协程。
具体的,当协程总数量低于预设数量阈值时,控制设备通过等待组为目标数据集合创建目标协程。
一种实施方式中,等待组采用wg.add将协程总数量加1,并通过wg.Done将协程总数量减1。
其中,预设数量阈值用于控制并行运行的协程总数量的最大值。预设数量阈值是根据资源配置信息确定的。预设数量阈值可以是预先设置的,也可以是实时确定的。
一种实施方式中,预设数量阈值是根据CPU的核数确定的。控制设备预先根据CPU的核数,配置预设数量阈值。
这样,预设数量数值就是固定不变的。
一种实施方式中,控制设备实时获取当前的空闲系统资源,并根据空闲系统资源,确定预设数量阈值。
这样,就可以根据控制设备的实时运行状况,实时调整预设数量阈值,从而最大化利用系统资源。
这是由于若需要处理一个新的数据更新任务,则会创建一个协程,但是,随着数据的更新速度越来越快,需要处理的新的数据更新任务,可能达到几十万、几百万个甚至更多,若在运行时创建相应数量的协程,则CPU需要在大量的协程之间切换,这会耗费大量的系统资源,导致系统处理效率下降、甚至系统崩溃。因此,本申请实施例中,预先根据硬件处理能力以及系统性能等资源配置信息,配置预设数量阈值,以控制运行的协程的总数量。
当确定协程总数量不低于预设数量阈值时,控制设备停止创建目标协程,直至存在协程被释放,控制设备再创建目标协程。
进一步地,控制设备在创建协程之前,创建协程通道(channel)。使得多个协程并行运行时,可以通过协程通道发送和接收共享的数据,实现数据同步。
一种实施方式中,控制设备在创建协程之后,将协程总数量加1。
进一步地,控制设备创建目标协程时,还可以调整协程总数量,然后在创建协程,具体可以采用以下步骤:
控制设备获取协程总数量,并将协程总数量加1,获得调整后的协程总数量,以及判断调整后的协程总数量是否不高于预设数量阈值,若是,则通过等待组为目标数据集合创建目标协程,否则,当存在协程释放,使得协程总数量不高于预设数量阈值时,再通过等待组为目标数据集合创建目标协程。
这样,通过资源配置信息,创建协程,最大化利用系统资源,且每一次拉取目标数据后,均创建一个目标协程,数据拉取频率越高,创建协程的数量也越多,从而通过预设数量阈值以及目标数据的更新频率,控制并行运行的协程总数量。
步骤204:控制设备采用互斥锁,将各目标数据进行加锁保护。
具体的,控制设备采用互斥锁,将从源数据设备获取的目标数据进行加锁保护。
当多个协程并行处理时,每个协程在对相应的目标数据操作前进行加锁,成功加锁才能操作,操作结束解锁。通过“锁”就将资源的访问变成互斥操作,使得加锁后的目标数据不会被多个协程同时操作,而后与时间有关的错误也不会再产生了,从而避免数据混乱。
这样,通过互斥锁将目标数据加锁保护后,仅目标协程可以对目标数据进行访问,提高了数据的精确性。
步骤205:控制设备调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行数据更新。
具体的,执行步骤205时,可以采用以下步骤:
S2051:控制设备调用目标协程,分别获取每一拉取的目标数据对应的数据类型。
可选的,数据类型可以是根据数据的格式确定的,如,音频数据、视频数据、图像数据以及文本数据等,可以是根据数据的应用范围确定的,如,教育类数据、游戏类数据、新闻类数据以及培训类数据等,还可以根据数据库中存储的索引确定的,如,手机数据以及电脑数据等。实际应用中,数据类型可以根据实际应用场景进行设置,在此不作限制。
S2052:控制设备调用目标协程,按照各目标数据的数据类型,将各目标数据添加至不同的数据切片中。
具体的,控制设备按照目标数据的顺序,依次将每一目标数据按照数据类型添加至相应的数据切片中,使得同一数据类型的目标数据,添加至同一数据切片中。
一种实施方式中,控制设备分别针对每一目标数据,执行以下步骤:
获取目标数据对应的数据类型,判断是否存在承载该数据类型的目标数据的未满的数据切片,若是,则将目标数据添加至该数据切片中,否则,创建一个新的数据切片,并将目标数据添加至新的数据切片中。
其中,上述未满的数据切片可以是目标协程创建的,也可以是等待组中已经释放的协程创建的数据切片。
其中,Go语言提供了数组切片拥有自己的数据结构,数据结构可以抽象为以下3个变量:指向原生数组的指针,数组切片中的元素个数以及数组切片已分配的存储空间,可以随时动态扩充存放空间,并且可以被随意传递而不会导致所管理的元素被重复的复制。
这样,控制设备就可以将从源数据设备中获取的目标数据均添加至相应的数据切片中。
进一步地,控制设备还可以通过数组为数据更新单位,进行数据更新。
需要说明的是,数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。但是,Go语言提供了数组切片来弥补数组的不足。
进一步地,控制设备还可以对并行运行的多个协程对应的目标数据进行数据统计处理,并将统计处理后获得的数据,添加至相应的数据切片中。
一种实施方式中,控制设备通过目标协程以及相应的协程通道,接收其它协程发送的指定数据,并调用目标协程对目标数据和接收的指定数据进行数据统计处理。
例如,假设第一协程获取的各数据为{a1,b1},第二协程获取的各数据为{a2,b2},则第一协程通过相应的协程通道,将a1和b1发送至第二协程。第二协程确定a1,b1,a2以及b2的加和,并将该加和添加到数据切片中。
其中,统数据计处理可以根据实际应用场景进行设置,例如,可以为计算加和或者平均值等,在此不作限制。
同理,控制设备也可以通过目标协程以及相应的协程通道,向其它协程发送目标数据,并调用其它协程对目标数据和接收的指定数据进行数据统计处理。
S2053:控制设备根据数据切片中包含的多个目标数据,对数据库进行数据更新。
具体的,控制设备分别针对每一数据切片,存在以下步骤:
当数据切片中的目标数据对应的数据量达到预设容量阈值时,将该数据切片中的目标数据更新至数据库中。
其中,预设容量阈值为分配至数据切片的存储空间,也就是说,当数据切片满了的时候,将该数据切片中的目标数据更新至数据库中。
实际应用中,预设容量阈值可以根据实际应用场景进行设置,在此不作限制。
这样,根据承载相同数据类型的目标数据的对应的数据切片,进行批量数据更新时,由于各目标数据对应的数据类型相同,因此,可以提高数据更新效率,降低时间成本。
其中,将该数据切片中的目标数据更新至数据库中时,分别针对该数据切片中的每一目标数据,控制设备执行以下步骤:
根据数据库中存储的各原始数据,判断目标数据的操作类型,若操作类型表示过期数据,则将确定目标数据在数据库中对应的原始数据,并删除该原始数据;若操作类型表示修改数据,则确定目标数据在数据库中对应的原始数据,并将原始数据替换为目标数据;若操作类型表示新增数据,则将目标数据添加到数据库的相应表格中。
这样,就可以实现对数据库的数据删除、数据修改以及新增数据批量操作。
进一步地,在将目标数据添加到数据库中之前,还可以执行以下步骤:
控制设备判断表格的长度是否达到预设长度阈值,若是,则删除表格中最早添加的原始数据,为目标数据空出相应的表格空间。
实际应用中,预设长度阈值可以根据实际应用场景进行设置,如,预设长度阈值为15行,在此不作限制。
进一步地,在将原始数据替换为目标数据或将目标数据添加到数据库之前,控制设备还可以执行以下步骤:
控制设备去除目标数据中的第一指定类型的字符,如,超文本传输协议(HyperText Transport Protocol,HTTP)以及https等,并插入第二指定类型的字符,如,插入转义字符等。
实际应用中,第一指定类型和第二指定类型均可以根据实际应用场景进行设置,在此不作限制。
这样,就可以通过协程对拉取的目标数据进行格式解析以及内容解析后,批量存入数据库中。
进一步地,在将目标数据全部添加至相应的数据切片中后,若不存在数据量达到预设容量阈值的数据切片,则无进行数据库更新,则执行步骤207,即直接释放目标协程和相应的协程通道,且不释放数据切片。
传统技术中,控制设备每获取一个目标数据,就会执行一次数据库操作,数据库的操作频率较高,会耗费大量的系统资源,数据库的并发访问量较大。而本申请实施例中,只有数据切片满了的时候,也就是说,达到一定的数据量时,协程才会批量执行相应的数据库操作,而不会每一次有一个数据就操作数据库,这减少了对数据库的频繁操作,提高了拉取数据以及数据库更新的效率,减少了对系统资源的消耗以及并发访问量。
步骤206:控制设备释放数据量达到预设容量阈值的各数据切片。
需要说明的是,分配至数据切片的存储空间为内存中的缓存。
这样,数据切片中的数据满了之后,将数据切片中的数据更新至数据库中,进而在该数据切片更新完成后,释放该数据切片,为下次拉取数据做准备,使得控制设备在下次拉取数据时创建新的数据切片,以添加新的目标数据,循环利用资源,减少系统内存碎片的产生。
步骤207:控制设备释放目标协程。
具体的,在将数据量达到预设容量阈值的各数据切片中的目标数据均更新至数据库中后,即控制设备确定不存在数据量达到预设容量阈值之后,控制设备释放目标协程。
进一步地,在释放目标协程之前,释放相应的协程通道。
本申请实施例中,在创建目标协程之前,先创建协程通道,在释放目标协程之前,也先释放相应的协程通道。
需要说明的是,协程通道与目标协程是对应创建的。各协程之间可以通过协程通道发送和接收数据,实现数据同步。
进一步地,控制设备释放目标协程后,将协程总数量减1,从而使得后续获取的数据时,可以创建新的协程。
进一步地,由于在将对应的各目标数据全部添加到相应的数据切片中后,可能存在未满的数据切片,此时,控制也可以将未满的数据切片中的目标数据也更新至数据库中,从而可以在各数据切片的目标数据均更新至数据库中后,释放数据切片以及目标协程。
步骤208:控制设备将各目标数据进行解锁处理。
这样,在释放协程之后,就可以解锁相应的目标数据了,以避免执行死锁操作。
步骤209:控制设备判断是否终止数据更新,若是,则执行步骤210,否则,执行步骤201。
具体的,终止数据更新可以是根据用户的指令确定的,也可以是根据终止触发条件确定的,如,源数据库中的目标数据停止更新,或者,更新次数达到指定的更新次数等。
一种实施方式中,当确定当前运行的协程总数量为指定数量时,控制设备确定终止数据更新。
可选的,指定数量可以为0。
步骤210:控制设备对创建的所有协程进行释放。
具体的,控制设备对通道和协程释放后,由于可能存在释放失败的通道和协程,因此,控制设备对通过等待组创建的所有通道和协程再次执行释放操作,以保证所有的通道和协程均被释放,从而减少系统内存碎片的产生。
进一步地,在执行步骤210之前,控制设备还判断是否存在未被释放的数据切片,由于协程仅将满了的数据切片进行释放,因此,可能存在未满的数据切片未被更新和释放,控制设备将未满的数据切片中的目标数据更新至数据库中,并释放上述未满的数据切片。
最后,控制设备结束等待组。
其中,基于Go语言的协程具有高并发(每秒钟上千数万的单机访问量),程序生命周期短、高IO低计算,占用系统资源少的优势。利用协成的优势,将各协程同步运行,从数据接口获取数据后再次拉取,使用起来简单便捷,默认占用内存远比JAVA、C线程的少,默认2KB,随着使用的大小动态增加,使用完自动释放。
传统方式中,通常采用线程或者进程的方式耗费5小时拉取一次完整的数据,本申请实施例中,采用协程的方式只需要花费4分钟就可以拉取一次完整的数据,极大地提高了数据拉取效率,可以满足对数据内容实时性要求高的服务,再者,充分利用了CPU的峰值,可以最大化利用CPU资源,进一步提高了拉取效率,且线程消耗的资源在MB级别,还调度时还需要内核态和用户态的频繁切换,会耗费大量的资源,而协程是一种比线程更加轻量级的存在,消耗的资源在KB级别,且不被操作系统的内核管理,而是完全由程序控制,即在用户态执行,不需要与内核态的频繁切换,使得性能得到了极大的提升,还极大地降低了消耗的资源,通常一台普通的服务器就可以支持百万级别的协程。进一步地,线程通常采用固定大小的栈,而协程可以采用动态扩张收缩的策略,初始量为2k,最大可以扩张到1g,灵活性强,占用的资源少,且不会像线程一样出现内存溢出以及段错误等难以排查的问题。
本申请实施例中,通过等待组中的控制协程总数量,当协程总数量不低于预设数量阈值时,则暂停创建协程,通过等待组确定协程和通道完全执行完毕后,对协程和通道对应的资源进行释放,再创建新的协程。这样,可以对创建的协程和通道等资源进行监控,减少系统内存碎片的产生,还可以最大限度的利用资源配置信息,优化系统性能,提高了数据处理效率。
基于同一发明构思,本申请实施例中还提供了一种数据处理的装置,由于上述装置及设备解决问题的原理与一种数据处理的方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图3示,其为本申请实施例提供的一种数据处理的装置的结构示意图。一种数据处理的装置包括:
获取单元301,用于确定有目标数据集合需要进行数据更新时,获取当前运行的协程总数量;
创建单元302,用于当协程总数量低于预设数量阈值时,为目标数据集合创建目标协程,并将协程总数量加1,预设数量阈值是根据资源配置信息确定的;
更新单元303,用于调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行数据更新;
释放单元304,用于释放目标协程,并将协程总数量减1。
较佳的,更新单元303用于:
分别获取每一拉取的目标数据对应的数据类型;
按照各目标数据的数据类型,将各目标数据添加至不同的数据切片中;
根据数据切片中包含的多个目标数据,对数据库进行数据更新。
较佳的,释放单元304还用于:
当确定当前运行的协程总数量为指定数量时,对创建的所有协程进行释放。
较佳的,更新单元303还用于:
采用互斥锁,将各目标数据进行加锁保护;
在目标数据集合进行数据更新之后,进一步包括:
将各目标数据进行解锁处理。
较佳的,更新单元303还用于:
通过目标协程以及相应的协程通道,接收其它协程发送的指定数据,并调用目标协程对目标数据和接收的指定数据进行数据统计处理;
其中,协程通道用于不同协程之间的数据通信。
本申请实施例提供的一种数据处理的方法以及装置中,每当确定目标数据集合更新,且当前运行的协程总数量低于预设数量阈值时,创建目标协程,并调用目标协程,以数据切片为数据更新单位,对数据库中存储的目标数据集合进行批量数据更新,以及在本次数据更新结束后,释放目标协程。这样,采用协程进行数据处理以及对数据库进行批量数据处理,降低了耗费的系统资源,提高了数据处理效率以及系统性能。
图4示出了一种控制设备4000的结构示意图。参阅图4所示,控制设备4000包括:处理器4010、存储器4020、电源4030、显示单元4040、输入单元4050。
处理器4010是控制设备4000的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器4020内的软件程序和/或数据,执行控制设备4000的各种功能,从而对控制设备4000进行整体监控。
本申请实施例中,处理器4010调用存储器4020中存储的计算机程序时执行如图2中所示的实施例提供的数据处理的方法。
可选的,处理器4010可包括一个或多个处理单元;优选的,处理器4010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器4010中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器4020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据控制设备4000的使用所创建的数据等。此外,存储器4020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
控制设备4000还包括给各个部件供电的电源4030(比如电池),电源可以通过电源管理系统与处理器4010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
显示单元4040可用于显示由用户输入的信息或提供给用户的信息以及控制设备4000的各种菜单等,本发明实施例中主要用于显示控制设备4000中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元4040可以包括显示面板4041。显示面板4041可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
输入单元4050可用于接收用户输入的数字或字符等信息。输入单元4050可包括触控面板4051以及其他输入设备4052。其中,触控面板4051,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板4051上或在触控面板4051附近的操作)。
具体的,触控面板4051可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器4010,并接收处理器4010发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板4051。其他输入设备4052可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
当然,触控面板4051可覆盖显示面板4041,当触控面板4051检测到在其上或附近的触摸操作后,传送给处理器4010以确定触摸事件的类型,随后处理器4010根据触摸事件的类型在显示面板4041上提供相应的视觉输出。虽然在图4中,触控面板4051与显示面板4041是作为两个独立的部件来实现控制设备4000的输入和输出功能,但是在某些实施例中,可以将触控面板4051与显示面板4041集成而实现控制设备4000的输入和输出功能。
控制设备4000还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述控制设备4000还可以包括摄像头等其它部件,由于这些部件不是本申请实施例中重点使用的部件,因此,在图4中没有示出,且不再详述。
本领域技术人员可以理解,图4仅仅是控制设备的举例,并不构成对控制设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意方法实施例中的数据处理的方法。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任意方法实施例中的数据处理的控制方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台控制设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种数据处理的方法,其特征在于,包括:
确定有目标数据集合需要进行数据更新时,获取当前运行的协程总数量;
当所述协程总数量低于预设数量阈值时,为所述目标数据集合创建目标协程,并将所述协程总数量加1,所述预设数量阈值是根据资源配置信息确定的;
调用所述目标协程,以数据切片为数据更新单位,对数据库中存储的所述目标数据集合进行数据更新;
释放所述目标协程,并将所述协程总数量减1。
2.如权利要求1所述的方法,其特征在于,调用所述目标协程,以数据切片为数据更新单位,对数据库中存储的所述目标数据集合进行数据更新,包括:
分别获取每一拉取的目标数据对应的数据类型;
按照各目标数据的数据类型,将各目标数据添加至不同的数据切片中;
根据数据切片中包含的多个目标数据,对数据库进行数据更新。
3.如权利要求2所述的方法,其特征在于,进一步包括:
当确定当前运行的协程总数量为指定数量时,对创建的所有协程进行释放。
4.如权利要求1-3任一项所述的方法,其特征在于,在调用所述目标协程,以数据切片为数据更新单位,对数据库中存储的所述目标数据集合进行数据更新之前,进一步包括:
采用互斥锁,将各目标数据进行加锁保护;
在目标数据集合进行数据更新之后,进一步包括:
将各目标数据进行解锁处理。
5.如权利要求1-3任一项所述的方法,其特征在于,进一步包括:
通过所述目标协程以及相应的协程通道,接收其它协程发送的指定数据,并调用所述目标协程对目标数据和接收的指定数据进行数据统计处理;
其中,所述协程通道用于不同协程之间的数据通信。
6.一种数据处理的装置,其特征在于,包括:
获取单元,用于确定有目标数据集合需要进行数据更新时,获取当前运行的协程总数量;
创建单元,用于当所述协程总数量低于预设数量阈值时,为所述目标数据集合创建目标协程,并将所述协程总数量加1,所述预设数量阈值是根据资源配置信息确定的;
更新单元,用于调用所述目标协程,以数据切片为数据更新单位,对数据库中存储的所述目标数据集合进行数据更新;
释放单元,用于释放所述目标协程,并将所述协程总数量减1。
7.如权利要求6所述的装置,其特征在于,所述更新单元用于:
分别获取每一拉取的目标数据对应的数据类型;
按照各目标数据的数据类型,将各目标数据添加至不同的数据切片中;
根据数据切片中包含的多个目标数据,对数据库进行数据更新。
8.如权利要求7所述的装置,其特征在于,所述释放单元还用于:
当确定当前运行的协程总数量为指定数量时,对创建的所有协程进行释放。
9.如权利要求6-8任一项所述的装置,其特征在于,所述更新单元还用于:
采用互斥锁,将各目标数据进行加锁保护;
在目标数据集合进行数据更新之后,进一步包括:
将各目标数据进行解锁处理。
10.如权利要求6-8任一项所述的装置,其特征在于,所述更新单元还用于:
通过所述目标协程以及相应的协程通道,接收其它协程发送的指定数据,并调用所述目标协程对目标数据和接收的指定数据进行数据统计处理;
其中,所述协程通道用于不同协程之间的数据通信。
CN202010789270.0A 2020-08-07 2020-08-07 一种数据处理的方法以及装置 Pending CN114064667A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010789270.0A CN114064667A (zh) 2020-08-07 2020-08-07 一种数据处理的方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010789270.0A CN114064667A (zh) 2020-08-07 2020-08-07 一种数据处理的方法以及装置

Publications (1)

Publication Number Publication Date
CN114064667A true CN114064667A (zh) 2022-02-18

Family

ID=80232615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010789270.0A Pending CN114064667A (zh) 2020-08-07 2020-08-07 一种数据处理的方法以及装置

Country Status (1)

Country Link
CN (1) CN114064667A (zh)

Similar Documents

Publication Publication Date Title
CN109902255B (zh) 页面混合浏览记录生成方法、装置、设备和存储介质
CN111324610A (zh) 一种数据同步的方法及装置
US11474974B2 (en) Coordinator for preloading time-based content selection graphs
CN114244595B (zh) 权限信息的获取方法、装置、计算机设备及存储介质
CN110914814B (zh) 分布式存储环境的认知文件和对象管理
US11720488B2 (en) Garbage collection of preloaded time-based graph data
CN111324667B (zh) 一种数据同步方法、装置、电子设备及存储介质
EP3817339A2 (en) Method and system for management of an artificial intelligence development platform
CN113760453B (zh) 容器镜像分发系统及容器镜像推送、拉取和删除方法
CN112084206A (zh) 数据库的事务请求处理方法、相关设备及存储介质
CN113392863A (zh) 一种机器学习训练数据集的获取方法、获取装置及终端
CN112256676A (zh) 一种数据库迁移的方法、装置、设备和介质
CN112052420A (zh) 一种页面分享图片的生成以及页面分享方法和装置
CN114090207A (zh) 一种异步任务执行的方法
Jiang et al. Alibaba hologres: A cloud-native service for hybrid serving/analytical processing
CN114780615A (zh) 错误码管理方法及其装置
US11474943B2 (en) Preloaded content selection graph for rapid retrieval
CN113010498A (zh) 一种数据同步方法、装置、计算机设备及存储介质
CN110929126A (zh) 一种基于远程过程调用实现的分布式爬虫调度方法
CN114064667A (zh) 一种数据处理的方法以及装置
CN116955475A (zh) 一种异构数据库的数据同步方法、装置、设备及存储介质
CN114925078A (zh) 数据更新方法、系统、电子设备及存储介质
CN112783860B (zh) 构造镜像数据库的方法、装置、存储介质及计算机设备
CN115238006A (zh) 检索数据同步方法、装置、设备及计算机存储介质
CN115086328B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230920

Address after: 309 West, floor 3, No. 49, Zhichun Road, Haidian District, Beijing 100080

Applicant after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 35th floor, Tencent building, Keji Zhongyi Road, high tech Zone, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.