| <!-- |
| |
| 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. |
| |
| --> |
| |
| # Deadband Process |
| |
| ## SDT |
| |
| The Swinging Door Trending (SDT) algorithm is a deadband process algorithm. |
| SDT has low computational complexity and uses a linear trend to represent a quantity of data. |
| |
| In IoTDB SDT compresses and discards data when flushing into the disk. |
| |
| IoTDB allows you to specify the properties of SDT when creating a time series, and supports three properties: |
| |
| * CompDev (Compression Deviation) |
| |
| CompDev is the most important parameter in SDT that represents the maximum difference between the |
| current sample and the current linear trend. CompDev needs to be greater than 0 to perform compression. |
| |
| * CompMinTime (Compression Minimum Time Interval) |
| |
| CompMinTime is a parameter measures the time distance between two stored data points, which is used for noisy reduction. |
| If the time interval between the current point and the last stored point is less than or equal to its value, |
| current point will NOT be stored regardless of compression deviation. |
| The default value is 0 with time unit ms. |
| |
| * CompMaxTime (Compression Maximum Time Interval) |
| |
| CompMaxTime is a parameter measure the time distance between two stored data points. |
| If the time interval between the current point and the last stored point is greater than or equal to its value, |
| current point will be stored regardless of compression deviation. |
| The default value is 9,223,372,036,854,775,807 with time unit ms. |
| |
| The specified syntax for SDT is detailed in [Create Timeseries Statement](../Reference/SQL-Reference.md). |
| |
| Supported datatypes: |
| |
| * INT32 (Integer) |
| * INT64 (Long Integer) |
| * FLOAT (Single Precision Floating Point) |
| * DOUBLE (Double Precision Floating Point) |
| |
| The following is an example of using SDT compression. |
| |
| ``` |
| IoTDB> CREATE TIMESERIES root.sg1.d0.s0 WITH DATATYPE=INT32,ENCODING=PLAIN,DEADBAND=SDT,COMPDEV=2 |
| ``` |
| |
| Prior to flushing and SDT compression, the results are shown below: |
| |
| ``` |
| IoTDB> SELECT s0 FROM root.sg1.d0 |
| +-----------------------------+--------------+ |
| | Time|root.sg1.d0.s0| |
| +-----------------------------+--------------+ |
| |2017-11-01T00:06:00.001+08:00| 1| |
| |2017-11-01T00:06:00.002+08:00| 1| |
| |2017-11-01T00:06:00.003+08:00| 1| |
| |2017-11-01T00:06:00.004+08:00| 1| |
| |2017-11-01T00:06:00.005+08:00| 1| |
| |2017-11-01T00:06:00.006+08:00| 1| |
| |2017-11-01T00:06:00.007+08:00| 1| |
| |2017-11-01T00:06:00.015+08:00| 10| |
| |2017-11-01T00:06:00.016+08:00| 20| |
| |2017-11-01T00:06:00.017+08:00| 1| |
| |2017-11-01T00:06:00.018+08:00| 30| |
| +-----------------------------+--------------+ |
| Total line number = 11 |
| It costs 0.008s |
| ``` |
| |
| After flushing and SDT compression, the results are shown below: |
| |
| ``` |
| IoTDB> FLUSH |
| IoTDB> SELECT s0 FROM root.sg1.d0 |
| +-----------------------------+--------------+ |
| | Time|root.sg1.d0.s0| |
| +-----------------------------+--------------+ |
| |2017-11-01T00:06:00.001+08:00| 1| |
| |2017-11-01T00:06:00.007+08:00| 1| |
| |2017-11-01T00:06:00.015+08:00| 10| |
| |2017-11-01T00:06:00.016+08:00| 20| |
| |2017-11-01T00:06:00.017+08:00| 1| |
| +-----------------------------+--------------+ |
| Total line number = 5 |
| It costs 0.044s |
| ``` |
| |
| SDT takes effect when flushing to the disk. The SDT algorithm always stores the first point and does not store the last point. |
| |
| The data in [2017-11-01T00:06:00.001, 2017-11-01T00:06:00.007] is within the compression deviation thus discarded. |
| The data point at time 2017-11-01T00:06:00.007 is stored because the next data point at time 2017-11-01T00:06:00.015 |
| exceeds compression deviation. When a data point exceeds the compression deviation, SDT stores the last read |
| point and updates the upper and lower boundaries. The last point at time 2017-11-01T00:06:00.018 is not stored. |