本文是针对Jim Gray Sigmod94年的论文《Quickly GeneratingBillion-Record Synthetic Databases》第五章节的翻译和一点见解。其中黑色字体为论文的翻译,黄色字体为我的一点理解。
在生成虚拟数据时经常需要具有下面这些特性的数字序列:
稠密的(dense):在数字序列中,[0, n]中的所有数字都必须出现;
唯一的(unique):在数字序列中,每个数字只能出现一次;
随机的(random):数据序列中的数字应该是随机出现的(可以是伪随机的)。
有了这些特性就可以让数据集上的选择操作和连接操作返回集可预测,例如每个用户应该有且仅有一个账户。已经有一些方法可以生成满足上述要求的dense-unique-random数字序列。Wisconsin Benchmark(威斯康星测试基准)最原始的生成器使用一个长度为N、初始值为0的bitmap,然后使用系统随机数不断去挑选下一个未使用的数字(比如生成一个随机数5,那么先判断bitmap[5]是否为1。如果不为1就返回5,并且设