forked from thulab/iot-benchmark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.properties
453 lines (326 loc) · 15.6 KB
/
config.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
########################################################
#################### 测试基本配置 ########################
########################################################
################### 被测数据库配置 #######################
# 被测试的数据库,目前的格式为{name}{-version}{-insert mode}(注意-号)其全部参考值参见README文件,注意版本需要匹配
# DB_SWITCH=IoTDB-130-SESSION_BY_TABLET
# 主机列表,如果有多个主机则使用英文逗号进行分割
# HOST=127.0.0.1
# 端口列表,需要和HOST数量一致,保持一一对应。如果有多个端口则使用英文逗号进行分割。
# PORT=6667
# 所有被测数据库的用户名,如果为多个数据库,则要求保持一致
# USERNAME=root
# 所有被测数据库的密码,如果为多个数据库,则要求保持一致
# PASSWORD=root
# 即将被测试写入的数据库的名称
# DB_NAME=test
# 数据库连接认证Token,InfluxDB 2.0使用
# TOKEN=token
############### 数据库初始化:清理数据 ####################
# 测试启动前是否清理数据
# IS_DELETE_DATA=true
# IS_DELETE_DATA = true 时生效,单位为ms,如果清理数据,则需要等待INIT_WAIT_TIME时间待数据库数据清理完成,当数据库为KairosDB, InfluxDb, OpenTSDB, TimescaleDB时必须
# INIT_WAIT_TIME=1000
################### 数据源:Kafka #######################
# KAFKA_LOCATION=127.0.0.1:9092
# ZOOKEEPER_LOCATION=127.0.0.1:2181
# TOPIC_NAME=test-topic
################## Benchmark配置 #######################
# 总操作次数:具体每种类型操作会按OPERATION_PROPORTION定义的比例划分,例如OPERATION_PROPORTION=1:1:1:1:1:1:1:1:1:1:1
# LOOP=100
# 目前Benchmark支持多种运行模式,支持模式如下
# testWithDefaultPath 常规测试模式,支持多种读和写操作的混合负载
# generateDataMode 生成数据模式,生成Benchmark本身识别的数据
# verificationWriteMode 单数据库正确性写入模式,需要配置 FILE_PATH 以及 DATA_SET
# verificationQueryMode 单数据库正确性查询模式,需要配置 FILE_PATH 以及 DATA_SET
# BENCHMARK_WORK_MODE=testWithDefaultPath
# 对于数据写入或查询,限制最长耗时,设置为0表示无限制,单位为ms
# 对数据写入,最大误差约为WRITE_OPERATION_TIMEOUT_MS
# 对数据查询,最大误差约为READ_OPERATION_TIMEOUT_MS
# 此参数不限制预先注册元数据的耗时
# TEST_MAX_TIME=0
# 是否启动Benchmark统计模块
# USE_MEASUREMENT=true
# Benchmark的统计信息结果的精度,单位为%
# RESULT_PRECISION=0.1
################ Benchmark:集群模式 ####################
# 是否在Benchmark集群模式下运行
# BENCHMARK_CLUSTER=false
# 如果 BENCHMARK_CLUSTER=true, 则为当前Benchmark的编号
# BENCHMARK_INDEX=0
# 在集群模式下:是否所有数据库都可见,如果可见则可以向其他数据库节点发送数据
# IS_ALL_NODES_VISIBLE=false
################ Benchmark:双写模式 ####################
# 双写模式仅支持不同数据库之间进行比较,不支持同一个数据库不同版本进行双写
# IS_DOUBLE_WRITE=false
# 另一个写入的数据库,目前的格式为{name}{-version}{-insert mode}(注意-号)其全部参考值参见README文件
# ANOTHER_DB_SWITCH=IoTDB-012-SESSION_BY_TABLET
# 另一个写入的数据库的主机
# ANOTHER_HOST=127.0.0.1
# 另一个写入的数据库的端口
# ANOTHER_PORT=6667
# 另一个写入的数据库的用户名
# ANOTHER_USERNAME=root
# 另一个写入的数据库的密码,如果为多个数据库,则要求保持一致
# ANOTHER_PASSWORD=root
# 另一个写入的数据库的名称
# ANOTHER_DB_NAME=test
# 另一个数据库认证使用的Token,目前仅限于InfluxDB 2.0使用
# ANOTHER_TOKEN=token
# 是否将两个数据库中的查询结果集进行比较
# IS_COMPARISON=false
# 是否进行两个数据库间点对点数据对比,为真时OPERATION_PROPORTION不生效
# IS_POINT_COMPARISON=false
# 点对点验证的批量验证大小,单位为一个batch的时间跨度
# VERIFICATION_STEP_SIZE=10000
########################################################
################## 数据模式基本配置 #######################
########################################################
############## 数据:设备、传感器、客户端 ##################
# 设备总数
# DEVICE_NUMBER=6000
# 实际写入设备比例,(0, 1]
# REAL_INSERT_RATE=1.0
# 每个设备的传感器总数
# SENSOR_NUMBER=200
# 各个传感器时间戳是否对齐
# IS_SENSOR_TS_ALIGNMENT=true
# 当传感器不对齐时,每个设备的传感器的保留比例,(0, 1]
# TS_ALIGNMENT_RATIO=1.0
# 存储组名称前缀
# GROUP_NAME_PREFIX=g_
# 设备名称前缀
# DEVICE_NAME_PREFIX=d_
# 传感器名称前缀
# SENSOR_NAME_PREFIX=s_
# 标签名数量
# TAG_NUMBER=0
# 标签名前缀
# TAG_KEY_PREFIX=tag_
# 标签值前缀
# TAG_VALUE_PREFIX=value_
# 每个标签值的取值种数,使用逗号分开,设置个数应与标签名数量相等。例如TAG_NUMBER=2,TAG_VALUE_CARDINALITY=50,10,说明第一个标签名可能有50种值,第二个标签名可能有10种值。d_0的中间路径将为value_0.value_0.d_0。该配置不影响总点数。
# TAG_VALUE_CARDINALITY=
# 是否将设备绑定给客户端,如果绑定,则客户端数小于等于设备数,否则可以大于
# IS_CLIENT_BIND=true
# 客户端总数
# CLIENT_NUMBER=20
############## 被测系统为IoTDB时扩展参数 ##################
# 是否使用thrift压缩,需要在iotdb的配置文件iotdb-common.properties中设置rpc_thrift_compression_enable=true
# ENABLE_THRIFT_COMPRESSION=false
# Device分配进入存储组的策略,目前支持
# hash 表示Device通过hash的方式分配到存储组中
# mod 表示Device通过对存储组数取模的方式平均分配到存储组中(相邻编号Device分散在不同存储组中)
# div 表示Device通过对存储组数取商的方式分配到存储组中(相邻编号Device集中在相同存储组中)
# SG_STRATEGY=mod
# 存储组的数量,对IoTDB而言为database的数量
# GROUP_NUMBER=1
# IoTDB核心线程池数量
# IOTDB_SESSION_POOL_SIZE=50
# 是否使用template
# TEMPLATE=false
# template的名称
# TEMPLATE_NAME=BenchmarkTemplate
# 是否使用vector
# VECTOR=true
# 是否使用Debug模式,仅支持iotdb-0.13
# IOTDB_USE_DEBUG=false
# 使用DEBUG查询的比率 [0, 1]
# IOTDB_USE_DEBUG_RATIO=0.01
############## 被测系统使用HTTP请求时扩展参数 ##################
# HTTP_CLIENT_POOL_SIZE=1000
############## 被测系统为MS SQL SERVER时扩展参数 ##############
# 表压缩方式,NONE, ROW, PAGE
# COMPRESSION=NONE
############## 被测系统为TimescaleDB Cluster时扩展参数 ########
# timescaledb的副本数
# TIMESCALEDB_REPLICATION_FACTOR=1
############## 被测系统为TDengine 3时扩展参数 ########
# TDengine 的WAL级别
# TDENGINE_WAL_LEVEL=2
# TDengine 的副本数
# TDENGINE_REPLICA=3
############## 被测系统为Influxdb 2.x时扩展参数 ########
# influxdb ORG名
# INFLUXDB_ORG=company1
################### 操作时间配置 #########################
# 时间戳间隔,即生成的数据两个时间戳之间的固定长度(如果定长生成),非正常速率
# POINT_STEP=5000
# 操作最小执行间隔:若当前操作耗时大于该间隔则马上执行下一个操作,否则等待 (OP_MIN_INTERVAL-实际执行时间) ms
# 如果为0,则参数不生效;如果为-1,则其值和POINT_STEP一致
# OP_MIN_INTERVAL=0
# 是否随机选取操作最小执行间隔:
# 如果为true,每次操作最小执行间隔的取值为 [0,OP_MIN_INTERVAL)
# 如果为false,每次操作最小执行间隔的取值为 OP_MIN_INTERVAL
# OP_MIN_INTERVAL_RANDOM=false
# 时间戳精度,均支持ms,只有IoTDB和InfluxDB支持us
# TIMESTAMP_PRECISION=ms
#################### 数据相关参数 ########################
# 字符串规定长度
# STRING_LENGTH=2
# 浮点数小数位数
# DOUBLE_LENGTH=2
# 插入数据的数据类型的比例,BOOLEAN:INT32:INT64:FLOAT:DOUBLE:TEXT
# INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
################ IoTDB相关元数据参数 #####################
# 压缩方式 UNCOMPRESSED | SNAPPY | LZ4 (仅对IoTDB有效)
# COMPRESSOR=LZ4
# BOOLEAN: PLAIN/RLE
# ENCODING_BOOLEAN=RLE
# INT32: PLAIN/RLE/TS_2DIFF
# ENCODING_INT32=TS_2DIFF
# INT64: PLAIN/RLE/TS_2DIFF
# ENCODING_INT64=TS_2DIFF
# FLOAT: PLAIN/RLE/TS_2DIFF/GORILLA
# ENCODING_FLOAT=GORILLA
# DOUBLE: PLAIN/RLE/TS_2DIFF/GORILLA
# ENCODING_DOUBLE=GORILLA
# TEXT: PLAIN/DICTIONARY
# ENCODING_TEXT=DICTIONARY
################ 真实数据集:测试数据 #####################
# 如下两个参数,当且仅当BENCHMARK_MODE = verificationWriteMode 和 verificationQueryMode 时生效
# 数据文件地址
# FILE_PATH=data/test
# 每个数据文件包含的Batch个数
# BIG_BATCH_SIZE=100
############### 生成数据集:生成数据规律 ###################
# 线性
# LINE_RATIO=1
# 傅里叶函数
# SIN_RATIO=1
# 方波
# SQUARE_RATIO=1
# 随机数
# RANDOM_RATIO=1
# 常数
# CONSTANT_RATIO=1
# 数据生成随机数种子
# DATA_SEED=666
########################################################
#################### 操作基本配置 ########################
########################################################
################### 操作信息整体配置 #####################
# 各操作的比例,按照顺序为 写入:Q1:Q2:Q3:Q4:Q5:Q6:Q7:Q8:Q9:Q10, 请注意使用英文冒号。比例中的每一项是整数。
# Qi表示的查询如下:
# Q1 精确点查询 select v1... from data where time = ? and device in ?
# Q2 范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ?
# Q3 带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ?
# Q4 带时间过滤的聚合查询 select func(v1)... from data where device in ? and time > ? and time < ?
# Q5 带值过滤的聚合查询 select func(v1)... from data where device in ? and value > ?
# Q6 带值过滤和时间过滤的聚合查询 select func(v1)... from data where device in ? and value > ? and time > ? and time < ?
# Q7 分组聚合查询(GROUP BY)(暂时只能生成有一个时间区间的语句)
# Q8 最近点查询 select time, v1... where device = ? and time = max(time)
# Q9 倒序范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ? order by time desc
# Q10 倒序带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ? order by time desc
# Q11 分组聚合查询,倒序;目前仅支持iotdb、tdengine-3.0、influxdb v1
# OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0:0
# 最长等待写时间,单位毫秒,即如果整个写操作在指定时间内没有返回,则终止此操作
# WRITE_OPERATION_TIMEOUT_MS=120000
# 最长等待读时间,单位毫秒,即如果整个读操作在指定时间内没有返回,则终止此操作
# READ_OPERATION_TIMEOUT_MS=300000
################## 操作信息:写入参数 ###################
# 每批每个设备写入数据行数,一行是某个设备所有传感器在某一时间戳的数据
# 每个Batch写入数据总点数=DEVICE_NUM_PER_WRITE * SENSOR_NUMBER * BATCH_SIZE_PER_WRITE
# BATCH_SIZE_PER_WRITE=100
# 每批写入设备数,必须能整除每个client被分配到的设备数
# DEVICE_NUM_PER_WRITE=1
# 是否在写入数据前,创建SCHEMA
# CREATE_SCHEMA=true
# 开始写入数据的时间戳
# START_TIME=2022-01-01T00:00:00+08:00
######### 复制的生成模式,是否添加异常,异常率和异常倍率 ############
# verificationWriteMode模式下使用复制文件模式,此时必须将
# a.CLIENT_NUM设置为1; b.LOOP为复制的循环次数,即写入多少个BATCH;
# c.BATCH_SIZE_PER_WRITE 取csv中多少数据,默认100;最终每个BATCH的大小是BATCH_SIZE=min(BATCH_SIZE_PER_WRITE, len(csv))
# d.BIG_BATCH_SIZE设置为1,因为一个csv视为一个BATCH
# 同时需要在FILE_PATH目录下创建文件夹(d_0)并加入想要复制的csv文件,并在FILE_PATH中加入schema.txt,文件结构为
#+ FILE_PATH
# + d_0
# + *.csv 将第一列修改为如"Sensor,s_0,s_1,..."
# + schema.txt 每一行解释每个Sensor的Type,如"d_0 s_0 3\n d_0 s_1 4"
# IS_COPY_MODE=false
# IS_ADD_ANOMALY=false
# ANOMALY_RATE=0.2
# ANOMALY_TIMES=2
################## 操作信息:乱序写入 ###################
# 是否乱序写入
# IS_OUT_OF_ORDER=true
# 乱序写入模式,目前如下2种
# POISSON 按泊松分布的乱序模式
# BATCH 批插入乱序模式
# OUT_OF_ORDER_MODE=POISSON
# 乱序写入的数据的比例
# OUT_OF_ORDER_RATIO=0.5
# 是否为等长时间戳
# IS_REGULAR_FREQUENCY=false
# 泊松分布的期望和方差
# LAMBDA=2200.0
# 泊松分布模型的随机数的最大值
# MAX_K=170000
################ 操作信息:查询操作参数 ###################
# 在读写混合的场景下,是否优先查询最近写入的数据
# IS_RECENT_QUERY=false
# 时间过滤条件的时间起点变化步长,若设为0则每个查询的时间过滤条件是一样的,单位:POINT_STEP
# STEP_SIZE=1
# 每条查询语句中查询涉及到的传感器数量
# QUERY_SENSOR_NUM=1
# 每条查询语句中查询涉及到的设备数量
# QUERY_DEVICE_NUM=1
# 在聚集查询中使用的聚集函数,比如count
# QUERY_AGGREGATE_FUN=count
# 含起止时间的查询中开始时间与结束时间之间的时间间隔,和Group By中的时间间隔(单位按照精度决定)
# QUERY_INTERVAL=250000
# 条件查询子句时的参数,where xxx > QUERY_LOWER_VALUE
# QUERY_LOWER_VALUE=-5
# Group by语句中的组的大小
# GROUP_BY_TIME_UNIT=20000
# 查询语句的随机数种子
# QUERY_SEED=151658
# 行数限制, -1表示不使用limit语句
# 目前仅支持iotdb、influxdb v1、tdengine-3
# RESULT_ROW_LIMIT=-1
# 是否align by device
# 目前仅支持iotdb、influxdb v1、tdengine-3
# ALIGN_BY_DEVICE=false
################ Workload:相关参数 ######################
# workload的缓冲区的大小
# WORKLOAD_BUFFER_SIZE=100
########################################################
#################### 输出结果配置 ########################
########################################################
# 结果持久化选择,支持None,IoTDB,MySQL和CSV
# TEST_DATA_PERSISTENCE=None
# 是否将结果划分后输出到多个记录, IoTDB 暂时不支持
# RECORD_SPLIT=true
# 记录行数的上限
# RECORD_SPLIT_MAX_LINE=10000000
############## 输出结果:输出数据库参数 ####################
# 数据库的IP地址
# TEST_DATA_STORE_IP=127.0.0.1
# 数据库的端口号
# TEST_DATA_STORE_PORT=6667
# 数据库的名称
# TEST_DATA_STORE_DB=result
# 数据库用户名
# TEST_DATA_STORE_USER=root
# 数据库用户密码
# TEST_DATA_STORE_PW=root
# 数据库写超时,单位毫秒
# TEST_DATA_WRITE_TIME_OUT=300000
# 数据库写入并发池最多限制
# TEST_DATA_MAX_CONNECTION=1
# 对本次实验的备注,作为表名的一部分存入数据库(如MySQL)中,注意不要有.等特殊字符
# REMARK=
############ 输出结果:MySQL数据库补充参数 #################
# 真实写入到MySQL数据库的比例
# MYSQL_REAL_INSERT_RATE=1.0
################ 输出结果:CSV参数 #######################
# 是否将最终的结果写入到CSV
# CSV_OUTPUT=true
################# 输出结果:日志参数 ######################
# 是否使用静默模式,静默模式会关闭部分日志输出
# IS_QUIET_MODE=true
# 测试过程中测试进度日志的输出间隔,单位为秒
# LOG_PRINT_INTERVAL=5
# 测试过程中当前测试结果日志的输出间隔,单位为秒
# RESULT_PRINT_INTERVAL=3600