CN115248936A - 水平可扩展数据去识别 - Google Patents
水平可扩展数据去识别 Download PDFInfo
- Publication number
- CN115248936A CN115248936A CN202210435026.3A CN202210435026A CN115248936A CN 115248936 A CN115248936 A CN 115248936A CN 202210435026 A CN202210435026 A CN 202210435026A CN 115248936 A CN115248936 A CN 115248936A
- Authority
- CN
- China
- Prior art keywords
- data
- generalization
- generalizations
- readable medium
- processors
- 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
Links
- 238000013503 de-identification Methods 0.000 title description 6
- 238000012545 processing Methods 0.000 claims description 95
- 238000013138 pruning Methods 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 abstract description 40
- 238000010586 diagram Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 230000015654 memory Effects 0.000 description 18
- 238000003860 storage Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 230000001629 suppression Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001755 vocal effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及水平可扩展数据去识别。描述了为数据集生成匿名化视图。一种示例方法可以包括从数据集中接收数据,其中数据被组织在多个列中。该方法还可以包括生成数据的多个泛化。该方法还可进一步包括使用基于至少泛化信息损失的信息损失评分函数来从多个泛化中选择泛化。另外,该方法还可以包括从所选择的泛化生成数据集的匿名化视图。
Description
相关申请
本申请要求于2021年4月26日提交的第63/180,047号美国临时申请的权益,该美国临时申请由此通过引用以其整体并入。
技术领域
本公开涉及数据处理,且特别涉及数据的去识别(de-identify)。
背景
去识别或匿名化是指“一种过程,通过该过程个人数据被以某种方式不可逆转地更改,使得数据主体不再能够直接或间接地被数据控制者单独地或与任何其他方合作识别”。基于风险的匿名(或去识别)是基于在最大化数据效用的同时降低重识别(re-identification)的风险。重识别是匿名数据通过其与其真正所有者匹配的过程。例如,研究人员能够将一份容易购买的选民登记名单与“匿名”医院数据联系起来。医院数据只去除了患者的姓名,但他们的出生日期、性别和邮政编码仍在数据中。研究人员表明,这三个属性足以重新识别87%的美国人口。
一种匿名化数据的方法叫做k-匿名。k-匿名修改直接标识符和间接或准标识符,使得每个单独的记录至少有k-1个与匹配的准标识符共同的其他记录。
附图简述
通过参考下面结合附图的描述,可以最好地理解所描述的实施例及其优点。在不脱离所述实施例的精神和范围的情况下,这些附图绝不限制本领域技术人员可以对所述实施例进行的形式和细节上的任何改变。
图1是描述其中可实现本文公开的方法的示例计算环境的块图。
图2是匿名化输入数据集的一个实施例的示意性块图。
图3是输入表的匿名化操作以产生输出表的一个实施例的示意性块图。
图4是执行数据集的匿名化操作的方法的一个实施例的流程图。
图5是用于从多个泛化(generalization)中确定候选泛化的方法的一个实施例的流程图。
图6是用于从多个虚拟仓库(或执行节点)上的多个泛化中确定候选泛化的方法的一个实施例的流程图。
图7A-7C是对输入数据的匿名化操作的实施例的示意性块图。
图8是教育数据层次结构(educational data hierarchy)的一个实施例的示意性块图。
图9是泛化格(generalization lattice)的一个实施例的图示。
图10是根据一些实施例的可以执行本文描述的操作中的一个或更多个操作的示例计算设备的块图。
详细描述
在所描述的系统和方法中,数据存储系统利用基于SQL(结构化查询语言)的关系数据库。然而,这些系统和方法适用于使用任何数据存储架构和使用任何语言在数据库中存储和检索数据的任何类型的数据库。本文描述的系统和方法进一步提供了一种多租户系统,该多租户系统支持不同客户/客户端之间以及同一客户/客户端内的不同用户之间的计算资源和数据的隔离。
一种匿名化数据的方法叫做k-匿名。k-匿名修改直接标识符和间接或准标识符,使得每个单独的记录具有至少k-1个与匹配的准标识符共同的其他记录。具有匹配的准标识符的记录组称为等价类。数据变换完全编辑直接标识符,同时泛化或抑制准标识符以满足k约束,但是最小化信息损失。这是一个NP难问题,主要原因是搜索空间以准标识符的数量呈指数增长,且目标既不是凸的(convex)也不是连续的。在一个实施例中,云计算平台可以创建数据集的匿名化视图,其中视图是k-匿名的。在该实施例中,即使有全域泛化所施加的限制,k-匿名也是NP难的。
在一个实施例中,可以使用探索法(heuristics)来组织在全域泛化的解空间上的搜索,以及使用在搜索期间收集的信息来消除泛化,而不必评估它们。这个消除过程被称为剪枝(pruning),且利用了全域泛化的单调性以及可行解效用的单调性(the monotonicityproperty of the utility of feasible solutions)以及该值的已知下限。如果泛化不能被剪枝,则对该泛化进行评估。
在该实施例中,云计算平台从数据集中检索数据,其中数据是柱状数据(columnardata),或者可以提取或转换为柱状数据。云计算平台进一步将数据集中的数据转换为整数数据。在另一实施例中,云计算平台转换在具有准可识别隐私类别的列中组织的数据。在具有不同隐私类别的其他列中的数据不会被转换,而是被忽略或抑制。这允许云计算平台存储较少量数据用于匿名视图确定。此外,来自一个或更多个数据层次结构的数据被进一步转换成整数数据,并被用于创建转换后的数据的多个泛化。
使用转换后的数据,云计算平台创建泛化集。在一个实施例中,泛化是将列值组织成组并用更泛化的值替换组中的所有值的过程。在该实施例中,云计算平台使用与转换后的数据相关的一个或更多个数据层次结构来创建泛化集。利用泛化集,云计算平台执行搜索以确定用于创建匿名化视图的候选泛化。虽然在一个实施例中,云计算平台可以搜索泛化集以获得最佳候选泛化,但在替代实施例中,云计算平台可以将一个或更多个泛化分组为一个或更多个等价类。此外,云计算平台可以剪枝泛化,使得需要被评估的泛化更少。
利用泛化集,云计算平台可以创建泛化的等价类的集合。在一个实施例中,链表数据结构用于存储等价类。对先前计算的等价类的集合的进一步泛化可以通过合并那些计算出的等价类来完成。存在多种用于在代码中利用这些泛化的机制。所做的工作与合并前等价类的数量成正比。这一数量随着泛化而减少,并且在实践中,往往比记录的数量少得多。
此外,云计算平台可以剪枝要评估的等价类的数量。在一个实施例中,可以使用三个前缀列表数据结构来存储被评估的泛化的属性。存储的属性是支持剪枝的属性。例如,如果一个泛化是k-匿名的,则每个较粗的泛化都是k-匿名的并且具有较低的效用(例如,较高的信息损失)。这样的处理与评估的泛化的数量成正比。关于先前评估的泛化存储的属性将是其是k-匿名的(例如,层次结构的高度)。在实践中,剪枝过程中消除了大部分的泛化。然而,对于k-匿名,被评估的泛化的数量可能很容易达到数千个,并且每次评估可能需要对数据进行遍历(pass)。
通过使用缩减的泛化的集合,云计算平台使用来确定候选泛化的泛化较少。然后,云计算平台使用候选来创建数据集的匿名化视图。
在一个实施例中,云计算平台可以使用多个处理器来计算候选泛化。使用多个处理器来计算候选泛化的一个问题是每个处理器都需要来自其他每个处理器的数据。这是由于在计算中使用的损失函数,其中损失函数依赖于等价类大小和抑制因子。这些组件中的每一个都依赖于由其他每个处理器计算的数据。如果处理器共享内存,那么不同处理器之间的数据传输就不会给计算带来负担。然而,如果处理器不共享内存(例如,在分布式数据库系统中,例如分布式云数据库系统),则用于在处理器之间发送数据的资源量严重减慢对候选泛化的计算,因为对于分布式存储器并行系统,数据传输时间大大增加。例如,在一个实施例中,在100个处理器分布式存储器系统(例如,分布式数据库系统中的100个节点)中,每个处理器需要来自其他99个处理器的数据。此外,可以有一个处理器,它是主处理器,从工作处理器(worker processors)接收信息以调度后续工作。传递的信息量与等价类的数量乘以准标识符的数量成正比。因此,在不同处理器之间传输的数据量会严重减慢候选泛化计算的并行化。在该实施例中,关于抑制和等价类大小的计算是需要来自不同处理器中的每一个处理器的数据的缓慢的候选泛化的一部分。
在另一实施例中,云计算平台对抑制和等价类计算进行近似,这降低了对来自其他处理器的数据的依赖。在该实施例中,通过计算等价类大小的界限来近似等价类计算。通过近似等价类大小,等价类大小的计算问题变得可分离,允许处理器并行计算等价类大小。此外,云计算平台近似抑制分量。利用这些近似,云计算平台可以让每个处理器计算三个数字(等价类大小近似值、抑制近似值和损失),将这些数字报告给主节点,其中主节点确定最小值的最佳解,并通过处理候选来设置这些值。
图1是在其中可以实现在本文中公开的系统和方法的示例计算环境100的块图。具体地,可以实现云计算平台110,例如AMAZON WEB SERVICESTM(AWS)、MICROSOFT AZURETM、GOOGLE CLOUDTM或GOOGLE CLOUD PLATFORMTM等。如本领域中已知的,云计算平台110提供可被获取(购买)或租赁并被配置为执行应用和存储数据的计算资源和存储资源。
云计算平台110可以托管云计算服务112,该云计算服务有助于云计算平台110上的数据存储(例如,数据管理和访问)和分析功能(例如,SQL查询、分析)以及其他计算能力(例如,云计算平台110的用户之间的安全数据共享)。云计算平台110可以包括三层架构:数据存储140、查询处理130和云服务120。
数据存储140可有助于将云计算平台110上的数据存储在一个或更多个云数据库141中。数据存储140可以使用存储服务(诸如AMAZON S3)来在云计算平台110上存储数据和查询结果。在特定实施例中,为了将数据加载到云计算平台110,可以将数据表水平地划分为大的、不可变的文件,这些文件可以类似于传统数据库系统中的块或页。在每个文件内,每个属性或列的值被分组在一起,并使用有时称为混合列的方案进行压缩。每个表都有表头,该表头除了其他元数据之外包含文件内每个列的偏移量。
除了存储表数据之外,数据存储140还有助于存储由查询操作(例如,关联)生成的临时数据以及包含在大的查询结果中的数据。这可以允许系统在没有内存不足或磁盘不足错误的情况下计算大的查询。以这种方式存储查询结果可以简化查询处理,因为它去除了传统数据库系统中对服务器端游标的需求。
查询处理130可以处理虚拟机的弹性集群(本文称为虚拟仓库或数据仓库)内的查询执行。因此,查询处理130可以包括一个或更多个虚拟仓库131,它们在本文也可称为数据仓库。虚拟仓库131可以是在云计算平台110上操作的一个或更多个虚拟机。虚拟仓库131可以是可根据需求在任何点处创建、销毁或调整大小的计算资源。该功能可以创建“弹性”虚拟仓库,该“弹性”虚拟仓库根据用户的需要扩展、收缩或关闭。扩展虚拟仓库涉及生成到虚拟仓库131的一个或更多个计算节点132。收缩虚拟仓库涉及从虚拟仓库131去除一个或更多个计算节点132。更多计算节点132可导致更快的计算时间。例如,在有四个节点的系统上需要15个小时的数据加载在有三十二个节点的系统上可能只需要两个小时。
云服务120可以是协调跨云计算服务112的活动的服务集合。这些服务将云计算服务112的所有不同组件绑定在一起,以便处理从登录到查询分派的用户请求。云服务120可以在由云计算服务112从云计算平台110提供的计算实例上操作。云服务120可以包括管理虚拟仓库、查询、事务、数据交换的服务以及与这些服务相关联的元数据(例如数据库模式、访问控制信息、加密密钥和使用统计信息)的服务集合。云服务120可以包括但不限于认证引擎121、基础设施管理器122、优化器123、交换管理器124、安全125引擎和元数据存储126。
在一个实施例中,云计算服务112可以基于数据集中的数据的内容对数据集进行匿名化。在该实施例中,云计算服务112从数据集中检索数据,其中数据被组织在多个列中。云计算服务112可进一步将数据的子集转换为整数数据。云计算服务112还可以从数据子集确定泛化的集合,并确定候选泛化。此外,云计算服务112使用候选泛化生成匿名化视图。
图2是对数据集执行匿名化操作的系统200的一个实施例的示意性块图。在图2中,系统200包括云计算平台204,其检索数据集202并匿名化该数据集202以给出匿名化数据集208。在一个实施例中,数据集可以是存储在列中的任何类型的数据集,或者可以被转换成柱状数据(例如,JavaScript对象表示法、键值数据和/或其他类型的存储数据)。在另一实施例中,云计算平台204是提供各种数据处理和/或存储服务的计算平台,例如上面图1中描述的云计算平台110。在另一实施例中,客户端206是个人计算机、膝上型计算机、服务器、平板电脑、智能电话和/或可处理数据的另一类型的设备。在该实施例中,客户端206可以请求对数据集202的匿名化。此外,客户端206可以呈现中间结果并允许用户更改结果。例如,在一个实施例中,客户端可以呈现关于数据集的每个列的语义类别和/或语义类别类型。用户可以修改关于一个或更多个列的语义类别和/或语义类别类型,并且云计算平台204可以重新匿名化数据集。在一个实施例中,匿名化数据208是使用由云计算平台204确定的列组织的柱状数据。
在一个实施例中,数据集中的每个列将具有语义类别。在本实施例中,语义类别是列中数据的描述。例如,在一个实施例中,语义类别可以是姓名、性别、年龄、邮编、城市、教育和/或另一类型的语义类别。通过分配的语义类别,可以为每个列分配隐私类别。在一个实施例中,数据的隐私类别基于语义类别指定。在该实施例中,至少有四种不同的隐私类别:标识符、准标识符、敏感和其他。在另一实施例中,可以存在其他类型的隐私类别。在一个实施例中,隐私类别指示在匿名化操作期间数据如何被处理。例如,在一个实施例中,在匿名化操作期间抑制隐私类别为标识符的数据。标识符数据是可以识别人或物的数据,如姓名、电子邮件或电话号码。因此,如果标识符数据在匿名化操作中幸存,则匿名性将丢失。敏感数据,如医疗结果,是一种出于道德或法律原因而不被披露的数据类型。敏感数据通常是通过在等价类中对这种数据分布设置约束来保护的——例如,l—多样化和t—亲密性。准标识符是一种属性,其可能不能通过其自己识别一个人或物,但可以唯一地通过组合识别个体。例如,年龄、性别和邮编可以单独地或与其他公开可用的数据结合来识别个体。不转换具有其他隐私类别的数据。
图3是输入表302的匿名化操作以产生输出表306的一个实施例的示意性块图。在图3中,输入表302包括关于姓名308A、性别308B、年龄308C、邮政编码308D和停留308E的列。在一个实施例中,分类器将关于姓名的列308A标识为标识符,将列年龄308C和邮编308D标识为准可识别,将列性别308B和停留308E标识为其他(例如,非标识符、准标识符或敏感)。匿名化操作执行两个不同的操作来匿名化数据:泛化和抑制(304)。泛化使用k-匿名操作、使用数据层次结构或其他类型的操作来泛化数据。
以下在图5中进一步讨论了泛化。抑制防止数据被查看。在图3中,对姓名列施加抑制,导致在输出视图306的姓名列310A中数据不可见。列310C-D(年龄和邮政编码)被泛化。例如,在一个实施例中,年龄数据从特定年龄转换到列310C中的年龄范围,并且通过去除邮政编码的最后三个数字来泛化邮政编码数据。其他类型的准标识符数据可以以不同的方式进行泛化。在一个实施例中,可以使用数据层次结构来泛化准标识符数据。在一个实施例中,数据层次结构是数据值的最终形成单个值的连续分组,属性是所有值都连续分组相同次数,称为层次结构的高度。因为性别列和停留列被归类为其他,所以通常不转换此数据。
在一个实施例中,如果一行包括不能泛化成一组的数据,则抑制该行。例如,在一个实施例中,姓名为Travis Ortega的行的年龄为30岁,在55-56岁的年龄范围之外,并且只有一个人是30岁或在30岁左右。因为在这个年龄组中只有一个人,所以在输出表306中抑制该行(除了停留列310E中的数据)。
图4是用于执行数据集的匿名化操作的方法400的一个实施例的流程图。通常,方法400可以通过处理逻辑执行,该处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。例如,处理逻辑可以实现为查询处理130。方法400可以在步骤402开始,在步骤402中处理逻辑检索数据集。在一个实施例中,数据集是柱状数据,或者可以被提取或转换成柱状数据。
在步骤404,处理逻辑将数据集中的数据转换为整数。在一个实施例中,用于公式化k-匿名问题的数据是整数数据。即使要匿名化的原始客户数据有各种类型——字符串、整数、浮点——数学表示将原始数据值替换为整数。在一个实施例中,对于每个准标识符和相关联的层次结构中的值,处理逻辑用存储数据值的表的索引替换数据值。因此,用于k-匿名化的表可以携带关于准标识符的信息。将数据转换为这种形式可以在SQL中完成,且只需完成一次,并需要遍历层次结构和准标识符。因为转换后的数据来自具有准标识符隐私类别的列,所以数据比原始数据小得多。创建泛化和处理这些泛化的步骤使用转换后的整数数据。
在步骤406,处理逻辑生成多个泛化。在一个实施例中,处理逻辑使用一个或更多个数据层次结构来创建泛化。在一个实施例中,数据集的泛化是将列值组织成组并用更泛化的值替换组中的所有值的过程。在步骤408,处理逻辑从泛化集中确定候选泛化。在一个实施例中,处理逻辑通过搜索泛化集以获得满足k-匿名性水平并使信息损失函数最小化的泛化来生成候选泛化。此外,处理逻辑可以通过将泛化分组为等价类并剪枝那些等价类来减少用于确定候选泛化的处理资源的量。例如,在一个实施例中,处理逻辑可以创建泛化的等价类的集合。在一个实施例中,链表数据结构用于存储等价类。对先前计算的等价类的集合的进一步泛化可以通过合并那些计算出的等价类来完成。有多种机制用于在代码中利用这些泛化。所做的工作与合并前等价类的数量成正比。这一数量随着泛化而减少,且在实践中,往往比记录的数量少得多。
此外,处理逻辑可以剪枝要被评估的等价类的数量。在一个实施例中,可以使用三个前缀列表数据结构来存储被评估的泛化的属性。存储的属性是支持剪枝的属性。例如,如果泛化是k-匿名的,则每个较粗的泛化都是k-匿名的,并且具有较低的效用(例如,较高的信息损失)。属性数据结构可以随着每个泛化的评估而增长。因此,与确定推断属性相关的工作与截止当前被评估的泛化的数量成正比。例如,在一个实施例中,关于先前被评估的泛化而存储的属性将是其是k-匿名的。在实践中,剪枝过程中消除了大部分的泛化。然而,对于k-匿名化,被评估的泛化的数量可能很容易达到数千个,并且每次评估可能需要对数据进行遍历。
在一个实施例中,过程400生成可能的泛化格。在该实施例中,泛化格是关于具有相同或不同泛化级别的N列准标识符数据的解空间的表示。格中的每个节点代表关于N个准标识符数据的不同泛化级别。图9示出了示例格。图9是泛化格900的一个实施例的图示。在图9中,格900是关于三列准标识符数据的解空间的表示。格900的每个节点表示关于三个不同列的不同泛化级别。为了清楚起见,格900被示出为具有格的顶部部分902A和底部部分902B。本领域技术人员将认识到,格中间表示许多另外的泛化级别。
在一个实施例中,格900包括许多节点,其中每个节点是表示三列数据的泛化的不同组合的元组(tuple)。在该实施例中,格900具有表示完全不泛化的底部节点904和表示完全泛化的顶部节点906。每个节点的元组是使用对应于每列的数据层次结构对该列进行的泛化的数量。例如,在一个实施例中,节点908具有元组(0,0,2),其表示对列1和列2不泛化,以及对列3进行两级泛化。类似地,节点910具有元组(5,3,6),其表示对列1进行五级泛化,对列2进行三级泛化,以及对列3进行六级泛化。格900的每一层表示三个列的集体泛化级别,它可以以各个列泛化的不同组合来被满足。例如,在一个实施例中,层912A-D分别表示一、二、十三和十四的集体泛化级别。在一个实施例中,过程400使用格900来寻找k-匿名性的最佳泛化级别。虽然在一个实施例中,格900被示出为具有五层、三层和七层的数据层次结构的三个准可识别数据列,但在替代实施例中,可以有更多或更少的列,每个列具有相同或不同层的数据层次结构。
在步骤410,处理逻辑确定数据集的匿名化视图。在一个实施例中,处理逻辑通过使用候选泛化来确定匿名化视图。在该实施例中,处理逻辑使用隐私类别来确定是抑制个体数据、匿名化个体数据还是忽略。在一个实施例中,候选泛化确定具有准标识符隐私类别的每列数据的泛化级别。在步骤412,处理逻辑应用视图。
图5是用于执行对数据集的匿名化操作的方法500的一个实施例的流程图。一般而言,方法500可以通过处理逻辑执行,处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。例如,处理逻辑可以实现为查询处理130。方法500可以在步骤502开始,在步骤502中处理逻辑接收泛化集、对应的数据层次结构和输入变量(例如,k值、平均等价类大小、可接受的信息损失、可接受的抑制水平和/或其他类型的输入变量)。在一个实施例中,数据集是具有准标识符隐私类别的经转换的柱状数据。处理逻辑进一步初始化变量best=minc∈C(score(k,c)),设置变量bestgeneralization=argminc∈C(score(k,c)),并将P设置为空集。在一个实施例中,P是经剪枝的泛化的集合。
当C是非空集时,处理逻辑执行外部处理循环(步骤504-520)以确定候选泛化。在步骤506,对于输入泛化集中的每个泛化,处理逻辑计算关于该泛化的信息损失分数。在一个实施例中,信息损失函数估计与对应于泛化的原始数据相比该泛化损失的信息量。在该实施例中,该信息损失函数是用隐私参数k对该泛化进行评分的结果。在一个实施例中,信息损失函数为score,其中score:C x Z→R2,所以(lower,value)=score(k,c)是用隐私参数k对泛化c进行评分的结果。子函数lower是单调的,对于固定k,随格诱导的偏序增加,以及对于泛化集C中的c,lower≤value。处理逻辑进一步将value与best值进行比较。如果value<best,则处理逻辑设置best=value和bestgeneration=c,其中bestgeneration是当前候选泛化,而best是当前候选泛化的信息损失函数分数。
在一个实施例中,使用以下公式计算损失函数:
其中,是近似等价类大小的分量和是近似被抑制记录的数量的分量。在该实施例中,计算关于等价类Dj的分区(partitions)的这些分量依赖于来自计算中的所有处理器的数据。相反,处理逻辑计算等价类大小和抑制的近似值。下面给出了等价类大小和抑制的近似的进一步改进。
在一个实施例中,处理逻辑计算作为等价类大小的上限的近似。在该实施例中,可以在不需要来自其他处理器的数据的情况下进行该计算。在一个实施例中,设n为记录的数量。设等价类的集合被划分为大小大于或等于k的等价类和大小小于k的等价类。如果这些集合中的记录的数量分别为n≥以及n<。让maxeq表示最大等价类大小。然后
其中,E≥和E>分别是大等价类和小等价类的集合。由于|E|=|E≥|+|E>|,它们为等价类的总数提供了宽松的界限。此外,
另外,n≥+n<,关于|E|的下限可以改写为
并重新排列项,
(n-n<)×(k-1)+n<×maxeq≤|E|×maxeq×(k-1)
对n<求解
n<×(maxeq-k+1)≤|E|×maxeq×(k-1)-n×(k-1)=(|E|×maxeq-n)×(k-1)
因此,n<由等价类的数量的线性函数界定。注意,(|E|x maxeq-n)>0以及maxeq-k+1>0。
如上所述,|E|=|E≥|+|E>|提供了等价类总数的宽松界限。在一个实施例中,该宽松界限可以代替损失函数的等价类大小分量。对于抑制近似,n<可以用下式近似:
在步骤508,对于每个泛化c,处理逻辑将信息损失函数分数的lower分量与best进行比较。如果lower>best,则处理逻辑将c添加到集合P并从C中减去c。在步骤510,处理逻辑初始化临时泛化集。此外,处理逻辑对泛化集C中的每个泛化执行第一内部处理循环(块512-520)以及对当前泛化c中的每个子泛化(child)执行第二内部处理循环(块514-520)。在步骤516,处理逻辑将泛化c添加到临时泛化集C0。在步骤518,对于子泛化的每个父泛化,如果父泛化在集合P中,则处理逻辑将子泛化添加到集合P,从临时泛化集C0中移除该子泛化,并跳出循环。第一内部处理循环和第二内部处理循环在步骤520结束。在步骤522,处理逻辑将C设置为临时泛化集。外部处理循环在步骤524结束。在步骤526,处理逻辑返回候选泛化c。
在一个实施例中,处理逻辑可以计算所有泛化的候选泛化,或者多个虚拟仓库(或执行节点)可以计算泛化的集合的候选泛化。在该实施例中,虚拟仓库(或执行节点)将泛化拆分为泛化的子集,并将这些泛化子集发送到不同的虚拟仓库(或执行节点)。这些虚拟仓库(或执行节点)中的每一个都计算该集合的候选泛化,并将该候选泛化发回初始虚拟仓库(或执行节点)。
图6是用于从多个虚拟仓库(或执行节点)上的多个泛化中确定候选泛化的方法600的一个实施例的流程图。通常,方法600可以通过处理逻辑执行,该处理逻辑可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或它们的组合。例如,处理逻辑可以实现为查询处理130。方法600可以开始于步骤602,在步骤602中处理逻辑接收泛化。
在步骤604,处理逻辑识别可用于计算候选泛化的虚拟仓库(或执行节点)组。在步骤606,基于可用虚拟仓库(或执行节点)的数量,处理逻辑将泛化拆分为多个子集。虽然在一个实施例中,泛化子集具有相同的大小,但在替代实施例中,泛化子集具有不同的大小。在一个实施例中,处理逻辑至少基于目标虚拟仓库(或执行节点)的处理能力将泛化拆分为子集。
在步骤608,处理逻辑向每个可用虚拟仓库(或执行节点)发送泛化子集,其中每个虚拟仓库(或执行节点)计算候选泛化。在一个实施例中,每个虚拟仓库(或执行节点)计算候选泛化,如以上图5中所述。在一个实施例中,处理逻辑从所有处于同一级别的候选泛化的集合开始。例如,在一个实施例中,起点是具有0级的根泛化。处理逻辑进一步将最佳已知值设置为候选泛化的最佳值。由于在单个级别中的泛化之间没有剪枝推论,因此可以立即评估给定级别中的候选泛化。而且,每次评估的结果是对(lower,value)。将找到的最佳解发送到迄今为止找到的最小值,以及通过处理候选者找到的值集。
此外,如果当前处理级别中的泛化效用的下限超过最佳值,则会对它们剪枝。当前级别中剩余的(例如,未剪枝的)泛化的子泛化将从下一级别的空候选集开始处理:(a)如果子泛化有已经被剪枝的父泛化,则该子泛化被剪枝;(b)否则,该子泛化被添加到下一级别的候选。如果下一级别的候选的集合不是空的,则增加级别,并向上行进,其中立即进行给定级别中的泛化的评估。
在步骤610,处理逻辑从每个虚拟仓库(或执行节点)接收候选泛化。在步骤612,处理逻辑选择总体泛化。在一个实施例中,处理逻辑使用针对这些泛化的信息损失评分函数来计算总体泛化。
在一个实施例中,不同类型的方案可用于计算用于确定数据集的匿名化视图的所选泛化。在一个实施例中,处理逻辑可以使用表征状态转移(REST)来计算匿名化视图。例如,在一个实施例中,处理逻辑将此REST功能包裹在容器化服务(containerized service)中。在另一实施例中,使用可信用户定义函数(UDF)计算匿名化视图,其中UDF被信任以从所选数据源拉取数据。在另一个实施例中,除了用于定义处理程序类和方法的Java jar之外,处理逻辑还可以针对已经暂存(staged)的数据运行UDF。虽然在该示例中使用Java,但在替代实施例中,可以使用不同的编程语言(例如,C、C++、C#和/或任何其他类型的编程语言)。
图7A-C是对输入数据的匿名化操作的实施例的示意性块图。在图7A中,系统700包括耦合到不同接口的k-匿名化引擎704,接口包括:数据源接口714、转换接口706和搜索接口708。在一个实施例中,k-匿名化引擎704计算如以上图4中所描述的数据集的匿名化视图。在一个实施例中,数据源接口714是用于k-匿名化引擎704访问数据源702的接口。在一个实施例中,数据源702是用于馈送k-匿名化引擎704的一个或更多个数据源。在该实施例中,数据源可以是一个或更多个柱状数据表或另一类型的数据源(数据帧(dataframes)或另一类型的数据源)。此外,匿名化操作可以一次应用于一个表,即使该表可能是联接多个表的结果。匿名化操作可以对单个数据表和多个层次结构表进行操作。此外,转换接口706是用于k-匿名化引擎704访问转换检查器710的接口。在一个实施例中,转换检查器710转换并检查转换后的数据。在该实施例中,转换检查器710将数据转换为以上图4中所述的用于半标识符列数据的整数数据。在另一实施例中,搜索接口708是用于k-匿名化引擎704使用来搜索泛化并评估用于剪枝的泛化的接口。在一个实施例中,可以存在一个或更多个搜索设施,例如搜索器712A-B。在该实施例中,根据k的值,最优解可以在格中较高。在这种情况下,最好使用自顶向下的方法,或者尝试在格中识别适当的级别来开始搜索的方法。此外,自下而上的方法可以在损失计算期间使用剪枝。其他方法也可以利用k-匿名的单调性来剪枝。
如上所述,可以有不同的方法来打包该设施供用户使用。在一个实施例中,数据视图匿名化可以将此REST功能包裹(wrap)在容器化服务中。在图7B中,系统730包括连接到数据的引擎732,其包括耦合到如以上图7A中所描述的接口——数据源接口714、转换接口706和搜索接口708——的k-匿名化引擎704。此外,如图7A中描述的,数据源702、转换检查器710和搜索器712A-B耦合到相应接口。在一个实施例中,连接到数据的引擎732被打包为REST服务734。在该实施例中,服务包括对存储在数据源702中的数据的URL引用,其中用于优化的数据被从由URL指定的数据源702中拉取。该服务还包括用于匿名化的参数。此外,REST服务734还可以被包裹在Docker容器736中,在Docker容器中服务以服务端口暴露。该Docker容器736也可以被包裹在Kubernetes舱(pod)738中。
除了将匿名化服务包裹在REST服务中之外,还可以将匿名化打包为UDF。在图7C中,连接到数据的引擎752包括连接到数据的引擎732,其包括耦合到图7A中所述的接口——数据源接口714、转换接口706和搜索接口708——k-匿名化引擎704。此外,如图7A中描述的,数据源702、转换检查器710和搜索器712A-B耦合到相应接口。此外,Java创建UDF756与JavaScript存储过程754一起运行,以创建对数据源702中的数据调用762的UDF。数据760从存储的数据源758暂存到数据源702中。通过该设置,k-匿名化引擎704可以对数据进行操作以产生如上面图4所述的匿名化视图。
图8是教育数据层次结构800的一个实施例的示意性块图。在一个实施例中,数据层次结构是将较特定的数据与较不特定的数据相关联的层次结构。在图8中,数据层次结构800是将特定教育水平与较一般的教育水平相关联的教育数据层次结构。数据层次结构800包括4层层次结构,从具有空(NULL)值的根节点802开始。下一层包括表示教育组的广泛级别的节点804A-C,例如高等教育804A、中等教育804B和初等教育804C。节点804A-C中的每一个是根节点802的子节点。此外,节点804A-C中的每一个包括表示较特定教育类型的多个子节点。例如,在一个实施例中,高等教育节点804A具有关于研究生806A、本科生806B和职业教育806C的子节点。在该示例中,研究生806A、本科生806B和职业教育806C分别表示更特定类型的高等教育。此外,节点806A-C中的每一个包括进一步的子节点。例如,在一个实施例中,研究生节点806A具有子节点硕士节点808A和博士节点808B,其每一个表示更特定类型的研究生教育。
此外,本科生节点806B包括学士节点808C和某种专科(college)808D,它们各自表示更特定类型的本科学院806B。此外,职业教育节点806C包括以下节点:职业学校节点808E、数字媒体副学士节点808F和职业副学士节点808G,它们都是职业教育806C的细分。
此外,中等教育节点804B具有子节点高中806D,其表示更特定类型的中等教育。高中节点具有五个另外的子节点:7-8年级节点808H、9-10年级节点808I、11年级节点808J、12年级节点808K和毕业生节点808L,它们各自代表更特定类型的高中教育806D。此外,初等教育节点804C具有关于小学806E的子节点,小学806E表示更特定类型的初等教育。小学节点806E节点具有三个子节点:学龄前808M、1-4年级节点808N和5-6年级节点808O,它们各自表示更特定类型的初等教育806E。
在一个实施例中,数据层次结构800可用于匿名与教育水平相关的数据。例如,在一个实施例中,可以通过将特定的专科级别的教育级别替换为“高等教育”来匿名化包括专科级别教育的列。在另一实施例中,可以使用全域泛化。在该实施例中,专科级别的教育可以被高等教育所取代。在这种情况下,中等教育和初等教育被用来取代他们的子值。
图10是根据一些实施例的示例计算设备1000的块图,该示例计算设备1000可以执行本文描述的一个或更多个操作。计算设备1000可以连接到LAN、内联网、外联网和/或互联网中的其他计算设备。计算设备可以在客户端-服务器网络环境中以服务器机器的能力操作,或者在对等网络环境中以客户端的能力操作。该计算设备可以由个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或网桥或能够(顺序地或以其他方式)执行指定由该机器采取的动作的指令集的任何机器提供。此外,虽然仅示出了单个计算设备,但术语“计算设备”还应被理解为包括单独地或联合地执行指令集(或多个指令集)以执行本文讨论的方法的计算设备的任何集合。
示例计算设备1000可以包括处理设备(例如,通用处理器、PLD等)1002、主存储器1004(例如,同步动态随机存取存储器(DRAM)、只读存储器(ROM))、静态存储器1006(例如,闪存和数据存储设备),它们可以经由总线1030彼此通信。
处理设备1002可以由诸如微处理器、中央处理单元等的一个或更多个通用处理设备提供。在说明性示例中,处理设备1002可包括复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器或实现指令集组合的处理器。处理设备1002还可以包括一个或更多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。根据本公开的一个或更多个方面,处理设备1002可以被配置为执行本文描述的操作,以执行本文讨论的操作和步骤。在一个实施例中,处理设备1002表示图1的云计算平台110。在另一实施例中,处理设备1002表示客户端设备(例如,客户端设备101-104)的处理设备。
计算设备1000还可以包括可与网络1020通信的网络接口设备1008。计算设备1000还可以包括视频显示单元1010(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)和声学信号生成设备1016(例如,扬声器)。在一个实施例中,视频显示单元1010、字母数字输入设备1012和光标控制设备1014可以组合成单个组件或设备(例如,LCD触摸屏)。
根据本公开的一个或更多个方面,数据存储设备1018可以包括计算机可读存储介质1028,在其上可以存储一个或更多个指令集,例如用于执行本文描述的操作的指令。在计算设备1000执行匿名化指令1026期间,匿名化指令1026还可以完全或至少部分驻留在主存储器1004和/或处理设备1002内,主存储器1004和处理设备1002也构成计算机可读介质。指令还可以经由网络接口设备1008通过网络1020发送或接收。
尽管计算机可读存储介质1028在示例性示例中被示为是单个介质,但是术语“计算机可读存储介质”应该被认为包括存储一个或更多个指令集的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应该被认为包括能够存储、编码或承载用于由机器执行并且使机器执行本文所述的方法的指令集的任何介质。因此,术语“计算机可读存储介质”应被认为包括但不限于固态存储器、光媒体和磁媒体。
除非另有特别说明,诸如“接收”、“生成”、“选择”、“确定”、“匿名化”、“计算”、“剪枝”、“分组”、“抑制”、“转换”、“替换”等术语是指由计算设备执行或实现的动作和过程,计算设备操作数据并将表示为计算设备的寄存器和存储器内的物理(电子)量的数据转换为类似地表示为计算设备存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。此外,如本文使用的术语“第一”、“第二”、“第三”、“第四”等是指在不同元素之间区分的标签,并且可能不一定具有根据其数字指定的顺序含义。
本文所描述的示例还可涉及用于执行本文中描述的操作的装置。该装置可以出于需要的目的而被专门构造,或者其可以包括通过存储在计算设备中的计算机程序选择性地编程的通用计算设备。这种计算机程序可以存储在计算机可读的非暂时性存储介质中。
本文描述的方法和说明性示例不是固有地与任何特定计算机或其他装置相关。各种通用系统可以与根据本文描述的教导使用,或者其可证明构建更专用的装置以执行所需的方法步骤是方便的。用于这些系统中的各种系统所需的结构将表现为如上描述中所阐述。
上述描述旨在说明性的,而不是限制性的。尽管已经参考特定说明性示例描述了本公开,但将认识到本公开不限于所描述的示例。因此,本公开的范围应参考所附权利要求连同这些权利要求有权要求的等效物的整个范围来确定。
如本文使用的,单数形式“一(a)”、“一(an)”和“所述(the)”意图也包括复数形式,除非上下文另有清楚地指示。还将理解的是,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”和/或“包括(including)”在本文中使用时,列举所陈述的特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或添加一个或更多个其它特征、整数、步骤、操作、元素、组件和/或它们的组。因此,本文使用的术语仅出于描述特定实施例的目的,而不旨在限制。
还应当注意,在一些替代实现方式中,提到的这些功能/动作可以不以图中提到的顺序出现。例如,连续地显示的两个图事实上可以基本上同时执行,或者有时可以以相反的顺序执行,这取决于所涉及的功能/动作。
尽管以特定顺序描述了方法操作,但应当理解,可以在所描述的操作之间执行其他操作,可以调整所描述的操作以使它们发生在稍微不同的时间,或者可以在允许以与处理相关联的各种间隔发生处理操作的系统中分布所描述的操作。
各种单元、电路或其他组件可以被描述或声称为“配置为”或“可配置为”执行一个或更多个任务。在这样的上下文中,短语“配置为”或“可配置为”通过指示单元/电路/组件包括在操作期间执行一个或更多个任务的结构(例如,电路)而被用来表示结构。因此,即使在指定的单元/电路/组件当前未操作(例如,未接通)时,单元/电路/组件也可以称为被配置为执行任务,或者可被配置为执行任务。与“配置为”或“可配置为”语言一起使用的单元/电路/组件包括硬件,例如电路、存储可执行以实现操作的程序指令的存储器等。对于单元/电路/组件,表述单元/电路/组件被“配置为”执行一个或更多个任务或“可配置为”执行一个或更多个任务是为了明确表示无意援引35U.S.C.112的第六段。此外,“配置为”或“可配置为”可以包括由以能够执行所讨论的任务的方式操作的软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵的通用结构(例如,通用电路)。“被配置为”还可以包括调整制造工艺(例如,半导体制造设施)以制造适于实现或执行一个或更多个任务的设备(例如,集成电路)。“可配置为”明确地意在不适用于空白介质、未编程处理器或未编程通用计算机、或未编程可编程逻辑器件、可编程门阵列或其他未编程器件,除非伴随赋予未编程器件配置为执行所公开功能的能力的编程介质。
可以利用一种或更多种计算机可用或计算机可读介质的任意组合。例如,计算机可读介质可包括在下列各项中的一项或更多项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦除可编程只读存储器(EPROM或闪速存储器)设备、便携式光盘只读存储器(CDROM)、光学储存设备和磁储存设备。可以以一种或更多种编程语言的任何组合来编写用于执行本公开的操作的计算机程序代码。可以将这样的代码从源代码编译为适合于将在其上执行代码的设备或计算机的计算机可读汇编语言或机器代码。
实施例也可以在云计算环境中实现。在本说明书和所附权利要求中,“云计算”可以被定义为用于实现对可配置计算资源(例如,网络、服务器、存储,应用和服务)的共享池进行普遍、方便、按需的网络访问的模型,该模型可以(包括经由虚拟化)快速提供,并以最小的管理工作量或服务提供者交互来发布,以及然后进行相应的扩展。云模型可以由各种特征(例如,按需自助服务、广泛的网络访问、资源池、快速弹性和可衡量的服务)、服务模型(例如,软件即服务(“SaaS”),平台即服务(“PaaS”)和基础设施即服务(“IaaS”))以及部署模型(例如,私有云、社区云、公共云和混合云)组成。附图中的流程图和块图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。就这点而言,在流程图或块图中的每个块可代表模块、代码段、或代码的部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还要注意的是,框图和/或流程图中的每个块以及在框图和/或流程图中的块的组合可由执行指定功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合实现。这些计算机程序指令还可存储在计算机可读介质中,计算机程序指令可引导计算机或其他可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生制造的物品,包括实现流程图和/或块图的一个或更多个块中所指定的功能/动作的指令装置。
为了解释的目的,已经参考特定实施例描述了前述描述。然而,上面的说明性讨论并没有被规定为无遗漏的或将本发明限制到所公开的精确形式。鉴于上面的教导,许多修改和变形是可能的。实施例被选择和描述是为了最好地解释实施例的原理及其实际应用,从而使本领域中的技术人员能够以可适合于所设想的特定用途最好地利用实施例和各种修改。因此,当前实施例可以被认为是说明性的而不是限制性的,并且本发明不限于本文给出的细节,但是可以在所附权利要求的范围和等价物内进行修改。
Claims (30)
1.一种系统,包括:
数据源;和
一个或更多个处理器,其用于:
从存储在所述数据源中的数据集接收数据,其中,所述数据被组织在多个列中;
生成所述数据的多个泛化;
使用基于至少泛化信息损失的信息损失评分函数从所述多个泛化中选择泛化;和
根据所选择的泛化,生成所述数据集的匿名化视图。
2.根据权利要求1所述的系统,其中,所述多个列中的每一列具有对应的隐私类别。
3.根据权利要求2所述的系统,其中,所述隐私类别包括标识符类别。
4.根据权利要求2所述的系统,其中,所述隐私类别包括准标识符类别。
5.根据权利要求2所述的系统,其中,所述隐私类别包括敏感类别。
6.根据权利要求1所述的系统,其中,所述多个泛化的生成基于关于所述多个列中的一个或更多个列的至少一组数据层次结构。
7.根据权利要求6所述的系统,其中,数据层次结构是数据值的最终形成单个值的连续分组,所述数据层次结构的属性是所有值被连续分组相同次数。
8.根据权利要求1所述的系统,其中,所述一个或更多个处理器通过将所述多个泛化分组为等价类的集合来选择所述泛化。
9.根据权利要求8所述的系统,其中,所述一个或更多个处理器通过剪枝所述等价类的集合来选择所述泛化。
10.根据权利要求9所述的系统,其中,所述剪枝基于多个泛化的单调性。
11.根据权利要求1所述的系统,其中,所述一个或更多个处理器进一步通过抑制具有标识符隐私类别的列中的数据来构建所述匿名化视图。
12.根据权利要求1所述的系统,其中,所述匿名化视图是关于特定k值的k-匿名的。
13.根据权利要求1所述的系统,其中,所述一个或更多个处理器将所述数据集中的数据转换为整数数据。
14.根据权利要求13所述的系统,其中,所述一个或更多个处理器通过将要转换的数据的原始值替换为所述数据的值的集合的索引来转换所述数据。
15.根据权利要求13所述的系统,其中,要转换的所述数据是对应于具有准标识符隐私类别的列的数据。
16.一种非暂时性机器可读介质,其存储指令,所述指令当由计算设备的一个或更多个处理器执行时使所述一个或更多个处理器:
从数据集接收数据,其中,所述数据被组织在多个列中;
生成所述数据的多个泛化;
将所述多个泛化拆分为多个泛化子集;
将所述多个泛化子集发送到多个执行节点;
从所述多个执行节点中的每一个执行节点接收候选泛化;
从所述多个候选泛化中选择泛化;和
根据所选择的泛化生成所述数据集的匿名化视图。
17.根据权利要求16所述的非暂时性机器可读介质,其中,所述多个列中的每一列具有对应的隐私类别。
18.根据权利要求16所述的非暂时性机器可读介质,其中,所述隐私类别包括标识符类别。
19.根据权利要求16所述的非暂时性机器可读介质,其中,所述隐私类别包括准标识符类别。
20.根据权利要求16所述的非暂时性机器可读介质,其中,所述隐私类别包括敏感类别。
21.根据权利要求16所述的非暂时性机器可读介质,其中,所述多个泛化的生成基于关于所述多个列中的一个或更多个列的至少一组数据层次结构。
22.根据权利要求21所述的非暂时性机器可读介质,其中,数据层次结构是数据值的最终形成单个值的连续分组,所述数据层次结构的属性是所有值被连续分组相同次数。
23.根据权利要求16所述的非暂时性机器可读介质,其中,用于选择泛化的指令还使所述一个或更多个处理器:
识别所述多个执行节点。
24.根据权利要求16所述的非暂时性机器可读介质,其中,对所述多个泛化的拆分基于所述多个执行节点的处理能力。
25.根据权利要求16所述的非暂时性机器可读介质,其中,所述多个泛化被拆分成等大小的子集。
26.根据权利要求16所述的非暂时性机器可读介质,其中,用于选择泛化的指令还使所述一个或更多个处理器:
使用针对这些泛化的信息损失评分函数来计算总体泛化。
27.根据权利要求16所述的非暂时性机器可读介质,其中,用于生成所述数据集的匿名化视图的指令还使所述一个或更多个处理器:
抑制具有标识符隐私类别的列中的数据。
28.根据权利要求16所述的非暂时性机器可读介质,其中,所述匿名化视图是关于特定k值的k-匿名的。
29.根据权利要求16所述的非暂时性机器可读介质,其中,所述指令还使所述一个或更多个处理器:
将所述数据集中的数据转换为整数数据。
30.根据权利要求29所述的非暂时性机器可读介质,其中,用于数据转换的指令使所述一个或更多个处理器:
通过将要转换的所述数据的原始值替换为关于所述数据的值的集合的索引来转换所述数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163180047P | 2021-04-26 | 2021-04-26 | |
US63/180,047 | 2021-04-26 | ||
US17/352,217 US11501021B1 (en) | 2021-04-26 | 2021-06-18 | Horizontally-scalable data de-identification |
US17/352,217 | 2021-06-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115248936A true CN115248936A (zh) | 2022-10-28 |
Family
ID=83693190
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210435026.3A Pending CN115248936A (zh) | 2021-04-26 | 2022-04-24 | 水平可扩展数据去识别 |
CN202210450970.6A Pending CN115248937A (zh) | 2021-04-26 | 2022-04-26 | 水平可扩展数据去识别 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210450970.6A Pending CN115248937A (zh) | 2021-04-26 | 2022-04-26 | 水平可扩展数据去识别 |
Country Status (2)
Country | Link |
---|---|
US (3) | US11501021B1 (zh) |
CN (2) | CN115248936A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11501021B1 (en) * | 2021-04-26 | 2022-11-15 | Snowflake Inc. | Horizontally-scalable data de-identification |
US11816582B2 (en) * | 2021-10-21 | 2023-11-14 | Snowflake Inc. | Heuristic search for k-anonymization |
EP4293456A1 (en) * | 2022-06-13 | 2023-12-20 | Abb Schweiz Ag | Method and system for anonymization and negotiation for predictive maintenance |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2690788C (en) * | 2009-06-25 | 2018-04-24 | University Of Ottawa | System and method for optimizing the de-identification of datasets |
CA2734545A1 (en) | 2010-03-19 | 2011-09-19 | University Of Ottawa | A system and method for evaluating marketer re-identification risk |
JP5858292B2 (ja) | 2010-11-09 | 2016-02-10 | 日本電気株式会社 | 匿名化装置及び匿名化方法 |
US20130332194A1 (en) * | 2012-06-07 | 2013-12-12 | Iquartic | Methods and systems for adaptive ehr data integration, query, analysis, reporting, and crowdsourced ehr application development |
WO2018004236A1 (ko) * | 2016-06-30 | 2018-01-04 | 주식회사 파수닷컴 | 개인정보의 비식별화 방법 및 장치 |
CN109983467B (zh) * | 2016-11-28 | 2020-09-29 | 西门子股份公司 | 用于匿名化数据集的系统和方法 |
US10831927B2 (en) * | 2017-11-22 | 2020-11-10 | International Business Machines Corporation | Noise propagation-based data anonymization |
GB2590046A (en) * | 2019-04-30 | 2021-06-23 | Sensyne Health Group Ltd | Data protection |
JP7377664B2 (ja) * | 2019-10-01 | 2023-11-10 | 株式会社日立製作所 | データベース管理システム、および、データベース処理方法 |
CN111695153A (zh) * | 2020-06-08 | 2020-09-22 | 中南大学 | 一种多叉树森林k-匿名方法、系统、设备和可读存储介质 |
US11501021B1 (en) * | 2021-04-26 | 2022-11-15 | Snowflake Inc. | Horizontally-scalable data de-identification |
-
2021
- 2021-06-18 US US17/352,217 patent/US11501021B1/en active Active
- 2021-06-18 US US17/352,218 patent/US11755778B2/en active Active
-
2022
- 2022-04-24 CN CN202210435026.3A patent/CN115248936A/zh active Pending
- 2022-04-26 CN CN202210450970.6A patent/CN115248937A/zh active Pending
- 2022-11-03 US US17/980,371 patent/US20230050290A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220343019A1 (en) | 2022-10-27 |
US20230050290A1 (en) | 2023-02-16 |
US20220343012A1 (en) | 2022-10-27 |
US11501021B1 (en) | 2022-11-15 |
US11755778B2 (en) | 2023-09-12 |
CN115248937A (zh) | 2022-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11567970B2 (en) | Semantic indexing engine | |
US10114859B2 (en) | Extensions of structured query language for database-native support of graph data | |
CN115248936A (zh) | 水平可扩展数据去识别 | |
US10152607B2 (en) | Secure access to hierarchical documents in a sorted, distributed key/value data store | |
JP6964384B2 (ja) | 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム | |
US20130311454A1 (en) | Data source analytics | |
US20150006509A1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US11630853B2 (en) | Metadata classification | |
US20230161765A1 (en) | System and method for disjunctive joins using a lookup table | |
Lee et al. | Table2graph: A scalable graph construction from relational tables using map-reduce | |
Glake et al. | Towards Polyglot Data Stores--Overview and Open Research Questions | |
Haque et al. | Distributed RDF triple store using hbase and hive | |
Sindhu et al. | A framework to handle data heterogeneity contextual to medical big data | |
Brucato et al. | A scalable execution engine for package queries | |
US11816582B2 (en) | Heuristic search for k-anonymization | |
Sindhu et al. | Handling Complex Heterogeneous Healthcare Big Data | |
Kalna et al. | MDA transformation process of a PIM logical decision-making from NoSQL database to big data NoSQL PSM | |
KR101460950B1 (ko) | 비정규 테이블 표기법을 기반으로 한 NoSQL 질의 방법 및 장치 | |
Gorti et al. | A flexible data model for multi-tenant databases for software as a service | |
US11822582B2 (en) | Metadata clustering | |
US11372863B2 (en) | Ranking filter operation for calculation scenarios | |
US20220309112A1 (en) | Building a base index for search | |
DOURHRI et al. | Methodology for modeling a column-oriented database with Cassandra | |
Ramanujam | Towards an integrated semantic web: Interoperability between data models |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: U.S.A. Address after: Montana Applicant after: Snowflake Co. Address before: Montana Applicant before: SNOWFLAKE COMPUTING Inc. Country or region before: U.S.A. |