批量隐匿查询
隐匿查询,也称隐私信息检索,是指查询方隐藏被查询对象关键词或客户id信息,数据服务方提供匹配的查询结果却无法获知具体对应哪个查询对象。数据不出门且能计算,杜绝数据缓存的可能性。
例如查询方希望查询身份证id为“张三”的人信贷公式数据,发起了一个类似于SELECT salary * 16 + age*10 FROM t WHERE id = ‘张三’的单数据集查询。t表存储在数据提供方计算节点中。查询方不希望有人知道自己查询的是“张三”这个人,也不希望知道查出的这条信贷公式结果具体值。
具体操作步骤如下:
- 空间管理员登录TICS控制台。
- 作业发起方进入自己所属的计算节点,进入作业管理->隐匿查询->批量隐匿查询作业,单击创建。
- 编写完作业之后。单击保存,提交审批。
图1 编写批量隐匿查询作业
- 隐匿查询过滤条件出现多个字段时,需要使用.pir或.PIR标识隐匿查询字段。
图2 pir或.PIR标识隐匿查询字段
- 单击编辑器右侧的“作业配置项”,进行作业配置。
重试:开关开启后,执行失败的作业会根据配置定时进行重试,仅对开启后的执行作业生效。开关关闭后,关闭前已触发重试的作业不受影响,仅对关闭后的执行作业生效。
执行参数:用于作业调优。当前可用执行参数介绍如下:
- job.ins.memory.size:本次作业在各执行节点分配的内存大小,默认200MB。如果作业中间结果过大,需要调高该参数。
- max.result.file.size:最大存储文件大小,默认10GB。如果最终结果存储超过这个大小,则会执行失败,需要调大该值。
- tics.task.concurrency:在TICS所属计算节点执行计算时的并行度,默认值为1。当需要提升作业性能时,可以修改该参数,参考配置为CCE集群中规格时建议配置范围为4~8,大规格部署时建议配置范围为8~16,具体根据实际需求和情况调整。
- user.task.concurrency:在用户所属计算节点计算时的并行度,默认值为1。当需要提升作业性能时,可以修改该参数,参考配置为CCE集群中规格时建议配置范围为4~8,大规格部署时建议配置范围为8~16,具体根据实际需求和情况调整。
- apsi.num.threads:数据提供方处理查询并发线程数,默认1,取值正整数,并发线程数越大,性能越优。
- id.byte.length:查询id序列化字节长度,默认20,需要根据实际情况调整。
- query.fields.byte.length:查询字段序列化字节长度,默认20,需要根据实际情况调整。
图3 作业配置
- 合作方进入自己所属的计算节点,进入审批管理页面,单击审批详情,查看查询方的sql请求的id为“????”,无法获取查询具体查询数据。
图4 审批详情
- 仅限单表查询,不支持多表查询。
- Sql中必须包含where条件。不支持join操作,即使是单方内的join操作。
- where条件后必须包含隐匿查询字段,隐匿查询字段只能是非敏感唯一标识,且字段数值类型只能是字符串或整数。
- where条件后出现多个字段时必须使用.pir或.PIR标识隐匿查询字段。
- where条件后不支持or语句,多个条件必须使用and进行拼接。
- 隐匿查询字段只能用于where id='xxx'或where id in ('xxx' 'xxx')或where id in (select xx from table)语句。
- 隐匿查询条件为in+子查询时,子查询中数据集只能是发起方数据集。