CN112925792B - 数据存储控制方法、装置、计算设备及介质 - Google Patents

数据存储控制方法、装置、计算设备及介质 Download PDF

Info

Publication number
CN112925792B
CN112925792B CN202110328485.7A CN202110328485A CN112925792B CN 112925792 B CN112925792 B CN 112925792B CN 202110328485 A CN202110328485 A CN 202110328485A CN 112925792 B CN112925792 B CN 112925792B
Authority
CN
China
Prior art keywords
data
combination
partition
field
data records
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.)
Active
Application number
CN202110328485.7A
Other languages
English (en)
Other versions
CN112925792A (zh
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.)
Beijing Zhongjing Huizhong Technology Co ltd
Original Assignee
Beijing Zhongjing Huizhong Technology 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 Beijing Zhongjing Huizhong Technology Co ltd filed Critical Beijing Zhongjing Huizhong Technology Co ltd
Priority to CN202110328485.7A priority Critical patent/CN112925792B/zh
Publication of CN112925792A publication Critical patent/CN112925792A/zh
Application granted granted Critical
Publication of CN112925792B publication Critical patent/CN112925792B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Abstract

公开了一种数据存储控制方法、装置、计算设备和介质。数据存储控制方法可以包括:获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值;根据多个字段中的预定字段组合,将多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对预定字段组合具有不同的字段值组合;以及对于至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得多条数据记录中针对预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中。

Description

数据存储控制方法、装置、计算设备及介质
技术领域
本公开涉及数据处理技术领域,特别是涉及一种数据存储控制方法、装置、计算设备及介质。
背景技术
随着对海量数据的收集和分析的需求增加,对于数据存储引擎也有着越来越高的要求。存在支持对数据进行分区的关系型数据库,并且大多数关系型数据库都支持分区存储的功能。
发明内容
发明人认识到,在一些应用场景下,需要按照需要的字段值对数据进行存储。然而,现有的分区方法并未考虑按照需要的字段值进行分区存储的问题。
提供一种缓解、减轻或甚至消除上述问题中的一个或多个的机制将是有利的。
根据本公开的一方面,提供了一种数据存储控制方法,包括:获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值;根据所述多个字段中的预定字段组合,将所述多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对所述预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对所述预定字段组合具有不同的字段值组合;以及对于所述至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得所述多条数据记录中针对所述预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中。
根据本公开的另一方面,提供了一种数据存储控制装置,包括:数据获取单元,被配置成获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值;数据分组单元,被配置成根据所述多个字段中的预定字段组合,将所述多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对所述预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对所述预定字段组合具有不同的字段值组合;以及数据写入单元,被配置成对于所述至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得针对所述预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中。
根据本公开的又另一方面,提供了一种计算设备,包括:存储器、处理器以及存储在存储器上的计算机程序,其中,处理器被配置为执行计算机程序以实现根据本公开的实施例的数据存储控制方法的步骤。
根据本公开的又一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现根据本公开的实施例的数据存储控制方法的步骤。
根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,其中,计算机程序被处理器执行时实现根据本公开的实施例的数据存储控制方法的步骤。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1是图示根据本公开的示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;
图2是图示根据本公开的示例性实施例的数据存储控制方法的流程图;
图3A是图示根据本公开的示例性实施例的数据存储控制方法的数据流示意图;
图3B是图示根据本公开的示例性实施例的分区主键字段的示意图;
图4A至图4E是图示根据本公开的另一示例性实施例的数据存储控制方法的流程图;
图5是图示根据本公开的示例性实施例的数据存储控制装置的示意性框图;
图6是图示能够应用于本公开的示例性实施例的示例性计算机设备的框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。如本文使用的,术语“多个”意指两个或更多,并且术语“基于”应解释为“至少部分地基于”。此外,术语“和/或”以及“……中的至少一个”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
下面结合附图详细描述本公开的示例性实施例。
图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统100的示意图。
参考图1,该系统100包括客户端设备110、服务器120、以及将客户端设备110与服务器120通信地耦合的网络130。
客户端设备110包括显示器114和可经由显示器114显示的客户端应用(APP)112。客户端应用112可以为运行前需要下载和安装的应用程序或者作为轻量化应用程序的小程序(liteapp)。在客户端应用112为运行前需要下载和安装的应用程序的情况下,客户端应用112可以被预先安装在客户端设备110上并被激活。在客户端应用112为小程序的情况下,用户102可以通过在宿主应用中搜索客户端应用112(例如,通过客户端应用112的名称等)或扫描客户端应用112的图形码(例如,条形码、二维码等)等方式,在客户端设备110上直接运行客户端应用112,而无需安装客户端应用112。在一些实施例中,客户端设备110可以是任何类型的移动计算机设备,包括移动计算机、移动电话、可穿戴式计算机设备(例如智能手表、头戴式设备,包括智能眼镜,等)或其他类型的移动设备。在一些实施例中,客户端设备110可以替换地是固定式计算机设备,例如台式机、服务器计算机或其他类型的固定式计算机设备。
服务器120典型地为由互联网服务提供商(ISP)或互联网内容提供商(ICP)部署的服务器。服务器120可以代表单台服务器、多台服务器的集群、分布式系统、或者提供基础云服务(诸如云数据库、云计算、云存储、云通信)的云服务器。将理解的是,虽然图1中示出服务器120与仅一个客户端设备110通信,但是服务器120可以同时为多个客户端设备提供后台服务。
网络130的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)、和/或诸如互联网之类的通信网络的组合。网络130可以是有线或无线网络。在一些实施例中,使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来处理通过网络130交换的数据。此外,还可以使用诸如安全套接字层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、网际协议安全(IPsec)等加密技术来加密所有或者一些链路。在一些实施例中,还可以使用定制和/或专用数据通信技术来取代或者补充上述数据通信技术。
为了本公开实施例的目的,在图1的示例中,客户端应用112可以为数据处理应用程序,包括数据存储控制应用程序或数据库管理应用程序,该数据处理应用程序可以提供用于数据处理的各种功能,例如,数据选取、数据存储、数据查询、数据删除、数据命令配置、运行环境配置、存储执行结果的显示等等。与此相应,服务器120可以是与数据存储控制应用程序或数据库管理应用程序一起使用的服务器。该服务器120可以从客户端设备110中运行的客户端应用112接收用户指令,并且向客户端设备110中运行的客户端应用112提供各种数据处理服务,例如数数据存储、数据查询、数据删除、数据分析等。替换地,服务器120也可以将数据提供给客户端设备110,由客户端设备110中运行的客户端应用112根据数据提供处理服务或执行结果的展示等。
图2是图示出根据示例性实施例的数据存储控制方法200的流程图。方法200可以在客户端设备(例如,图1中所示的客户端设备110)处执行,也即,方法200的各个步骤的执行主体可以是图1中所示的客户端设备110。在一些实施例中,方法200可以在服务器(例如,图1中所示的服务器120)处执行。在一些实施例中,方法200可以由客户端设备(例如,客户端设备110)和服务器(例如,服务器120)相组合地执行。在下文中,以执行主体为服务器120为例,详细描述方法200的各个步骤。
参考图2,在步骤210处,获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值。参考图3A,其中图示出根据示例性实施例的数据存储控制方法的数据流的示意图。在图3A中,示出了数据记录的示例表310,其中每行记录311-314是数据记录的示例,并且参考数字321-324中的每个对应数据记录中的字段的示例,每条数据记录针对每个字段具有相应的字段值。虽然图中示出了四条数据记录和四个字段,但是可以理解的是,本公开不限于此,并且根据本公开的方法能够适用于更多或更少的数据记录或针对每条数据记录的更多或更少的字段数量。作为另一个示例,待存储的多条数据记录可以包括2亿或者20亿条数据记录,每条数据记录可以包含十几个字段,并且例如可以利用其中的三到五个字段进行分区。可以理解的是,采用根据本公开的方法,可以使用所需的一个或任意多个的字段进行分区。
返回参考图2,在步骤220处,根据多个字段中的预定字段组合,将多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对预定字段组合具有不同的字段值组合。
例如,在图3A的示例中,在预定字段组合是“城市”323和“出生年份”324的情况下,表310中的数据记录可以被分为三个数据集合,第一数据集合包括针对该预定字段组合具有字段值组合“城市=成都,出生年份=1990”的数据记录311和314,第二数据集合包括针对该预定字段组合具有字段值组合“城市=成都,出生年份=1992”的数据记录312,以及第三数据集合包括针对该预定字段组合具有字段值组合“城市=北京,出生年份=1990”的数据记录313。作为另一个示例,在预定字段组合仅是“城市”323的情况下,表310中的数据记录可以被分为两个数据集合,第一数据集合包括针对该预定字段组合具有字段值组合“城市=成都”的数据记录311、312和314,以及第二数据集合包括针对该预定字段组合具有字段值组合“城市=北京”的数据记录313。预定字段组合可以包括一个或多个预定字段,并且这里的字段可以是按需选取的,在此不做限定。作为另一个示例(未示出),每条数据记录可以包括“身份证号前6位”字段和“身份证号剩余位数”字段,并且附加于或替代于上文提到的字段组合,可以按照“身份证号前6位”字段进行分组。
另外,可以理解的是,这里的分组不要求数据记录在物理上的分组,例如并不要求将具有相同字段值组合的数据记录重新存储在单独或相邻的存储区域,而只需要使这些数据记录可以按照这些预定字段组合进行识别即可。
在步骤230处,对于步骤220中得到的该至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得多条数据记录中针对预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中。
继续参照图3A,其中的存储区域320示出了包含多个存储分区321-328的示例。
可以理解的是,虽然这里示出了存储区域被划分为8个分区,但该数量仅仅是示例性的,存储区域或者数据库可以拥有更多或更少数量的分区,并且本公开不限于此。例如,在常见的采用哈希映射进行分区的分布式存储数据库中,数据存储区域可以被划分为1024个分区。
例如,在预定字段组合是“城市”323和“出生年份”324的情况下,可以将数据记录311和314写入到存储分区321,可以将数据记录312写入到存储分区322,并且可以将数据记录313写入到存储分区323,或者与数据记录312写入到同样的存储分区322。作为另一个示例,在预定字段组合仅是“城市”323的情况下,可以将数据记录311、312和314写入到存储分区321,并且可以将数据记录313写入存储分区322等。可以理解的是以上仅是示例,实际上并不要求这样的顺序存储数据。例如,可以将数据记录313写入存储分区328等。可以看出的是,针对预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中并不意味着每个存储分区必然存储针对预定字段组合具有相同字段值组合的数据记录。例如,一些存储分区可以被配置成存储针对预定字段组合具有相同字段值组合的数据记录(例如,存储单个如上所述的数据集合),并且另一些存储分区可以被配置成存储针对预定字段组合具有一个或多个不同字段值组合的数据记录(例如,存储多个如上所述的数据集合)。
通过上述方法,能够基于预定字段组合的字段值组合,对待存储的多条数据记录进行分组。尤其是,通过将基于预定字段组合对待存储的多个数据记录进行分类并且基于字段值进行数据的分区存储,能够使得相同字段值组合的数据被存储在相同的分区,从而便于按字段值对数据的操作。这里的字段组合和字段值组合可以是按照业务需求选取的。针对预定字段组合的字段值组合相关联的准则将在稍后进一步描述。
对于常用的关系型数据库,目前支持的表分区模式有如下几种:
·RANGE分区:根据列值在给定范围内将行分配给分区;
·LIST分区:与RANGE分区类似,但根据匹配一组离散值之一的列选择分区;
·HASH分区:将根据用户定义的表达式返回的值来选择分区,该表达式将对要插入表中的行中的列值进行操作;以及
·KEY分区:与HASH分区类似,不同之处在于,仅需要提供一个或多个列,HASH算法由MySQL等数据库来实现。
上面所描述的几种方法中,RANGE分区、LIST分区需要先根据可选值提前创建分区,HASH分区支持的函数有限,无法完全定制化,而KEY分区则是完全依赖MYSQL的哈希算法来进行分区。然而,对于某些复杂的应用场景,希望实现任意一个多个字段值组成的数据能落入到指定分区。另外,希望数据分布均匀以满足业务和性能需求。相应地,根据本公开的实施例,通过动态分配分区,既能保证数据写入、读取效率,也能够解决无法支持任意字段进行动态分区的问题。
下面将描述方法200的一些变形实施例。
根据一些实施例,多个存储分区可以包括第一类型的分区和第二类型的分区。与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的准则可以包括以下中的至少一项:多个存储分区中是否已存储预定字段组合取值为上述字段值组合的数据记录;以及与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的数据量。
由此,能够基于以下两者中的至少一项进行数据存储:是否已经存储具有与待存储数据记录的特定字段值组合相同的字段值组合的数据记录;与该特定字段值组合相关联的数据量。
根据一些实施例,可以通过以下步骤确定多个存储分区中是否已存储预定字段组合取值为上述字段值组合的数据记录:确定多个存储分区中的每个分区的类型以及每个分区中已存储的数据记录针对预定字段组合的字段值组合,其中,每个第一类型的分区中已存储的数据记录针对预定字段组合具有相同的字段值组合,并且每个第二类型的分区中已存储的数据记录针对预定字段组合具有一个或多个不同的字段值组合;以及将每个分区中已存储的数据记录针对预定字段组合的字段值组合与该数据集合中的数据记录针对预定字段组合的字段值组合进行比对。
在数据存储中,有时存在对结构化数据的针对特定的一个或多个字段需要保持数据一致性需求。针对此,第一类型的分区可以具有以下特点:同一个第一类型的分区中存储的数据记录针对预定字段组合具有相同的字段值组合。第一和第二类型的分区的存储容量可以是大致相同的,但是第一类型的分区中存储的数据集合的数据记录数据量较大。由此,方便数据的读取和统一删除。第二类型的分区可以被分配用于存储多个不同的数据集合。在第二类型的分区中,每个数据集合中的数据记录的数据量较小。基于此,第一类型的分区也可以被称为大数据量分区,并且第二类型的分区也可以被称为小数据量分区,并且本公开不限于此。
根据这样的实施例,可以在写入之前先统计每个分区的类型和当前已经存储的数据记录针对预定字段组合的字段值,以使得写入的数据能够与已经存储的数据按照相似的规则进行存储,方便后续数据的读取、移动和删除等操作,避免杂乱或者冗余数据。
例如,可以在每次数据入库前,先对多个分区的每个分区中存储的数据记录中针对预定字段组合的字段值组合进行统计,确定在多个分区中的一个或多个第一类型分区中存储了哪些字段值组合对应的数据记录(或未存储任何数据记录,例如是空闲分区),以及在多个分区中的一个或多个第二类型分区中存储了哪些字段值组合(例如,每个第二类型分区可以存储多个字段值组合对应的数据记录)。
在统计过程中,还可以确定第二类型分区中每个字段值组合对应的数据量,如将在下文所详细描述的。例如,继续结合图3A所述的示例,可以对存储区域320中的每个分区321-328进行统计,以确定其中是否存储数据记录、存储的数据记录针对预定字段组合(例如,“城市”与“出生年份”)的字段值以及可选的数据量或空闲空间量等。这对于提升数据操作的效率可以是有利的。例如,针对1亿条的数据量,统计可能只需要花几分钟,而写入过程可能要一小时,因此这样的统计占用时间比例并不高,而且能带来显著的效果,因此是值得花时间统计的。
根据一些实施例,与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的数据量是以下两项的和:该数据集合中的数据记录的数据的第一量;以及多个存储分区中已经存储的、预定字段组合取值为字段值组合的数据记录的数据的第二量。
例如,继续前文参照图3A的示例,假定存储区域320中没有存储任何数据记录,在预定字段组合是“城市”323和“出生年份”324的情况下,对应于“城市=成都,出生年份=1990”的第一数据集合的数据量为2,对应于“城市=成都,出生年份=1992”的第二数据集合的数据量可以是1,并且对应于“城市=北京,出生年份=1990”的第三数据集合的数据量可以是1。作为另一示例,假设分区323中已经存储另一数据记录(未示出),其中字段“城市”的值是“成都”,并且字段“出生年份”的值是“1990”,则第一数据集合的数据量可以是3。
根据一些实施例,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中可以包括:响应于确定多个存储分区中的第一分区已经存储预定字段组合取值为字段值组合的数据记录,并且第一分区是第一类型:将该数据集合中的数据记录写入第一分区中。
换言之,如果确定已经在第一类型分区中存储了预定字段组合取值为该字段值组合的数据记录(例如,通过将当前字段值组合与多个分区中每个分区中已存储的字段值组合进行比对,并且确定当前待存储的数据记录的字段值组合与某第一类型分区当前存储的字段值组合成功匹配,或者例如,通过确定已经存储的该字段值组合的数据记录具有属于第一类型分区的分区编号),则可以认为针对该字段值组合已经具有较大的数据量,因此不需要再对与该字段值组合关联的数据量进行统计,而可以直接在该第一类型分区(“第一分区”)中写入待存储的数据记录。由此,可以避免数据统计的过程,节省计算资源,提高数据处理效率。
根据一些实施例,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:响应于确定在多个存储分区中的第二分区中已经存储预定字段组合取值为字段值组合的数据记录、第二分区是第二类型、并且与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的数据量超过阈值:将该数据集合中的数据记录写入第三分区中,第三分区是多个存储分区中的空闲的第一类型的分区;并且将第二分区中已存储的预定字段组合取值为字段值组合的数据记录移动到第三分区中。
换言之,如果确定已经在第二类型分区中存储了预定字段组合取值为该字段值组合的数据记录(例如,通过将当前字段值组合与多个分区中每个分区中已存储的字段值组合进行比对,并且确定当前待存储的数据记录的字段值组合与某第二类型分区当前存储的字段值组合成功匹配,或者例如,通过确定已经存储的该字段值组合的数据记录具有属于第二类型分区的分区编号),意味着之前该数据记录可能具有较小的数据量。然而,可能存在这样的情况,即对于特定字段值组合已经存储的数据记录的数据量很小(并且因此被存储在第二类型分区)而待存储的数据记录的数据量较大、或者已经存储的数据记录的数据量与待存储的数据记录的数据量都低于阈值(并且因此也被存储在第二类型分区)然而两者之和满足阈值条件的可能情景。在这种情况下,能够计算更新的关联数据量(例如,数据总量),并且基于更新的关联数据量来判断数据应当被存储到的更合适的分区(例如,第一类型的分区)。如果针对预定字段组合的字段值组合相关联的数据量超过阈值,则分配一个空闲的第一类型分区,写入待存储的数据记录,同时将已经存储的对应字段值组合的数据移动到该新分区(“第三分区”)中。
由此,实现了对数据存储位置的实时调整与移动,并且这样移动之后,具有相同字段值的数据被保持在同一分区中,从而便于数据的管理和操作。
空闲的第一类型分区可以指未存储数据或有效数据量为零的第一类型分区。由此,能够使得第一类型分区仅存储针对该预定字段组合的预定字段值的数据,有利于数据的统一管理。
根据一些实施例,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:响应于确定在多个存储分区中的第四分区中已经存储预定字段组合取值为字段值组合的数据记录、第四分区是第二类型、并且与该数据集合中的数据记录针对预定字段组合的字段值组合相关联的数据量不超过阈值:将该数据集合中的数据记录写入第四分区中。
也即,如果确定已经在第二类型分区中存储了预定字段组合取值为该字段值组合的数据记录(例如,通过类似上文所述的方法),则计算更新的关联数据量,并且基于更新的关联数据量来判断数据应当被存储到的更合适的分区。如果更新后的关联数据量仍然较小(例如,小于阈值),则直接在该第二类型分区(“第四分区”)中写入数据。由此,能够实时地根据数据状态来存储数据,并且使得具有相同字段值的数据仍然被保持在同一分区中,便于数据的管理和操作。
根据一些实施例,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:响应于确定在多个存储分区中没有存储预定字段组合取值为字段值组合的数据记录,并且该数据集合中的数据记录的数据量超过阈值:将该数据集合中的数据记录写入第五分区中,第五分区是多个存储分区中的空闲的第一类型分区。
因此,如果确定当前未存储预定字段组合取值为该字段值组合的数据记录(例如,通过将当前字段值组合与多个分区中每个分区中已存储的字段值组合进行比对,但是并没有成功匹配结果,或者例如,通过在存储区域中执行查询但是没有获得有效查询结果),则计算待存储的数据量,并且与阈值进行比较;针对数据量较大的情况,则从第一类型的分区中分配一个空闲分区(“第五分区”),并且在该分区中写入数据。由此,能够将数据量较大的数据记录存储到适合于大量数据记录的分区中,便于后续的读取、处理、删除等操作。
根据一些实施例,方法200还可以包括:响应于确定在多个存储分区中没有存储预定字段组合取值为字段值组合的数据记录、该数据集合中的数据记录的数据量超过阈值、并且多个存储分区中不存在空闲的第一类型分区:发起数据异常警告;并且中止将该数据集合中的数据记录写入多个存储分区中。由此,能够实现对数据存储空间的管理,如果没有空闲的第一类型分区,则抛出异常,告知数据总量已经超过承载上限。
根据一些实施例,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:响应于确定在多个存储分区中没有存储预定字段组合取值为字段值组合的数据记录,并且该数据集合中的数据记录的数据量不超过阈值:将该数据集合中的数据记录写入第六分区中,第六分区是多个存储分区中满足数据写入条件的第二类型的分区。
因此,如果确定当前未存储预定字段组合取值为该字段值组合的数据记录(例如,通过上文所述的方法),并且在计算待存储的数据量之后确定数据量较小(例如,小于阈值),则分配一个满足数据写入条件的第二类型分区,写入数据。由此,能够将数据量较小的数据记录存储到适合于小量数据记录的分区中,节省空间和提高数据的分布式存储效率。
数据写入条件可以包括该分区中的数据不高于阈值数据量或者该分区中可用的存储空间不低于阈值存储空间。例如,数据写入条件可以包括分区中的数据量不超过10万条,不超过100万条,不超过数据最大存储空间的90%或95%等,并且本公开不限于此。
根据一些实施例,方法200还可以包括:响应于确定在多个存储分区中没有存储预定字段组合取值为字段值组合的数据记录、该数据集合中的数据记录的数据量不超过阈值、并且多个存储分区中不存在满足数据写入条件的第二类型分区,则发起数据异常警告;并且中止将该数据集合中的数据记录写入多个存储分区中。由此,能够实现对数据存储空间的管理,如果第二类型分区均不满足数据写入条件,例如所有的第二类型分区都已经被写满(例如,当前数据存储量均超过100万条),则抛出异常,告知数据总量已经超过承载上限。
可以采用很多种方式来确定该上文描述的阈值。例如,阈值可以是预先确定的阈值,例如根据实践确定的数据量阈值,或者可以是根据待存储的数据的数据规模或者业务特点而确定的。可以选取阈值以使得相对较多的数据被写入到第一类型分区中。
根据一些实施例,方法200还可以包括:响应于删除指令,通过清空第一类型的分区来删除第一类型的分区中存储的数据记录。这对于总是按照预定字段组合的相同值来删除数据的场景尤为适用。因为第一类型的分区中针对预定字段组合存储取值为相同字段值组合的数据,因此,在第一类型的分区中,对数据记录的删除操作可以通过清空整个分区来完成,而不需要再次按照所需的字段来单独搜索和删除,这可以提高删除效率。容易理解的是,可以按照任何现有的传统技术,比如按照字段搜索的方式,对第二类型分区中存储的数据记录进行删除。
通过对数据的分区存储,通过将数据按照一定规则分散到多个分区中,能够有效提高写入性能和读取性能。同时,根据本公开的实施例,可以按照分区维度直接删除和覆盖数据,大大提高数据的更新、迁移效率,也可以将数据打散,防止热点出现。
根据一些实施例,多个存储分区中至少90%数量的存储分区被设定为第一类型。由于第一类型的分区具有的采取相同字段值、便于管理和删除等优点,期望拥有较多的第一类型的分区。在一个实施例中,多个存储分区中至少95%数量的存储分区被设定为第一类型。在进一步的实施例中,多个存储分区中至少97%数量的存储分区被设定为第一类型。
作为一个示例,HASH分区支持的最大分区数为1024,并且这些分区被划分为三种类型的分区,分区0~999为第一类型分区,分区1000~1023为第二类型分区。当然,以上分区的划分方式仅为示例,并且可以采用其他的数值,并且还可以包括其他类型的分区,例如,将可以将分区1000~1022分区设定为第二类型分区,并且将分区1023设定为异常数据分区。例如,存储区域(例如存储器或数据库)的分区数量与类型设定可以是预先设置的,或者可以根据业务需求进行调整。
根据一些实施例,将数据集合中的数据记录写入多个存储分区中的对应存储分区中可以包括:为该数据集合中的每条数据记录增加分区主键字段。
例如,在分布式存储领域,一般是按照数据中原有的某些字段(或其哈希值)作为分区主键的,而本公开使用了基于数据量来确定的额外的字段作为分区主键,能够控制不同字段值到不同分区的一一对应,并且尤其可以基于数据量等来控制不同数据记录到不同分区的分配,并且能够实现如前文所述的增加数据处理效率、减少数据删除所需计算资源等优点。
根据一些实施例,分区主键字段可以包括分区编号位,分区编号位标识多个存储分区中该数据集合中的数据记录待被写入到的对应存储分区。分区主键可以包括编号位,以标识数据将要被存储的分区,例如根据本公开的方法的基于预定字段组合的字段值组合而确定的分区编号。编号位可以位于分区主键字段的最低位,以保证分区主键在经历HASH计算后,能落入到指定的分区。
根据一些实施例,分区主键字段还可以包括计数位,计数位标识在对应存储分区中数据记录的自增id。分区主键可以包括计数位,并且由此使得对于第一类型的分区,可以直接使用最大自增id来统计数据量,简化了计算过程。
根据一些实施例,分区主键字段还可以包括批次位,批次位标识当前数据存储任务的执行批次,由此,能够保证同时执行多个任务的时候不会出现冲突。
图3B示出了分区主键字段330的一个示例。在具体的实施方式中,可以定义一个内部字段作为分区主键并且作为HASH分区的分区字段。例如,内部字段的名称可以是_id并且字段类型可以是bigint(64)。通过这样的设计可以保证写入大量数据后,数据能被正常的读取。_id的示例构成可以如下:
-批次位331,表示每个分区执行的批次,例如位于主键字段的0~24位,并且在这种情况下可以最大支持224=16,777,216次执行;
-计数位332,表示当前批次数据的自增id,例如位于主键字段的25~54位,并且在这种情况下可以最大支持230=1,073,741,824的数据,即单个批次支持写入10亿+条数据记录;以及
-分区编号位332,表示数据将要被存储的分区,例如位于主键字段的55~64位,并且在这种情况下,使用10位的分区编号位能够支持210=1024的分区数量,也即能够标识(0~1023)的分区编号,并且在这种情况下,分区编号位可以是分区主键字段的最低10位。
根据一些实施例,预定字段组合可以包括多个字段。由此,能够实现根据一个或多个所需字段进行分区。在这种情况下,预定字段的字段值是多个字段中的每个字段的字段值的组合或拼接。由此,能够通过例如单字段HASH分区等简单分区方法来实现多字段分区。例如,继续参照图3A的示例,在预定字段组合是“城市(city)”323和“出生年份(year)”324的情况下,包括数据记录311和314的第一数据集合的字段值组合可以被记为字符串"city:Chengdu,year:1990"。替选地,第一数据集合的字段值组合可以被记为上述字符串的哈希映射结果,例如形如"202cb962ac59075b964b07152d234b70"的32位哈希串。可以理解的是,本公开不限于此。
虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。
采用根据本公开的实施例的分区方法,能够支持任意一个或多个字段组成的数据,并且由此能够增加写入效率和读取效率和增加数据删除效率。尤其是,针对按照字段(例如,一个或多个字段)对数据进行删除的场景,因此,采用根据本公开的实施例的字段分区,在删除的时候可以直接删除(例如,清空)分区,而不需要从不同的分区中分别(例如,按照数据标识或者按照特定字段搜索)删除对应的数据。
下面结合图4A-图4E描述根据本公开的其他示例性实施例的数据存储控制方法200的步骤230的变型例。
在一些实施例中,步骤230可以包括,在步骤410处,确定多个存储分区中的每个存储分区中已经存储的数据记录针对预定字段组合的已存储字段值组合。针对第一类型的分区,由于分区中预定字段组合的值是一致的,因此可以直接从数据中得到分区字段对应的值。针对第二类型的分区,可以直接对整个分区的数据记录进行统计,得到该分区中数据记录针对预定字段组合的取值(例如,多个取值)。可选地,针对第二类型的分区,还可以获取多个存储分区中的每个存储分区中对应的已存储数据量,例如每个字段对应的关联数据量。
在步骤420处,可以将该数据集合中的数据记录针对预定字段组合的字段值组合与所确定的已存储字段值组合中的每个字段值组合进行比对,以确定是否已经存储具有与该数据集合中的数据记录针对预定字段组合的字段值组合相同的字段值组合的数据记录。
在步骤430处,确定在多个存储分区中是否已经存储预定字段组合取值为该字段值组合的数据记录。如果在步骤430处结果为是,则方法进行到步骤440;否则,方法进行到步骤470。
在步骤440处,确定预定字段组合取值为该字段值组合的数据记录已存储在多个存储分区中的第一类型的分区中还是第二类型的分区中。如果在步骤处440确定已经存储在第一类型分区中,方法进行到步骤430;否则,方法进行到步骤460。
在步骤430处,将该数据集合中的数据记录写入当前第一类型的分区中。例如,在步骤440中确定在第一类型的第一分区中已存储预定字段组合取值为该字段值组合的数据记录,则可以将该数据集合中的数据记录直接写入该第一分区中。例如,继续前文的示例,假设分区数量为1024,并且其中分区0~999为第一类型分区,分区1000~1022分区为第二类型分区,并且分区1023为异常数据分区,因此,如果确定已经存储预定字段组合取值为该字段值组合的数据记录,同时对应的分区编号在0~999,则可以直接写入数据。
如果步骤440处确定在第二类型的分区中已经存储对应的数据记录,例如,继续前文的示例,确定当前表已经存储预定字段组合取值为该字段值组合的数据记录,同时对应的分区编号在1000~1022,此时方法进行到步骤4460。在步骤460处,确定与该字段值组合相关联的数据量是否大于阈值。如果是,如图4B所示,方法进行到步骤461;否则,如图4C所示,方法进行到步骤463。作为一个示例,阈值可以是10万,并且如前文已经叙述的,本公开不限于此。
在步骤461处,将该数据集合中的数据记录写入多个存储分区中的空闲的第一类型分区中。可以将该数据集合中的数据记录写入第三分区中,其中第三分区是多个存储分区中的空闲的第一类型分区。
随后,在步骤462处,将第二类型分区中已存储的该字段值组合的数据记录移动到该空闲的第一类型分区中。例如,已经确定在第二类型的第二分区中已存储预定字段组合取值为该字段值组合的数据记录,则将第二分区中已存储的对应数据也移动到该第三分区中。
如果在步骤460处,确定与该字段值组合相关联的数据量不大于阈值,则如图4C所示,在步骤463处,将该数据集合中的数据记录写入当前的第二类型的分区中。例如,如果确定在多个分区中的第四分区中已经存储取值为该字段值组合的数据记录,第四分区是第二类型的分区,并且确定预定字段组合取值为该字段值组合的数据记录对应于数据量小于阈值的数据,则可以直接将待存储的数据写入该第四分区中。
返回参考图4A,如果在步骤430处结果为否,即多个存储分区中尚未存储预定字段组合取值为该字段值组合的数据记录,方法进行到步骤470。在步骤470处,确定与该字段值组合相关联的数据量是否大于阈值。如果是,如图4D所示,方法进行到步骤471;否则,如图4E所示,方法进行到步骤475。例如,这里的阈值可以是与步骤460中相同的阈值。可以理解的是,本步骤可以与步骤460同时发生,或者可以与步骤460合并为一个步骤,例如方法可以包括首先确定第一类型的分区中不存在取值为该预定字段值组合的数据记录,之后,无论第二类型的分区中是否存在取值预定字段值组合的数据记录,都执行步骤460或步骤470的内容作为单个步骤。
参考图4D,在步骤471处,确定在多个存储分区中是否存在空闲的第一类型分区。如果在步骤471处结果为是,方法进行到步骤472。
在步骤472处,将该数据集合中的数据记录写入多个存储分区中的空闲的第一类型分区。例如,可以将该数据集合中的数据记录写入第五分区中,第五分区是多个存储分区中的空闲的第一类型分区。例如,第五分区是从分区0~999中分配的空闲分区。
如果在步骤471处结果为否,方法进行到步骤473。
在步骤473处,发起数据异常警告,指示数据总量已经超过承载上限。随后,在步骤474处,中止将该数据集合中的数据记录写入多个存储分区中。
接下来参考图4E,如果步骤470中确定结果为否(例如,数据量小于10万条),即预定字段组合取值为该字段值组合的数据记录的数据量不超过阈值,并且多个存储分区中尚未存储预定字段组合取值为该字段值组合的数据记录,方法进行到步骤475。
在步骤475处,确定在多个存储分区中是否存在满足数据写入条件的第二类型分区。上文已经描述了数据写入条件的示例,并且在此将不再赘述。
如果在步骤475处结果为是,方法进行到步骤476。在步骤476处,将该数据集合中的数据记录写入多个存储分区中满足数据写入条件的第二类型分区。例如,可以将该数据集合中的数据记录写入第六分区,第六分区是多个存储分区中满足数据写入条件的第二类型分区。例如,可以从分区1000~1022中分配一个空间足够的分区。可以理解的是,第六分区中可能已经写入预定字段组合取值为其他字段值组合(例如,多个其他字段值组合)的数据记录。第六分区中写入的数据记录可以是针对预定字段组合的分类统计数据量小于阈值的数据记录。
如果在步骤475处结果为否,例如分区1000~1022中的每个分区的数据量均超过100万,方法进行到步骤477。在步骤477处,发起数据异常警告,提示数据总量超过承载上限。随后,在步骤478处,中止将该数据集合中的数据记录写入多个存储分区中。
虽然各个操作在附图中被描绘为按照特定的顺序,但是这不应理解为要求这些操作必须以所示的特定顺序或者按顺行次序执行,也不应理解为要求必须执行所有示出的操作以获得期望的结果。例如,步骤474可以在步骤473之前被执行,或者与步骤473并发地执行。又例如,步骤473和474甚至可以被省略。
根据本公开的实施例,能够采用目前的关系型数据库支持的分区模式和分区方法实现基于任意一个或多个字段的分区,并且数据分布均匀,满足较高的写入、读取、删除性能。
图5示出了根据本公开的实施例的数据存储控制装置500。装置500可以包括数据获取单元501、数据分组单元502和数据写入单元503。
数据获取单元501可以被配置成获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值。
数据分组单元502可以被配置成根据所述多个字段中的预定字段组合,将所述多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对所述预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对所述预定字段组合具有不同的字段值组合。
数据写入单元503可以被配置成对于所述至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得针对所述预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中。
应当理解,图5中所示装置500的各个模块可以与参考图2描述的方法200和参考图4描述的方法400中的各个步骤相对应。由此,上面针对方法200和400描述的操作、特征和优点同样适用于装置500及其包括的模块。为了简洁起见,某些操作、特征和优点在此不再赘述。
虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。本文讨论的特定模块执行动作包括该特定模块本身执行该动作,或者替换地该特定模块调用或以其他方式访问执行该动作(或结合该特定模块一起执行该动作)的另一个组件或模块。因此,执行动作的特定模块可以包括执行动作的该特定模块本身和/或该特定模块调用或以其他方式访问的、执行动作的另一模块。
还应当理解,本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。上面关于图5描述的各个模块可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在一些实施例中,模块中的一个或多个可以一起被实现在片上系统(System on Chip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(Central Processing Unit,CPU)、微控制器、微处理器、数字信号处理器(DigitalSignal Processor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
根据本公开的一方面,提供了一种计算设备,其包括存储器、处理器以及存储在存储器上的计算机程序。该处理器被配置为执行计算机程序以实现上文描述的任一方法实施例的步骤。
根据本公开的一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。
根据本公开的一方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。
在下文中,结合图6描述这样的计算机设备、非暂态计算机可读存储介质和计算机程序产品的说明性示例。
图6示出了可以被用来实施本文所描述的方法的计算机设备600的示例配置。举例来说,图1中所示的服务器120和/或客户端设备110可以包括类似于计算机设备600的架构。上述数据处理设备/装置也可以全部或至少部分地由计算机设备600或类似设备或系统实现。
计算机设备600可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其它合适的计算机设备或计算系统。计算机设备600的示例包括但不限于:台式计算机、服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算机设备600的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。
计算机设备600可以包括能够诸如通过系统总线614或其他适当的连接彼此通信的至少一个处理器602、存储器604、(多个)通信接口606、显示设备608、其他输入/输出(I/O)设备610以及一个或更多大容量存储设备612。
处理器602可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器602可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器602可以被配置成获取并且执行存储在存储器604、大容量存储设备612或者其他计算机可读介质中的计算机可读指令,诸如操作系统616的程序代码、应用程序618的程序代码、其他程序620的程序代码等。
存储器604和大容量存储设备612是用于存储指令的计算机可读存储介质的示例,所述指令由处理器602执行来实施前面所描述的各种功能。举例来说,存储器604一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备612一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器604和大容量存储设备612在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,所述计算机程序代码可以由处理器602作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
多个程序模块可以存储在大容量存储设备612上。这些程序包括操作系统616、一个或多个应用程序618、其他程序620和程序数据622,并且它们可以被加载到存储器604以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):客户端应用112、方法200和/或方法400(包括方法200、400的任何合适的步骤)、数据获取单元501、数据分组单元502和数据写入单元503、和/或本文描述的另外的实施例。
虽然在图6中被图示成存储在计算机设备600的存储器604中,但是模块616、618、620和622或者其部分可以使用可由计算机设备600访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。
计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算机设备访问的任何其他非传送介质。
与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。
计算机设备600还可以包括一个或更多通信接口606,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、BluetoothTM接口、近场通信(NFC)接口等。通信接口606可以促进在多种网络和协议类型内的通信,其中包括有线网络(例如LAN、电缆等等)和无线网络(例如WLAN、蜂窝、卫星等等)、因特网等等。通信接口606还可以提供与诸如存储阵列、网络附属存储、存储区域网等等中的外部存储装置(未示出)的通信。
在一些示例中,可以包括诸如监视器之类的显示设备608,以用于向用户显示信息和图像。其他I/O设备610可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。
虽然在附图和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,并且词语“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。

Claims (21)

1.一种数据存储控制方法,包括:
获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值;
根据所述多个字段中的预定字段组合,将所述多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对所述预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对所述预定字段组合具有不同的字段值组合;以及
对于所述至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得所述多条数据记录中针对所述预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中,
其中,与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则包括以下中的至少一项:
所述多个存储分区中是否已存储所述预定字段组合取值为所述字段值组合的数据记录;以及
与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的数据量。
2.根据权利要求1所述的方法,其中,所述多个存储分区包括第一类型的分区和第二类型的分区。
3.根据权利要求2所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
响应于确定所述多个存储分区中的第一分区已经存储所述预定字段组合取值为所述字段值组合的数据记录,并且所述第一分区是所述第一类型:
将该数据集合中的数据记录写入所述第一分区中。
4.根据权利要求2所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
响应于确定在所述多个存储分区中的第二分区中已经存储所述预定字段组合取值为所述字段值组合的数据记录、所述第二分区是所述第二类型、并且与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的数据量超过阈值:
将该数据集合中的数据记录写入第三分区中,所述第三分区是所述多个存储分区中的空闲的第一类型的分区;并且
将所述第二分区中已存储的所述预定字段组合取值为所述字段值组合的数据记录移动到所述第三分区中。
5.根据权利要求2所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
响应于确定在所述多个存储分区中的第四分区中已经存储所述预定字段组合取值为所述字段值组合的数据记录、所述第四分区是所述第二类型、并且与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的数据量不超过阈值:
将该数据集合中的数据记录写入所述第四分区中。
6.根据权利要求2所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
响应于确定在所述多个存储分区中没有存储所述预定字段组合取值为所述字段值组合的数据记录,并且该数据集合中的数据记录的数据量超过阈值:
将该数据集合中的数据记录写入第五分区中,所述第五分区是所述多个存储分区中的空闲的第一类型的分区。
7.根据权利要求2所述的方法,还包括:
响应于确定在所述多个存储分区中没有存储所述预定字段组合取值为所述字段值组合的数据记录、该数据集合中的数据记录的数据量超过阈值、并且所述多个存储分区中不存在空闲的第一类型分区:
发起数据异常警告;并且
中止将该数据集合中的数据记录写入所述多个存储分区中。
8.根据权利要求2所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
响应于确定在所述多个存储分区中没有存储所述预定字段组合取值为所述字段值组合的数据记录,并且该数据集合中的数据记录的数据量不超过阈值:
将该数据集合中的数据记录写入第六分区中,所述第六分区是所述多个存储分区中满足数据写入条件的第二类型的分区。
9.根据权利要求2所述的方法,还包括:
响应于确定在所述多个存储分区中没有存储所述预定字段组合取值为所述字段值组合的数据记录、该数据集合中的数据记录的数据量不超过阈值、并且所述多个存储分区中不存在满足数据写入条件的第二类型分区:
发起数据异常警告;并且
中止将该数据集合中的数据记录写入所述多个存储分区中。
10.根据权利要求2所述的方法,还包括:
响应于删除指令,通过清空所述第一类型的分区来删除所述第一类型的分区中存储的数据记录。
11.根据权利要求2所述的方法,其中,所述多个存储分区中至少90%数量的存储分区被设定为所述第一类型。
12.根据权利要求2所述的方法,其中,通过以下步骤确定所述多个存储分区中是否已存储所述预定字段组合取值为所述字段值组合的数据记录:
确定所述多个存储分区中的每个分区的类型以及每个分区中已存储的数据记录针对所述预定字段组合的字段值组合,其中,每个第一类型的分区中已存储的数据记录针对所述预定字段组合具有相同的字段值组合,并且每个第二类型的分区中已存储的数据记录针对所述预定字段组合具有一个或多个不同的字段值组合;以及
将每个分区中已存储的数据记录针对所述预定字段组合的字段值组合与该数据集合中的数据记录针对所述预定字段组合的字段值组合进行比对。
13.根据权利要求2所述的方法,其中,与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的数据量是以下两项的和:
该数据集合中的数据记录的数据的第一量;以及
所述多个存储分区中已经存储的、所述预定字段组合取值为所述字段值组合的数据记录的数据的第二量。
14.根据权利要求1-13中任一项所述的方法,其中,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中包括:
为该数据集合中的每条数据记录增加分区主键字段。
15.根据权利要求14所述的方法,其中,所述分区主键字段包括分区编号位,所述分区编号位标识该数据集合中的数据记录待被写入到的所述多个存储分区中的对应存储分区。
16.根据权利要求15所述的方法,其中,所述分区主键字段还包括计数位,所述计数位标识在所述对应存储分区中数据记录的自增ID。
17.根据权利要求15所述的方法,其中,所述分区主键字段还包括批次位,所述批次位标识当前数据存储任务的执行批次。
18.根据权利要求1-13中任一项所述的方法,其中,所述预定字段组合包括多个字段。
19.一种数据存储控制装置,包括:
数据获取单元,被配置成获取待存储的多条数据记录,每条数据记录包括对应于多个字段的多个字段值;
数据分组单元,被配置成根据所述多个字段中的预定字段组合,将所述多条数据记录分组为至少一个数据集合,每个数据集合中的数据记录针对所述预定字段组合具有相同的字段值组合,并且不同数据集合中的数据记录针对所述预定字段组合具有不同的字段值组合;以及
数据写入单元,被配置成对于所述至少一个数据集合中的每个数据集合,基于与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则,将该数据集合中的数据记录写入多个存储分区中的对应存储分区中,使得针对所述预定字段组合具有相同的字段值组合的数据记录被写入相同的分区中,
其中,与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的准则包括以下中的至少一项:
所述多个存储分区中是否已存储所述预定字段组合取值为所述字段值组合的数据记录;以及
与该数据集合中的数据记录针对所述预定字段组合的字段值组合相关联的数据量。
20.一种计算设备,包括:
存储器、处理器以及存储在所述存储器上的计算机程序,
其中,所述处理器被配置为执行所述计算机程序以实现权利要求1-18中任一项所述方法的步骤。
21.一种非暂态计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1-18中任一项所述方法的步骤。
CN202110328485.7A 2021-03-26 2021-03-26 数据存储控制方法、装置、计算设备及介质 Active CN112925792B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110328485.7A CN112925792B (zh) 2021-03-26 2021-03-26 数据存储控制方法、装置、计算设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110328485.7A CN112925792B (zh) 2021-03-26 2021-03-26 数据存储控制方法、装置、计算设备及介质

Publications (2)

Publication Number Publication Date
CN112925792A CN112925792A (zh) 2021-06-08
CN112925792B true CN112925792B (zh) 2024-01-05

Family

ID=76176241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110328485.7A Active CN112925792B (zh) 2021-03-26 2021-03-26 数据存储控制方法、装置、计算设备及介质

Country Status (1)

Country Link
CN (1) CN112925792B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297226B (zh) * 2021-06-10 2023-10-03 北京百度网讯科技有限公司 数据存储方法、数据读取方法、装置、电子设备及介质
CN114881613A (zh) * 2022-06-01 2022-08-09 北京字跳网络技术有限公司 一种数据处理方法、装置、电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546575A (en) * 1994-05-23 1996-08-13 Basil E. Potter & Associates, Inc. Encoding method for compressing a tabular database by selecting effective compression routines for each field and structure of partitions of equal sized records
US7720822B1 (en) * 2005-03-18 2010-05-18 Beyondcore, Inc. Quality management in a data-processing environment
CN102982065A (zh) * 2003-09-15 2013-03-20 起元科技有限公司 数据处理方法、数据处理装置及计算机可读存储介质
CN106682215A (zh) * 2016-12-30 2017-05-17 华为技术有限公司 一种数据处理方法和管理节点
CN108369601A (zh) * 2015-12-15 2018-08-03 微软技术许可有限责任公司 关系结构化数据中的提升属性
CN109299100A (zh) * 2018-10-12 2019-02-01 第四范式(北京)技术有限公司 管理内存数据及在内存中维护数据的方法和系统
CN109558432A (zh) * 2017-09-27 2019-04-02 北京国双科技有限公司 数据处理方法及装置
CN109952568A (zh) * 2016-08-10 2019-06-28 月影移动有限公司 用于高速搜索或过滤大数据集的系统、方法和数据结构
CN110019292A (zh) * 2017-09-06 2019-07-16 华为技术有限公司 一种数据的查询方法及装置
CN110083602A (zh) * 2019-04-15 2019-08-02 北京三快在线科技有限公司 一种基于hive表的数据存储及数据处理的方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140218A (ja) * 2000-10-31 2002-05-17 Toshiba Corp データ処理方法、コンピュータ読み取り可能な記録媒体及びデータ処理装置
US6996558B2 (en) * 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
CN104298680B (zh) * 2013-07-18 2019-01-11 腾讯科技(深圳)有限公司 数据统计方法及数据统计装置
US9740724B2 (en) * 2014-04-29 2017-08-22 International Business Machines Corporation Data partitioning for high-efficiency data retrieval
US10127503B2 (en) * 2015-10-21 2018-11-13 International Business Machines Corporation Generating multidimensional combination data

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546575A (en) * 1994-05-23 1996-08-13 Basil E. Potter & Associates, Inc. Encoding method for compressing a tabular database by selecting effective compression routines for each field and structure of partitions of equal sized records
CN102982065A (zh) * 2003-09-15 2013-03-20 起元科技有限公司 数据处理方法、数据处理装置及计算机可读存储介质
US7720822B1 (en) * 2005-03-18 2010-05-18 Beyondcore, Inc. Quality management in a data-processing environment
CN108369601A (zh) * 2015-12-15 2018-08-03 微软技术许可有限责任公司 关系结构化数据中的提升属性
CN109952568A (zh) * 2016-08-10 2019-06-28 月影移动有限公司 用于高速搜索或过滤大数据集的系统、方法和数据结构
CN106682215A (zh) * 2016-12-30 2017-05-17 华为技术有限公司 一种数据处理方法和管理节点
CN110019292A (zh) * 2017-09-06 2019-07-16 华为技术有限公司 一种数据的查询方法及装置
CN109558432A (zh) * 2017-09-27 2019-04-02 北京国双科技有限公司 数据处理方法及装置
CN109299100A (zh) * 2018-10-12 2019-02-01 第四范式(北京)技术有限公司 管理内存数据及在内存中维护数据的方法和系统
CN110083602A (zh) * 2019-04-15 2019-08-02 北京三快在线科技有限公司 一种基于hive表的数据存储及数据处理的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
数据仓库中的相似重复记录检测方法;李星毅;包从剑;施化吉;;电子科技大学学报(第06期);全文 *

Also Published As

Publication number Publication date
CN112925792A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
US11593365B2 (en) Splitting a time-range query into multiple sub-queries for serial execution
US10922316B2 (en) Using computing resources to perform database queries according to a dynamically determined query size
US9183283B2 (en) Inserting data into an in-memory distributed nodal database
US20190179815A1 (en) Obtaining performance data via an application programming interface (api) for correlation with log data
US8356050B1 (en) Method or system for spilling in query environments
US9875272B1 (en) Method and system for designing a database system for high event rate, while maintaining predictable query performance
US20190324946A1 (en) Correlation of performance data and structure data from an information technology environment
US11016971B2 (en) Splitting a time-range query into multiple sub-queries for parallel execution
CN112925792B (zh) 数据存储控制方法、装置、计算设备及介质
US10049034B2 (en) Information processing apparatus
CN112905854A (zh) 数据处理方法、装置、计算设备及存储介质
US9229949B2 (en) Extensible and generic framework for managing resources for data warehousing loads
CN109343962A (zh) 数据处理方法、装置及分布式服务系统
US20160117351A1 (en) Concurrent access for hierarchical data storage
CN112905596A (zh) 数据处理的方法、装置、计算机设备以及存储介质
CN112148226A (zh) 一种数据存储方法及相关装置
CN115809015A (zh) 分布式系统中数据处理的方法以及相关系统
CN114911886B (zh) 一种遥感数据的切片方法、装置和云服务器
US11816088B2 (en) Method and system for managing cross data source data access requests
CN113656411B (zh) 用于图数据入库的方法及其装置
CN112402955B (zh) 游戏日志记录方法及系统
CN114254166A (zh) 联邦式图数据库架构
CN112925952A (zh) 数据查询方法、装置、计算设备及存储介质
CN117743077A (zh) 一种数据库的性能监控方法及相关系统
CN117472873A (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
GR01 Patent grant
GR01 Patent grant