精华内容
下载资源
问答
  • 对数据库的压缩分为
    2013-01-24 10:53:34

    数据库文件分为2个

    数据库名_Data.MDF   --数据文件

    数据库名_Log.LDF --日志文件


    数据文件可以收缩,减少数据库未使用的空间。

    操作方法,资源管理器--》数据库--》右键--》任务--》收缩--》数据库

    通过选择进行收缩。


    日志文件随着使用时间增长,如果没有设置最大限制的话,会产生很大的文件。通过重置清楚日志,释放硬盘空间

    將復原模式切換為簡易,壓縮後,再將復原模式切換為完整 

    USE dbname
    GO
    
    -- Truncate the log by changing the database recovery model to SIMPLE.
    ALTER DATABASE dbname SET RECOVERY SIMPLE;
    GO
    
    
    --有时出现建立数据库时,文件名称与数据库名称不一致,需要查询系统表确认日志名称
    select name from sys.database_files
    where type_desc='log'
    -- Shrink the truncated log file to 1 MB.
    DBCC SHRINKFILE (logname, 1);
    
    GO
    -- Reset the database recovery model.
    ALTER DATABASE dbname SET RECOVERY FULL;
    
    GO

    处理完毕后 日志文件变为1m

    更多相关内容
  • 摘要:目前,物联网、工业互联网、车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器、智能设备数量急剧增加,随之而来的海量时序监控数据存储、处理问题,也为时序数据库高效压缩、存储数据能力...

    摘要:目前,物联网、工业互联网、车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器、智能设备数量急剧增加,随之而来的海量时序监控数据存储、处理问题,也为时序数据库高效压缩、存储数据能力提出了更高的要求。对于通量愈加庞大的物联网时序大数据存储,尽管标准压缩方法还能发挥其价值,但某些场景对时序数据压缩解压技术效率、性能提出了新的需求。本文介绍了现有的时序数据压缩解压技术,分类介绍了不同算法的特点和优劣势。

    时序数据普遍存在于IoT物联网、工业互联网、车联网等相关场景,物联网设备已遍布各种行业场景应用,从可穿戴设备到工业生产设备,都会或将会产生大量数据。比如,新型波音787客机每次飞行传感器产生的数据量都在500GB左右。在这些场景下,通常具备高并发写和高通量数据处理特点,选择时序数据压缩算法需要全方位考虑数据采集、存储、分析的需要。特别需要注意的是业务应用对时序数据当前和历史数据分析的方式,选择压缩算法不当将可能导致关键信息丢失,从而影响分析结果。对于业务来说,更直接使用时序数据压缩技术的应用就是时序数据库,对于时序数据库压缩解压是关键数据处理步骤,压缩算法性能直接影响时序数据库建设投入的ROI。

    一 时序数据压缩

    对于数据压缩算法,业界存在更普遍的解释,通常是针对通用场景和业务相关场景,比如视频、音频、图像数据流压缩。本文重点介绍时序数据库中常用的面向时序数据设计或可用于时序数据处理的通用压缩算法。我们选择分析的算法具备对更普遍场景下持续产生时序数据压缩处理的能力,并对IoT物联网场景传感器数据压缩的以下特点做了特殊设计:

    1、数据冗余(Redundancy):一些特定模式的时序数据经常性重复出现在一个或多个时间序列。

    2、函数估算(Approximability):某些传感器产生的时序数据生成模式可以根据预定义函数估算。

    3、趋势预测(Predictability):某些时序数据未来趋势可以通过算法预测,例如利用回归、深度神经网络等技术。

    图 时序数据压缩算法分类

    本文重点总结了时序数据库和物联网IoT传感器管理常用压缩算法,并根据技术方法(dictionary-based, functional approximation, autoencoders, sequential等)和技术属性(adaptiveness, lossless reconstruction, symmetry, tuneability)对碎片化的压缩技术进行了分类,详细参考上图,并针对主要算法性能进行了对比分析。

    二 背景技术介绍

    在介绍压缩算法之前,我们先对时序数据、压缩和品质指数(quality indices)几个关键的概念进行定义。

    1 时序数据(Time Series)

    时序数据指数据元组根据时间戳(ti)升序排列的数据集合,可以被划分为:

    1、单变量时序(Univariate Time Series,UTS):每次采集的数据元组集合为单个实数变量。

    2、多变量时序(Multivariate Time Series ,MTS):每次采集的数据元组集合由多个实数序列组成,每个组成部分对映时序一个特征。

    比如,图2中股票价格在指定时间窗口的波动可以被定义为单变量时序数据,而每天交易信息(如:开盘、收盘价格,交易量等)则可以定义为多变量时序数据。

    图 股票交易UTS时序数据样例

    用数学范式表达时序可以被定义为:

    2 数据压缩

    数据压缩(又被称为源编码,source coding),根据David Salmon在《Data Compression: The Complete Reference》一书中的定义,可以简单描述为“将输入原始数据流转变为字符流(bit stream)或压缩流的体量更小的输出数据流的过程”。这个过程遵循J. G.Wolff提出的Simplicity Power(SP)理论,旨在尽量保持数据信息的前提下去除数据冗余。

    数据解压缩(又被称为源解码,source decoding),执行与压缩相反过程重构数据流以适应更高效数据应用层对数据表述、理解的需要。

    现有压缩算法根据实现原理的差异,可以被划分为以下几类:

    • 非适应/自适应(Non-adaptive/ adaptive):非适应算法不需要针对特殊数据流进行训练以提升效率,而适应算法则需要有训练过程。
    • 松散/非松散(Lossy/Lossless):松散算法不保障对原始数据压缩后的结果唯一,而非松散算法对同样原始数据的压缩结果唯一。
    • 对称/非对称(Symmetric/Asymmetric):对称算法对数据的压缩、解压缩使用相同的算法实现,通过执行不同的代码路径切换压缩解压缩过程;非对称算法则在数据压缩、解压缩过程分别使用不同的算法。

    对于具体的时序数据流压缩解压缩过程,一个压缩算法实例(encoder)输入s体量的时序数据流TS,返回压缩后的体量s′的时序数据流TS′,且s>s′包含一同压缩的时间戳字段E(TS) = TS′。解压缩算法实例(decoder)的执行过程则是从压缩数据流还源原始的时序数据流D(TS′) = TS,若TS = TSs则压缩算法是非松散的,否则就是松散的。

    3 品质指数(quality indices)

    为了度量时序数据压缩算法的性能,通常需要考虑三点特性:压缩率、压缩速度、精确度。

    1、压缩率:衡量压缩算法对原始时序数据压缩比率,可以定义为:

    ρ=s's

    其中,s′代表时序数据压缩后的体量,s为时序数据压缩前的原始体量。ρ的转置又被称为压缩因数,而品质指数(quality indices)则是被用来表述压缩收益的指标,其定义为:

    cg=100loge1ρ

    2、速度:度量压缩算法执行速度,通常用每字节压缩周期的平均执行时间(Cycles Per Byte,CPB)。

    3、精确度:又被称为失真度量(Distortion Criteria,DC),衡量被压缩算法重构后的时序数据保留信息可信度。为适应不同场景度量需要,可以用多种度量指标来确定,常用的指标有:

    Mean Squared Error:

    Root Mean Squared Error:

    Signal to Noise Ratio:

    Peak Signal to Noise Ratio:

    三 压缩算法

    目前常用的时序数据压缩算法主要有以下几种:

    1) Dictionary-Based (DB)

    1.1. TRISTAN
    1.2. CONRAD
    1.3. A-LZSS
    1.4. D-LZW

    2) Functional Approximation (FA)

    2.1. Piecewise Polynomial Approximation (PPA)
    2.2. Chebyshev Polynomial Transform (CPT)
    2.3. Discrete Wavelet Transform (DWT)

    3) Autoencoders:

    3.1. Recurrent Neural Network Autoencoder (RNNA)

    4) Sequential Algorithms (SA)

    4.1. Delta encoding, Run-length and Huffman (DRH)
    4.2. Sprintz
    4.3. Run-Length Binary Encoding (RLBE)
    4.4. RAKE

    5) Others:

    5.1. Major Extrema Extractor (MEE)
    5.2. Segment Merging (SM)
    5.3. Continuous Hidden Markov Chain (CHMC)

    1 Dictionary-Based (DB)

    DB算法实现理念是通过识别时序数据都存在的相同片段,并将片段定义为原子片段并以更精简的标识标记替代,形成字典供使用时以标识作为Key恢复,这种方式能够在保证较高数据压缩比的同时,降低错误率。此技术实现的压缩可能是无损的,具体取决于实现情况。此架构的主要挑战是:

    • 最大限度地提高搜索速度,以便在字典中查找时间系列片段;
    • 使存储在 dictionary 中的时间串段尽可能一般,以最大限度地缩短压缩阶段的距离。

    TRISTAN是基于DB策略实现的一种算法,TRISTAN算法把压缩划分为两个阶段处理,第一阶段适应性学习,第二阶段数据压缩。在学习阶段,TRISTAN字典表通过学习训练数据集来生成,或者结合专家经验定义特定模式的原子片段。有了字典表,在压缩阶段TRISTAN算法执行从以下公式中检索w的过程。

    s=w·D w ∈ {0,1}k

    其中,D是字典表,s为原子片段,K是压缩后的时序表征数据长度。TRISTAN解压过程则是通字典表D解释表征数据w得到原始时序数据的过程。

    CORAD算法在TRISTAN基础之上增加了自动数据关联信息,对两两时序数据片断进行基于Pearson相关系数的度量,以相邻矩阵M存储相关性,通过M与字典表D相结合的计算方式,进一步提升压缩比和数据解压精确度。

    Accelerometer LZSS(A-LZSS)算法是基于LZSS搜索匹配算法的DB策略实现,A-LZSS算法使用Huffman编码,以离线方式通过统计数据概率分布生成。

    Differential LZW (D-LZW)算法核心思想是创建一个非常大的字典表,它会随着时间的推移而增长。一旦字典表被创建,如果在字典表中发现缓冲区块,它就会被相应的索引替换,否则,新方块将插入字典作为新的条目。增加新的缓存区块是在保证非松散压缩的原则下实现,并不限制增加的数量,但随之而来的问题就是字典表有可能无限膨胀,这就导致D-LZW算法只适用于特定场景,比如输入时序数据流为有限词组或可枚举字符集组成。

    Zstandard(zstd)是一种基于Huffman编码Entropy coder实现的快速非松散DB压缩算法,字典表作为一个可选选项支撑参数控制开启关闭。算法实现由Facebook开源,支持压缩速度与压缩比之间的按需调整,能够通过牺牲压缩速度来换取更高压缩比,反之亦然。相比同类算法,zstd算法性能可参考下表数据。

    表 zstd算法性能对比

    2 Function Approximation (FA)

    函数近似类时序压缩算法FA的主要设计思想是假设时间序列可以表示为时间函数。由于难以避免出现无法处理的新值,找出能够准确描述整个时间序列的函数是不可行的,因此我们可以将时间序列划分成多个片段,对每个段找到一个近似时间函数来描述。

    由于找到一个能完整描述时间序列的函数 f:T → X 是不可行的,因此实现上我们需要考虑找出一个函数簇,以及其对映的参数来描述分段时序数据相对可行,但这也使得压缩算法为松散的实现。

    相比之下,FA类算法优点是它不依赖于数据取值范围,因此不需要有基于样本数据集的训练阶段,如果采用回归算法,我们只需要单独考虑划分好的单个时间片段。

    Piecewise Polynomial Approximation (PPA)是FA类算法的常用实现,此技术将时间序列分为固定长度或可变长度的多个段,并尝试找到接近细分的最佳多项式表述。尽管压缩是有损的,但可以先于原始数据的最大偏差进行修复,以实现给定的重建精度。PPA算法应用贪婪的方法和三种不同的在线回归算法来近似恒定的函数、直线和多项式。

    Chebyshev Polynomial Transform (CPT)实现原理与PPA算法类似,只是改进了支持使用不同类型多项式的能力。Discrete Wavelet Transform (DWT)使用Wavelet小波转换对时序数据进行转换。Wavelet是描述起止值都为0,中间值在此之间波动的函数,

    3 Autoencoders

    Autoencoder是一种特殊的神经网络,被训练生成用来处理时序数据。算法架构由对称的两部分组成:编码器encoder和解码器decoder。在给定n维时序数据输入的前提下,Autoencoder的编码器输出m(m<n)维的输出。解码器decoder则可以将m维输出还原为n维输入。Recurrent Neural Network Autoencoder (RNNA)是Autoencoder的一种典型实现,通过RNN来实现对时序数据的压缩表述。

    图 Autoencoder算法实现结构

    4 序列化算法Sequential Algorithms(SA)

    序列化算法SA实现原理是顺序融合多种简单压缩技术实现对时序数据压缩,常用技术有:

    • Huffman coding:编码器创建一个字典,将每个符号关联到二进制表示,并以相应的表示替换原始数据的每个符号。
    • Delta encoding:此技术对目标文件进行编码,以处理一个或多个参考文件。在时间系列的特定情况下,每个元素在 t 被编码为∆(xt,xt=1)。
    • Run-length encoding:在此技术中,每个运行(连续重复相同值的序列)都与对(vt, o)进行子图,其中vt是时间t值,o是连续发生次数。
    • Fibonacci binary encoding:此编码技术基于 Fibonacci 序列实现。

    Delta encoding, Run-length and Huffman (DRH)算法是一种融合了Delta encoding、Huffman coding、Run-length encoding和Huffman coding四种技术的压缩算法,算法实现是非松散的且计算复杂度相对较小,适合在边缘短实现对数据的压缩解压,也因此适合应用在物联网、工业互联网、车联网等需要边缘短采集处理时序数据的场景。

    Sprintz就是一种专门针对物联网场景设计的SA算法,在算法设计中考虑了对物联网场景中能源消耗、速度等时序指标波动规律因素,为以下需求而特别优化了算法设计:

    1)对较小片段数据的快速处理

    2)底计算复杂度的压缩、解压缩,以适应边缘端有限的计算资源

    3)对实时采集时序数据的快速压缩、解压缩

    4)非松散压缩

    为了在处理IoT物联网环境时序数据上取得更好的压缩效果,Sprintz算法通过预测数据生成趋势的方式来提升算法对数据的压缩性能,其主要实现的算法过程包括以下几部分:

    1)预测:基于delta encoding或FIRE算法通过统计历史时序数据,对新样本数据生成规律进行预测;

    2)Bit packing:打包预测错误信息数据和包头描述用来解压数据的信息;

    3)Run-length encoding:如果压缩过程中通过预测算法未发现任何错误信息,则略过bit packing过程的错误信息发送,并在下次发生错误时在打包预测错误信息的包头中记录略过的数据长度;

    4)Entropy coding:用Huffman coding对big packing生成的包文件进行编码。

    Run-Length Binary Encoding (RLBE)算法 也是一种为IoT物联网场景下数据压缩解压,适应物联网边缘端有限计算、存储资源环境的常用非松散SA时序数据压缩算法,RLBE算法融合了delta encoding,run-length encoding和Fibonacci coding三种技术,其执行过程如下图所示。

    图 Run-Length Binary Encoding (RLBE)算法执行过程图示

    RAKE算法原理是通过检测时序数据稀疏性来实现对数据的压缩。RAKE为非松散压缩,执行过程包涵预处理和压缩两个主要过程。预处理过程中,RAKE算法设计由字典表来转换原始数据。压缩过程则对预处理的输出数据进行稀疏性检测,压缩相邻的相同数据。

    5 其他类型算法

    Major Extrema Extractor (MEE)算法通过统计指定时间段的时序数据最大、最小值来对数据进行压缩。Segment Merging (SM)算法则把时序数据抽象为时间戳和值及偏差组成的片段,可用元组(t,y,δ)表述,其中t为开始时间,y是数值常量标识,δ是数据片段偏差。Continuous Hidden Markov Chain (CHMC)算法则利用马尔可夫链概率模型来将时序数据定义为一系列有限状态节点集合S及链接节点的状态迁移概率边集合A。

    四 总结

    时序数据是物联网、工业互联网、车联网等场景下生成数据总量中占比最高的数据类型,有效的压缩算法不但可以降低数据存储成本,同时可以在边缘到中心,中心到云的数据传输过程中节约网带宽资源,降低数据同步时间。对于作为时序数据核心存储中枢的时序数据库,压缩算法性能更是至关重要。阿里云多模数据库Lindorm核心数据库引擎之一时序引擎Lindorm TSDB内置的自研、高效数据压缩算法针对物联网、工业互联网、车联网等智能、互联场景针对性优化,进一步提升了时序数据存储的ROI,新一代云原生智能互联系统提供必要支撑。

    作者 | 仁威

    原文链接

    本文为阿里云原创内容,未经允许不得转载。

    展开全文
  • 十分钟看懂时序数据库(III)- 压缩

    千次阅读 2018-03-15 11:24:42
    物联网邻域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早...压缩对于时序数据库是至关重要的。因为时序数据库面对的物联网场景每天都会产...

    物联网邻域近期如火如荼,互联网和传统公司争相布局物联网。作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。

    压缩对于时序数据库是至关重要的。因为时序数据库面对的物联网场景每天都会产生上亿条数据。众所周知,在大数据时代的今天数据的重要性是不言而喻的,数据就是公司的未来。但如果无法对这些时序数据进行很好的管理和压缩,那将给客户带来非常高的成本压力。

    如前文提到的,工业物联网环境监控方向的客户,一年产生1P的数据,如果每台服务器10T的硬盘,那么总共需要100多台。按照每台服务器3万来算,一年就需要300万的支出,这还不包括维护人员的成本。

    压缩是个非常大的话题,本文希望能够先从大的宏观角度给出一个轮廓,讲述压缩的本质,压缩的可计算性问题。再从时序数据压缩这一个垂直领域,给出无损压缩和有损压缩各一个例子进行说明,希望能够抛砖引玉。

    1.压缩的故事 
    先来讲个有关压缩的故事,外星人拜访地球,看中了大英百科全书,想要把这套书带回去。但这套书太大,飞船放不下。于是外星人根据飞船的长度,在飞船上画了一个点。这样外星人心满意足的返回了自己的星球,因为这个点就存储了整个大英百科全书。

    这个并不是很严谨的故事,却道出了压缩的本质:用计算时间换取存储空间。外星人在飞船上画的点非常有技术含量,可以说是黑科技,代表一个位数非常长的不循环小数。而这串数字正代表了整个大英百科全书的内容。

    2.压缩的两个问题 
    再来回答两个宏观的问题,帮助我们认识在压缩这件事上哪些是我们能做的,哪些是不能做的。

    第一个问题:是否存在一个通用的压缩算法(Universal Compression),也就是说某个压缩算法能够压缩任意的数据。答案是否定的,并不存在这样的通用压缩算法。

    用反证法可以做个快速的证明。假设存在通用的压缩算法,也就是说有个压缩算法,对于长度为n的字符串,总能压缩到长度小于n的字符串。

    图片描述

    那么必定存在两个长度为n的字符串A,B,经过压缩得到同一个字符串。这样解压缩算法没有办法正确的解压。所以假设错误,并不存在通用的压缩算法。

    第二个问题:是否能写出一个函数,输入字符串,可以得到这个字符串最短表示的长度。答案也是否定的,也就是说我们无法证明某个算法是最好的算法。柯尔莫哥洛夫复杂性的不可计算性解释的就是这个问题。用的也是反证法,有兴趣的朋友可以自行百度了解(注1)。

    这两个问题的答案,告诉我们三件事情,1、压缩算法的选择需要具体情况具体分析,不可压缩的字符串总是存在。2、不要妄图获得最好的压缩算法,它是不可计算的。因为总有你想不到的压缩算法存在。举个例子,[一百万个0的字符串,以“foo”作为key,经过AES加密算法的CBC模式得到的字符串]。这串字符串看起来完全是随机的,不可压缩的。但我却用43个中文(中括号之间的内容)就表示了出来。3、压缩是件很难很有技术含量的事情,需要不断的挖掘,才能将他做到更好。

    3.时序数据压缩 
    针对不同的数据,会有不同的压缩,大致压缩的对象可以分为文档、音频、视频等。如果直接采用文档的压缩算法用于时序数据,效果并不理想。下图是一些常用的压缩算法的benchmark,可以看到压缩率那一栏最高也只能够达到3左右的压缩率(压缩率=原始数据大小/压缩后的数据大小)。更多压缩算法可以查看注2。

    如果要得到更好的压缩率,我们需要采取更加适合时序数据的压缩算法。时序数据的压缩可以分为无损压缩和有损压缩。

    图片描述

    无损压缩 
    无损压缩是说被压缩的数据和解压后的数据完全一样,不存在精度的损失。对数据的压缩说到底是对数据规律性的总结。时序数据的规律可以总结为两点:1、timestamp稳定递增、2、数值有规律性,变化稳定。下面来举个例子。

    图片描述

    上图是一组时序数据,如果我们一行一行的看感觉压缩有点困难,但如果我们一列一列的看,压缩方案就呼之欲出了。

    先看timestamp那一列是等差递增数列,可以用[1467627245000,1000,4]来表示。

    1467627245000代表了第一个时间,1000代表后一个时间比前一个时间的大1000,4代表了这样的规律出现了4次。如果一共有100个这样规律的timestamp,那就意味着,我们用3个Long型就可以表示出来。timestamp压缩率高达33。

    再进一步观察看value那一列,如果取差值,可以得到(6,-5,2,-5),全部都加5得到(11,0,7,0),这些数值都可以用4bit来表示。也就是用[23,5,4,0xb0700000]来表示(23,22,24,25,24)。其中的4代表后续一共有4个数。如果这样的规律一直维持到100个Int的value,就可以用16个Int来代表,压缩率高达6.3。

    具体的情景会复杂很多,在此只是简单举个例子。InfluxDB无损压缩算法在其页面上有完整的阐述(注3),可以配合开源源码进行更加深入的理解。针对于浮点数类型,Facebook在Gorilla论文中(注4)提到的非常高效的无损压缩算法,已经有很多文章进行分析。

    InfluxDB对于浮点型也采用这个算法。

    有损压缩 
    有损压缩的意思是说解压后的数据和被压缩的数据在精度上有损失,主要针对于浮点数。通常都会设置一个压缩精度,控制精度损失。时序数据的有损压缩的思路是拟合。也就是用一条线尽可能的匹配到这些点,可以是直线,也可以是曲线。

    最有名的时序数据有损压缩是SOIsoft公司的SDA算法,中文称为旋转门压缩算法。 
    图片描述

    在上图中,红色的点是上一个记录的点,空心的点是被丢掉的点,绿色的点是当前的点,黑色的点是当前要记录的点。

    可以看到图左边,当前点和上一个记录点以及压缩精度的偏差值形成的矩形可以包含中间的点,所以这些点都是可以丢掉的。

    再看图右边,当前点和上一个记录点形成的矩形无法包含中间的点,所以把上一个点记录下来。如此进行下去,可以看到,大部分的数据点都会被丢掉。查询的时候需要根据记录的点把丢掉的点在插值找回来。

    有损压缩除了可以大幅减少存储成本。如果结合设备端的能力,甚至可以减少数据的写入,降低网络带宽。

    4.总结 
    虽然判断压缩算法最优是不可计算的,但是设计好的压缩算法仍然是可计算的问题。可以看到,前面提到的时序数据的无损压缩有损压缩算法都会基于时序数据的特征采取方案,达到更好的压缩率。现在deep learning非常的火,让人很好奇它是不是可以给数据压缩带来新的方案。

    注1:https://zh.wikipedia.org/zh-cn/%E6%9F%AF%E6%B0%8F%E5%A4%8D%E6%9D%82%E6%80%A7 
    注2:https://github.com/inikep/lzbench/blob/v1.7.1/lzbench171_sorted.md 
    注3:https://docs.influxdata.com/influxdb/v1.0/concepts/storage_engine/#compression 
    注4:http://www.vldb.org/pvldb/vol8/p1816-teller.pdf

    展开全文
  • 数据库的安装分为两个部分: 文件解压和复制过程; 安装好之后MySql服务器的配置过程。 2.数据库的安装 2.1 打开下载的mysql安装文件,双击解压缩,运行“mysql-5.5.40-win64.msi”(本人电脑安装的是这个版本,有需要的...
  • 时空数据库中的轨迹数据压缩

    千次阅读 2021-04-15 21:25:48
    时空数据库管理移动对象,比如:汽车、飞机、地貌变化等。空间数据库是时空数据库的特例,即时刻固定。 轨迹压缩 每秒钟都会从 GPS 获取大量(x,y,t)格式的数据,如何在不降低物体轨迹精度的前提下减小数据量呢(也...

    时空数据库管理移动对象,比如:汽车、飞机、地貌变化等。空间数据库是时空数据库的特例,即时刻固定。

    轨迹压缩

    每秒钟都会从 GPS 获取大量 (x,y,t) 格式的数据,如何在不降低物体轨迹精度的前提下减小数据量呢(也就是数据都完全采集到了,但是数据量太大了,所以我们想少存一些数据,但又不能造成数据失效,也就是存入的那些少量点连起来的轨迹和原始轨迹不能偏差太大)?主要有三个指标:处理时间、压缩率、误差测量。

    误差:原始轨迹位置与估计轨迹位置之间的距离。主要有两种误差测量指标:垂直欧式距离、时间同步欧式距离。

    (1)垂直欧式距离:如下左图所示,p1,p7,p12是压缩后的点(也就是保留下来的存到文件中的点,其余点被舍弃),垂直度量则为原始轨迹点到压缩后轨迹之间的投影距离。

    (2)时间同步欧式距离:如下右图所示,p1,p7,p12 作为压缩后的点,假定物体移动的速度恒定,那么 p1,p2 之间的时间和 p1,p′2 之间的时间相同。

    轨迹压缩分为在线压缩和离线压缩两类。

    (1)离线压缩:收集完整的轨迹数据后,先压缩再传输至服务器。常用的算法:道格拉斯-普客(DP)算法。

    (2)在线压缩:根据要求的精度选择性的在线更新。常用的算法:滑动窗口, 开放窗口。

    1. 离线压缩 - DP算法

       在估计轨迹中根据垂直欧式距离保留方向趋势,将原始轨迹替换为近似直线段。如果替换不满足指定的误差要求,则通过选择误差最大的位置点作为分割点,递归地将原问题划分为两个子问题,直到近似轨迹与原始轨迹之间的误差低于指定的误差阈值。

       举个例子:下面左图中,估计轨迹是 p0 和 p16,p9 引入了最大误差,于是切分为 p0,p9和 p9,p16,如下右图。 

             

       p0,p9 中 p3 又引入了最大误差,因此再将 p3 作为分割点切开。

      

     

    2. 在线压缩 - 滑动窗口

       用一条有效的线段拟合一个增长的滑动窗口中的位置点,并继续增长滑动窗口,直到近似误差超过某个误差界。

       首先将轨迹的第一个点初始化为锚点 p0​​​​​​ ,然后开始增大滑动窗口,当一个新的点 p{_i} 加入到滑动窗口中时,用线段 p{_0}p{_i} 来拟合滑动窗口内所有的原始轨迹点。只要窗口内的轨迹相对于线段 p{_a}p{_i} 的距离误差小于用户指定的误差阈值,滑动窗口就会继续增大。否则,将线段p{_a}p_{i-1}作为近似轨迹的一部分,并将 p_{i-1} 设置为新的锚点。该算法将一直持续到访问完原始轨迹中的所有位置点。

       举个例子:当滑动窗口从 p0 增长到 p0,p1,p2,p3 时,拟合线段与原始轨迹之间的误差均不大于指定的误差阈值。当包含 p4 时,p2 的误差超过阈值,因此 p0p3 被包含在近似轨迹中,然后 p3 被设置为新的锚点(也就是说加入p4之后,超出阈值,则用p4之前的那个点p3作为锚点)。下图绿线即为最终生成的轨迹。

         

     

    3. 在线压缩-开放窗口

       与滑动窗口不同,开放窗口选择滑动窗口中误差最大的点作为逼近线段的闭合点和新的锚点。当包含 p4 时,p2 的误差超过阈值,因此 p0p2 被包含在近似轨迹中,p2 被设置为新锚点(也就是说到了p4的时候超出阈值了,在p0p4的情形下,是因为p2造成了超出阈值,则把p2作为锚点,也就是把肇事者作为锚点)。

         

     

    轨迹地图匹配 

    地图匹配(Map Matching)是指将行车轨迹的经纬度采样序列与数字地图路网匹配的过程,其本质上是平面线段序列的模式匹配问题。在实际应用中,GPS 采样信号的质量会严重影响地图匹配结果:采样频率的降低、定位误差的加大、信号的丢失,都会使匹配的不准确性增加。这些情况在实际应用中经常出现。如何在这些情况下仍能保持较高的路径匹配准确率是个值得研究的问题。

    (1)局部/增量算法:是贪婪算法,每次确定一个匹配点,下个点从已经确定的匹配点开始。这些方法根据距离和方向相似性来找到局部最优点或边。(在线匹配)

    (2)全局算法:是要从路网中找到一条与采样轨迹最接近的匹配轨迹。为了测量采样轨迹和匹配轨迹的相似性,大多数算法使用“Frechet距离”。(离线匹配)

    Frechet 距离用于衡量两个曲线的相似度,后又被描述为“遛狗最短狗绳问题”,即:主人走路径 A,狗走路径 B,各自独立走完这两条路径过程中所需要的最短狗绳长度。

    举个例子:下图中黑色折线是人的轨迹,蓝色折线是狗的轨迹,刚开始人和狗都位于位置 0,现在让它们往前走,速度可以不同,这里假设人狗速度相同,也就是说人和狗的距离不会超过 1 个坐标,两者或交替前进或同时前进。我们的目的是用最短的狗绳走完这两条轨迹,橙色表示狗绳。

    现在人狗都位于位置 0,至少需要的狗绳长度如橙线所示,接下来有三种前进方式:狗先走一步、人先走一步、人狗同时走。观察这三种前进方式狗绳长度的变化,我们要找出使狗绳长度最短的前进方式。显然狗先走一步,狗绳最短,如下右图,此时人在位置 0,狗在位置 1。

                 

    用坐标 (0,1) 表示当前人狗位置,下一步人先走,坐标变为 (1,1),如下左图。下一步,人狗同时走,坐标变为 (2,2),如下右图:

                    

    接下来,人先走一步,坐标变为 (3,2),如下左图。因为速度限制,所以接下来只能狗前进,坐标变为 (3,3),如下右图。

                            

    接下来,人狗同时前进,坐标变为 (4,4),如下左图。然后人前进一步,坐标变为 (5,4),如下右图。

                 

    接下来,狗前进一步,坐标变为 (5,5),如下左图。然后人狗同时前进一步,坐标变为 (6,6),如下右图。

            

    所以最终算法的结果就是下图中红色区域内的狗绳长度,就是最短所需狗绳长度。

       

                

    递推公式为:

    dp[i][j]=max{min{ dp[i−1][j], dp[i−1][j−1], dp[i][j−1] }, E(i,j) }

    E(i,j) 表示两点之间的欧式距离。这个递推公式是两个对象速度相同的情形(交替前进),人和狗可以从上面三种情况到达 i,j点。所以我们需要找到这三个位置最小的那一个距离与 i,j 点的距离进行比较。

    展开全文
  • 在设计一个数据库系统的时候,我们会根据具体的需要...用户可以通过DBMS访问数据库中的数据,DBMS对数据库进行统一的管理和控制,以保证数据库的安全性、完整性、原子性等。 目前DBMS有几百种,点击这里查看排名,我
  • 实时数据库中的数据压缩技术

    千次阅读 2016-05-25 18:31:28
    实时数据库中的数据压缩技术 标签: 数据库算法磁盘网络图形工作 2009-09-21 11:22 2715人阅读 评论(0) 收藏 举报  分类:   实时数据库(4)  版权声明:本文为博主原创文章,未经博主允许不得转载...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储...
  • 这两种数据库的研究,不仅可以用来评估透明压缩对不同种类数据库中写放大的影响,还可以帮助我们比较不同的树形结构下数据库中写放大的情况。 对于MySQL,其数据的写入主要分为图3所示的四个部分: Binlog——...
  • 时序数据库

    千次阅读 2022-04-14 11:04:43
    传统数据库这些数据进行存储、查询、分析等处理操作时捉襟见肘,迫切需要一种专门针对时序数据来做优化的数据库系统,即时间序列数据库。 什么是时序数据 从定义上来将,时间序列数据Time Series Data (TSD),...
  • eDNA系统分为服务器、客户端和接口三个方面,分别提供采集和存储现场实时 数据、浏览和处理生产信息及数据库的通信等功能。本文详细介绍了eDNA实时数据库系统所采用的以哈夫曼编码为基础的无损数据压缩方法。最后,...
  • 文章目录2022-1-12第一章 数据库系统概述1.4 数据库系统的内部体系结构1.4.1 数据库系统的三级模式结构1.数据库系统模式的概念2.数据库系统的三级模式结构(1) 模式(2) 外模式(3) 内模式1.4.2 数据库系统的二级映像与...
  • 简介:目前,物联网、工业互联网、车联网等智能互联技术在各个行业场景下快速普及应用,导致联网传感器、智能设备数量急剧增加,随之而来的海量时序监控数据存储、处理问题,也为时序数据库高效压缩、存储数据能力...
  • OLAP数据库

    千次阅读 2021-09-10 23:36:00
    OLAP百家争鸣 ...联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 Codd认为联机事务处理(OLT
  • ArangoDB 多模型数据库概念

    千次阅读 2020-08-23 13:33:01
    无论是为一个新的项目或者正在开发的功能模块又或者某一次系统升级去选择技术方案的时候,我们很难做出一个从始至终都非常match的技术方案或者工具,尤其是在为项目选择合适的数据库时,我们更是难以选择,是文档型...
  • 一般的数据库都会采用多模块或多子系统的架构来构建数据库,从而方便数据库项目团队依据现实的场景来组合不同的子模块,进而构造出一众丰富的数据库产品。而存储引擎就是这一众模块中极为重要的一环。 一、存储引擎...
  • 学习 MySQL 必备的几个示例数据库

    千次阅读 多人点赞 2020-06-17 16:47:54
    MySQL 官方网站提供了以下几个示例数据库:Sakila、Employees、world、world_x 以及 menagerie。这些数据库既可以用于日常学习和测试,也可以作为我们设计时数据库的一个参考。本文就来介绍一下这些数据库的模式结构...
  • 达梦数据库备份

    千次阅读 2022-04-12 10:42:39
    从V2.0 版本开始,使用 DMRMAN 工具进行脱机备份,并且支持异常关闭的数据库进 行脱机库备份。备份异常关闭的数据库,要求配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。 脱机备份:...
  • 数据库MySQL详解

    万次阅读 多人点赞 2018-07-24 20:03:47
    什么是数据库管理系统 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库对数据库进行统一管理和控制,以保证数据库的安全性和完整性。...
  • 随着办公自动化和电子商务的飞速发展,企业信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段 一个合理...
  • MySQL数据库备份

    千次阅读 2022-06-21 20:36:53
    日志文件在数据库进行备份和恢复时起到了很重要的作用 常用的日志文件默认保存在 /usr/local/mysql/data 目录下 可在 /etc/my.cnf 配置文件中的 [mysqld] 中进行日志的路径修改、开启、关闭等操作用于记录 mysql ...
  • 列式数据库简介

    千次阅读 2020-06-26 21:13:35
    什么是列式数据库? 列数据存储区也称为面向列的DBMS或列式数据库管理系统。列存储DBMS将数据存储在列而不是行中。关系数据库管理系统(RDBMS)将行中的数据和数据属性存储为列标题。基于行的DBMS和基于列的DBMS都...
  • 数据库

    千次阅读 2019-04-30 15:29:34
    用户可以文件中的数据进行增加、删除、修改、查找等操作。随着数据库技术的不断发展,数据库产品越来越多,常见的有Oracle、SQL Server、MySQL等。 Oracle:Oracle公司推出的数据库管理系统,在数据库领域一直处....
  • 数据库原理分析(第四版)

    千次阅读 2020-09-22 10:18:20
    计算机科学之数据库原理及应用教程之我见(第四版) 信息、数据、数据处理与数据管理 信息的定义:信息是人脑现实世界事物的存在方式、运动状态以及事物之间联系的抽象反应,信息是客观存在的,人类有意识信息...
  • 数据库系统的结构和组成

    千次阅读 2020-06-09 22:35:00
    数据库最终用户角度看,数据库系统的结构分为:单用户结构、主从式结构、分布式结构、 客户-服务器、浏览器-应用服务器/数据库服务器多层结构等。 1 数据库系统模式的概念 “型” 和“值” 的概念 型(Type) ...
  • 数据库原理及应用

    千次阅读 2022-02-14 12:36:27
    1.1 数据库系统概述 1.1.1 数据库的四个基本概念 1 数据(Data) 数据是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物...
  • 总共17节课程,囊括了基础简介、管理使用、处理查询、函数应用、触发、安全性等等,即使压缩后也有六百多兆,然而每次只能上传60M,所以分为了11个部分!
  • 数据库原理第五章,数据库的存储结构
  • 关系型数据库与非关系型数据库详解

    千次阅读 多人点赞 2021-02-25 15:51:48
    关系数据库与非关系型数据库一、数据库概述1、关系型数据库2、非关系型数据库二、数据库区别1、数据存储方式不同2、扩展方式不同3、事务性的支持不同三、非关系型数据库产生背景四、Redis简介1、Redis 优点五、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,780
精华内容 38,312
热门标签
关键字:

对数据库的压缩分为