摄影网站模板下载,欧米茄官方手表,百度网盘官网下载,wordpress域名改了目标#xff1a;存储百万条数据对象
测试方案一#xff1a;总大小2GB#xff0c;每个数据对象大小约512KB#xff0c;总条数4096条#xff1b;
测试方案一#xff1a;总大小2GB#xff0c;每个数据对象大小约256B#xff0c;总条数8388608条#xff1b; 测试环境存储百万条数据对象
测试方案一总大小2GB每个数据对象大小约512KB总条数4096条
测试方案一总大小2GB每个数据对象大小约256B总条数8388608条 测试环境启动SQLite3
配置CMakeLists.txt打开所有SQLite3相关宏开关
option(WITH_OBJECTSTORE_BACKEND_DB Build with object store backend database (SQLite3) ON)
option(WITH_MIGRATE Build migration tool. Requires SQLit3. ON)
set(DEFAULT_OBJECTSTORE_BACKEND db CACHE STRING Default storage backend for token objects)
修改配置文件原始文件为softhms/src/lib/common/softhsm2.conf.5.in构建完成后位于/etc/softhsm.conf默认file改为db
directories.tokendir softhsmtokendir
objectstore.backend db
objectstore.umask 0077
至此创建的token和各类对象将存储到配置路径下的sqlite3.db中
测试脚本write_objects.sh
#!/bin/bash# SoftHSM 配置
SOFTHSM_MODULE/home/ubuntu/Documents/HSM/20250106/SoftHSMv2_bgk/build/src/lib/libsofthsm2.so # SoftHSM 模块路径
TOKEN_DIR/var/lib/softhsm/tokens/ # Token 目录
SLOT0 # Slot 编号
PIN1234 # Token PIN
LABEL_PREFIXDataObject # 数据对象标签前缀
DATA_SIZE64 # 每个数据对象的大小字节# 检查 SoftHSM 模块是否存在
if [ ! -f $SOFTHSM_MODULE ]; thenecho SoftHSM 模块未找到: $SOFTHSM_MODULEexit 1
fi# 检查 Token 目录是否存在
if [ ! -d $TOKEN_DIR ]; thenecho Token 目录未找到: $TOKEN_DIRexit 1
fi# 初始化计数器
COUNTER1
MAX_COUNT10# 循环写入数据对象
while [ $COUNTER -le $MAX_COUNT ]; do# 生成随机数据DATA$(openssl rand -hex $DATA_SIZE)# 生成唯一的标签和 IDLABEL${LABEL_PREFIX}_${COUNTER}ID$(printf %04x $COUNTER)# 写入数据对象echo $DATA /tmp/data.binSTART_TIME$(date %s%3N)./pkcs11-tool --module $SOFTHSM_MODULE --login --pin $PIN --write-object /tmp/data.bin --type data --id $ID --label $LABELEND_TIME$(date %s%3N)DIFF$((END_TIME - START_TIME))DIFF$((END_TIME - START_TIME))if [ $DIFF -lt 0 ]; thenDIFF$((START_TIME - END_TIME))fiecho Execute Time: ${DIFF} ms# 检查是否成功if [ $? -eq 0 ]; thenecho 已写入数据对象: ID$ID, 标签$LABELelseecho 写入数据对象失败: ID$ID, 标签$LABELexit 1fi# 增加计数器COUNTER$((COUNTER 1))
doneecho 已完成写入 $MAX_COUNT 个数据对象。测试性能数据块大小512KB初始数据库为空连续存入100次性能衰减非常严重
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_1;typedata
Execute Time: 15 ms
已写入数据对象: ID0001, 标签DataObject_1
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_2;typedata
Execute Time: 17 ms
已写入数据对象: ID0002, 标签DataObject_2
Created Data Object:
Data object 2label: DataObject_3application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_3;typedata
Execute Time: 17 ms
已写入数据对象: ID0003, 标签DataObject_3
...
...
...
Created Data Object:
Data object 2label: DataObject_98application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_98;typedata
Execute Time: 224 ms
已写入数据对象: ID0062, 标签DataObject_98
Created Data Object:
Data object 2label: DataObject_99application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_99;typedata
Execute Time: 233 ms
已写入数据对象: ID0063, 标签DataObject_99
Created Data Object:
Data object 2label: DataObject_100application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial426447c3de082349;tokenSQLite3Token;objectDataObject_100;typedata
Execute Time: 216 ms
已写入数据对象: ID0064, 标签DataObject_100
已完成写入 100 个数据对象。测试性能数据块大小256Bytes初始数据库为空连续存入100次性能衰减不明显
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_1;typedata
Execute Time: 15 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x1561dfeb)
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_2;typedata
Execute Time: 14 ms
已写入数据对象: ID0002, 标签DataObject_2
Using slot 0 with a present token (0x1561dfeb)
Created Data Object:
Data object 2label: DataObject_3application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_3;typedata
Execute Time: 14 ms
已写入数据对象: ID0003, 标签DataObject_3
...
...
...
Created Data Object:
Data object 2label: DataObject_998application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_998;typedata
Execute Time: 18 ms
已写入数据对象: ID03e6, 标签DataObject_998
Using slot 0 with a present token (0x1561dfeb)
Created Data Object:
Data object 2label: DataObject_999application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_999;typedata
Execute Time: 15 ms
已写入数据对象: ID03e7, 标签DataObject_999
Using slot 0 with a present token (0x1561dfeb)
Created Data Object:
Data object 2label: DataObject_1000application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialb53fedf69561dfeb;tokenSQLite3Token;objectDataObject_1000;typedata
Execute Time: 16 ms
已写入数据对象: ID03e8, 标签DataObject_1000
已完成写入 1000 个数据对象。
交叉测试构造初始数据库为200MB再存入小数据块测试存储性能
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_1;typedata
Execute Time: 64 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_2;typedata
Execute Time: 82 ms
已写入数据对象: ID0002, 标签DataObject_2
...
...
...
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_19application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_19;typedata
Execute Time: 594 ms
已写入数据对象: ID0013, 标签DataObject_19
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_20application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_20;typedata
Execute Time: 627 ms
已写入数据对象: ID0014, 标签DataObject_20
已完成写入 20 个数据对象。前置条件构造10MB数据块连续存入20次获得196MB的初始数据库大小
ubuntuubuntu-vm:/var/lib/softhsm/tokens/30378c01-c782-32c2-4c32-252ac7b89b8b$ ls -lh
total 196M
-rw------- 1 ubuntu ubuntu 196M 2月 11 17:28 sqlite3.db
ubuntuubuntu-vm:/var/lib/softhsm/tokens/30378c01-c782-32c2-4c32-252ac7b89b8b$
测试性能构造初始数据库为196MB数据块大小256Bytes连续存入3次性能衰减明显
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_1;typedata
Execute Time: 607 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_2;typedata
Execute Time: 607 ms
已写入数据对象: ID0002, 标签DataObject_2
Using slot 0 with a present token (0x47b89b8b)
Created Data Object:
Data object 2label: DataObject_3application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial4c32252ac7b89b8b;tokenSQLite3Token;objectDataObject_3;typedata
Execute Time: 596 ms
已写入数据对象: ID0003, 标签DataObject_3
已完成写入 3 个数据对象。
测试脚本read_objects.sh
#!/bin/bash# SoftHSM 配置
SOFTHSM_MODULE/home/ubuntu/Documents/HSM/20250106/SoftHSMv2_bgk/build/src/lib/libsofthsm2.so # SoftHSM 模块路径
TOKEN_DIR/var/lib/softhsm/tokens/ # Token 目录
SLOT0 # Slot 编号
PIN1234 # Token PIN
LABEL_PREFIXDataObject # 数据对象标签前缀
DATA_SIZE128 # 每个数据对象的大小字节# 检查 SoftHSM 模块是否存在
if [ ! -f $SOFTHSM_MODULE ]; thenecho SoftHSM 模块未找到: $SOFTHSM_MODULEexit 1
fi# 检查 Token 目录是否存在
if [ ! -d $TOKEN_DIR ]; thenecho Token 目录未找到: $TOKEN_DIRexit 1
fi# 初始化计数器
COUNTER1
MAX_COUNT1# 循环写入数据对象
while [ $COUNTER -le $MAX_COUNT ]; do# 生成随机数据# DATA$(openssl rand -hex $DATA_SIZE)# 生成唯一的标签和 ID# LABEL${LABEL_PREFIX}_${COUNTER}# ID$(printf %04x $COUNTER)# 写入数据对象# echo $DATA /tmp/data.binSTART_TIME$(date %s%3N)./pkcs11-tool --module $SOFTHSM_MODULE --login --pin $PIN --read-object --type data --label DataObject_1 /dev/nullEND_TIME$(date %s%3N)DIFF$((END_TIME - START_TIME))DIFF$((END_TIME - START_TIME))if [ $DIFF -lt 0 ]; thenDIFF$((START_TIME - END_TIME))fiecho Execute Time: ${DIFF} ms# 检查是否成功if [ $? -eq 0 ]; thenecho read数据对象: ID$ID, 标签$LABELelseecho read数据对象失败: ID$ID, 标签$LABELexit 1fi# 增加计数器COUNTER$((COUNTER 1))
doneecho 已完成read $MAX_COUNT 个数据对象。读安全数据的性能基于以上已有的196MB的数据库读取小的数据块128-256Bytes
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x47b89b8b)
e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
Execute Time: 1067 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x47b89b8b)
e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
Execute Time: 1064 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x47b89b8b)
e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
Execute Time: 1061 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。结论Softhsm使用数据库SQLite3存储数据对象的性能与sqlite3.db数据库的大小成反比与数据条目数量不敏感不符合数据库插入数据时间相对恒定的规律。
测试环境二使用本地文件存储形式
option(WITH_OBJECTSTORE_BACKEND_DB Build with object store backend database (SQLite3) ON)
option(WITH_MIGRATE Build migration tool. Requires SQLit3. ON)
set(DEFAULT_OBJECTSTORE_BACKEND file CACHE STRING Default storage backend for token objects)
directories.tokendir softhsmtokendir
objectstore.backend file
objectstore.umask 0077
测试性能构造10MB数据块连续存入20次性能衰减不明显
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_SMALL_1;typedata
Execute Time: 47 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_SMALL_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_SMALL_2;typedata
Execute Time: 66 ms
已写入数据对象: ID0002, 标签DataObject_2
...
...
...
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_SMALL_19application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_SMALL_19;typedata
Execute Time: 158 ms
已写入数据对象: ID0013, 标签DataObject_19
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_SMALL_20application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_SMALL_20;typedata
Execute Time: 188 ms
已写入数据对象: ID0014, 标签DataObject_20
已完成写入 20 个数据对象。前置条件构造10MB数据块连续存入20次在token目录下获得20个数据块文件
测试性能数据块大小256Bytes存入3次性能衰减不明显存入时间历史存入时间
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_1;typedata
Execute Time: 145 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_2;typedata
Execute Time: 143 ms
已写入数据对象: ID0002, 标签DataObject_2
Using slot 0 with a present token (0x3bacd06c)
Created Data Object:
Data object 2label: DataObject_3application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serialf0691d4b3bacd06c;tokenFileToken;objectDataObject_3;typedata
Execute Time: 148 ms
已写入数据对象: ID0003, 标签DataObject_3
已完成写入 3 个数据对象。测试性能读一块数据块大小5MBytes读取性能良好
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x2ed47981)
Execute Time: 146 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x2ed47981)
Execute Time: 145 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
测试性能清零token块大小256Bytes连续存入1000次存入性能良好
Using slot 0 with a present token (0x37a524)
Created Data Object:
Data object 2label: DataObject_1application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial70e3fbdc8037a524;tokenFileToken;objectDataObject_1;typedata
Execute Time: 7 ms
已写入数据对象: ID0001, 标签DataObject_1
Using slot 0 with a present token (0x37a524)
Created Data Object:
Data object 2label: DataObject_2application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial70e3fbdc8037a524;tokenFileToken;objectDataObject_2;typedata
Execute Time: 7 ms
已写入数据对象: ID0002, 标签DataObject_2
...
...
...
Using slot 0 with a present token (0x37a524)
Created Data Object:
Data object 2label: DataObject_999application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial70e3fbdc8037a524;tokenFileToken;objectDataObject_999;typedata
Execute Time: 65 ms
已写入数据对象: ID03e7, 标签DataObject_999
Using slot 0 with a present token (0x37a524)
Created Data Object:
Data object 2label: DataObject_1000application: app_id: emptyflags: modifiableuri: pkcs11:modelSoftHSM%20v2;manufacturerSoftHSM%20project;serial70e3fbdc8037a524;tokenFileToken;objectDataObject_1000;typedata
Execute Time: 70 ms
已写入数据对象: ID03e8, 标签DataObject_1000
已完成写入 1000 个数据对象。
测试性能读一块数据大小256Bytes读取性能不好
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x37a524)
Execute Time: 2472 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
Using slot 0 with a present token (0x37a524)
515ed5b327f7468aece868f8db398dc0607ed2d466adfdac066965e0b4bc6ab2210273e0fb4bdc380eb5d0c13d705815f7e5640952ef305b5228adb71077ba5bba576e6cc0b671e14fca598bc9a0bed0f817d66f0d7ee20cb07a2a2b66df7455b473c364621ebc89078563d88661b085bf853f623fefa2ed16088a30ddd1714a
Execute Time: 2440 ms
read数据对象: ID, 标签
已完成read 1 个数据对象。
ubuntuubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
结论Softhsm使用本地文件系统存储数据对象的写入性能较数据库有明显优势读本地数据的性能和数据条目数量相关性强条目数量大时读性能差。