CN106557531A - 将复杂结构对象转换成平面化数据 - Google Patents

将复杂结构对象转换成平面化数据 Download PDF

Info

Publication number
CN106557531A
CN106557531A CN201510642171.9A CN201510642171A CN106557531A CN 106557531 A CN106557531 A CN 106557531A CN 201510642171 A CN201510642171 A CN 201510642171A CN 106557531 A CN106557531 A CN 106557531A
Authority
CN
China
Prior art keywords
attribute
array
data file
planarization
nested
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.)
Granted
Application number
CN201510642171.9A
Other languages
English (en)
Other versions
CN106557531B (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.)
EMC Corp
Original Assignee
EMC Corp
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 EMC Corp filed Critical EMC Corp
Priority to CN201510642171.9A priority Critical patent/CN106557531B/zh
Priority to US15/280,811 priority patent/US10324904B2/en
Publication of CN106557531A publication Critical patent/CN106557531A/zh
Application granted granted Critical
Publication of CN106557531B publication Critical patent/CN106557531B/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/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1794Details of file format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

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

Abstract

本发明的各实施方式总体上涉及将复杂结构对象转换成平面化数据。具体地,各示例涉及将复杂结构属性转换成平面化数据。配置捕获组件分析与复杂结构属性集相关联的对象集。复杂结构属性是其是数组属性或嵌套对象属性的对象属性。配置捕获组件执行散列类型转换以将嵌套对象属性转换成平面化数据。配置捕获组件执行数组类型转换以将嵌套数组属性转换成平面化数据。平面化数据被存储或导入在平面化数据文件集中。展开组件将平面化数据文件转换回复杂结构属性,而不丢失或损坏复杂结构数据。

Description

将复杂结构对象转换成平面化数据
技术领域
本发明的各实施方式总体上涉及计算机领域,具体地涉及将复杂结构对象转换成平面化数据。
背景技术
表示性状态传送(REST)对象是具有一个或多个属性的对象。属性是名称和值对。值可以是诸如字符串、数字、布尔值或空值之类的简单结构属性。例如,简单结构属性可以包括属性名称“id”以及简单字符串值“pool_6”。然而,复杂结构属性的值可以是嵌套数组或嵌套对象。数组是值的有序集合。对象是名称和值对的无序集。嵌套数组可以包括另一嵌套数组和/或嵌套对象作为嵌套数组的子属性。同样地,嵌套对象自身可以包括另一嵌套对象或嵌套数组作为嵌套对象的子属性。换言之,嵌套对象和嵌套数组是包括一个或多个其它属性嵌入在其内的属性。
简单结构属性被容易地映射成诸如逗号分隔值(CSV)文件之类的平面数据文件。然而,映射组件经常不能处理复杂结构属性。在这种情况下,数组和嵌套对象被简单地忽略,从而导致数据丢失和不准确的结果。在其它情况下,通过将数组中的值展开为若干行并且还将其它属性的值复制到新行中,来处理数组属性。当数组长度较大或者对象具有许多其它属性时,这一方法导致大小快速增长的CSV文件。所产生的极大的文件大小是难管理的和不切实际的。而且,在对象中包含不只一个数组类型的属性的情况下,可伸缩性是差的。以平面化方式准确地映射复杂结构属性,而无数据丢失、数据损坏或者难管理的大数据文件,嵌套分层结构通常使得这变得不切实际或不可能。
发明内容
本公开的示例提供将复杂结构属性转换成平面化数据。在示例中,配置捕获组件分析与第一计算设备相关联的配置数据。配置数据包括对象集。在标识与对象集相关联的简单结构属性集时,配置捕获组件将简单结构属性集映射成平面化数据文件集。在标识与对象集相关联的复杂结构属性集的条件下,配置捕获组件将复杂结构属性集转换为平面化属性数据。复杂结构属性集由嵌套对象集和数组属性集构成。配置捕获组件对嵌套对象属性集执行散列类型转换。配置捕获组件对数组属性集执行数组类型转换以生成平面化属性数据。配置捕获组件将平面化属性数据映射到平面化数据文件集,以创建第一计算设备的***配置的快照。
这一发明内容被提供为以简化形式引入下面在具体实施方式中进一步描述的概念的选择。这一发明内容不旨在于标识所要求保护的主题的关键特征或必要特征,其也不旨在用作确定所要求保护的主题的范围的帮助。
附图说明
图1是图示用于平面化配置捕获的复杂结构属性的***的示例性框图。
图2是图示与云存储***相关联的用户设备的示例性框图。
图3是图示服务器的示例性框图。
图4是对象集的框图。
图5是包括嵌套对象和数组属性的对象的框图。
图6是平面化数据文件集的框图。
图7是图示将简单结构对象映射成平面化数据文件的示例性框图。
图8是图示将复杂结构嵌套对象转换成平面化数据文件的示例性框图。
图9是图示对象属性内的嵌套数组子属性的示例性框图。
图10是图示对应于嵌套数组子属性的子逗号分隔值(CSV)文件的示例性框图。
图11是图示将包括两个嵌套对象子属性的复杂结构数组属性转换成平面化数据文件集的示例性框图。
图12是图示表示嵌套数组属性的CSV文件集的示例性框图。
图13是图示将包括复杂结构属性的对象集转换成平面化数据文件集的示例性流程图。
图14是图示执行散列类型转换和数组类型转换的示例性流程图。
图15是图示散列类型转换的示例性流程图。
图16是图示数组类型转换的示例性流程图。
图17是图示将平面化数据文件展开成与对象集相关联的复杂结构属性的示例性流程图。
图18是图示将平面化数据文件展开成与对象集相关联的复杂结构属性的示例性流程图。
贯穿附图,对应的附图标记指示对应的部分。
具体实施方式
本公开的一些方面提供创建计算设备的当前***配置的快照的配置捕获组件。配置捕获组件接收来自计算设备的配置数据。配置数据包括对象集。对象包括一个或多个复杂结构属性。配置捕获组件将配置数据平面化成平面化数据文件集,以创建计算设备的配置的快照。
在一些示例中,配置捕获组件能够以递归方式平面化包括一个或多个嵌套对象子属性和/或嵌套数组子属性的嵌套对象属性和嵌套数组属性两者,使得没有信息在配置捕获平面化数据处理期间丢失。这改善了整体的数据准确性、处理速度和存储器使用。
在一些示例中,散列类型转换组件使得能够以空间高效的方式将嵌套对象转换成平面化数据而无数据丢失。散列类型转换不会引入额外的空间以将嵌套对象的属性保存到数据库或其它数据存储。这实现了改善的速度和减少的存储器使用。
在其它示例中,数组类型转换组件使用第一级平面化数据文件和第二级平面化数据文件来平面化数组属性。数组类型转换将一个额外的列添加到第一级平面化数据文件中,以保存标识嵌套数组的数组键。第一级平面化数据文件可以是(但不限于)逗号分隔值(CSV)文件。存储嵌套数组值的第二级平面化数据文件或者子CSV文件不要求额外的空间。这些平面化数据文件在消耗较少的存储器的数据库或其它数据存储中实现了复杂结构属性的较小的文件大小。
在其它示例中,平面化数据被发送到一个或多个其它计算设备或者被存储在诸如数据库或其它数据结构之类的数据存储中。平面化数据容易导入、传输或存储。将复杂结构属性转换成平面化数据以存储数据节约了***存储器,因为平面化数据要求较少的存储空间。在传输前将复杂结构属性转换为平面化数据还增加了数据传输速度并且降低了网络带宽使用(当将平面化数据发送到另一计算设备时)。
其它方面提供展开组件,用于将平面化数据文件转换回复杂结构属性和简单结构属性。展开组件将平面化数据转换回键值对,以便以不会导致数据丢失的简单、高效和准确的方式对值进行计算。将平面化数据展开回复杂结构属性以用于分析的这一处理,通过准确地标识每个复杂结构属性和对应的值集而无错误、数据丢失或数据损坏,进一步改善了在转换处理期间的展开的复杂结构属性的准确性。
再次参照图1,示例性框图图示用于将复杂结构属性平面化成平面化数据的***。在图1的示例中,数据处理***100表示用于平面化配置捕获的复杂结构对象的***。在这一非限制性示例中,***100包括服务器客户端网络。然而,本公开的方面不限于联网***。
计算设备102是执行计算机可执行程序代码104(例如,作为(多个)应用106、操作***功能、或两者)以实现与计算设备102相关联的操作和功能的设备。计算机可执行程序代码104还可以被称为计算机可执行指令。
在这一示例中,计算设备102是用于捕获另一计算机***的配置的计算设备类型的。在一些示例中,计算设备102可以包括web服务器、应用服务器、文件服务器、后端服务器、云服务器、或任何其它类型的服务器。在其它示例中,计算设备102是与数据存储***相关联的服务器。在又一些其它示例中,计算设备102可以表示处理单元或其它计算设备的组。
在这一示例中,计算设备102包括一个或多个处理器108、与存储器设备124相关联的存储器区域110、以及至少一个用户接口组件112。(多个)处理器108包括任何数量的处理单元,并且被编程以执行计算机可执行程序代码104,以实现配置捕获组件118。计算机可执行程序代码104可以由(多个)处理器108或者由计算设备102内的多个处理器来执行,或者由计算设备102外部的处理器来执行。在一些示例中,(多个)处理器108被编程为执行诸如图(例如图13、图14、图15、图16、图17和图18)中图示的那些之类的计算机可执行程序代码104。
在一些示例中,(多个)处理器108表示用于执行本文中描述的操作的模拟技术的实施方式。例如,操作可以由模拟计算设备和/或数字计算设备来执行。
在一些示例中,计算设备102进一步包括诸如存储器区域110之类的一个或多个计算机可读介质。存储器区域110包括与计算设备102相关联的或者可由计算设备102访问的任何数量的介质。存储器区域110可以在计算设备102内部(如图1所示)、在服务器外部(未示出)、或两者(未示出)。在一些示例中,存储器区域110包括只读存储器(ROM)和/或接线到模拟计算设备中的存储器。
除了其它数据之外,存储器区域110存储计算机可执行程序代码104和一个或多个应用106。当由(多个)处理器108执行时,(多个)应用106操作为执行计算设备102上的功能。示例性(多个)应用106包括但不限于邮件服务器应用程序、web服务、地址簿服务、消息传输服务、媒体服务、基于位置的服务、搜索程序等。应用可以经由网络126与可访问的诸如web服务之类的对应物应用或服务进行通信。例如,应用可以表示与下载的客户端侧服务对应的云中执行的服务器侧应用。
存储器区域110进一步存储一个或多个计算机可执行组件。示例性组件包括通信接口组件114、应用编程接口(API)116和配置捕获组件118。
在一些示例中,通信接口组件114包括网络接口卡和/或用于操作网络接口卡的计算机可执行程序代码(例如驱动器)。在计算设备102和其它设备(诸如客户端120和数据存储***122)之间的通信可以在任何有线或无线连接之上使用任何协议或机制而发生。在一些示例中,通信接口组件114可操作有短程通信技术,诸如通过使用近场通信(NFC)标签。
在其它示例中,用户接口组件112包括用于向用户显示数据并且接收来自用户的数据的图形卡。用户接口组件112还可以包括用于操作图形卡的计算机可执行程序代码(例如驱动器)。计算机可执行程序代码可以被称为计算机可执行指令。进一步地,用户接口组件112可以包括显示器(例如,触摸屏显示器或者自然用户界面)和/或用于操作显示器的计算机可执行程序代码(例如驱动器)。
用户接口组件112还可以包括以下项中的一个或多个以向用户提供数据或者接收来自用户的数据:扬声器、声卡、相机、麦克风、振动马达、一个或多个加速计、BLUETOOTH品牌通信模块、全球定位***(GPS)硬件、和感光的光传感器。例如,用户可以输入命令或者通过以特定方式移动计算设备来操纵数据。
在一些示例中,配置捕获组件118捕获与诸如客户端120或数据存储***122之类的不同计算机***的当前***配置相关联的配置数据。配置数据是描述计算***的当前***配置的数据。例如,数据存储***122的配置数据可以包括描述池对象的总大小、池对象所使用的大小、池对象的容量、或者数据存储***的任何其它属性的对象。以这种方式,配置捕获组件118创建另一***的当前***配置的快照。
配置捕获组件118捕获配置数据以用于业务智能分析器以帮助诊断问题和/或重新创建同一计算设备上或不同计算设备上的***配置。到配置捕获组件的输入是包括配置数据的响应集。如本文中使用的,术语“集”指的是一个或多个,除非另外限定。
到配置捕获组件118的输入是配置数据。配置数据可以经由API接收。当被执行时,API 116使得处理器处理API查询以及来自诸如客户端120和/或数据存储***122之类的一个或多个计算设备的其它数据。API 116从客户端120和/或数据存储***122接收配置数据。
在这一非限制性示例中,API 116是表示性状态传送(REST)API。计算设备102经由REST API接收配置数据。配置数据在这一示例中包括REST对象集。REST对象集中的每个REST对象与***配置的属性相关联。然而,示例并不限于通过REST API的实施方式。
配置捕获组件118的输出是平面化数据文件集,平面化数据文件集容易导入到数据库中以用于存储,或者被传输到一个或多个其它计算设备或***以用于分析或者在另一客户端或其它计算设备上重新创建***配置中利用。
然而,示例并不限于仅将配置数据转换成平面化数据。具有复杂结构属性的其它类型的数据可以被转换成平面化数据。配置捕获组件118可以将与任何类型的数据相关联的复杂结构属性转换成平面化数据和/或平面化数据文件,诸如但不限于将性能指标、资源分配数据、池数据、或者与复杂属性结构相关联的任何其它类型的数据转换成平面化数据。因而,配置捕获118能够捕获具有复杂结构的诸如REST对象之类的对象的属性,并且将该数据映射成平面化数据文件,而不管数据的类型或包含在数据内的信息。
在这一示例中,计算设备102经由网络126连接到客户端120和数据存储***122。网络126可以包括任何类型的网络连接。在一个示例中,网络126可以是因特网、内联网、以太网、或其它无线或硬接线连接,通过它们计算设备102可以发送和接收与一个或多个其它计算机***(诸如但不限于客户端120和/或数据存储***122)相关联的数据。然而,其它示例不要求网络126。
客户端120和数据存储***122表示用于实现与计算设备相关联的操作和功能的任何计算设备执行的指令(例如,作为应用程序、操作***功能、或两者)。例如,客户端120可以包括移动计算设备或者任何其它便携式设备。在一些示例中,移动计算设备包括移动电话、膝上型计算机(laptop)、平板计算机(tablet)、计算平板(computingpad)、上网本、游戏设备、和/或便携式媒体播放器。客户端120还可以包括较少的便携式设备,诸如台式个人计算机、资讯站(kiosk)、桌面设备、工业控制设备、无线充电站、以及电动汽车充电站。附加地,客户端120可以表示处理单元或其它计算设备的组。
在一些示例中,客户端120包括一个或多个处理器、存储器区域、以及至少一个用户接口。处理器包括任何数量的处理单元,并且被编程为执行计算机可执行程序代码以实现本公开的方面。指令可以由处理器或者由客户端120内的多个处理器来执行,或者由客户端120外部的处理器来执行。
在另一示例中,客户端120可以包括用于向计算设备102发送配置数据的API(未示出)。客户端处的API可以是REST API。
客户端120将应用存储在存储器区域中。当由处理器执行时,应用操作为执行客户端120上的功能。示例性应用包括邮件应用程序、web浏览器、日历应用程序、地址簿应用程序、消息传输程序、媒体应用、基于位置的服务、搜索程序等。应用可以经由网络126与可访问的诸如web服务之类的与计算设备102相关联的对应物应用或服务进行通信。例如,应用可以表示与云中执行的服务器侧服务对应的下载的客户端侧应用。
数据存储***122是包括一个或多个存储设备的***。数据存储设备可以包括一个或多个旋转磁存储设备、一个或多个旋转光存储设备、和/或诸如快闪驱动之类的一个或多个固态驱动器(SSD)。数据存储设备还可以包括存储阵列。例如,数据存储阵列可以是廉价磁盘冗余阵列(RAID)阵列、光存储阵列、或任何其它类型的数据存储阵列。
数据存储***122还可以包括一个或多个存储处理器、一个或多个端口、一个或多个高速缓存、存储器、网络接口卡(NIC)、一个或多个池、一个或多个风扇、和/或一个或多个数据存储设备。端口是网络端口,诸如但不限于以太网端口或光纤通道(FC)端口。
在图1所示的示例中,***100包括计算设备102、网络126、客户端120和数据存储***122。在其它示例中,***100包括图1中未示出的联网服务器和多个客户端和/或多个数据存储***。例如,计算设备102可以经由网络连接到两个或更多客户端计算设备。
在又一些其它示例中,***100可以被实现为联网数据处理***。然而,在其它示例中,***100可以不包括网络。在这些示例中,客户端120和计算设备102可以实现在同一计算设备内,而无网络连接。
现在参照图2,示例性框图图示了与云存储***相关联的用户设备。在这一示例中,云存储202是数据存储***,该数据存储***可选地包括一个或多个数据存储设备208、逻辑池、逻辑单元(LUN)、一个或多个服务器222、以及其可以与云存储***相关联的任何其他硬件或软件。服务器集是一个或多个服务器的集。
一个或多个数据存储设备208包括至少一个数据存储设备。在一些示例中,一个或多个数据存储设备208可以包括数据存储阵列。数据存储阵列包括多个数据存储设备。在其它示例中,(多个)数据存储设备208包括一个或多个类型的数据存储设备,诸如例如一个或多个旋转盘驱动和/或一个或多个SSD。在又一些其它示例中,一个或多个数据存储设备208包括一个或多个数据库224,以用于存储诸如配置数据210和平面化数据文件集226之类的数据。
在一些示例中,服务器依照一个或多个API 218生成请求204。在这一示例中,请求204是依照REST API的请求。
服务器集222中的一个或多个服务器可选地包括与诸如用户设备202之类的一个或多个其它计算设备的网络连接。例如,服务器集222中的一个或多个服务器可以经由web浏览器或其它应用发送数据和接收数据,以经由网络连接(诸如到因特网、以太网、或者任何其它类型的网络的连接)发送、接收、检索或遍历信息。在这些示例中,可以经由因特网连接或者任何其它类型的网络连接来发送请求204。
用户设备206经由API 230接收请求204。API在一些示例中是REST API。用户设备206可以是能够向与云存储202相关联的一个或多个云服务器发送和接收数据(诸如配置数据)的任何类型的设备。例如,用户设备206可以是台式计算机、膝上型计算机、平板计算机、智能电话、或者任何其它类型的用户设备。
用户设备206可以经由一个或多个应用(诸如但不限于云存储网关、基于web的内容管理***、或者web浏览器)访问云存储202资源和服务。Web浏览器228是用于经由诸如到因特网的连接之类的网络连接来发送、接收、检索和遍历万维网(WWW)上的数据的应用。Web浏览器接收来自连接到因特网的一个或多个其它计算设备的数据。在这一示例中,web浏览器228可以生成配置数据210,并且经由web服务API向云存储202传输配置数据210。
响应于请求204,用户设备206返回包括描述用户设备206的当前***配置212的配置数据210的响应220。在这一示例中,用户设备206经由API返回配置数据210。
然而,示例并不限于与用户设备206的配置相关联的配置数据212。在其它示例中,配置捕获组件216接收描述与云存储202相关联的一个或多个数据存储设备(诸如(多个)数据存储设备208)的当前配置的配置数据214。换言之,配置捕获组件216可以接收与云存储202相关联的计算设备或计算***的配置数据。
在又一些其它示例中,配置数据210可以是描述服务器集222中的一个或多个其它服务器的配置的数据。在这些示例中,配置捕获组件216是与服务器集222中的第一服务器相关联的组件,并且配置数据210是描述服务器集222中的第二服务器的配置的数据。
在这一示例中,与云存储202相关联的服务器集222中的服务器向用户设备206发送请求204,并且用户设备响应于请求而向服务器返回配置数据。然而,在其它示例中,服务器不会向用户设备发送针对配置数据的请求。在这些示例中,在未接收来自服务器的任何请求的情况下,用户设备自动向服务器发送配置数据。
图3是图示服务器的示例性框图。服务器300是用于将复杂结构属性转换成平面化数据文件的计算设备。在一些示例中,服务器300经由REST API 306接收包括对象集304的REST响应集302。在这一示例中,REST响应集302向配置捕获组件提供用于转换成平面化数据文件集的***配置数据。
对象集304是包括至少一个复杂结构属性的一个或多个对象的集,诸如但不限于包括数组属性、嵌套对象属性、和/或嵌套数组子属性的(多个)对象。对象集304中的每个对象包括属性集。
在一些示例中,对象集304包括JAVASCRIPT对象表示法(JSON)格式的(多个)对象。然而,示例并不限于JSON格式的对象。对象集304可以包括可扩展标记语言(XML)对象、或者包括诸如数组属性、嵌套对象和/或嵌套数组属性之类的复杂结构属性的任何其它类型的对象。
配置捕获组件308消耗经由REST API接收的数据,并且输出平面化数据文件。在一些示例中,平面化数据文件集包括任何类型的带分隔符的输出文件。带分隔符的输出包括而不限于逗号定界数据、管道符(pipe)定界数据、冒号定界数据、分号定界数据、或者制表符定界数据。在这些示例中,平面化数据文件可以包括而不限于(多个)逗号分隔值(CSV)文件、(多个)管道符分隔值文件、(多个)分号分隔值文件、(多个)制表符分隔值文件、或者包含平面化数据或以其它方式与平面化数据相关联的任何其它类型的文件。
在一些示例中,配置捕获组件308将对象集304转换成诸如CSV文件集314之类的一个或多个平面化数据文件的集。配置捕获组件308包括散列类型转换组件310和数组类型转换组件312。散列类型转换组件310对复杂结构属性执行散列类型转换处理以平面化数组属性。
当其具有一个或多个子属性时,对象的属性称为散列属性。这样的属性的REST响应被结构化为:
“content”:{…
hash_attribute:{
sub-attribute-1:value_1
sub-attribute-2:value_2
sub-attribute-3:value_3…}}.
散列类型转换组件310将嵌套对象的子属性展开成在同一行中的几个简单子属性。子属性以相同的方式被展开作为其它属性。没有额外的标志来指示属性是否是子属性。子属性的名称被联接至原始较高级对象名称和子属性名称。用于联接名称的格式是:
hash-attribute-name_sub-attribute-name.
这一联接子属性名称和值然后被映射到平面化数据文件。
数组类型转换组件312对数组属性执行数组类型转换处理以平面化属性,以转换为一个或多个平面化数据文件。数组属性可以包括数组属性内的单个数组以及一个或多个嵌套数组。换言之,数组的子属性可以是另一对象或另一数组。同样地,子属性数组的子属性可以是另一数组。
数组类型转换组件312将数组展开为在同一行中的多个简单子属性。对于不同的实例,数组的长度会变化。数组类型转换组件将数组的内容输出成单独文件。数组类型转换组件312在平面化数据文件中生成键作为数组的标识符,并且创建第二级平面化数据文件以保持数组的实际值。在一些示例中,数组包括多个值。键被分配到数组属性,并且包括在第一级平面化数据文件和第二级平面化数据文件中。
在这一示例中,嵌套数组属性的处理并不特定于属性的结构或嵌套层的深度。在每个嵌套层处,根据诸如数组、散列、或简单结构(字符串、数值、布尔值、日期、空值等)之类的属性类型,迭代和处理属性。
配置捕获组件308使用递归方法,所以它可以处理嵌套情况,而不管嵌套对象和嵌套数组多么复杂。如果数组的子属性元素是散列,则散列类型转换组件递归地处理该子属性元素。如果散列属性的子属性元素是数组,则数组类型转换组件312递归地处理它。
在这一示例中,平面化数据文件集是逗号分隔值(CSV)文件集314。然而,示例并不限于CSV文件。在其它示例中,平面化数据文件可以包括用于保持简单结构属性和经平面化的复杂结构属性的任何类型的带分隔符的数据文件。例如,代替逗号分隔值文件,平面化数据文件可以包括分号分隔值、或者任何其它类型的分隔符。
CSV文件集包括诸如CSV文件316之类的一个或多个CSV文件。在一些示例中,配置捕获组件针对每个对象创建一个CSV文件。配置捕获组件将给定对象的属性映射到CSV文件316的列中。CSV文件集还可以包括保持数组的值集的子CSV文件318。子CSV文件是第二级平面化数据文件。
CSV文件集314可以被发送到分析引擎,诸如但不限于业务智能分析器320。平面化数据文件被容易地导入到业务智能分析器、性能分析器、或者用于分析平面化数据的其它***中。例如,在一些示例中,业务智能分析器将平面化数据文件转换回复杂结构属性以用于大数据环境内部的分析。
在其它示例中,CSV文件集314可以被发送到配置重新创建322组件。配置重新创建322组件利用平面化数据文件集来重新创建计算设备的***配置。配置重新创建组件322重新创建***配置。配置重新创建组件322可以在不同的第二计算设备上重新创建第一计算设备的***配置,在两个或更多不同计算设备上重新创建***配置,在相同的第一计算设备上重新创建第一计算设备配置,或者在任何其它计算设备上重新创建***配置。
配置捕获组件308可选地包括展开组件324。展开组件324将诸如CSV文件314之类的平面化数据文件集转换成具有复杂结构属性集的对象集。换言之,展开组件324分析平面化数据文件内提供的平面化数据,并且将平面化数据转换回复杂结构属性。
换言之,在这一非限制性示例中,配置捕获组件分析描述客户端或其它计算设备的配置的配置数据。配置数据包括与复杂结构属性集相关联的对象集。复杂结构属性是其是数组属性或嵌套对象属性的对象属性。配置捕获组件执行散列类型转换,以将嵌套对象属性转换成平面化数据。配置捕获组件执行数组类型转换,以将嵌套数组属性转换成平面化数据。平面化数据被存储在平面化数据文件集中。平面化数据文件集创建客户端的***配置的快照。***配置在这一示例中是当前***配置。然而,平面化数据文件集在其它示例中包括客户端的过去或先前***配置的快照。
在一些示例中,平面化数据文件集被存储在数据库或其它数据存储中。在其它示例中,平面化数据文件集被导入到一个或多个其它计算设备。接收平面化数据文件集的一个或多个其它计算设备可选地将平面化数据文件集展开回到原始配置数据(包括与复杂结构属性集相关联的对象集),而不丢失数据。
在一些非限制性示例中,平面化数据文件集创建与第一计算设备相关联的***配置的快照。配置捕获组件经由因特网连接从云或其它存储设备接收平面化数据文件集。展开组件324将平面化数据文件转换回包括复杂结构属性的原始对象集,以重新创建原始***配置数据。
在一些示例中,***配置快照用于在第二计算设备上重新创建第一计算设备的配置。在其它示例中,***配置快照用于分析第一计算设备的配置,以寻找故障(troubleshoot)或以其它方式诊断与第一计算设备相关联的问题。
图1、图2和图3中的各种元件的功能的至少一部分可以由图1、图2和图3中的其它元件来执行,或者由图1、图2和图3中未示出的实体(例如处理器、web服务、服务器、应用程序、计算设备等)来执行。
图4是对象集的框图。对象集400是诸如对象402、对象404和对象406之类的一个或多个对象的集。在这一示例中,对象集400包括三个(3个)对象。然而,在其它示例中,对象集400可以包括单个对象、两个对象、以及四个或更多对象。
在这一示例中,对象406是表示描述***配置的属性的REST对象的对象。对象406可以是JSON对象、XML对象、或者包括复杂结构属性集的任何其它类型的对象。
属性集408是一个或多个属性的集。属性可以是简单结构属性420或复杂结构属性422。简单结构属性集410是零个或更多简单结构属性的集。换言之,简单结构属性集408可以是不具有简单结构属性的空集、以及包括一个或多个简单结构属性的集。
简单结构属性420是具有无序名称和值对而没有任何嵌套对象或数组的对象。名称和值对是子属性的名称和子属性的值。简单结构属性可以包括简单的字符串、数字、布尔值或空值。
复杂结构属性集414包括一个或多个复杂结构属性。复杂结构属性422可以是嵌套对象属性416或数组属性418。
图5是包括嵌套对象和数组属性的对象的框图。对象502是包括复杂结构属性的对象。例如,对象502包括数组属性504。数组属性包括名称和子属性集。在这一示例中,子属性之一是简单结构属性506。简单结构属性可以在不处理的情况下直接映射到平面化数据文件中。
在这一示例中,另一子属性是嵌套数组子属性508。嵌套数组子属性是其自身是另一嵌套数组的数组值。在这一示例中,嵌套数组子属性包括嵌套对象子属性510。换言之,嵌套数组子属性是包括一个或多个子属性的嵌套对象。然而,嵌套数组子属性并不限于单个嵌套对象子属性。在其它示例中,嵌套数组子属性508由一个或多个嵌套对象子属性、嵌套数组子属性、和/或简单结构属性组成。同样地,嵌套对象子属性510自身可以包括一个或多个嵌套对象子属性、简单结构子属性、和/或嵌套数组子属性。
对象502可以包括对象属性518,对象属性518包括简单结构属性516和嵌套对象子属性512。在这一示例中,嵌套对象子属性512包括嵌套数组子属性514。然而,示例并不限于包括单个嵌套数组子属性的嵌套对象子属性。在其它示例中,嵌套对象子属性可以包括一个或多个嵌套对象子属性、嵌套数组子属性、和/或简单结构属性。
配置捕获递归地处理与顶级对象502相关联的属性集中的每个属性,直到每个属性被转换为平面化数据。术语“递归地”指的是自身重复的处理或处理的部分,其中处理或处理的部分的一次连续执行的输出被输入到下一连续执行。一个或多个操作的一次迭代执行的输出变成相同的一个或多个操作的下一迭代执行的输入。
图6是平面化数据文件集的框图。平面化数据文件集602是一个或多个平面化数据文件的集。第一级平面化数据文件604是表示诸如上面图5中的数组属性504之类的数组属性的文件。在这一示例中,第一级平面化数据文件604包括保持标识数组属性的键614的数组项键列606。属性名称行608包括数组属性的名称。属性值行610包括与数组属性对应的一个或多个子属性值。
第二级平面化数据文件612是用于保持属性数组的值集616的子文件。在一些示例中,第二级平面化数据文件612是子CSV文件。
值集616包括数组属性504的所有的简单结构子属性值。在这一示例中,高级属性数组的子属性之一是诸如FIG5中的嵌套数组子属性508之类的嵌套数组子属性。嵌套数组子属性可以被称为较高级数组属性的第二级嵌套数组。第二级平面化数据文件612包括表示高级数组属性的键614以及标识低级嵌套数组子属性的嵌套数组键。嵌套数组键618可以被称为子键。
第三级平面化数据文件620是用于存储嵌套数组子属性的值的数据文件。第三级平面化数据文件620包括针对第二级嵌套数组的值集624以及标识第二级嵌套数组的嵌套数组键622。
图7是图示将简单结构对象映射成平面化数据文件的示例性框图。简单结构对象702包括诸如属性704、706、708和710之类的简单名称/值对属性的集。在这一示例中,具有名称“id”的子属性704对应于简单字符串值“pool_6”。像这样的简单结构属性被直接映射为平面化数据格式,而不执行散列类型转换或数组类型转换。配置捕获组件将每个子属性的名称映射到平面化数据文件712的属性名称行714,并且将对应子属性值映射到平面化数据文件712中的属性值行716。
在这一示例中,属性704的属性名称“id”和属性706的属性名称“name”被映射到属性名称行714中。属性704的值“pool_6”和属性706的值“storagepool100”被映射到属性值行716中。名称“sizeTotal”被映射到属性名称行714中。属性708的数字值818996576256被映射到属性值行716中。同样地,属性710的名称“isFASTCacheEnabled”被映射到属性名称行714中。属性710的布尔值“false”被映射到属性值行716中。
图8是图示将复杂结构嵌套对象转换成平面化数据文件的示例性框图。对象802是另一较高级对象(未示出)的嵌入属性。对象802进一步包括名称为“poolFastVP”、具有子属性804、806和808的集的嵌入类型的嵌套对象。子属性是名称和值对。在这一示例中,散列类型转换组件将每个第二级子属性的名称与第一级属性的名称“poolFastVP”联接,以形成联接子属性名称。联接子属性名称中的每个被添加至平面化数据文件的属性名称行812。散列类型转换组件将每个子属性的值添加至平面化数据文件810的属性值行814。
例如,子属性804“isScheduleEnabled”被联接至属性名称“poolFastVP”以创建联接子属性名称“poolFastVP_isScheduleEnabled”。这一联接名称被添加至属性名称行812,并且子属性804的布尔值“true”被添加至属性值行814。
同样地,子属性806名称“status”被联接至属性名称“poolFastVP”以形成联接名称“poolFastVP_status”。这一联接名称被添加至属性名称行812,并且与子属性806相关联的数字值“4”被添加至属性值行814。
FIG9是对象属性内的嵌套数组子属性的框图。在这一示例中,对象900是包括子属性集的对象。子属性包括名称为“addresses”的嵌套数组子属性902、简单结构属性904、嵌套对象子属性906、以及简单结构属性908。
嵌套数组902包括三个数组值“1.1.1.1”、“2.2.2.2”和“3.3.3.3”。配置捕获组件创建用于保持“addresses”数组的名称的第一级平面化数据文件以及用于保持“addresses”数组的属性值集的第二级平面化数据文件。
图10是对应于嵌套数组子属性的子CSV文件的框图。子CSV文件1000是保持上面图9所示的数组子属性902的值的第二级平面化数据文件。嵌套数组子属性902的内容被输出到单独的子CSV文件1000。
在一个示例中,被输出到子CSV文件的数组的名称格式是:
<yyyymmdd>_<hhmmss>_<serial number>_<Output file name fromini>_<key of the array>_sub.csv.
例如,sub_CSV文件名称可以是:
2014014_031606_FCNCH0972C7ECD_fileDNSServer_addresses_sub.csv.
子CSV文件1000填充有标识名称为“addresses”的数组的数组键“addresseskey”1002。子CSV文件行1004、1006和1008还由与嵌套数组相关联的值来填充。
图11是图示将包括两个嵌套对象子属性的复杂结构数组属性转换成平面化数据文件集的示例性框图。“tiers”数组属性1104是其自身是高级“pool_6”对象1102的嵌套数组属性的数组类型复杂结构属性。“tiers”数组属性1104包括嵌套对象子属性1105和嵌套对象子属性1112。换言之,较高级“tiers”数组属性1104包括其自身是包含针对嵌套对象中的每个的另一子属性集的嵌套对象的两个低级嵌套数组子属性值。
在这一示例中,嵌套对象子属性1105包括子属性1106、1108和1110。第二嵌套对象包括子属性1114、1116和1118。这些子属性1106、1108、1110、1114、1116和1118中的每个子属性是简单结构名称和值对属性。
配置捕获组件创建针对每个数组属性的低级平面化数据文件或子文件。低级平面化数据文件的名称的格式如下:
<timestamp>_<system>_pool_tiers_sub.csv.
此处,图11所示的示例,配置捕获组件创建与“tiers”数组属性1104对应的第一级平面化数据文件1122以及与“tiers”数组属性1104的子属性对应的第二级平面化数据文件1124。配置捕获组件生成标识“tiers”数组属性1104的键。
散列属性被展开在相同的低级平面化数据文件1124中。第一级“pool_6”对象1102的名称与低级嵌套数组“tiers”的名称联接,以形成嵌套数组的联接名称“tiers_pool_6”。配置捕获组件用嵌套对象子属性1105的联接名称以及所生成的标识“tiers”数组属性1104的键“tiers-key”1126来填充第一级平面化数据文件1122。
配置捕获组件将每个子属性的名称与“tiers”数组属性1104的名称联接,以生成子属性1106、1108、1110、1114、1116和1118中的每个子属性的联接子属性名称。例如,嵌套数组名称“tiers”被联接至子属性1106名称“raidtype”,以形成被添加至第二级平面化数据文件1124的联接名称“tiers_raidtype”。
配置捕获组件用标识较高级“pool_6”对象1102的“tiers”数组属性1104的联接名称“tiers_pool_6”1128来填充第一级平面化文件1120。“tiers-key”1126被添加至键列,从而标识包含“tiers”数组属性1104的值的第二级平面化数据文件1124。
配置捕获组件添加至属性名称行1130的联接子属性名称来填充第二级平面化数据文件1124。在这一示例中,属性名称行1130包括指示“tiers”数组属性1104和“raidtype”子属性1106的联接名称“tiers_raidtype”。属性名称行1130中的联接名称“tiers_sizeTotal”指示“tiers”数组属性1104和“sizeTotal”子属性1108等。
第二级平面化数据文件用每个子属性的值来填充。这些值被添加至针对第一嵌套对象子属性1105的属性值行1132。例如,子属性1106的数字值“0”、子属性1108的数字值“0”、以及子属性1110的字符串值“Extreme Performance”以与嵌入在“tiers”数组属性1104内的数组属性值的顺序相同的顺序被添加至属性值行1132。
第二嵌套对象子属性1112的子属性的值被添加至另一属性值行1134。标识嵌套数组“tiers-key”1126的键也被添加至第二级平面化数据文件。
第一级平面化数据文件和第二级平面化数据文件形成平面化数据文件集。在一些示例中,平面化数据文件集是CSV文件集。在这些示例中,第一级平面化数据文件可以为CSV文件,并且第二级平面化数据文件可以被称为子CSV文件。在平面化数据文件集是CSV文件的情况下,数组类型转换组件将列添加到CSV文件中,以保持标识数组的键。数组类型转换组件创建针对高级“tiers”数组属性1104的每个嵌套数组子属性的子CSV文件。
在这一示例中,平面化数据文件集1120包括单个平面化文件1122和单个第二级平面化数据文件1124。然而,在其它示例中,平面化数据文件集包括一个或多个第一级平面化数据文件、第二级平面化数据文件、第三级平面化数据文件、第四级平面化数据文件等。
例如,“tiers”数组属性可以包括名称为“raidGroups”、具有一个或多个“disk”属性的数组子属性。在这一示例中,平面化数据文件集1120包括表示“tiers”数组的高级平面化数据文件1122、保持“tiers”数组的值的第二级平面化数据文件1124、表示“raidGroups”数组子属性的另一第二级平面化数据文件、以及表示“raidGroups”数组子子属性的值的第三级平面化数据文件。在这一示例中,附加的第二级平面化数据文件和第三级平面化数据文件的名称格式如下:
<timestamp>_<system>_pool_tiers_raidGroups_sub.csv;
<timestamp>_<system>_pool_tiers_raidGroups_disks_sub.csv.
在另一示例中,tiers属性可以包括两个数组子属性:数组子属性“one”和数组子属性“two”。数组子属性“one”进一步包括嵌套数组子属性“three”。在这一示例中,CSV文件集将包括包含“tiers”数组属性的高级平面化数据文件、表示“tiers”数组的值的第二级平面化数据文件、包含数组子属性“one”的值的第三级平面化数据文件、包含数组子属性“two”的值的另一第三级平面化数据文件、以及包含嵌套数组子属性“three”的值的第四平面化数据文件。
图12是表示嵌套数组属性的CSV文件集的框图。在这一示例中,CSV文件集1200是与嵌套数组属性相关联的两个或更多CSV文件的集。CSV文件集1200包括CSV文件1202和sub_CSV文件1204。
在这一示例中,CSV文件集被发送到服务器、客户端、分析引擎、或者其它计算设备以用于分析。在接收CSV文件集时,计算设备的配置捕获组件将CSV文件集转换回对象集的复杂结构属性集。换言之,配置捕获组件执行处理以将平面化数据转换回复杂结构属性。
在这一示例中,名称为“operationalStatus”的嵌套数组是名称为“pool_6”的高级对象的低级嵌套数组属性。如本文中使用的,高级对象是包括作为嵌套属性的低级对象的对象。用被称为“operationalStatusKey”的数组键以及其是“operationalStatus_pool_6”的嵌套数组的联接名称来填充第一CSV文件1202。
第二级平面化数据文件(子CSV文件1204)填充有标识嵌套数组“operationalStatus”的数组键“operationalStatusKey”、嵌套数组的名称、以及嵌套数组的值集。在这一示例中,值集包括每个子属性的联接名称,其后是子属性的值。例如,子属性“operationalStatus_pool_6”数组包括子属性值“2、3和5”。
配置捕获组件将CSV文件集1200中提供的平面化数据展开成以下:
“operationalStatus”:[2,3,5],
具有三个数组值的集的嵌套数组属性。以这种方式,配置捕获组件将复杂结构属性转换成平面化数据和/或将平面化数据展开回到复杂结构属性而无数据丢失。
图13是图示用于将配置捕获的配置数据平面化的计算设备的操作的示例性流程图。图13所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1302处,处理开始于从客户端接收配置数据。在1304处,处理将配置数据的复杂结构属性转换成平面化配置数据。在1306处,处理确定是否重新创建***配置。如果是,在1308处,处理将平面化配置数据发送到配置重新创建组件。在1310处,处理确定是否发送以用于分析。如果是,在1310处,平面化数据被发送到业务智能分析器,其后处理终止。
返回到1306,如果不要重新创建***确认,在1310处,处理确定是否要发送平面化数据以用于分析。如果否,其后处理终止。
虽然图13所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
图14是图示将包括复杂结构属性的对象集转换成平面化数据文件集的示例性流程图。图14所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1402处,处理开始于分析与第一计算设备相关联的配置数据。在1404处,处理确定是否标识简单结构属性集。如果是,在1406处,处理将简单结构属性集映射到平面化数据文件集。
在1408处,处理确定是否标识复杂结构属性集。如果是,在1410处,处理将复杂结构属性集转换为平面化属性集。在1412处,处理将平面化属性集映射到平面化数据文件集。在1414处,处理将平面化数据文件集发送到第二计算设备。其后,处理终止。
虽然图14所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
图15是图示执行散列类型转换和数组类型转换的示例性流程图。图15所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1502处,处理开始于确定对象集中是否存出复杂结构属性。如果是,在1504处,处理确定是否存在嵌套对象。如果是,在1506处,处理执行散列类型转换以平面化属性。然后在1508处,处理将属性映射到平面化数据文件集。
在1510处,处理确定是否存在下一属性。如果是,处理返回到1502。在1502处如果下一属性是复杂结构属性,则在1504处处理确定属性是否是嵌套对象,如果否,在1512处,处理执行数组类型转换。在1508处,处理将属性映射到平面化数据文件集。
在1510处,处理确定是否存在下一属性。如果是,处理返回到1502。如果属性不是复杂结构属性,它是简单结构属性,并且在1508处,处理将这一属性映射到平面化数据文件集。
处理递归地执行操作1502至1512,直到所有属性都被平面化并且被映射到平面化数据文件集。如果在1510处没有下一属性要处理,其后处理终止。
虽然图15所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
图16是图示散列类型转换的示例性流程图。图16所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1602处,处理开始于联接对象名称与当前级嵌套对象名称。在1604处,处理将联接对象名称和对应值添加至平面化数据文件。在1606处,处理确定当前级嵌套对象的子属性是否包含嵌套对象。如果是,处理返回到1602,并且递归地执行操作1602至1606,直到所有的嵌套对象名称被联接并且被添加至平面化数据文件。
返回到1606,如果当前级对象的属性不包含嵌套对象,则在1608处,处理确定当前级对象的下一子属性是否包含对象。如果是,处理返回到1602,并且递归地执行操作1602至1608,直到当前级对象的下一子属性不包含另一嵌套对象。然后在1610处,处理确定这是否是当前级对象的最后子属性。如果否,处理返回到1608,并且递归地执行操作1602至1610,直到在1610处达到当前级对象的最后子属性。
在1612处,处理确定这是否是顶级对象。如果否,在1614处,处理向上移动一个级到达前一级处的对象,并且继续执行操作1602至1612。在1612处确定处理已经到达顶级对象时,其后处理终止。
虽然图16所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
在图16所示的示例中,散列类型转换处理确定对象的子属性是否包含嵌套对象。然而,在其它实施例中,数组类型转换处理还确定对象的子属性是否包含嵌套数组子属性。如果对象的子属性包含嵌套数组子属性,处理执行数组类型转换处理,以平面化嵌套数组子属性,如上面的图15和下面的图17所示的。
图17是图示数组类型转换的示例性流程图。图17所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1702处,处理开始于将键名称添加至当前级平面化数据文件以表示数组属性。在1704处,处理生成低级平面化数据文件以保持数组属性的子属性集。在1706处,处理确定子属性集中的子属性是否是嵌套数组。如果是,处理返回到1702,并且递归地执行操作1702到1706,直到针对其是嵌套数组的每个子属性创建平面化数据文件。
返回到1706,如果子属性不包含另一嵌套数组子属性,则在1708处,处理将子属性值添加至低级平面化数据文件。在1710处,处理确定这是否是子属性集中的最后子属性。如果是,在1712处,处理关闭当前级平面化数据文件。在1714处,处理确定这是否是最后数组属性。如果是,其后处理终止。
返回到1714,如果这不是最后数组属性,则在1716处,处理向上移动一个级,并且继续执行操作1706至1714,直到每个嵌套属性和子属性由数组类型转换处理进行了处理。
虽然图17所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
图18是图示将平面化数据文件展开成与对象集相关联的复杂结构属性的示例性流程图。图18所示的处理可以由诸如但不限于图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来实现。
在1802处,处理接收平面化数据。在1804处,处理确定是否标识散列类型平面化数据集。如果是,在1806处,处理执行散列类型展开处理,以将散列类型平面化数据集转换成复杂结构属性集。在1808处,处理确定是否标识数组属性类型平面化数据的集。如果否,其后处理终止。
返回到1808,如果标识数组属性类型平面化数据集,在1810处,处理执行数组类型展开处理,以将数组属性类型平面化数据集转换成复杂结构属性集,其后处理终止。
虽然图18所示的操作被描述为由诸如图1中的计算设备102、图2中的服务器集222、或者图3中的服务器300之类的计算设备来执行,本公开的方面设想由其它实体来执行操作。例如,云服务可以执行操作中的一个或多个操作。
在图18所示的示例中,在1802处,展开组件接收平面化数据。在这一示例中,从诸如存储器、磁盘、数据库、或者其它数据结构之类的数据存储接收或检索平面化数据。在其它示例中,从另一计算设备和/或客户端接收平面化数据。
在一些示例中,图13、图14、图15、图16、图17和图18所示的操作可以实现为编码在计算机可读介质上的诸如计算机可执行程序代码之类的软件指令、以编程或设计为执行操作的硬件来实现、或两者。例如,本公开的方面可以实现为包括多个互连、导电元件的片上***或其它电路。
虽然已经根据各种示例与它们关联的操作描述了本公开的方面,但是本领域技术人员将理解的是,来自任何数目的不同示例的操作的组合也在本公开的范围内。
示例性操作环境
示例性计算机可读介质包括闪存驱动、数字通用盘(DVD)、紧缩盘(CD)、软盘和盒式磁带。通过示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的易失性和非易失性、可移除和不可移除介质,以用于存储诸如计算机可读程序代码、数据结构、程序模块或其他数据之类的信息。计算机存储介质是有形的并且与通信介质互相排斥。计算机存储介质以硬件来实现,并且排除载波和传播信号。用于本公开的目的的计算机存储介质不是信号本身。示例性计算机存储介质包括硬盘、快闪驱动、和其他固态存储器。相比之下,通信介质通常体现计算机可读程序代码、数据结构、程序模块、或者调制数据信号(诸如载波或其他传输机制)中的其他数据,并且包括任何信息递送介质。
虽然与示例性计算***环境结合地描述,但本公开的示例能够用众多其它通用或专用计算***环境、配置或设备来实现。
其可以适合与本公开的方面一起使用的众所周知的计算***、环境和/或配置示例包括但不限于移动计算设备、个人计算机、服务器计算机、手持或膝上型设备、多处理器***、游戏平台、基于微处理器的***、机顶盒、可编程消费类电子设备、移动电话、可穿戴或配件外形规格的移动计算和/或通信设备(例如手表、眼镜、耳麦、或耳机)、网络PC、迷你计算机、大型计算机、包括任何上述***或设备的分布式计算环境等。这样的***或设备可以以任何方式接受来自用户的输入,包括从诸如键盘或指向设备之类的输入设备、经由姿势输入、接近输入(诸如通过悬停)、和/或经由语音输入。
本公开的示例可以在由一个或多个计算机或其它设备以软件、固件、硬件或其组合执行的计算机可执行程序代码(诸如程序模块)的一般上下文中描述,计算机可执行程序代码可以被组织成一个或多个计算机可执行组件或模块。一般而言,程序模块包括但不限于例程、程序、对象、组件和执行特定任务或实现特定抽象数据类型的数据结构。本公开的方面可以用任何数目和组织的这种组件或模块来实现。例如,本公开的方面并不限于特定的计算机可执行程序代码或在图中图示和本文中描述的特定的组件或模块。本公开的其它示例可以包括具有多于或少于本文中图示和描述的功能的不同的计算机可执行程序代码或组件。
在涉及通用计算机的示例中,当被配置为执行本文中描述的指令时,本公开的方面将通用计算机变换为专用计算设备。
本文中图示和描述的示例以及本文中未具体描述但在本公开的方面的范围内的示例组成用于平面化复杂结构属性的示例性装置。例如,诸如当被编码为执行图13、图14、图15、图16、图17和图18所示的操作时,图1所示的元件组成用于分析包括对象集的数据的示例性装置、用于将简单结构属性集映射成平面化数据文件集的示例性装置、和用于将复杂结构属性集转换为平面化属性数据的示例性装置、用于将平面化属性数据映射到平面化数据文件集的示例性装置。
除非另外指出,否则本文中图示和描述的本公开的示例中的操作的运行或执行顺序并非必须的。也就是说,除非另外指出,否则操作可以按照任何顺序执行,并且本公开的示例可以比在本文中公开的操作包括附加的或更少的操作。例如,设想在另一操作之前、同时或之后运行或执行特定操作在本公开的方面的范围内。
当引入本公开的方面或其示例的元件时,冠词“一”、“一个”、“该”和“所述”旨在意指存在一个或多个元件。术语“包含”、“包括”和“具有”旨在是包含性的,并意指可以存在除所列出的元件外的附加元件。术语“示例性”旨在意指“的示例”。短语“以下项中的一个或多个:A、B和C”意指“至少一个A和/或至少一个B和/或至少一个C”。
已经详细描述了本公开的方面,将显而易见的是,在不脱离如所附权利要求中限定的本公开的方面的范围的情况下,修改和变化是可能的。由于在不脱离本公开的方面的范围的情况下可以在上述构造、产品和方法中进行各种改变,因此旨在将上述描述中包含的、和在附图中示出的所有内容解释为说明性而并非限制性意义。

Claims (20)

1.一种由一个或多个处理器执行的计算机实现的方法,所述方法包括:
由与第二计算设备相关联的所述一个或多个处理器,分析与第一计算设备相关联的配置数据,所述配置数据包括对象集;
在标识与所述对象集相关联的简单结构属性集的条件下,将所述简单结构属性集映射成平面化数据文件集;并且
在标识与所述对象集相关联的复杂结构属性集的条件下,由配置捕获组件将所述复杂结构属性集转换为平面化属性数据,所述复杂结构属性集包括嵌套对象属性集和数组属性集,所述配置捕获组件对所述嵌套对象属性集执行散列类型转换并且对所述数组属性集执行数组类型转换以生成所述平面化属性数据;
将所述平面化属性数据映射到所述平面化数据文件集,以创建所述第一计算设备的***配置的快照。
2.根据权利要求1所述的计算机实现的方法,其中所述第二计算设备是云服务器,并且所述方法进一步包括:
由所述云服务器,经由因特网连接接收来自所述第一计算设备的所述配置数据,其中所述云服务器经由所述因特网连接将所述平面化数据文件集传输到与业务智能分析器相关联的第三计算设备以用于分析。
3.根据权利要求1所述的计算机实现的方法,其中所述平面化数据文件集是第一平面化数据文件集,并且所述方法进一步包括:
接收第二平面化数据文件集;并且
将所述第二平面化数据文件集转换成具有复杂结构属性集的对象集。
4.根据权利要求1所述的计算机实现的方法,进一步包括:
经由表示性状态传送(REST)应用编程接口(API)接收响应集中的来自客户端的所述对象集,其中所述对象集进一步包括REST对象集。
5.根据权利要求1所述的计算机实现的方法,其中对所述数组属性集执行所述数组类型转换进一步包括:
标识所述复杂结构属性集中的数组属性;
生成所述平面化数据文件集中的第一级平面化数据文件和第二级平面化数据文件;
向所述数组属性分配数组键;
将所述数组键和所述数组属性的属性名称添加至所述第一级平面化数据文件;并且
将所述数组键和与所述数组属性相关联的多个值添加到所述第二级平面化数据文件中。
6.根据权利要求5所述的计算机实现的方法,其中与所述数组属性相关联的所述多个值包括嵌套数组子属性,并且所述方法进一步包括:
生成所述平面化数据文件集中的与所述嵌套数组子属性对应的第三级平面化数据文件;
向所述嵌套数组子属性分配嵌套数组键;
将所述嵌套数组键添加至所述第二级平面化数据文件;并且
将所述嵌套数组键和与所述嵌套数组子属性相关联的多个值添加至所述第三级平面化数据文件。
7.根据权利要求1所述的计算机实现的方法,其中对所述嵌套对象属性集执行所述散列类型转换进一步包括:
标识所述复杂结构属性集中的嵌套对象属性,其中所述嵌套对象属性包括子属性集和与所述子属性集相关联的值集;
生成所述平面化数据文件集中的与所述嵌套对象属性对应的平面化数据文件;
递归地处理所述子属性集中的每一个子属性,其中处理所述子属性集中的子属性包括:
将所述嵌套对象属性的名称与所述子属性的名称联接以形成联接子属性名称;
将所述联接子属性名称添加至所述平面化数据文件的属性名称行;并且
将与所述子属性对应的值添加至所述平面化数据文件的属性值行。
8.根据权利要求7所述的计算机实现的方法,其中所述嵌套对象属性的子属性是用于形成嵌套数组的数组子属性,并且所述方法进一步包括:
生成所述平面化数据文件集中的与所述嵌套数组相关联的第一级平面化数据文件和第二级平面化数据文件;
向所述嵌套数组分配嵌套数组键;
将所述嵌套数组键和所述嵌套对象属性的名称添加至所述第一级平面化数据文件;并且
将所述数组键和与所述嵌套数组相关联的多个值添加到所述第二级平面化数据文件中。
9.一种计算设备,包括:
一个或多个处理器;
存储器,被耦合到所述一个或多个处理器,所述存储器存储配置捕获组件;以及
应用编程接口(API),所述API被配置为接收来自客户端的数据,所述数据包括对象集,所述对象集包括复杂结构属性集,所述复杂结构属性集包括嵌套对象属性集,所述嵌套对象属性集中的嵌套对象属性包括至少一个子属性,所述一个或多个处理器执行所述配置捕获组件,以对所述嵌套对象属性执行散列类型转换,以生成平面化数据文件集中的与所述嵌套对象属性对应的平面化数据文件,并且将所述平面化数据文件集发送到业务智能分析器以用于分析,所述平面化数据文件包括:
属性名称行,包括所述嵌套对象属性的名称和至少一个联接子属性名称;以及
所述平面化数据文件的属性值行,包括与所述至少一个子属性对应的至少一个值。
10.根据权利要求9所述的计算设备,其中所述API进一步包括表示性状态传送(REST)API。
11.根据权利要求9所述的计算设备,其中所述配置捕获组件进一步包括:
展开组件,所述一个或多个处理器执行所述展开组件以接收平面化数据文件集并且将所述平面化数据文件集转换成包括复杂结构属性集的对象集。
12.根据权利要求9所述的计算设备,其中与所述嵌套对象属性相关联的所述平面化数据文件是逗号分隔值(CSV)文件集中的CSV文件。
13.根据权利要求9所述的计算设备,其中所述客户端是第一客户端,并且所述计算设备进一步包括:
配置重新创建组件,在所述一个或多个处理器上执行,以使用所述平面化数据文件集在第二客户端上重新创建所述第一客户端的***配置。
14.根据权利要求9所述的计算设备,其中所述复杂结构属性集包括数组属性,并且所述计算设备进一步包括:
与所述配置捕获组件相关联的数组类型转换组件,所述一个或多个处理器执行所述数组类型转换组件,以生成与所述数组属性对应的第一级平面化数据文件和第二级平面化数据文件,所述第一级平面化数据文件包括键和所述数组属性的名称;并且其中所述第二级平面化数据文件包括所述键和与所述数组属性相关联的多个值。
15.根据权利要求14所述的计算设备,其中所述多个值进一步包括嵌套数组,并且进一步包括:
与所述嵌套数组相关联的第三级平面化数据文件,所述第三级平面化数据文件包括嵌套数组键和与所述嵌套数组相关联的多个值,其中所述第二级平面化数据文件进一步包括所述嵌套数组键和所述嵌套数组的名称。
16.体现计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令当被执行时使得至少一个处理器:
接收包括对象集的配置数据,所述配置数据与第一计算设备的***配置相关联;
在标识与所述对象集相关联的数组属性的条件下,执行数组类型转换,以用数组键和所述数组属性的属性名称填充第一级平面化数据文件,并且用所述数组键和与所述数组属性相关联的多个值填充第二级平面化数据文件,所述第一级平面化数据文件和所述第二级平面化数据文件构成平面化数据文件集;
将所述平面化数据文件集发送到配置重新创建组件,以利用所述平面化数据文件集在第二计算设备上重新创建所述第一计算设备的所述***配置。
17.根据权利要求16所述的一个或多个计算机存储介质,其中所述指令进一步被执行以使得所述至少一个处理器:
在标识与所述对象集相关联的简单结构属性的条件下,将所述简单结构属性映射到与所述简单结构属性相关联的对象对应的平面化数据文件。
18.根据权利要求16所述的一个或多个计算机存储介质,其中所述指令进一步被执行以使得所述至少一个处理器:
在标识所述对象集中的具有复杂结构属性集中的嵌套对象属性的对象的条件下,对所述嵌套对象属性执行散列类型转换,其中所述嵌套对象属性包括嵌入在所述嵌套对象属性内的子属性集,并且其中每个子属性与用于形成值集的值相关联,并且其中散列类型转换组件进一步被执行为:
生成与所述嵌套对象相关联的平面化数据文件;
递归地联接所述嵌套对象属性的名称与子属性的名称以形成子属性名称,直到所有子属性名称被联接以形成子属性名称集;
用所述子属性名称集填充所述平面化数据文件的属性名称行;并且
用与所述子属性集相关联的所述值集填充所述平面化数据文件的属性值行。
19.根据权利要求16所述的一个或多个计算机存储介质,其中所述平面化数据文件集是逗号分隔值(CSV)文件集。
20.根据权利要求16所述的一个或多个计算机存储介质,其中所述指令进一步被执行以使得所述至少一个处理器:
将所述平面化数据文件集转换回包括复杂结构属性集的所述对象集。
CN201510642171.9A 2015-09-30 2015-09-30 复杂结构对象转换成平面化数据的方法、设备和存储介质 Active CN106557531B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510642171.9A CN106557531B (zh) 2015-09-30 2015-09-30 复杂结构对象转换成平面化数据的方法、设备和存储介质
US15/280,811 US10324904B2 (en) 2015-09-30 2016-09-29 Converting complex structure objects into flattened data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510642171.9A CN106557531B (zh) 2015-09-30 2015-09-30 复杂结构对象转换成平面化数据的方法、设备和存储介质

Publications (2)

Publication Number Publication Date
CN106557531A true CN106557531A (zh) 2017-04-05
CN106557531B CN106557531B (zh) 2020-07-03

Family

ID=58409611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510642171.9A Active CN106557531B (zh) 2015-09-30 2015-09-30 复杂结构对象转换成平面化数据的方法、设备和存储介质

Country Status (2)

Country Link
US (1) US10324904B2 (zh)
CN (1) CN106557531B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109871203A (zh) * 2018-12-30 2019-06-11 贝壳技术有限公司 网络请求参数的优化传递方法、装置与电子设备
CN110766501A (zh) * 2018-07-27 2020-02-07 北京京东尚科信息技术有限公司 数据嵌套存储方法、装置、电子设备及计算机可读介质
CN111352983A (zh) * 2018-12-24 2020-06-30 深圳市优必选科技有限公司 业务属性动态扩展方法、装置、计算机设备及存储介质
CN111581267A (zh) * 2020-04-14 2020-08-25 北京明略软件***有限公司 一种对象数据的存储方法和装置
CN112580106A (zh) * 2021-01-26 2021-03-30 证通股份有限公司 多源数据处理***以及多源数据处理方法
WO2024001163A1 (zh) * 2022-06-29 2024-01-04 青岛海尔科技有限公司 属性数据的转换方法和装置、存储介质及电子装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11451627B2 (en) * 2020-04-03 2022-09-20 Open Text Holdings, Inc. System and method for content management with intelligent data store access across distributed stores
US11775757B2 (en) 2020-05-04 2023-10-03 International Business Machines Corporation Automated machine-learning dataset preparation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1558348A (zh) * 2003-02-28 2004-12-29 将基于模式的分级数据结构转换成平面数据结构的方法以及***
US20100131457A1 (en) * 2008-11-26 2010-05-27 Microsoft Corporation Flattening multi-dimensional data sets into de-normalized form
CN103593194A (zh) * 2013-11-21 2014-02-19 北京国双科技有限公司 对象序列化方法和装置
CN105095327A (zh) * 2014-05-23 2015-11-25 深圳市珍爱网信息技术有限公司 一种分布式etl***及调度方法
CN107924410A (zh) * 2015-08-26 2018-04-17 甲骨文国际公司 用于支持分层数据对象的高效路径导航的与分层数据对象的二进制编码相关的技术

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1527414A2 (en) 2002-02-01 2005-05-04 John R. C. Fairweather A system and method for managing knowledge
US7058657B1 (en) 2003-01-07 2006-06-06 Perlegen Sciences, Inc. Architecture for developing and reusing analytic and visualization components and methods of use thereof
US7620526B2 (en) * 2006-10-25 2009-11-17 Zeugma Systems Inc. Technique for accessing a database of serializable objects using field values corresponding to fields of an object marked with the same index value
US20100299438A1 (en) * 2008-01-21 2010-11-25 Gottfried Zimmerman Online resource server for allowing device control and access to digital content trhough pluggable user interfaces
US8381300B2 (en) * 2009-01-26 2013-02-19 Microsoft Corporation Offline extraction of configuration data
US9292594B2 (en) * 2010-03-10 2016-03-22 Novell, Inc. Harvesting relevancy data, including dynamic relevancy agent based on underlying grouped and differentiated files
EP2625629B1 (en) * 2010-10-04 2023-12-06 Sempras Software, Inc. Methods and apparatus for integrated management of structured data from various sources and having various formats
US9430505B2 (en) * 2011-04-18 2016-08-30 Infosys Limited Automated data warehouse migration
US20120310899A1 (en) * 2011-06-03 2012-12-06 Scott Lawrence Wasserman System and method for efficient data exchange in a multi-platform network of heterogeneous devices
US8806160B2 (en) * 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US9037964B2 (en) * 2012-01-12 2015-05-19 International Business Machines Corporation Providing direct manipulation of an analytics data visualization within an analytics report
SG10201706072PA (en) * 2012-09-12 2017-09-28 Iex Group Inc Transmission latency leveling apparatuses, methods and systems
US20140337472A1 (en) * 2012-12-13 2014-11-13 Level 3 Communications, Llc Beacon Services in a Content Delivery Framework
US20140214753A1 (en) * 2012-12-28 2014-07-31 Joseph Guerra Systems and methods for multi-source data-warehousing
US11493347B2 (en) * 2013-03-12 2022-11-08 Verizon Patent And Licensing Inc. Using historical location data to improve estimates of location
EP2976740A4 (en) * 2013-03-15 2017-01-11 Factual Inc. Apparatus, systems, and methods for analyzing characteristics of entities of interest
US20140337277A1 (en) * 2013-05-09 2014-11-13 Rockwell Automation Technologies, Inc. Industrial device and system attestation in a cloud platform
US20150019284A1 (en) * 2013-07-09 2015-01-15 International Business Machines Corporation Dynamically modifying business processes based on real-time events
US9692789B2 (en) * 2013-12-13 2017-06-27 Oracle International Corporation Techniques for cloud security monitoring and threat intelligence
US10057273B1 (en) * 2016-03-30 2018-08-21 EMC IP Holding Company LLC System and method for ensuring per tenant mutual exclusion of data and administrative entities with low latency and high scale

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1558348A (zh) * 2003-02-28 2004-12-29 将基于模式的分级数据结构转换成平面数据结构的方法以及***
US20100131457A1 (en) * 2008-11-26 2010-05-27 Microsoft Corporation Flattening multi-dimensional data sets into de-normalized form
CN103593194A (zh) * 2013-11-21 2014-02-19 北京国双科技有限公司 对象序列化方法和装置
CN105095327A (zh) * 2014-05-23 2015-11-25 深圳市珍爱网信息技术有限公司 一种分布式etl***及调度方法
CN107924410A (zh) * 2015-08-26 2018-04-17 甲骨文国际公司 用于支持分层数据对象的高效路径导航的与分层数据对象的二进制编码相关的技术

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110766501A (zh) * 2018-07-27 2020-02-07 北京京东尚科信息技术有限公司 数据嵌套存储方法、装置、电子设备及计算机可读介质
CN111352983A (zh) * 2018-12-24 2020-06-30 深圳市优必选科技有限公司 业务属性动态扩展方法、装置、计算机设备及存储介质
CN109871203A (zh) * 2018-12-30 2019-06-11 贝壳技术有限公司 网络请求参数的优化传递方法、装置与电子设备
CN111581267A (zh) * 2020-04-14 2020-08-25 北京明略软件***有限公司 一种对象数据的存储方法和装置
CN112580106A (zh) * 2021-01-26 2021-03-30 证通股份有限公司 多源数据处理***以及多源数据处理方法
WO2024001163A1 (zh) * 2022-06-29 2024-01-04 青岛海尔科技有限公司 属性数据的转换方法和装置、存储介质及电子装置

Also Published As

Publication number Publication date
CN106557531B (zh) 2020-07-03
US20170091220A1 (en) 2017-03-30
US10324904B2 (en) 2019-06-18

Similar Documents

Publication Publication Date Title
CN106557531A (zh) 将复杂结构对象转换成平面化数据
US12034747B2 (en) Unsupervised learning to simplify distributed systems management
US11941016B2 (en) Using specified performance attributes to configure machine learning pipepline stages for an ETL job
CN102999562B (zh) 路由查询结果
US10990810B2 (en) Automated facial recognition detection
CN111800450B (zh) 用于云资源管理的多维标签命名空间
US20130283141A1 (en) Client Agnostic Spatial Workflow Form Definition and Rendering
US11521082B2 (en) Prediction of a data protection activity time for a backup environment
CN108139961A (zh) 遥测定义***
US20200090109A1 (en) Asset and device management
US11263267B1 (en) Apparatuses, methods, and computer program products for generating interaction vectors within a multi-component system
CN106294151A (zh) 日志测试方法及装置
JP7092893B2 (ja) ソフトウェア開発におけるアドレス可能なアセット
CN115640596A (zh) 图存储上的安全查询处理
WO2022018626A1 (en) Cross-environment event correlation using domain-space exploration and machine learning techniques
US10489404B2 (en) Macrocosm monitor service platform
EP3560158B1 (en) Systems and methods for providing cross-network event attribution
Ilijason Beginning Apache Spark Using Azure Databricks: Unleashing Large Cluster Analytics in the Cloud
CN112204525A (zh) 具有综合数据即服务框架集包存储库的分布式计算***
US20240184681A1 (en) Entity component system utilization for data center and hardware performance analytics
US11763115B1 (en) System communication in areas of limited network connectivity
US20240022578A1 (en) Invoking response(s) based on analysis of a dataset obtained from searching a security endpoint
CN115390912B (zh) 资源发现方法、装置、计算机设备和存储介质
US11921608B2 (en) Identifying a process and generating a process diagram
US11748381B2 (en) Data extraction from a multidimensional data structure

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: 20200423

Address after: Massachusetts, USA

Applicant after: EMC IP Holding Company LLC

Address before: Ma Sazhusaizhou

Applicant before: EMC Corp.

GR01 Patent grant
GR01 Patent grant