FlashTsDB时序数据库-SDT算法(Java)实现
FLashDB基于开源模式开发,地址:https://github.com/amon1991/flashdb
1、SDT原理
2、压缩算法
Point对象
public class Point implements Comparable<Point> {
private long x; // 时间戳
private double y; // 测点值
// ... 此处省略set,get方法
}
SdtPeriod对象
public class SdtPeriod {
private long bgTime; // 压缩段开始时间
private double bgValue; // 压缩段开始值
private long endTime; // 压缩段结束时间
private double endValue;// 压缩段结束值
private double gradient; // 梯度
// ... 此处省略set,get方法
}
压缩算法
/**
* SDT algorithm compress function
*
* @param originPoints 待压缩的点集
* @param accuracyE 旋转门大小
* @return
*/
public List<SdtPeriod> sdtCompress(List<Point> originPoints, double accuracyE) {
List<SdtPeriod> sdtPeriodList = new ArrayList<>();
if (null != originPoints && originPoints.size() > 0) {
SdtPoints sdtPoints = new SdtPoints();
double upGate = -Double.MAX_VALUE;
double downGate = Double.MAX_VALUE;
for (int i = 0, size = originPoints.size(); i < size; i++