[go: up one dir, main page]

CN118303020A - 处理数据的方法和相关装置 - Google Patents

处理数据的方法和相关装置 Download PDF

Info

Publication number
CN118303020A
CN118303020A CN202280078767.9A CN202280078767A CN118303020A CN 118303020 A CN118303020 A CN 118303020A CN 202280078767 A CN202280078767 A CN 202280078767A CN 118303020 A CN118303020 A CN 118303020A
Authority
CN
China
Prior art keywords
data
attributes
objects
storage space
attribute
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
CN202280078767.9A
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies 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
Priority claimed from RU2021134789A external-priority patent/RU2846847C2/ru
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Publication of CN118303020A publication Critical patent/CN118303020A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems

Landscapes

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

Abstract

本申请实施例提供一种处理数据的方法和相关设备,该方法包括:获取N个类型相同的对象;根据该N个对象包括的M个属性的属性值,确定M组数据,该M组数据与该M个属性一一对应,该M组数据中的每组数据用于指示该N个对象中的对应的属性的属性值;分别使用该M个存储空间集合保存该M组数据。上述技术方案中,类相同的N个对象的同一属性的属性值通过同一个存储空间集合来保存。因此,上述技术方案提供了良好的数据局部性。另外,上述技术方案可以仅保存对象的属性值或者用于指示属性值的数据,而无需保存一些冗余信息(例如对象头和对齐填充)。因此,上述技术方案节省了存储空间。

Description

处理数据的方法和相关装置
本申请要求于2021年11月29日提交俄罗斯联邦专利局、申请号为2021134789、申请名称为“处理数据的方法和相关装置”的俄罗斯联邦专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及信息技术领域,更具体地,涉及处理数据的方法和相关装置。
背景技术
面向对象程序设计(object-oriented programming,OOP)是种具有对象概念的编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、特性、代码与方法。对象(object)则指的是类(class)的实例。OOP将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
系统并不为类分配存储空间,当类实例化后,系统将会为对象分配存储空间。换句话说,系统在存储对象的时候,会为每个对象分配相应的存储空间。当系统要读取多个同类对象时,系统需要从不同的存储空间分别找到该多个同类对象。因此,基于对象分配存储空间可能会导致读取效率较低的问题。
发明内容
本申请实施例提供一种处理数据的方法和相关设备,可以提供良好的数据一致性。
第一方面,本申请实施例提供一种处理数据的方法,包括:获取N个对象,其中该N个对象的类相同,该N个对象中的每个对象包括M个属性,N为大于或等于2的正整数,M为大于或等于1的正整数;根据该N个对象包括的M个属性的属性值,确定M组数据,该M组数据与该M个属性一一对应,该M组数据中的每组数据用于指示该N个对象中的对应的属性的属性值;分别使用该M个存储空间集合保存该M组数据。
上述技术方案中,类相同的N个对象的同一属性的属性值通过同一个存储空间集合来保存。因此,上述技术方案提供了良好的数据局部性。另外,上述技术方案可以仅保存对象的属性值或者用于指示属性值的数据,而无需保存一些冗余信息(例如对象头和对齐填充)。因此,上述技术方案节省了存储空间。进一步,可以只使用一个文件来记录该M组数据。这样,可以减少需要存储的文件数量,降低对象存储的碎片化。
结合第一方面,在第一方面的一种可能的实现方式中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 1个第一类属性,其中该N个对象中的任意两个对象的第一属性的属性值不同,该第一属性为该M 1个第一类属性中的任一个第一类属性,M 1为大于或等于1且小于或等于M的正整数;确定M 1组数据,其中该M 1组数据与该M 1个第一类属 性一一对应,该M 1组数据中的第i组数据包括的N个数据分别用于指示该N个对象的该M 1个第一类属性中的第i个第一类属性的属性值,i=1,…,M 1;该分别使用该M个存储空间集合保存该M组数据,包括:使用M 1个第一存储空间集合保存该M 1组数据,其中该M 1个第一存储空间集合中的第i个第一存储空间集合包括N个连续的存储空间,该第i个第一存储空间集合中的N个连续的存储空间分别用于保存该第i组数据包括的N个数据。
上述技术方案中,同一属性的多个数据保存在连续的存储空间中。根据缓存读取规则,连续的存储空间通常被一起读取。因此,上述技术方案可以使得对象的属性值的保存具有良好的数据局部性。
结合第一方面,在第一方面的一种可能的实现方式中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 2个第二类属性,其中该N个对象中的任意两个对象的第二属性的属性值相同,该第二属性为该M 2个第二类属性中的任一个第二类属性,M 2为大于或等于1且小于或等于M的正整数;确定M 2组数据,其中该M 2组数据中的第j组数据包括的数据用于指示该N个对象的该M 2个第二类属性中的第j个第二类属性的属性值,j=1,…,M 2;该分别使用该M个存储空间集合保存该M组数据,包括:使用M 2个第二存储空间集合保存该M 2组数据,其中该M 2个第二存储空间集合中的第j个第二存储空间集合包括的存储空间用于保存该第j组数据包括的数据。
上述技术方案将在保存对象的属性值为常量的属性时,可以只保存一份。这样,可以进一步压缩对象的存储空间。
结合第一方面,在第一方面的一种可能的实现方式中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 3个第三类属性,其中该N个对象中的每个对象的第三属性能够根据一个函数确定,该第三属性为该M 3个第三类属性中的任一个第三类属性,M 3为大于或等于1且小于或等于M的正整数;确定M 3组数据,其中该M 3组数据中的第k组数据包括的函数能够确定该N个对象的该M 3个第三类属性中的第k个第三类属性的属性值,k=1,…,M 3;该分别使用该M个存储空间集合保存该M组数据,包括:使用M 3个第三存储空间集合保存该M 3组数据,其中该M 3个第三存储空间集合中的第k个第三存储空间集合包括的存储空间用于保存该第k组数据包括的函数。
上述技术方案将在保存能够根据函数计算的属性值时,可以只保存相应的函数,而无需保存具体的属性值。这样,可以进一步压缩对象的存储空间。
结合第一方面,在第一方面的一种可能的实现方式中,该M个存储空间集合中的每个存储空间集合中的每个存储空间的大小等于用于指示属性值的数据的最大占用的存储空间的大小。
属性值的数据最大占用的存储空间大小是指该属性值最大可能的值占用的存储空间。例如,int类型的数据,但是该数据对应的属性值最大取值为255。那么可以用于保存该属性值的存储空间可以只有8比特,而无需32比特。这样,可以更进一步节省对象存储的存储空间。
结合第一方面,在第一方面的一种可能的实现方式中,该方法还包括:获取读指令, 该读指令用于读取该N个对象中的一个或多个对象的P个属性的属性值,P为大于或等于1且小于或等于M的正整数;确定从该M个存储空间集合中确定P个存储空间集合,该P个存储空间集合与该P个属性一一对应;分别根据该P个存储空间集合包括的数据确定该一个或多个对象的该P个属性的属性值。
上述技术方案在读取对象的某一属性的属性值时,可以直接从该属性对应的存储空间集合中读取该属性的属性值,而无需读取该对象的所有属性值。这样,可以加快属性值的读取速度。
第二方面,本申请实施例提供一种计算机设备,该计算机设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机设备,该计算机设备包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是一种数据保存方式的示意图。
图2是本申请实施例提供的一种处理数据的方法的示意性流程图。
图3是数据列1至数据列5的保存方式的示意图。
图4是经过压缩后的数据列1至数据列5的保存方式的示意图。
图5是一个字符串池的示意图。
图6是压缩后的数据列1至数据列5的保存方式的示意图。
图7是根据本申请实施例提供的一种处理数据的方法的示意性流程图。
图8是根据本申请实施例提供的一种计算机设备的示意性结构框图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
为了便于本领域技术人员更好地理解本申请的技术方案,首先介绍与本申请相关的一些术语和技术。
1,数据局部性(data locality)
数据局部性也可以称为局部性。局部性有两种不同的形式:时间局部性(temporal locality)和空间局部性(spatial locality)。在一个具有良好时间局部性的程序中,被引用 过一次的存储器位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。一般而言,具有良好数据局部性的程序比局部性差的程序运行得更快。现代计算机系统的各个层次,从硬件到操作系统、再到应用程序,它们的设计都利用了局部性。在硬件层,局部性原理允许计算机设计者通过引入高速缓存存储器的小而快速的存储器来保存最近被使用的指令和数据项,从而提高对主存的访问速度。在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存。
2,对象
以热点(hotspot)虚拟机为例,在hotspot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(object header)、实例数据(instance data)和对齐填充(padding)。
对象头包括标记字段和类型指针。标记字段(markword)用于存储对象自身的运行时数据,如哈希码、锁状态标志、线程持有的锁等。这部分数据长度在32位机器和64位机器虚拟机中分别为4字节和8字节。类型指针是对象指向它的类元数据(保存在方法区)的指针,虚拟机通过这个指针来确定这个对象属于哪个类的实例,指针占用4个字节(64位机器占8个字节)。
实例数据是是对象真正存储的有效信息,也是程序代码中定义的各种类型的字段内容。
对齐填充起着占位符的作用。由于Hotspot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说,就是对象的大小必须是8字节的整数倍。而对象头部分正好是8字节的倍数(1倍或者2倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。
3,集成开发环境(integrated development environment,IDE)。
IDE是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
在IDE中,代码索引是一种单独的、物理的对当前项目中所有代码以及依赖的组件(代码)在某种映射关系下的值进行排序的一种存储结构,它表示某种映射关系下的数据表格中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据的逻辑指针清单。通过这个逻辑指针清单,IDE可以快速找到特定的信息集合,比如当前类型的所有类方法集合的代码索引。
代码索引是IDE理解代码的基础,IDE所有编辑相关的核心能力都依赖代码索引,包括:
1.代码补全:基于开发人员的输入和已有项目代码,即时预测待补全代码中的类名、方法名和代码片段等,并为开发人员提供建议列表。能够减轻键入负担,减少拼写错误,并且开发人员不必花费很长时间记忆不熟悉的类名和方法名,最终提高开发效率。
2.引用查找:查找当前符号在项目中的所有引用。
3.错误检查:提供编译前检测功能,纠正项目中的异常代码。
4.智能跳转:提供快速浏览、跳转到类、文件和符号(通过名字找到某个方法或者字段)。
5.语法高亮:提供把源文件中的关键字等具有语法意义的特殊字符序列渲染出来。
6.代码重构:提供包括符号重命名,函数抽取等代码自动化优化功能。
传统的代码索引是以对象为粒度存储在系统中的。一般而言,一个代码文件对应一个代码索引,一个代码索引是一个对象,一个对象被存储为一个文件。因此,如果需要存储多个代码文件的代码索引,那么就需要多个文件(以下简称代码索引文件)。该多个代码索引文件与多个代码文件一一对应,每个代码索引文件用于保存对应代码文件的代码索引。另外,某些IDE中,不同的代码索引文件可能会保存在不同的文件目录中。
假设存在以下五个对象:
对象1={studentIDno:“3286208”,lastname:“尼尔”,firstname:“亚伯拉罕”,gender:“男”,classyear:“新生”};
对象2={studentIDno:“3286209”,lastname:“贝蒂”,firstname:“米勒”,gender:“女”,classyear:“新生”};
对象3={studentIDno:“3286210”,lastname:“莎莉”,firstname:“瓦格纳”,gender:“女”,classyear:“新生”};
对象4={studentIDno:“3286211”,lastname:“乔”,firstname:“布鲁克斯”,gender:“男”,classyear:“新生”};
对象5={studentIDno:“3286212”,lastname:“罗宾”,firstname:“李”,gender:“女”,classyear:“新生”}.
为了便于描述,上述五个对象可以用表1表示:
表1
索引 学号 性别 年级
1 3286208 尼尔 亚伯拉罕 新生
2 3286209 贝蒂 米勒 新生
3 3286210 莎莉 瓦格纳 新生
4 3286211 布鲁克斯 新生
5 3286212 罗宾 femal 新生
该五个对象中的每个对象可以包括五个属性,分别为:学号(studentIDno)、名(lastname)、姓(firstname)、性别(gender)和年级(classyear)。
如果是以对对象为例读存储如表1所示的五个对象,那么这五个对象的存储空间布局可以如图1所示。如图1所示,对象1至对象5保存在连续的存储地址中。
图2是本申请实施例提供的一种处理数据的方法的示意性流程图。
201,分析待存储对象。
202,格式转换。
203,数据压缩。
204,存储压缩后的数据。
205,对需要读取的数据进行解压。
206,通过代理对象将数据还原为对象。
下面,结合如上所述的五个对象,分别对图2的各个步骤进行介绍。
通过分析待存储的对象1至对象5,可以确定该五个对象的类是相同的。换句话说,该五个对象都包括相同的属性值。此外,通过对待存储对象的分析,还可以确定待存储对象的每个属性的属性值。
例如,对象1的五个属性的属性值,分别为:3286208、尼尔、亚伯拉罕、男(男)和新生;第对象2的五个属性的属性值,分别为3286209、贝蒂、米勒、女和新生,以此类推。
通过对属性值进行数据转换,可以得到五个数据列,该五个数据列(data column)与五个属性值一一对应,每个数据列中包括对象1至对象5中对应的属性的属性值。为了便于描述,可以将这五个数据列分别称为数据列1至数据列5。数据列1至数据列5包含的内容如下:
数据列1={“3286208”,“3286209”,“3286210”,“3286211”,“3286212”};
数据列2={“尼尔”,“贝蒂”,“莎莉”,“乔”,“罗宾”};
数据列3={“亚伯拉罕”,“米勒”,“瓦格纳”,“布鲁克斯”,“李”};
数据列4={“男”,“女”,“女”,“男”,“女”};
数据列5={“新生”,“新生”,“新生”,“新生”,“新生”}。
在一些实施例中,可以直接保存这五个数据列。换句话说,这些实施例中不需要对数据列进行压缩(即不需要执行步骤203)。相应的,读取的时候可以直接读取保存的数据列,而无需进行解压缩(即不需要执行步骤205)。在这些实施例中,上述五个数据列中每个数据列可以对应一个存储空间集合,每个存储空间集合包括五个地址连续的存储空间,五个存储空间分别用于对应的数据列中的五个数据。图3示出了数据列1至数据列5的保存方式。除非特殊说明,本申请实施例中所称地址连续是指虚拟存储地址连续。
如图3所示的存储空间集合1至存储空间集合5分别对应于数据列1至数据列5。以存储空间集合1为例,存储空间集合对应于数据列1,存储空间集合1中包括五个存储地址连续的存储空间。这五个存储空间分别存储对象1至对象5的属性“学号”的属性值(即数据列1中包含的五个数据)。又如,存储空间集合2对应于数据列2,存储空间集合2中包括五个连续的存储空间。这五个存储空间分别存储对象1至对象5的属性“名”的属性值(即数据列2中包含的五个数据)。又如,存储空间集合5对应于数据列5,存储空间集合5包括五个连续的存储空间。这五个存储空间分别存储对象1至对象5的属性“年级”的属性值(即数据列3中包含的五个数据)。
在一些实施例中,在存储数据列之前还可以对数据列进行压缩,然后存储压缩后的数据列。
在一些实施例中,如果一个数据列中包括的任意两个数据的值都相同。那么这个数据列可以只保存有一个数据。
以数据列1至数据列5为例,数据列5中的数据均为“新生”。因此,数据列5可以被压缩处理。压缩后的数据列5可以只保存一个数据。
在另一些实施例中,如果一个数据列中包括的数据可以根据一个预设函数确定,那么这个数据列可以保存该预设函数。例如,数据列1中的数据可以根据线性函数 f(x)=x+3286207确定,其中x是对象的索引值。例如对象1的索引值为1,那么根据上述线性函数,可以确定对象1的学号为3286208。又如,对象5的索引值为5,那么可以根据上述线性函数确定对象5的学号为3286212。因此,数据列1可以保存该线性函数。
在一些实施例中,部分数据列可以不需要被压缩处理。例如数据列2、数据列3和数据列4中的无法使用上述压缩方案。数据列2、数据列3和数据列4可以不需要被压缩处理。在此情况下,经过压缩处理后的数据列1至数据列5分别为:
数据列1={“f(x)=x+3286207”};
数据列2={“尼尔”,“贝蒂”,“莎莉”,“乔”,“罗宾”};
数据列3={“亚伯拉罕”,“米勒”,“瓦格纳”,“布鲁克斯”,“李”};
数据列4={“男”,“女”,“女”,“男”,“女”};
数据列5={“新生”}。
图4示出了经过压缩后的数据列1至数据列5的保存方式。
如图4所示,经过压缩处理后,数据列1对应的存储空间集合1只需要有一个存储空间。数据列5对应的存储空间集合5也只需要有一个存储空间。而数据列2对应的存储空间集合2,数据列3对应的存储空间集合3和数据列4对应的存储空间集合4仍然需要五个连续的存储空间。
在需要读取对象1至对象5的属性值的情况下,可以确定属性对应的存储空间集合。如果属性对应的存储空间集合是压缩后的数据,那么需要对压缩后的数据进行解压缩;如果属性对应的存储空间集合是未压缩的数据,那么可以直接获取该存储空间结合中的数据。
例如,假设需要读取对象1、对象3和对象5的全名和年级时,可以直接读取存储空间集合2的第一个存储空间、第三个存储空间、第五个存储空间,存储空间集合3的第一个存储空间、第三个存储空间、第五个存储空间和存储空间集合5的存储空间中的数据就可以获得对象1、对象3和对象5的全名和年级。
上述技术方案可以提升对象的存储效率。例如,上述技术方案在存储对象中的数据时不需要存储一些冗余的信息(例如对象头、对齐填充)。因此,上述技术方案可以减少存储对象需要的存储空间,降低内存占用率。另外,上述技术方案可以仅使用一个文件就可以保存类相同的多个对象中的数据。这样,减少了需要保存的文件数量。
另外,在一些实施例中,通过对数据的压缩,可以进一步降低存储所需的存储空间,降低内存占用率。
更进一步,在一些实施例中,使用通过地址连续的存储空间保存,可以使得这些数据具有较好的空间局部性。
以图1所示的存储方式和图4所示的存储方式为例对读取对象1至对象5的全名和年级进行介绍。
假设在图1所示的存储方式中,一个对象的占40个字节(其中对象头占8个字节,实例数据占29个字节,对齐填充占3字节)。图4所示的存储方式中,存储空间集合2中的一个存储空间占8字节,存储空间集合3中的一个存储空间占8字节,存储空间集合5中的一个存储空间占8字节。
传统字段访问方式,需要通过对象引用获取全量对象数据才能访问某个字段。而本申 请的技术方案可以让字段访问跳过对象引用和全量对象加载,直接访问字段对应的数据列中对应的值。也就是说,如果按照传统的字段访问方式需要读取对象1至对象5的全名和年级,那么需要获取对象1至对象5的所有数据才能访问“姓”、“名”和“年级”这三个字段得到对象1至对象5的全名和年级。而按照本申请技术方案,可以只访问用于存储“姓”、“名”和“年级”这三个字段的存储空间集合,就能够得到对象1至对象5的全名和年级。
假设,一次缓存读取(cache load)可以读取的字节数目为128。那么对于如图1所示的存储方式,如果需要成功读取对象1至对象5的全名和年级,那么需要分别读取对象1至对象5的存储空间才能得到对象1至对象5的全名和年级。但是由于每个对象占用的存储空间为40字节,所以无法一次性读取5个对象的存储空间。因此,总共需要至少两次缓存读取才能得到对象1至对象5的全名和年级。
但是如果是如图4所示的存储方式,那么只需要读取存储空间集合2、存储空间集合3和存储空间集合5就可以获取对象1至对象5的全名和年级。由于存储空间集合2、存储空间集合3和存储空间集合5总共只占88字节,那么只需要一次缓存读取就能成功读取对象1至对象5的全名和年级。由此可见,在只有5个对象的情况下,可以减少一次缓存读取。
可以理解,对象数目越多,减少缓存读取的次数和缓存未命中(cache miss)次数就越多。例如,假设其他条件不变,但是对象的数目从5个增加到100个。那么,如果按照图1所示的方式存储,需要32次缓存读取才能得到100个对象的全名和年级;而如果按照图4所示的方式存储,那么只需要13次缓存读取就能得到100个对象的全名和年级。由此可见,本申请技术方案具有较好的数据一致性,可以有效减少缓存读取次数和缓存未命中次数。
如果将本申请技术方案应用到存储代码索引的场景中,那么由于所有代码索引的对象的类型都是相同的,那么可以根据本申请实施例的方案对所有代码索引进行分析、格式转换和数据压缩,并保存压缩后的数据。利用本申请的技术方案可以只需要一个文件/一个位置就能保存所有的代码索引,并且可以有效减少冗余信息的存储,降低内存占用。
例如,假设一个代码索引需要的存储空间为32字节(其中对象头8字节,实例数据20字节,对齐填充4字节)。那么如果需要存储的代码索引数目为100,则需要有100个文件来存储代码索引,这100个文件占用的存储空间为3200字节。并且,100个文件可能分布在不同的存储位置。而如果利用本申请技术方案,只需要一个文件就可以存储这100个代码索引,并且占用的存储空间可以减少至不到2000字节。
可以理解的是,将本申请的技术方案应用到存储代码索引只是本申请技术方案的一个可能的应用场景。本申请的技术方案还可以应用到其他需要保存对象的场景中。本申请实施例对于本申请技术方案的应用场景并不限定。
可以理解的是,虽然采用图3所示的存储方式没有对对象的属性值进行压缩,但是同一属性的多个属性值是保存在连续的存储空间中的。因此,也具有良好的空间局部性。
进一步,以对象为粒度存储的数据在读取时需要利用反射(reflection)将存储空间中的数据还原为对象,这一过程需要消耗一定的时间。而本申请的技术方案在读取一组存储空间中保存的数据时相当于是直接读取一个二维数组,消耗的时间较少。因此,与现有技术相比,本申请技术方案可以更快地获取对象中的数据。
在另一些实施例中,数据列2、数据列3、和数据列4也可以被压缩处理。
例如,在一些实施例中,系统中可以保存一个字符串池(string pool),该字符串池中可以包括多个条目,每个条目包括一个索引值和一个名字。在数据列中包括姓名的情况下,可以从该字符串池中确定姓名对应的索引值。在对包括姓名的数据列压缩时,可以保存名字对应的索引值。图5是一个字符串池的示意图。根据如图5所示的字符串池可以对数据列2和数据列3进行压缩。另外,性别可以使用1比特来标识。例如1表性别为男,0表性别为女。这样经过压缩后的数据列1至数据列5分别为:
数据列1={“f(x)=x+3286207”};
数据列2={“0212”,“0126”,“0301”,“0336”,“0303”};
数据列3={“0086”,“0302”,“0321”,“0127”,“0335”};
数据列4={“1,“0,“0”,“1”,“0”};
数据列5={“新生”}。
图6示出了压缩后的数据列1至数据列5的保存方式。
如图6示,经过压缩处理后,数据列1对应的存储空间集合1只需要有一个存储空间。数据列5应的存储空间集合5也只需要有一个存储空间。而数据列2对应的存储空间集合2,数据列3对应的存储空间集合3和数据列4对应的存储空间集合4仍然需要五个连续的存储空间。虽然数据列2对应的存储空间集合2,数据列3对应的存储空间集合3和数据列4对应的存储空间集合4仍然需要五个连续的存储空间,但是每个存储空间只需要保存4位数字。一个数字占用的存储空间是1字节。因此,存储空间集合2总共需要20个字节,存储空间集合3共需要20个字节,存储空间集合4总共需要5个字节。因此,利用图6所示的方案可以进一步节省存储空间。
可以理解的是,在属性值被压缩的情况下,如果需要读取被压缩的属性值,那么可以根据需要读取的属性值的属性,确定出解压缩方案。然后根据数据列中的数据和解压缩方案,来确定属性值。例如,需要读取的是对象1的性别,那么可以根据比特和性别的对应关系,确定出对象1的性别为男。又如,如果需要读取的是对象1的姓,那么可以根据如图5所示的字符串池和从存储空间集合4中读取的索引值0086确定出对象1的姓为亚伯拉罕。
还假设,一次缓存读取(cache load)可以读取的字节数目为128。那么如果需要成功读取100个对象。那么,如果按照图1所示的方式存储,需要32次缓存读取才能得到100个对象的全名和年级;而如果按照图5示的方式存储,那么只需要8次缓存读取就能得到100个对象的全名和年级。并且,按照如图5所示的方式存储,只需要不到1000字节的存储空间即可。
在一些实施例中,存储空间集合中每个存储空间的大小可以等于用于指示属性值的数据的最大占用的存储空间的大小。例如,int类型的数据,但是该数据对应的属性值最大取值为255。那么可以用于保存该属性值的存储空间可以只有8比特,而无需32比特。
图7是根据本申请实施例提供的一种处理数据的方法的示意性流程图。
701,获取N个对象,其中该N个对象的类相同,该N个对象中的每个对象包括M个属性,N为大于或等于2的正整数,M为大于或等于1的正整数。
702,根据该N个对象包括的M个属性的属性值,确定M组数据,该M组数据与该 M个属性一一对应,该M组数据中的每组数据用于指示该N个对象中的对应的属性的属性值。
703,分别使用该M个存储空间集合保存该M组数据。
可选的,在一些实施例中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 1个第一类属性,其中该N个对象中的任意两个对象的第一属性的属性值不同,该第一属性为该M 1个第一类属性中的任一个第一类属性,M 1为大于或等于1且小于或等于M的正整数;确定M 1组数据,其中该M 1组数据与该M 1个第一类属性一一对应,该M 1组数据中的第i组数据包括的N个数据分别用于指示该N个对象的该M 1个第一类属性中的第i个第一类属性的属性值,i=1,…,M 1。该分别使用该M个存储空间集合保存该M组数据,包括:使用M 1个第一存储空间集合保存该M 1组数据,其中该M 1个第一存储空间集合中的第i个第一存储空间集合包括N个连续的存储空间,该第i个第一存储空间集合中的N个连续的存储空间分别用于保存该第i组数据包括的N个数据。
例如,上述实施例中的数据列2、数据列3和数据列4对应的属性就是该第一类属性。
在一些实施例中,M 1组数据中的每个数据可以是对应的属性的属性值。例如,可以是如图4所示的存储方式中数据列2、数据列3和数据列4的存储方式。
在另一些实施例中,M 1组数据中的每个数据可以是根据属性值确定的另一能够用于指示属性值的数据。例如,图6所示的存储方式中,数据列2和数据列3中存储的是能够用于指示姓名的索引值,数据列5中存储的是能够指示性别的比特。
在一些实施例中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 2个第二类属性,其中该N个对象中的任意两个对象的第二属性的属性值相同,该第二属性为该M 2个第二类属性中的任一个第二类属性,M 2为大于或等于1且小于或等于M的正整数;确定M 2组数据,其中该M 2组数据中的第j组数据包括的数据用于指示该N个对象的该M 2个第二类属性中的第j个第二类属性的属性值,j=1,…,M 2。该分别使用该M个存储空间集合保存该M组数据,包括:使用M 2个第二存储空间集合保存该M 2组数据,其中该M 2个第二存储空间集合中的第j个第二存储空间集合包括的存储空间用于保存该第j组数据包括的数据。
例如,上述实施例中的数据列5对应的属性就是该第二类属性。
在一些实施例中,该根据该N个对象包括的M个属性的属性值,确定M组数据,包括:根据该N个对象包括的M个属性的属性值,确定该M个属性中包括M 3个第三类属性,其中该N个对象中的每个对象的第三属性能够根据一个函数确定,该第三属性为该M 3个第三类属性中的任一个第三类属性,M 3为大于或等于1且小于或等于M的正整数;确定M 3组数据,其中该M 3组数据中的第k组数据包括的函数能够确定该N个对象的该M 3个第三类属性中的第k个第三类属性的属性值,k=1,…,M 3;该分别使用该M个存储空间集合保存该M组数据,包括:使用M 3个第三存储空间集合保存该M 3组数据,其中该M 3个第三存储空间集合中的第k个第三存储空间集合包括的存储空间用于保存该第k组数据包括的函数。
例如,上述实施例中数据列1对应的属性就是该第三类属性。
可以理解的是,在一些实施例中,对象的属性类性可以只包括第一类属性。在此情况下M 1=M。类似的,在一些实施例中,对象的属性类型可以只包括第二类属性或者只包括第三类属性。在属性类型只有第二类属性的情况下,M 2=M;在属性类型只有第三类属性的情况下,M 3=M。
在另一些实施例中,对象的属性类型可以同时包括第一类属性、第二类属性和第三类属性。此时,M 1+M 2+M 3=M。
在另一些实施例中,对象的属性类型可以包括第一类属性、第二类属性和第三类属性中的任意两个。例如,对象的属性类型可以只包括第一类属性和第二类属性,此时M 1+M 2=M。又如,对象的属性类型可以只包括第一类属性和第三类属性,此时M 1+M 3=M。又如,对象的属性类型可以只包括第二类属性和第三类属性,此时M 2+M 3=M。
如果根据属性值确定的一组数据包括N个数据,且N个数据分别为对应属性的N个属性值,那么可以称为是没有对属性值进行压缩。例如,图3所示的存储方式中,数据列1至数据列5都是没有压缩的数据。又如,图4所示的存储方式中,数据列2、数据列3和数据列4是没有压缩的数据。
如果根据属性值确定的一组数据中包括的数据不是对应属性的属性值,但是能够根据一定规则确定出对应属性的属性值,那么可以称为是对属性值进行压缩。例如,图4中的数据列1和数据列5中的数据就是对属性“学号”和属性“年级”的属性值压缩后得到的数据。又如,图6中的数据列1至数据列5中的数据都是对对应属性的属性值压缩后得到的。
可以理解的是,上述属性类型和压缩方式只是对属性值进行压缩的实例。根据实际的属性值,对象也可以包括更多类型的属性,也可能有更多的压缩方式。
在一些实施例中,仅分别使用不同的存储空间保存不同属性的属性值,而不对属性值进行压缩处理。例如,图3所示的存储方式。
在另一些实施例中,可以只对部分类型的属性值进行压缩处理。例如,图4所示的存储方式中仅对第二类和第三类属性进行压缩处理。
在另一些实施例中,可以对所有类型的属性值进行压缩处理。例如,图6所示的实施例中同时对第一类、第二类和第三类属性进行压缩处理。
图8是根据本申请实施例提供的一种计算机设备的示意性结构框图。如图8所示的计算机设备800包括获取单元801、处理单元802和存储单元803。
获取单元801,用于获取N个对象,其中该N个对象的类相同,该N个对象中的每个对象包括M个属性。
处理单元802,用于根据该N个对象包括的M个属性的属性值,确定M组数据,该M组数据与该M个属性一一对应,该M组数据中的每组数据用于指示该N个对象中的对应的属性的属性值。
存储单元803,用于分别使用该M个存储空间集合保存该M组数据。
获取单元801、处理单元802和存储单元803的具体功能和有益效果可以参见上述实施例,为了简洁,在此就不再赘述。
在一些实施例中,获取单元801和处理单元802可以由处理器实现。存储单元803可以由存储器实现。
本申请实施例还提供了一种计算机设备,包括处理器和存储器。处理器用于与存储器 耦合,读取并执行存储器中的指令和/或程序代码,以执行上述方法实施例中的步骤。
应理解,上述处理器可以是一个芯片。例如,该处理器可以是现场可编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)、其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,或其他集成芯片。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述实施例中的各个步骤。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行上述实施例中的 各个步骤。
根据本申请实施例提供的方法,本申请实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行上述实施例中的各个步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

  1. 一种处理数据的方法,其特征在于,包括:
    获取N个对象,其中所述N个对象的类相同,所述N个对象中的每个对象包括M个属性,N为大于或等于2的正整数,M为大于或等于1的正整数;
    根据所述N个对象包括的M个属性的属性值,确定M组数据,所述M组数据与所述M个属性一一对应,所述M组数据中的每组数据用于指示所述N个对象中的对应的属性的属性值;
    分别使用所述M个存储空间集合保存所述M组数据。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述N个对象包括的M个属性的属性值,确定M组数据,包括:
    根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 1个第一类属性,其中所述N个对象中的任意两个对象的第一属性的属性值不同,所述第一属性为所述M 1个第一类属性中的任一个第一类属性,M 1为大于或等于1且小于或等于M的正整数;
    确定M 1组数据,其中所述M 1组数据与所述M 1个第一类属性一一对应,所述M 1组数据中的第i组数据包括的N个数据分别用于指示所述N个对象的所述M 1个第一类属性中的第i个第一类属性的属性值,i=1,…,M 1
    所述分别使用所述M个存储空间集合保存所述M组数据,包括:
    使用M 1个第一存储空间集合保存所述M 1组数据,其中所述M 1个第一存储空间集合中的第i个第一存储空间集合包括N个连续的存储空间,所述第i个第一存储空间集合中的N个连续的存储空间分别用于保存所述第i组数据包括的N个数据。
  3. 根据权利要求1或2所述的方法,其特征在于,所述根据所述N个对象包括的M个属性的属性值,确定M组数据,包括:
    根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 2个第二类属性,其中所述N个对象中的任意两个对象的第二属性的属性值相同,所述第二属性为所述M 2个第二类属性中的任一个第二类属性,M 2为大于或等于1且小于或等于M的正整数;
    确定M 2组数据,其中所述M 2组数据中的第j组数据包括的数据用于指示所述N个对象的所述M 2个第二类属性中的第j个第二类属性的属性值,j=1,…,M 2
    所述分别使用所述M个存储空间集合保存所述M组数据,包括:
    使用M 2个第二存储空间集合保存所述M 2组数据,其中所述M 2个第二存储空间集合中的第j个第二存储空间集合包括的存储空间用于保存所述第j组数据包括的数据。
  4. 根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述N个对象包括的M个属性的属性值,确定M组数据,包括:
    根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 3个第三类属性,其中所述N个对象中的每个对象的第三属性能够根据一个函数确定,所述第三属性为所述M 3个第三类属性中的任一个第三类属性,M 3为大于或等于1且小于或等于M 的正整数;
    确定M 3组数据,其中所述M 3组数据中的第k组数据包括的函数能够确定所述N个对象的所述M 3个第三类属性中的第k个第三类属性的属性值,k=1,…,M 3
    所述分别使用所述M个存储空间集合保存所述M组数据,包括:
    使用M 3个第三存储空间集合保存所述M 3组数据,其中所述M 3个第三存储空间集合中的第k个第三存储空间集合包括的存储空间用于保存所述第k组数据包括的函数。
  5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述M个存储空间集合中的每个存储空间集合中的每个存储空间的大小等于用于指示属性值的数据的最大占用的存储空间的大小。
  6. 根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
    获取读指令,所述读指令用于读取所述N个对象中的一个或多个对象的P个属性的属性值,P为大于或等于1且小于或等于M的正整数;
    确定从所述M个存储空间集合中确定P个存储空间集合,所述P个存储空间集合与所述P个属性一一对应;
    分别根据所述P个存储空间集合包括的数据确定所述一个或多个对象的所述P个属性的属性值。
  7. 一种计算机设备,其特征在于,包括:
    获取单元,用于获取N个对象,其中所述N个对象的类相同,所述N个对象中的每个对象包括M个属性,N为大于或等于2的正整数,M为大于或等于1的正整数;
    处理单元,用于根据所述N个对象包括的M个属性的属性值,确定M组数据,所述M组数据与所述M个属性一一对应,所述M组数据中的每组数据用于指示所述N个对象中的对应的属性的属性值;
    存储单元,用于分别使用所述M个存储空间集合保存所述M组数据。
  8. 根据权利要求7所述的计算机设备,其特征在于,所述处理单元,具体用于:根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 1个第一类属性,其中所述N个对象中的任意两个对象的第一属性的属性值不同,所述第一属性为所述M 1个第一类属性中的任一个第一类属性,M 1为大于或等于1且小于或等于M的正整数;
    确定M 1组数据,其中所述M 1组数据与所述M 1个第一类属性一一对应,所述M 1组数据中的第i组数据包括的N个数据分别用于指示所述N个对象的所述M 1个第一类属性中的第i个第一类属性的属性值,i=1,…,M 1
    所述存储单元,具体用于使用M 1个第一存储空间集合保存所述M 1组数据,其中所述M 1个第一存储空间集合中的第i个第一存储空间集合包括N个连续的存储空间,所述第i个第一存储空间集合中的N个连续的存储空间分别用于保存所述第i组数据包括的N个数据。
  9. 根据权利要求7或8所述的计算机设备,其特征在于,所述处理单元,具体用于:根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 2个第二类属性,其中所述N个对象中的任意两个对象的第二属性的属性值相同,所述第二属性为所述M 2个第二类属性中的任一个第二类属性,M 2为大于或等于1且小于或等于M的正整数
    确定M 2组数据,其中所述M 2组数据中的第j组数据包括的数据用于指示所述N个 对象的所述M 2个第二类属性中的第j个第二类属性的属性值,j=1,…,M 2
    所述存储单元,具体用于使用M 2个第二存储空间集合保存所述M 2组数据,其中所述M 2个第二存储空间集合中的第j个第二存储空间集合包括的存储空间用于保存所述第j组数据包括的数据。
  10. 根据权利要求7至9中任一项所述的计算机设备,其特征在于,所述处理单元,具体用于根据所述N个对象包括的M个属性的属性值,确定所述M个属性中包括M 3个第三类属性,其中所述N个对象中的每个对象的第三属性能够根据一个函数确定,所述第三属性为所述M 3个第三类属性中的任一个第三类属性,M 3为大于或等于1且小于或等于M的正整数;
    确定M 3组数据,其中所述M 3组数据中的第k组数据包括的函数能够确定所述N个对象的所述M 3个第三类属性中的第k个第三类属性的属性值,k=1,…,M 3
    所述存储单元,具体用于使用M 3个第三存储空间集合保存所述M 3组数据,其中所述M 3个第三存储空间集合中的第k个第三存储空间集合包括的存储空间用于保存所述第k组数据包括的函数。
  11. 根据权利要求7至10中任一项所述的计算机设备,其特征在于,所述M个存储空间集合中的每个存储空间集合中的每个存储空间的大小等于用于指示属性值的数据的最大占用的存储空间的大小。
  12. 根据权利要求7至11中任一项所述的计算机设备,其特征在于,所述获取单元,还用于获取读指令,所述读指令用于读取所述N个对象中的一个或多个对象的P个属性的属性值,P为大于或等于1且小于或等于M的正整数;
    所述处理单元,还用于确定从所述M个存储空间集合中确定P个存储空间集合,所述P个存储空间集合与所述P个属性一一对应;
    所述处理单元,还用于分别根据所述P个存储空间集合包括的数据确定所述一个或多个对象的所述P个属性的属性值。
  13. 一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-6中任一项所述的方法。
  14. 一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-6中任一项所述的方法。
  15. 一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
CN202280078767.9A 2021-11-29 2022-11-23 处理数据的方法和相关装置 Pending CN118303020A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
RU2021134789 2021-11-29
RU2021134789A RU2846847C2 (ru) 2021-11-29 Способ обработки данных и связанное устройство
PCT/CN2022/133729 WO2023093761A1 (zh) 2021-11-29 2022-11-23 处理数据的方法和相关装置

Publications (1)

Publication Number Publication Date
CN118303020A true CN118303020A (zh) 2024-07-05

Family

ID=86538857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280078767.9A Pending CN118303020A (zh) 2021-11-29 2022-11-23 处理数据的方法和相关装置

Country Status (4)

Country Link
US (1) US20240311092A1 (zh)
EP (1) EP4415347A4 (zh)
CN (1) CN118303020A (zh)
WO (1) WO2023093761A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11829745B2 (en) * 2021-09-20 2023-11-28 Salesforce, Inc. Augmented circuit breaker policy

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566290B2 (en) * 2009-10-30 2013-10-22 Hitachi Data Systems Corporation Fixed content storage within a partitioned content platform using namespaces, with versioning
CN102799583B (zh) * 2011-05-23 2015-01-14 上海爱数软件有限公司 一种面向对象的存取方法及系统
CN106919370B (zh) * 2015-12-24 2020-04-17 北京国双科技有限公司 一种对象属性值的获取方法及装置
CN109815242B (zh) * 2019-02-02 2021-04-02 中国农业银行股份有限公司 一种数据处理方法及系统
CN111581267A (zh) * 2020-04-14 2020-08-25 北京明略软件系统有限公司 一种对象数据的存储方法和装置

Also Published As

Publication number Publication date
WO2023093761A1 (zh) 2023-06-01
EP4415347A4 (en) 2025-01-22
US20240311092A1 (en) 2024-09-19
EP4415347A1 (en) 2024-08-14

Similar Documents

Publication Publication Date Title
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
US7647355B2 (en) Method and apparatus for increasing efficiency of data storage in a file system
US9141631B2 (en) Table boundary detection in data blocks for compression
US20130250686A1 (en) Semiconductor memory device, information processing system and control method
US9021455B2 (en) Packed data objects
CN109582231B (zh) 数据存储方法、装置、电子设备及存储介质
Breslow et al. Morton filters: fast, compressed sparse cuckoo filters
US7493481B1 (en) Direct hardware processing of internal data structure fields
EP3173947B1 (en) Paged inverted index
US8990500B2 (en) Storing the most significant and the least significant bytes of characters at non-contiguous addresses
KR102389609B1 (ko) 쓰기 최적화 데이터베이스에서의 디스크 스캔 연산 gpu 오프로딩 방법
CN114327290A (zh) 一种磁盘分区的结构、格式化方法和访问方法
CN118303020A (zh) 处理数据的方法和相关装置
EP3908938B1 (en) Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
US8560805B1 (en) Efficient allocation of address space resources to bus devices
CN110764777B (zh) 一种elf文件生成方法、elf文件、设备及存储介质
US8463759B2 (en) Method and system for compressing data
US20240232155A9 (en) Index entry generating methods, apparatuses, and devices for large object data block index
CN119948471A (zh) 压缩数据的方法和相关装置
WO2016181200A1 (en) A data processing method
CN101228509A (zh) 进行执行二进制图像的生成及执行的装置、方法、程序、及记录该程序的可由计算机读取的记录介质
US10423538B2 (en) Bandwidth efficient techniques for enabling tagged memories
US9841905B2 (en) File system having a database management system using file pre-allocation in mass storage devices
US11442929B2 (en) Double header logging of slotted page structures
CN107967222A (zh) 一种SPI-Nand查找数据页的方法及装置

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