#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

####################
### RPC Configuration
####################

# Datatype: String
rpc_address=0.0.0.0

# Datatype: int
rpc_port=6667

####################
### Shuffle Configuration
####################
# Datatype: int
mpp_data_exchange_port=8777

# Datatype: int
# mpp_data_exchange_core_pool_size=10

# Datatype: int
# mpp_data_exchange_max_pool_size=10

# Datatype: int
# mpp_data_exchange_keep_alive_time_in_ms=1000

# Datatype: String
# used for communication between cluster nodes.
# if this parameter is commented, then the IP that binded by the hostname will be used.
internal_address=127.0.0.1

# Datatype: int
# port for coordinator's communication between cluster nodes.
internal_port=9003

# Datatype: int
# port for consensus's communication for data region between cluster nodes.
data_region_consensus_port=40010

# Datatype: int
# port for consensus's communication for schema region between cluster nodes.
schema_region_consensus_port=50010

# At least one running ConfigNode should be set for joining the cluster
# Format: ip:port
# where the ip should be consistent with the target ConfigNode's confignode_rpc_address,
# and the port should be consistent with the target ConfigNode's confignode_rpc_port.
# When successfully connecting to the ConfigNodeGroup, DataNode will get all online
# config nodes and store them in memory.
# Datatype: String
target_config_nodes=127.0.0.1:22277

# Datatype: boolean
# rpc_thrift_compression_enable=false

# if true, a snappy based compression method will be called before sending data by the network
# Datatype: boolean
# this feature is under development, set this as false before it is done.
# rpc_advanced_compression_enable=false

# Datatype: int
# rpc_max_concurrent_client_num=65535

# thrift max frame size, 512MB by default
# Datatype: int
# thrift_max_frame_size=536870912

# thrift init buffer size
# Datatype: int
# thrift_init_buffer_size=1024

# Thrift socket and connection timeout between raft nodes, in milliseconds.
# Datatype: int
# connection_timeout_ms=20000

# selector thread (TAsyncClientManager) nums for async thread in a clientManager
# Datatype: int
# selector_thread_nums_of_client_manager=1

####################
### Write Ahead Log Configuration
####################

# Write mode of wal
# The details of these three modes are as follows:
# 1. DISABLE: the system will disable wal.
# 2. SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.
# 3. ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully.
# The write performance order is DISABLE > ASYNC > SYNC, but only SYNC mode can ensure data durability.
# wal_mode=ASYNC

# wal dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If wal_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# wal_dirs=data\\wal
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# wal_dirs=data/wal

# Max number of wal nodes, each node corresponds to one wal directory
# The default value 0 means twice the number of wal dirs.
# Notice: this value affects write performance significantly.
# For non-SSD disks, values between one third and half of storage groups number are recommended.
# Datatype: int
# max_wal_nodes_num=0

# Duration a wal flush operation will wait before calling fsync
# A duration greater than 0 batches multiple wal fsync calls into one. This is useful when disks are slow or WAL write contention exists.
# Notice: this value affects write performance significantly, values in the range of 0ms-10ms are recommended.
# Datatype: long
# fsync_wal_delay_in_ms=3

# Buffer size of each wal node
# If it's a value smaller than 0, use the default value 16 * 1024 * 1024 bytes (16MB).
# Datatype: int
# wal_buffer_size_in_byte=16777216

# Blocking queue capacity of each wal buffer, restricts maximum number of WALEdits cached in the blocking queue.
# Datatype: int
# wal_buffer_queue_capacity=50

# Size threshold of each wal file
# When a wal file's size exceeds this, the wal file will be closed and a new wal file will be created.
# If it's a value smaller than 0, use the default value 10 * 1024 * 1024 (10MB).
# Datatype: long
# wal_file_size_threshold_in_byte=10485760

# Minimum ratio of effective information in wal files
# This value should be between 0.0 and 1.0
# If effective information ratio is below this value, MemTable snapshot or flush will be triggered.
# Increase this value when wal occupies too much disk space. But, if this parameter is too large, the write performance may decline.
# Datatype: double
# wal_min_effective_info_ratio=0.1

# MemTable size threshold for triggering MemTable snapshot in wal
# When a memTable's size (in byte) exceeds this, wal can flush this memtable to disk, otherwise wal will snapshot this memtable in wal.
# If it's a value smaller than 0, use the default value 8 * 1024 * 1024 bytes (8MB).
# Datatype: long
# wal_memtable_snapshot_threshold_in_byte=8388608

# MemTable's max snapshot number in wal
# If one memTable's snapshot number in wal exceeds this value, it will be flushed to disk.
# Datatype: int
# max_wal_memtable_snapshot_num=1

# The period when outdated wal files are periodically deleted
# If this value is too large, outdated wal files may not able to be deleted in time.
# If it's a value smaller than 0, use the default value 20 * 1000 ms (20 seconds).
# Datatype: long
# delete_wal_files_period_in_ms=20000

####################
### Directory Configuration
####################

# system dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/system).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# system_dir=data\\system
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# system_dir=data/system


# data dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/data).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# data_dirs=data\\data
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# data_dirs=data/data


# mult_dir_strategy
# The strategy is used to choose a directory from data_dirs for the system to store a new tsfile.
# System provides four strategies to choose from, or user can create his own strategy by extending org.apache.iotdb.db.conf.directories.strategy.DirectoryStrategy.
# The info of the four strategies are as follows:
# 1. SequenceStrategy: the system will choose the directory in sequence.
# 2. MaxDiskUsableSpaceFirstStrategy: the system will choose the directory whose disk has the maximum space.
# 3. MinFolderOccupiedSpaceFirstStrategy: the system will choose the directory whose folder has the minimum occupied space.
# 4. RandomOnDiskUsableSpaceStrategy: the system will randomly choose the directory based on usable space of disks. The more usable space, the greater the chance of being chosen;
# Set SequenceStrategy,MaxDiskUsableSpaceFirstStrategy and MinFolderOccupiedSpaceFirstStrategy to apply the corresponding strategy.
# If this property is unset, system will use MaxDiskUsableSpaceFirstStrategy as default strategy.
# For this property, fully-qualified class name (include package name) and simple class name are both acceptable.
# multi_dir_strategy=MaxDiskUsableSpaceFirstStrategy

# consensus dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# Note: If consensus_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data\\consensus
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data/consensus


# TSFile storage file system. Currently, TsFiles are supported to be stored in LOCAL file system or HDFS.
# Datatype: FSType
# tsfile_storage_fs=LOCAL

# If using HDFS, the absolute file path of Hadoop core-site.xml should be configured
# Datatype: String
# core_site_path=/etc/hadoop/conf/core-site.xml

# If using HDFS, the absolute file path of Hadoop hdfs-site.xml should be configured
# Datatype: String
# hdfs_site_path=/etc/hadoop/conf/hdfs-site.xml

# If using HDFS, hadoop ip can be configured. If there are more than one hdfs_ip, Hadoop HA is used
# Datatype: String
# hdfs_ip=localhost

# If using HDFS, hadoop port can be configured
# Datatype: String
# hdfs_port=9000

# If there are more than one hdfs_ip, Hadoop HA is used. Below are configuration for HA
# If using Hadoop HA, nameservices of hdfs can be configured
# Datatype: String
# dfs_nameservices=hdfsnamespace

# If using Hadoop HA, namenodes under dfs nameservices can be configured
# Datatype: String
# dfs_ha_namenodes=nn1,nn2

# If using Hadoop HA, automatic failover can be enabled or disabled
# Datatype: boolean
# dfs_ha_automatic_failover_enabled=true

# If using Hadoop HA and enabling automatic failover, the proxy provider can be configured
# Datatype: String
# dfs_client_failover_proxy_provider=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

# If using kerberos to authenticate hdfs, this should be true
# Datatype: boolean
# hdfs_use_kerberos=false

# Full path of kerberos keytab file
# Datatype: String
# kerberos_keytab_file_path=/path

# Kerberos pricipal
# Datatype: String
# kerberos_principal=your principal


####################
### Storage Engine Configuration
####################

# Use this value to set timestamp precision as "ms", "us" or "ns".
# Once the precision is been set, it can not be changed.
# Datatype: String
timestamp_precision=ms

# Default TTL for storage groups that are not set TTL by statements, If not set (default),
# the TTL will be unlimited.
# Notice: if this property is changed, previous created storage group which are not set TTL will
# also be affected. And negative values are accepted, which means you can only insert future
# data.
# Datatype: long
# Unit: ms
# default_ttl=36000000

# Size of log buffer in each metadata operation plan(in byte).
# If the size of a metadata operation plan is larger than this parameter, then it will be rejected by SchemaRegion
# If it sets a value smaller than 0, use the default value 1024*1024
# Datatype: int
# mlog_buffer_size=1048576

# The cycle when metadata log is periodically forced to be written to disk(in milliseconds)
# If sync_mlog_period_in_ms = 0 it means force metadata log to be written to disk after each refreshment
# Set this parameter to 0 may slow down the operation on slow disk.
# sync_mlog_period_in_ms=100

# When a memTable's size (in byte) exceeds this, the memtable is flushed to disk. The default threshold is 1 GB.
# Datatype: long
# memtable_size_threshold=1073741824

# Whether to timed flush sequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_seq_memtable=false

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check sequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_interval_in_ms=3600000

# The interval to check whether sequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_check_interval_in_ms=600000

# Whether to timed flush unsequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_unseq_memtable=true

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check unsequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_interval_in_ms=3600000

# The interval to check whether unsequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_check_interval_in_ms=600000

# When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. The default threshold is 100000.
# Datatype: int
# avg_series_point_number_threshold=100000

# How many threads can concurrently flush. When <= 0, use CPU core number.
# Datatype: int
# concurrent_flush_thread=0

# How many threads can concurrently execute query statement. When <= 0, use CPU core number.
# Datatype: int
# concurrent_query_thread=16

# How many threads can concurrently read data for raw data query. When <= 0, use CPU core number.
# Datatype: int
# concurrent_sub_rawQuery_thread=8

# Blocking queue size for read task in raw data query. Must >= 1.
# Datatype: int
# raw_query_blocking_queue_capacity=5

# whether take over the memory management by IoTDB rather than JVM when serializing memtable as bytes in memory
# (i.e., whether use ChunkBufferPool), value true, false
# Datatype: boolean
# chunk_buffer_pool_enable=false

# The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.)
# Datatype: int
# batch_size=100000

# max size for tag and attribute of one time series
# the unit is byte
# Datatype: int
# tag_attribute_total_size=700

# interval num for tag and attribute records when force flushing to disk
# When a certain amount of tag and attribute records is reached, they will be force flushed to disk
# It is possible to lose at most tag_attribute_flush_interval records
# tag_attribute_flush_interval=1000

# In one insert (one device, one timestamp, multiple measurements),
# if enable partial insert, one measurement failure will not impact other measurements
# Datatype: boolean
# enable_partial_insert=true

# number of data regions per user-defined storage group
# a data region is the unit of parallelism in memory as all ingestions in one data region are serialized
# recommended value is [data region number] = [CPU core number] / [user-defined storage group number]
# Datatype: int
# data_region_num = 1

# the interval to log recover progress of each vsg when starting iotdb
# Datatype: int
# recovery_log_interval_in_ms=5000

# Add a switch to drop ouf-of-order data
# Out-of-order data will impact the aggregation query a lot. Users may not care about discarding some out-of-order data.
# Datatype: boolean
# enable_discard_out_of_order_data=false

####################
### Memory Control Configuration
####################

# Whether to enable memory control
# Datatype: boolean
# enable_mem_control=true

# Memory Allocation Ratio: Write, Read, Schema and Free Memory.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# If you have high level of writing pressure and low level of reading pressure, please adjust it to for example 6:1:1:2
# write_read_schema_free_memory_proportion=4:3:1:2

# Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, PartitionCache and LastCache.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# In cluster mode, we recommend 5:3:1:1. In standalone mode, we recommend 8:1:0:1
# schema_memory_allocate_proportion=5:3:1:1

# Max number of concurrent writing time partitions in one storage group
# This parameter is used to control total memTable number when memory control is disabled
# The max number of memTable is 4 * concurrent_writing_time_partition * storage group number
# Datatype: long
# concurrent_writing_time_partition=1

# primitive array size (length of each array) in array pool
# Datatype: int
# primitive_array_size=32

# Ratio of write memory for invoking flush disk, 0.4 by default
# If you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2
# Datatype: double
# flush_proportion=0.4

# Ratio of read memory allocated for timeIndex, 0.2 by default
# Datatype: double
# time_index_memory_proportion=0.2

# Ratio of write memory allocated for buffered arrays, 0.6 by default
# Datatype: double
# buffered_arrays_memory_proportion=0.6

# Ratio of write memory for rejecting insertion, 0.8 by default
# If you have extremely high write load (like batch=1000) and the physical memory size is large enough,
# it can be set higher than the default value like 0.9
# Datatype: double
# reject_proportion=0.8

# If memory (in byte) of storage group increased more than this threshold, report to system. The default value is 16MB
# Datatype: long
# storage_group_report_threshold=16777216

# allowed max numbers of deduplicated path in one query
# it's just an advised value, the real limitation will be the smaller one between this and the one we calculated
# Datatype: int
# max_deduplicated_path_num=1000

# When an inserting is rejected, waiting period (in ms) to check system again, 50 by default.
# If the insertion has been rejected and the read load is low, it can be set larger.
# Datatype: int
# check_period_when_insert_blocked=50

# When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default.
# If the insertion has been rejected and the read load is low, it can be set larger
# Datatype: int
# max_waiting_time_when_insert_blocked=10000

# size of ioTaskQueue. The default value is 10
# Datatype: int
# io_task_queue_size_for_flushing=10

####################
### Upgrade Configurations
####################

# When there exists old version(0.9.x/v1) data, how many thread will be set up to perform upgrade tasks, 1 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# upgrade_thread_num=1

####################
### Query Configurations
####################

# the default time period that used in fill query, -1 by default means infinite past time
# Datatype: int, Unit: ms
# default_fill_interval=-1

####################
### Compaction Configurations
####################
# sequence space compaction: only compact the sequence files
# Datatype: boolean
# enable_seq_space_compaction=true

# unsequence space compaction: only compact the unsequence files
# Datatype: boolean
# enable_unseq_space_compaction=true

# cross space compaction: compact the unsequence files into the overlapped sequence files
# Datatype: boolean
# enable_cross_space_compaction=true

# the selector of cross space compaction task
# Options: rewrite
# cross_selector=rewrite

# the compaction performer of cross space compaction task
# Options: read_point
# cross_performer=read_point

# the selector of inner sequence space compaction task
# Options: size_tiered
# inner_seq_selector=size_tiered

# the performer of inner sequence space compaction task
# Options: read_chunk
# inner_seq_performer=read_chunk

# the selector of inner unsequence space compaction task
# Options: size_tiered
# inner_unseq_selector=size_tiered

# the performer of inner unsequence space compaction task
# Options: read_point
# inner_unseq_performer=read_point

# The priority of compaction execution
# INNER_CROSS: prioritize inner space compaction, reduce the number of files first
# CROSS_INNER: prioritize cross space compaction, eliminate the unsequence files first
# BALANCE: alternate two compaction types
# compaction_priority=BALANCE

# The target tsfile size in compaction
# Datatype: long, Unit: byte
# target_compaction_file_size=1073741824

# The target chunk size in compaction, default is 1MB
# Datatype: long, Unit: byte
# target_chunk_size=1048576

# The target point nums in one chunk in compaction
# Datatype: long
# target_chunk_point_num=100000

# If the chunk size is lower than this threshold, it will be deserialize into points, default is 128 byte
# Datatype: long, Unit:byte
# chunk_size_lower_bound_in_compaction=128

# If the chunk size is lower than this threshold, it will be deserialize into points
# Datatype: long
# chunk_point_num_lower_bound_in_compaction=100

# The max file when selecting inner space compaction candidate files
# Datatype: int
# max_inner_compaction_candidate_file_num=30

# The max file when selecting cross space compaction candidate files
# At least one unseq file with it's overlapped seq files will be selected even exceeded this number
# Datatype: int
# max_cross_compaction_candidate_file_num=1000

# If one merge file selection runs for more than this time, it will be ended and its current
# selection will be used as final selection.
# When < 0, it means time is unbounded.
# Datatype: long, Unit: ms
# cross_compaction_file_selection_time_budget=30000

# How much memory may be used in ONE merge task, 10% of maximum JVM memory by default.
# This is only a rough estimation, starting from a relatively small value to avoid OOM.
# Each new merge thread may take such memory, so merge_thread_num * merge_memory_budget is the
# total memory estimation of merge.
# Datatype: long, Unit: Byte
# cross_compaction_memory_budget=268435456

# How many threads will be set up to perform compaction, 10 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# concurrent_compaction_thread=10

# The interval of compaction task schedule
# Datatype: long, Unit: ms
# compaction_schedule_interval_in_ms=60000

# The interval of compaction task submission
# Datatype: long, Unit: ms
# compaction_submission_interval_in_ms=60000

# The limit of write throughput merge can reach per second
# Datatype: int
# compaction_write_throughput_mb_per_sec=16

# The maximum session idle time. unit: ms
# Idle sessions are the ones that performs neither query or non-query operations for a period of time
# Set to 0 to disable session timeout
# Datatype: int
# session_timeout_threshold=0

# The max executing time of query. unit: ms
# Datatype: int
# query_timeout_threshold=60000

# The maximum allowed concurrently executing queries
# Datatype: int
# max_allowed_concurrent_queries=1000

# The number of sub compaction threads to be set up to perform compaction.
# Currently only works for nonAligned data in cross space compaction and unseq inner space compaction.
# Set to 1 when less than or equal to 0.
# Datatype: int
# sub_compaction_thread_num=4

####################
### Metadata Cache Configuration
####################

# whether to cache meta data(BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not.
# Datatype: boolean
# meta_data_cache_enable=true

# Read memory Allocation Ratio: BloomFilterCache, ChunkCache, TimeSeriesMetadataCache, memory used for constructing QueryDataSet and Free Memory Used in Query.
# The parameter form is a:b:c:d:e, where a, b, c, d and e are integers. for example: 1:1:1:1:1 , 1:100:200:300:400
# chunk_timeseriesmeta_free_memory_proportion=1:100:200:300:400

####################
### LAST Cache Configuration
####################

# Whether to enable LAST cache
# Datatype: boolean
# enable_last_cache=true

####################
### External sort Configuration
####################
# Is external sort enable
# Datatype: boolean
# enable_external_sort=true

# The maximum number of simultaneous chunk reading for a single time series.
# If the num of simultaneous chunk reading is greater than external_sort_threshold, external sorting is used.
# When external_sort_threshold increases, the number of chunks sorted at the same time in memory may increase and this will occupy more memory.
# When external_sort_threshold decreases, triggering external sorting will increase the time-consuming.
# Datatype: int
# external_sort_threshold=1000

####################
### PIPE Server Configuration
####################
# PIPE server port to listen
# Datatype: int
# pipe_server_port=6670

# White IP list of Sync client.
# Please use the form of network segment to present the range of IP, for example: 192.168.0.0/16
# If there are more than one IP segment, please separate them by commas
# The default is to allow all IP to sync
# Datatype: String
# ip_white_list=0.0.0.0/0

####################
### PIPE Sender Configuration
####################
# The maximum number of retry when syncing a file to receiver fails.
# max_number_of_sync_file_retry=5


####################
### performance statistic configuration
####################

# Uncomment following fields to configure the tracing root directory.
# For Window platform, the index is as follows:
# tracing_dir=data\\tracing
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# tracing_dir=data/tracing

####################
### Configurations for watermark module
####################
# Datatype: boolean
# watermark_module_opened=false
# Datatype: String
# watermark_secret_key=IoTDB*2019@Beijing
# Datatype: String
# watermark_bit_string=100101110100
# Datatype: String
# watermark_method=GroupBasedLSBMethod(embed_row_cycle=2,embed_lsb_num=5)


####################
### Configurations for creating schema automatically
####################

# Whether creating schema automatically is enabled
# Datatype: boolean
# enable_auto_create_schema=true

# Storage group level when creating schema automatically is enabled
# e.g. root.sg0.d1.s2
#      we will set root.sg0 as the storage group if storage group level is 1
# Datatype: int
# default_storage_group_level=1

# ALL data types: BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT

# register time series as which type when receiving boolean string "true" or "false"
# Datatype: TSDataType
# boolean_string_infer_type=BOOLEAN

# register time series as which type when receiving an integer string "67"
# Datatype: TSDataType
# integer_string_infer_type=FLOAT

# register time series as which type when receiving an integer string and using float may lose precision
# num > 2 ^ 24
# Datatype: TSDataType
# long_string_infer_type=DOUBLE

# register time series as which type when receiving a floating number string "6.7"
# Datatype: TSDataType
# floating_string_infer_type=FLOAT

# register time series as which type when receiving the Literal NaN. Values can be DOUBLE, FLOAT or TEXT
# Datatype: TSDataType
# nan_string_infer_type=DOUBLE


# BOOLEAN encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_boolean_encoding=RLE

# INT32 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int32_encoding=RLE

# INT64 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int64_encoding=RLE

# FLOAT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_float_encoding=GORILLA

# DOUBLE encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_double_encoding=GORILLA

# TEXT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_text_encoding=PLAIN

####################
### Configurations for tsfile-format
####################

# Datatype: int
# group_size_in_byte=134217728

# The memory size for each series writer to pack page, default value is 64KB
# Datatype: int
# page_size_in_byte=65536

# The maximum number of data points in a page, default 1024*1024
# Datatype: int
# max_number_of_points_in_page=1048576

# Max size limitation of input string
# Datatype: int
# max_string_length=128

# Floating-point precision
# Datatype: int
# float_precision=2

# Encoder configuration
# Encoder of time series, supports TS_2DIFF, PLAIN and RLE(run-length encoding), REGULAR and default value is TS_2DIFF
# time_encoder=TS_2DIFF

# Encoder of value series. default value is PLAIN.
# For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG.
# value_encoder=PLAIN

# Compression configuration
# Data compression method, supports UNCOMPRESSED, SNAPPY or LZ4. Default value is SNAPPY
# compressor=SNAPPY

# Maximum degree of a metadataIndex node, default value is 256
# Datatype: int
# max_degree_of_index_node=256

# time interval in minute for calculating query frequency
# Datatype: int
# frequency_interval_in_minute=1

# time cost(ms) threshold for slow query
# Datatype: long
# slow_query_threshold=5000

# Signal-noise-ratio (SNR) of FREQ encoding
# Datatype: double
# freq_snr=40.0

# Block size of FREQ encoding
# Datatype: integer
# freq_block_size=1024

####################
### MQTT Broker Configuration
####################

# whether to enable the mqtt service.
# Datatype: boolean
# enable_mqtt_service=false

# the mqtt service binding host.
# Datatype: String
# mqtt_host=0.0.0.0

# the mqtt service binding port.
# Datatype: int
# mqtt_port=1883

# the handler pool size for handing the mqtt messages.
# Datatype: int
# mqtt_handler_pool_size=1

# the mqtt message payload formatter.
# Datatype: String
# mqtt_payload_formatter=json

# max length of mqtt message in byte
# Datatype: int
# mqtt_max_message_size=1048576

####################
### Authorization Configuration
####################

#which class to serve for authorization. By default, it is LocalFileAuthorizer.
#Another choice is org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer
# authorizer_provider_class=org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer


#If OpenIdAuthorizer is enabled, then openID_url must be set.

#openID_url=

# Cache size of user and role
# Datatype: int
# author_cache_size=1000

# Cache expire time of user and role
# Datatype: int
# author_cache_expire_time=30

####################
### UDF Configuration
####################

# Used to estimate the memory usage of text fields in a UDF query.
# It is recommended to set this value to be slightly larger than the average length of all text
# records.
# Datatype: int
# udf_initial_byte_array_length_for_memory_control=48

# How much memory may be used in ONE UDF query (in MB).
# The upper limit is 20% of allocated memory for read.
# Datatype: float
# udf_memory_budget_in_mb=30.0

# UDF memory allocation ratio.
# The parameter form is a:b:c, where a, b, and c are integers.
# udf_reader_transformer_collector_memory_proportion=1:1:1

# Uncomment the following field to configure the udf root directory.
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# udf_root_dir=ext\\udf
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# udf_root_dir=ext/udf

####################
### Trigger Configuration
####################

# The size of log buffer for every trigger management operation plan. If the size of a trigger
# management operation plan is larger than this parameter, the trigger management operation plan
# will be rejected by TriggerManager.
# Datatype: int
# tlog_buffer_size=1048576

# Uncomment the following field to configure the trigger root directory.
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# trigger_root_dir=ext\\trigger
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# trigger_root_dir=ext/trigger

# How many threads can be used for evaluating sliding windows. When <= 0, use CPU core number.
# Datatype: int
# concurrent_window_evaluation_thread=0

# Max number of window evaluation tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_window_evaluation_tasks=64

####################
### Continuous Query Configuration
####################

# How many thread will be set up to perform continuous queries. When <= 0, use max(1, CPU core number / 2).
# Datatype: int
# continuous_query_execution_thread=2

# Maximum number of continuous query tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_continuous_query_tasks=64

# Minimum every interval to perform continuous query.
# The every interval of continuous query instances should not be lower than this limit.
# Datatype: duration
# continuous_query_min_every_interval=1s

# The size of log buffer for every CQ management operation plan. If the size of a CQ
# management operation plan is larger than this parameter, the CQ management operation plan
# will be rejected by CQManager.
# Datatype: int
# cqlog_buffer_size=1048576

####################
### Select-Into Configuration
####################

# The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements.
# When <= 0, use 10000.
# Datatype: int
# select_into_insert_tablet_plan_row_limit=10000


####################
### Insert-Tablets Configuration
####################

# When the insert plan column count reaches the specified threshold, which means that the plan is relatively large. At this time, may be enabled multithreading.
# If the tablet is small, the time of each insertion is short.
# If we enable multithreading, we also need to consider the switching loss between threads,
# so we need to judge the size of the tablet.
# Datatype: int
# insert_multi_tablet_enable_multithreading_column_threshold=10

####################
### Index Configuration
####################

# Uncomment following fields to configure the index root directory.
# For Window platform, the index is as follows:
# index_root_dir=data\\index
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# index_root_dir=data/index

# Is index enable
# Datatype: boolean
# enable_index=false

# How many threads can concurrently build index. When <= 0, use CPU core number.
# Datatype: int
# concurrent_index_build_thread=0

# the default size of sliding window used for the subsequence matching in index framework
# Datatype: int
# default_index_window_range=10

# buffer parameter for index processor.
# Datatype: long
# index_buffer_size=134217728

# whether enable data partition. If disabled, all data belongs to partition 0
# Datatype: boolean
# enable_partition=false

# time range for partitioning data inside each storage group, the unit is second
# Datatype: long
# partition_interval=604800

# admin username, default is root
# Datatype: string
# admin_name=root

# admin password, default is root
# Datatype: string
# admin_password=root

####################
### Influx DB RPC Service Configuration
####################
# Datatype: boolean
# enable_influxdb_rpc_service=false

# Datatype: int
# influxdb_rpc_port=8086

####################
### Group By Fill Configuration
####################
# Datatype: float
# group_by_fill_cache_size_in_mb=1.0

####################
### Schema Engine Configuration
####################
# Choose the mode of schema engine. The value could be Memory,Schema_File and Rocksdb_based. If the provided value doesn't match any pre-defined value, Memory mode will be used as default.
# Datatype: string
# schema_engine_mode=Memory

# cache size for SchemaRegion.
# This cache is used to improve insert speed where all path check and TSDataType will be cached in SchemaRegion with corresponding Path.
# Datatype: int
# schema_region_device_node_cache_size=10000

# thread pool size for read operation in DataNode's coordinator.
# Datatype: int
# coordinator_read_executor_size=50

# thread pool size for write operation in DataNode's coordinator.
# Datatype: int
# coordinator_write_executor_size=50

# cache size for partition.
# This cache is used to improve partition fetch from config node.
# Datatype: int
# partition_cache_size=0

####################
### Schema File Configuration
####################
# The minimum size (in bytes) allocated for a node in schema file
# A large number for this will make it faster while occupying more space, or otherwise
# The default 0 means if a flushed internal(entity) had less than 20 children, it will get a segment with the size calculated from total size of its children
# If no child, it would get a segment of 25 bytes, which is the size of segment header
# Datatype: short
# minimum_schema_file_segment_in_bytes=0

# The cache size for schema page in one schema file
# A bigger cache makes it faster but costs more space and more volatile when evicts item from cache
# Datatype: int
# page_cache_in_schema_file=1024

####################
### Trigger Forward
####################
# Number of queues per forwarding trigger
trigger_forward_max_queue_number=8
# The length of one of the queues per forwarding trigger
trigger_forward_max_size_per_queue=2000
# Trigger forwarding data size per batch
trigger_forward_batch_size=50
# Trigger HTTP forward pool size
trigger_forward_http_pool_size=200
# Trigger HTTP forward pool max connection for per route
trigger_forward_http_pool_max_per_route=20
# Trigger MQTT forward pool size
trigger_forward_mqtt_pool_size=4