【发布时间】:2013-11-25 19:24:55
【问题描述】:
我有一个场景,我必须混淆数据库中的数据(= 加扰,出于测试目的,所以看不到真实数据,不需要解扰/解混淆它)。有几个表引用了 address_table。我不能混淆address_table,所以我想我只是用随机的其他address_table ID 更改这些表中的引用。 address_table 包含 6M+ 记录。因此,我将创建一个包含所有地址 ID 的临时表,然后在需要时调用某个函数以从那里随机获取一个。所以我可能会生成一个随机值并将该行取为:
Select * From (
Select Id, Rownum Rn From myTempTable )
WHERE RN = x;
其中 x 是 dbms_random 生成的一些随机值。现在,尽管这是我所需要的,但它的性能并没有达到我的预期。 我尝试过的另一件事是调用 sample() 函数,这(至少在小桌子上)执行得更好,但还不够好。
我知道有几个线程像this或this on mySql这样的问题,但他们没有直接回答性能方面的问题。
另外,我不限于使用 pl/sql。我对pl/sql知之甚少,性能如何?我的意思是,这只是数据库服务器处理队列中的另一个进程,也许我可以在客户端使用 python 之类的东西来获得更好的处理性能(我的意思是生成更新脚本,填充随机数等),即使考虑到网络延迟等?有人有这方面的经验吗?
【问题讨论】:
-
出于兴趣,您打算如何对数据进行去混淆处理(假设这是一项要求)?
-
“混淆”是什么意思?选择随机记录如何解决这个问题?
-
我不是,更像是数据的乱码。我必须创建一个测试数据库进行测试,所以无法看到真实数据。
标签: python sql oracle random obfuscation