通过测试可以发现ycsb进行评测数据库工作负载的时候insert生成的key值是通过Fowler_Noll_Vo_hash之后得到18或者是19长度的字符串然后在前面加上"user"和填充位之后得到22或者23固定长度。这里主要是coreworkload中的buildKeyName(keynum) 方法实现的(这里的keynum是按照顺序递增的,value是keynum进行hash编码之后得到的值,加上“user”之后就会变成22位或者23位)
pre keynum:994 value:633995401461691778 value length:18
pre keynum:995 value:6858042526771971499 value length:19
pre keynum:996 value:4152828024211893584 value length:19
如果我想变成16位固定长度的key就需要更改hash算法,hash算法主要是调用core目录下Utils文件中hash,因此我在util文件中添加有关md5 hash算法,可以通过调用直接生成以下三种形式字符串:16位纯数字、数字和字母组合还有32位数字和字母组合。
import java.security.MessageDigest;
//生成16位纯数字的字符串
public static String getMD5(byte[] source) {
String s = null;
char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(source);
byte[] tmp = md