blob: 6fde2e96e3ef1e01a7b3fd14d24613bafc79cabf [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[926],{1489:function(t,e,a){"use strict";a.r(e);var s=a(69),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"tsfile-文件格式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tsfile-文件格式"}},[t._v("#")]),t._v(" TsFile 文件格式")]),t._v(" "),a("h2",{attrs:{id:"_1-tsfile-设计"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-tsfile-设计"}},[t._v("#")]),t._v(" 1. TsFile 设计")]),t._v(" "),a("p",[t._v("本章是关于 TsFile 的设计细节。")]),t._v(" "),a("h3",{attrs:{id:"_1-1-变量的存储"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-1-变量的存储"}},[t._v("#")]),t._v(" 1.1 变量的存储")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("大端存储")]),t._v(" "),a("ul",[a("li",[t._v("比如: "),a("code",[t._v("int")]),t._v(" "),a("code",[t._v("0x8")]),t._v(" 将会被存储为 "),a("code",[t._v("00 00 00 08")]),t._v(", 而不是 "),a("code",[t._v("08 00 00 00")])])])]),t._v(" "),a("li",[a("strong",[t._v("可变长的字符串类型")]),t._v(" "),a("ul",[a("li",[t._v("存储的方式是以一个 "),a("code",[t._v("int")]),t._v(" 类型的 "),a("code",[t._v("Size")]),t._v(" + 字符串组成。"),a("code",[t._v("Size")]),t._v(" 的值可以为 0。")]),t._v(" "),a("li",[a("code",[t._v("Size")]),t._v(" 指的是字符串所占的字节数,它并不一定等于字符串的长度。")]),t._v(" "),a("li",[t._v('举例来说,"sensor_1" 这个字符串将被存储为 '),a("code",[t._v("00 00 00 08")]),t._v(' + "sensor_1" (ASCII编码)。')]),t._v(" "),a("li",[t._v('另外需要注意的一点是文件签名 "TsFile000001" ('),a("code",[t._v("Magic String")]),t._v(" + "),a("code",[t._v("Version")]),t._v("), 因为他的 "),a("code",[t._v("Size(12)")]),t._v(" 和 ASCII 编码值是固定的,所以没有必要在这个字符串前的写入 "),a("code",[t._v("Size")]),t._v(" 值。")])])]),t._v(" "),a("li",[a("strong",[t._v("数据类型")]),t._v(" "),a("ul",[a("li",[t._v("0: BOOLEAN")]),t._v(" "),a("li",[t._v("1: INT32 ("),a("code",[t._v("int")]),t._v(")")]),t._v(" "),a("li",[t._v("2: INT64 ("),a("code",[t._v("long")]),t._v(")")]),t._v(" "),a("li",[t._v("3: FLOAT")]),t._v(" "),a("li",[t._v("4: DOUBLE")]),t._v(" "),a("li",[t._v("5: TEXT ("),a("code",[t._v("String")]),t._v(")")])])]),t._v(" "),a("li",[a("strong",[t._v("编码类型")]),t._v(" "),a("ul",[a("li",[t._v("0: PLAIN")]),t._v(" "),a("li",[t._v("1: PLAIN_DICTIONARY")]),t._v(" "),a("li",[t._v("2: RLE")]),t._v(" "),a("li",[t._v("3: DIFF")]),t._v(" "),a("li",[t._v("4: TS_2DIFF")]),t._v(" "),a("li",[t._v("5: BITMAP")]),t._v(" "),a("li",[t._v("6: GORILLA")]),t._v(" "),a("li",[t._v("7: REGULAR")])])]),t._v(" "),a("li",[a("strong",[t._v("压缩类型")]),t._v(" "),a("ul",[a("li",[t._v("0: UNCOMPRESSED")]),t._v(" "),a("li",[t._v("1: SNAPPY")])])]),t._v(" "),a("li",[a("strong",[t._v("预聚合信息")]),t._v(" "),a("ul",[a("li",[t._v("0: min_value")]),t._v(" "),a("li",[t._v("1: max_value")]),t._v(" "),a("li",[t._v("2: first_value")]),t._v(" "),a("li",[t._v("3: last_value")]),t._v(" "),a("li",[t._v("4: sum_value")])])])]),t._v(" "),a("h3",{attrs:{id:"_1-2-tsfile-概述"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-tsfile-概述"}},[t._v("#")]),t._v(" 1.2 TsFile 概述")]),t._v(" "),a("p",[t._v("下图是关于TsFile的结构图。")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://user-images.githubusercontent.com/7240743/78330206-05cc6380-75b6-11ea-96c7-06f6f7346f6a.png",alt:"TsFile Breakdown"}})]),t._v(" "),a("p",[t._v("此文件包括两个设备 d1、d2,每个设备包含三个测点 s1、s2、s3,共 6 个时间序列,d1为蓝色,d2为紫色。每个时间序列包含两个 Chunk。")]),t._v(" "),a("p",[t._v("元数据分为三部分")]),t._v(" "),a("ul",[a("li",[t._v("按时间序列组织的 ChunkMetadata 列表")]),t._v(" "),a("li",[t._v("按时间序列组织的 TimeseriesMetadata")]),t._v(" "),a("li",[t._v("TsFileMetadata")])]),t._v(" "),a("p",[t._v("查询流程:以查 d1.s1 为例")]),t._v(" "),a("ul",[a("li",[t._v("反序列化 TsFileMetadata,得到 d1 的所有 TimeseriesMetadata 的位置")]),t._v(" "),a("li",[t._v("反序列化 d1 的所有 TimeseriesMetadata,并得到 d1.s1 的 TimeseriesMetadata")]),t._v(" "),a("li",[t._v("根据 d1.s1 的 TimeseriesMetadata,反序列化其所有 ChunkMetadata")]),t._v(" "),a("li",[t._v("根据 d1.s1 的每一个 ChunkMetadata,读取其 Chunk 数据")])]),t._v(" "),a("h4",{attrs:{id:"_1-2-1-文件签名和版本号"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-1-文件签名和版本号"}},[t._v("#")]),t._v(" 1.2.1 文件签名和版本号")]),t._v(" "),a("p",[t._v('TsFile文件头由 6 个字节的 "Magic String" ('),a("code",[t._v("TsFile")]),t._v(") 和 6 个字节的版本号 ("),a("code",[t._v("000002")]),t._v(")组成。")]),t._v(" "),a("h4",{attrs:{id:"_1-2-2-数据文件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-2-数据文件"}},[t._v("#")]),t._v(" 1.2.2 数据文件")]),t._v(" "),a("p",[t._v("TsFile文件的内容可以划分为两个部分: 数据(Chunk)和元数据(XXMetadata)。数据和元数据之间是由一个字节的 "),a("code",[t._v("0x02")]),t._v(" 做为分隔符。")]),t._v(" "),a("p",[a("code",[t._v("ChunkGroup")]),t._v(" 存储了一个 "),a("em",[t._v("设备(device)")]),t._v(" 一段时间的数据。")]),t._v(" "),a("h5",{attrs:{id:"chunkgroup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkgroup"}},[t._v("#")]),t._v(" ChunkGroup")]),t._v(" "),a("p",[a("code",[t._v("ChunkGroup")]),t._v(" 由若干个 "),a("code",[t._v("Chunk")]),t._v(", 一个字节的分隔符 "),a("code",[t._v("0x00")]),t._v(" 和 一个"),a("code",[t._v("ChunkFooter")]),t._v("组成。")]),t._v(" "),a("h5",{attrs:{id:"chunk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunk"}},[t._v("#")]),t._v(" Chunk")]),t._v(" "),a("p",[t._v("一个 "),a("code",[t._v("Chunk")]),t._v(" 存储了一个 "),a("em",[t._v("测点(measurement)")]),t._v(" 一段时间的数据,Chunk 内数据是按时间递增序存储的。"),a("code",[t._v("Chunk")]),t._v(" 是由一个字节的分隔符 "),a("code",[t._v("0x01")]),t._v(", 一个 "),a("code",[t._v("ChunkHeader")]),t._v(" 和若干个 "),a("code",[t._v("Page")]),t._v(" 构成。")]),t._v(" "),a("h5",{attrs:{id:"chunkheader"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkheader"}},[t._v("#")]),t._v(" ChunkHeader")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("传感器名称(measurementID)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("chunk大小(dataSize)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("chunk的数据类型(dataType)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的page数量(numOfPages)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("压缩类型(compressionType)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("编码类型(encodingType)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("Max Tombstone Time(暂时没用)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])])])]),t._v(" "),a("h5",{attrs:{id:"page"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#page"}},[t._v("#")]),t._v(" Page")]),t._v(" "),a("p",[t._v("一个 "),a("code",[t._v("Page")]),t._v(" 页存储了 "),a("code",[t._v("Chunk")]),t._v(" 的一些数据。 它包含一个 "),a("code",[t._v("PageHeader")]),t._v(" 和实际的数据(time-value 编码的键值对)。")]),t._v(" "),a("p",[t._v("PageHeader 结构")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("压缩前数据大小(uncompressedSize)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("SNAPPY压缩后数据大小(compressedSize)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的values的数量(numOfValues)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("最大时间戳(maxTimestamp)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("最小时间戳(minTimestamp)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("该页最大值(max)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Type of the page")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("该页最小值(min)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Type of the page")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("该页第一个值(first)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Type of the page")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("该页值的和(sum)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("double")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("该页最后一个值(last)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("Type of the page")])])])]),t._v(" "),a("h5",{attrs:{id:"chunkgroupfooter"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkgroupfooter"}},[t._v("#")]),t._v(" ChunkGroupFooter")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("设备Id(deviceID)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("ChunkGroup大小(dataSize)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的chunks的数量(numberOfChunks)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])])])]),t._v(" "),a("h4",{attrs:{id:"_1-2-3-元数据"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-3-元数据"}},[t._v("#")]),t._v(" 1.2.3 元数据")]),t._v(" "),a("h5",{attrs:{id:"_1-2-3-1-tsdevicemetadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-3-1-tsdevicemetadata"}},[t._v("#")]),t._v(" 1.2.3.1 TsDeviceMetaData")]),t._v(" "),a("p",[t._v("第一部分的元数据是 "),a("code",[t._v("TsDeviceMetaData")])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("开始时间(startTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("结束时间(endTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的ChunkGroup的数量")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("所有的ChunkGroupMetaData(chunkGroupMetadataList)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("list")])])])]),t._v(" "),a("h6",{attrs:{id:"chunkgroupmetadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkgroupmetadata"}},[t._v("#")]),t._v(" ChunkGroupMetaData")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("设备Id(deviceID)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("在文件中ChunkGroup开始的偏移量(startOffsetOfChunkGroup)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("在文件中ChunkGroup结束的偏移量(endOffsetOfChunkGroup)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("版本(version)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的ChunkMetaData的数量")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("所有的ChunkMetaData(chunkMetaDataList)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("list")])])])]),t._v(" "),a("h6",{attrs:{id:"chunkmetadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#chunkmetadata"}},[t._v("#")]),t._v(" ChunkMetaData")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("传感器名称(measurementUid)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("文件中ChunkHeader开始的偏移量(offsetOfChunkHeader)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("数据的总数(numOfPoints)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("开始时间(startTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("结束时间(endTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("数据类型(tsDataType)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("chunk的统计信息")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("TsDigest")])])])]),t._v(" "),a("h6",{attrs:{id:"tsdigest"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tsdigest"}},[t._v("#")]),t._v(" TsDigest")]),t._v(" "),a("p",[t._v("目前有五项统计数据: "),a("code",[t._v("min_value, max_value, first_value, last_value, sum_value")]),t._v("。")]),t._v(" "),a("p",[t._v("在 v0.8.0 版本中, 统计数据使用 name-value 编码的键值对。 也就是 "),a("code",[t._v("Map<String, ByteBuffer> statistics")]),t._v("。 name使用的一个字符串类型(需要注意的是字符串前有个长度标识)。 对于值来讲,它有可能是很多种类型,所以需要用 integer 类型用来描述值的长度。 比如, 如果 "),a("code",[t._v("min_value")]),t._v(' 是一个 integer 类型的 0, 那么在 TsFile 中将被存储为 [9 "min_value" 4 0]。')]),t._v(" "),a("p",[t._v("下面是一个调用 "),a("code",[t._v("TsDigest.deserializeFrom(buffer)")]),t._v(" 方法后的数据示例。在 v0.8.0 版本中, 我们会得到")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('Map<String, ByteBuffer> statistics = {\n "min_value" -> ByteBuffer of int value 0, \n "last" -> ByteBuffer of int value 19,\n "sum" -> ByteBuffer of double value 1093347116,\n "first" -> ByteBuffer of int value 0,\n "max_value" -> ByteBuffer of int value 99\n}\n')])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br")])]),a("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/33376433/63765352-664a4280-c8fb-11e9-869e-859edf6d00bb.png"}}),t._v(" "),a("p",[t._v("在 v0.9.0 版本中, 为了提高空间和时间的效率,存储的结构被修改为数组的形式。也就是 "),a("code",[t._v("ByteBuffer[] statistics")]),t._v("。用固定的位置代表某一个具体的统计信息, 在 StatisticType 中定义的顺序如下:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("enum StatisticType {\n min_value, max_value, first_value, last_value, sum_value\n}\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br")])]),a("p",[t._v("修改存储形式后,在上面的示例中,我们将得到")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('ByteBuffer[] statistics = [\n ByteBuffer of int value 0, // associated with "min_value"\n ByteBuffer of int value 99, // associated with "max_value"\n ByteBuffer of int value 0, // associated with "first_value"\n ByteBuffer of int value 19, // associated with "last_value"\n ByteBuffer of double value 1093347116 // associated with "sum_value"\n]\n')])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br")])]),a("p",[t._v("另一个关于 v0.9.0 的示例数据, 当我们从 buffer [3, 0,4,0, 1,4,99, 3,4,19] 反序列化为 TsDigest 结构时, 我们将得到")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('//这里可能会有些难理解,读取顺序为:1.读取一个int类型的数据总数(3) 2.读取short类型的位于数组中的位置(0) 3.读取int类型的数据长度(4) 4.根据第3步的长度读取数据(0)\n//因为示例数据中,索引值只出现了(0,1,3),所以 first_value sum_value 的值为null\n\nByteBuffer[] statistics = [\n ByteBuffer of int value 0, // associated with "min_value"\n ByteBuffer of int value 99, // associated with "max_value"\n null, // associated with "first_value"\n ByteBuffer of int value 19, // associated with "last_value"\n null // associated with "sum_value"\n]\n')])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br")])]),a("h5",{attrs:{id:"_1-2-3-2-tsfilemetadata"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-3-2-tsfilemetadata"}},[t._v("#")]),t._v(" 1.2.3.2 TsFileMetaData")]),t._v(" "),a("p",[t._v("上节讲到的是 "),a("code",[t._v("TsDeviceMetadatas")]),t._v(" 紧跟其后的数据是 "),a("code",[t._v("TsFileMetaData")]),t._v("。")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的设备个数")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("设备名称和设备元数据索引的键值对(deviceIndexMap)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String, TsDeviceMetadataIndex pair")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的传感器个数")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("传感器名称和传感器元数据的键值对(measurementSchema)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String, MeasurementSchema pair")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("水印标识")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("byte")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("当标识为0x01时的水印信息(createdBy)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("包含的Chunk总数(totalChunkNum)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("失效的Chunk总数(invalidChunkNum)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("布隆过滤器序列化大小")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("布隆过滤器所有数据")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("byte[Bloom filter size]")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("布隆过滤器容量")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("布隆过滤器容量包含的HashFunction数量")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])])])]),t._v(" "),a("h6",{attrs:{id:"tsdevicemetadataindex"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#tsdevicemetadataindex"}},[t._v("#")]),t._v(" TsDeviceMetadataIndex")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("设备名")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("文件中TsDeviceMetaData的偏移量(offset)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("序列化后数据大小(len)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("存储的设备最小时间(startTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("存储的设备最大时间(endTime)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("long")])])])]),t._v(" "),a("h6",{attrs:{id:"measurementschema"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#measurementschema"}},[t._v("#")]),t._v(" MeasurementSchema")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",{staticStyle:{"text-align":"center"}},[t._v("成员")]),t._v(" "),a("th",{staticStyle:{"text-align":"center"}},[t._v("类型")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("传感器名称(measurementId)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("数据类型(type)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("编码方式(encoding)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("压缩方式(compressor)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("short")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("附带参数的数量")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("int")])]),t._v(" "),a("tr",[a("td",{staticStyle:{"text-align":"center"}},[t._v("所有附带的参数(props)")]),t._v(" "),a("td",{staticStyle:{"text-align":"center"}},[t._v("String, String pair")])])])]),t._v(" "),a("p",[t._v("如果附带的参数数量大于 0, 传感器的附带参数会以一个数组形式的 <String, String> 键值对存储。")]),t._v(" "),a("p",[t._v('比如说: "max_point_number""2".')]),t._v(" "),a("h5",{attrs:{id:"_1-2-3-3-tsfilemetadatasize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-3-3-tsfilemetadatasize"}},[t._v("#")]),t._v(" 1.2.3.3 TsFileMetadataSize")]),t._v(" "),a("p",[t._v("在TsFileMetaData之后,有一个int值用来表示TsFileMetaData的大小。")]),t._v(" "),a("h4",{attrs:{id:"_1-2-4-magic-string"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-2-4-magic-string"}},[t._v("#")]),t._v(" 1.2.4 Magic String")]),t._v(" "),a("p",[t._v("TsFile 是以6个字节的magic string ("),a("code",[t._v("TsFile")]),t._v(") 作为结束.")]),t._v(" "),a("p",[t._v("恭喜您, 至此您已经完成了 TsFile 的探秘之旅,祝您玩儿的开心!")]),t._v(" "),a("h3",{attrs:{id:"_1-3-tsfile工具集"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-tsfile工具集"}},[t._v("#")]),t._v(" 1.3 TsFile工具集")]),t._v(" "),a("h4",{attrs:{id:"_1-3-1-iotdb-data-directory-快速概览工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-1-iotdb-data-directory-快速概览工具"}},[t._v("#")]),t._v(" 1.3.1 IoTDB Data Directory 快速概览工具")]),t._v(" "),a("p",[t._v("该工具的启动脚本会在编译 server 之后生成至 "),a("code",[t._v("server\\target\\iotdb-server-0.10.0\\tools\\tsfileToolSet")]),t._v(" 目录中。")]),t._v(" "),a("p",[t._v("使用方式:")]),t._v(" "),a("p",[t._v("For Windows:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(".\\print-iotdb-data-dir.bat <IoTDB数据文件夹路径,如果是多个文件夹用逗号分隔> (<输出结果的存储路径>) \n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("p",[t._v("For Linux or MacOs:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("./print-iotdb-data-dir.sh <IoTDB数据文件夹路径,如果是多个文件夹用逗号分隔> (<输出结果的存储路径>) \n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("p",[t._v("在Windows系统中的示例:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("D:\\incubator-iotdb\\server\\target\\iotdb-server-0.10.0-SNAPSHOT\\tools\\tsfileToolSet>.\\print-iotdb-data-dir.bat D:\\\\data\\data\n​````````````````````````\nStarting Printing the IoTDB Data Directory Overview\n​````````````````````````\noutput save path:IoTDB_data_dir_overview.txt\nTsFile data dir num:1\n21:17:38.841 [main] WARN org.apache.iotdb.tsfile.common.conf.TSFileDescriptor - Failed to find config file iotdb-engine.properties at classpath, use default configuration\n|==============================================================\n|D:\\\\data\\data\n|--sequence\n| |--root.ln.wf01.wt01\n| | |--1575813520203-101-0.tsfile\n| | |--1575813520203-101-0.tsfile.resource\n| | | |--device root.ln.wf01.wt01, start time 1 (1970-01-01T08:00:00.001+08:00[GMT+08:00]), end time 5 (1970-01-01T08:00:00.005+08:00[GMT+08:00])\n| | |--1575813520669-103-0.tsfile\n| | |--1575813520669-103-0.tsfile.resource\n| | | |--device root.ln.wf01.wt01, start time 100 (1970-01-01T08:00:00.100+08:00[GMT+08:00]), end time 300 (1970-01-01T08:00:00.300+08:00[GMT+08:00])\n| | |--1575813521372-107-0.tsfile\n| | |--1575813521372-107-0.tsfile.resource\n| | | |--device root.ln.wf01.wt01, start time 500 (1970-01-01T08:00:00.500+08:00[GMT+08:00]), end time 540 (1970-01-01T08:00:00.540+08:00[GMT+08:00])\n|--unsequence\n| |--root.ln.wf01.wt01\n| | |--1575813521063-105-0.tsfile\n| | |--1575813521063-105-0.tsfile.resource\n| | | |--device root.ln.wf01.wt01, start time 10 (1970-01-01T08:00:00.010+08:00[GMT+08:00]), end time 50 (1970-01-01T08:00:00.050+08:00[GMT+08:00])\n|==============================================================\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br"),a("span",{staticClass:"line-number"},[t._v("11")]),a("br"),a("span",{staticClass:"line-number"},[t._v("12")]),a("br"),a("span",{staticClass:"line-number"},[t._v("13")]),a("br"),a("span",{staticClass:"line-number"},[t._v("14")]),a("br"),a("span",{staticClass:"line-number"},[t._v("15")]),a("br"),a("span",{staticClass:"line-number"},[t._v("16")]),a("br"),a("span",{staticClass:"line-number"},[t._v("17")]),a("br"),a("span",{staticClass:"line-number"},[t._v("18")]),a("br"),a("span",{staticClass:"line-number"},[t._v("19")]),a("br"),a("span",{staticClass:"line-number"},[t._v("20")]),a("br"),a("span",{staticClass:"line-number"},[t._v("21")]),a("br"),a("span",{staticClass:"line-number"},[t._v("22")]),a("br"),a("span",{staticClass:"line-number"},[t._v("23")]),a("br"),a("span",{staticClass:"line-number"},[t._v("24")]),a("br"),a("span",{staticClass:"line-number"},[t._v("25")]),a("br"),a("span",{staticClass:"line-number"},[t._v("26")]),a("br")])]),a("h4",{attrs:{id:"_1-3-2-tsfileresource-打印工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-2-tsfileresource-打印工具"}},[t._v("#")]),t._v(" 1.3.2 TsFileResource 打印工具")]),t._v(" "),a("p",[t._v("该工具的启动脚本会在编译 server 之后生成至 "),a("code",[t._v("server\\target\\iotdb-server-0.10.0\\tools\\tsfileToolSet")]),t._v(" 目录中。")]),t._v(" "),a("p",[t._v("使用方式:")]),t._v(" "),a("p",[t._v("Windows:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(".\\print-tsfile-sketch.bat <TsFileResource文件夹路径>\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("p",[t._v("Linux or MacOs:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("./print-tsfile-sketch.sh <TsFileResource文件夹路径>\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("p",[t._v("在Windows系统中的示例:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("D:\\incubator-iotdb\\server\\target\\iotdb-server-0.10.0\\tools\\tsfileToolSet>.\\print-tsfile-resource-files.bat D:\\data\\data\\sequence\\root.vehicle\n​````````````````````````\nStarting Printing the TsFileResources\n​````````````````````````\n12:31:59.861 [main] WARN org.apache.iotdb.db.conf.IoTDBDescriptor - Cannot find IOTDB_HOME or IOTDB_CONF environment variable when loading config file iotdb-engine.properties, use default configuration\nanalyzing D:\\data\\data\\sequence\\root.vehicle\\1572496142067-101-0.tsfile ...\ndevice root.vehicle.d0, start time 3000 (1970-01-01T08:00:03+08:00[GMT+08:00]), end time 100999 (1970-01-01T08:01:40.999+08:00[GMT+08:00])\nanalyzing the resource file finished.\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br")])]),a("h4",{attrs:{id:"_1-3-3-tsfile-描述工具"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-3-tsfile-描述工具"}},[t._v("#")]),t._v(" 1.3.3 TsFile 描述工具")]),t._v(" "),a("p",[t._v("该工具的启动脚本会在编译 server 之后生成至 "),a("code",[t._v("server\\target\\iotdb-server-0.10.0\\tools\\tsfileToolSet")]),t._v(" 目录中。")]),t._v(" "),a("p",[t._v("使用方式:")]),t._v(" "),a("p",[t._v("Windows:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v(".\\print-tsfile-sketch.bat <TsFile文件路径> (<输出结果的存储路径>) \n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("ul",[a("li",[t._v('注意: 如果没有设置输出文件的存储路径, 将使用 "TsFile_sketch_view.txt" 做为默认值。')])]),t._v(" "),a("p",[t._v("Linux or MacOs:")]),t._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("./print-tsfile-sketch.sh <TsFile文件路径> (<输出结果的存储路径>) \n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br")])]),a("ul",[a("li",[t._v('注意: 如果没有设置输出文件的存储路径, 将使用 "TsFile_sketch_view.txt" 做为默认值。')])]),t._v(" "),a("p",[t._v("在mac系统中的示例:")]),t._v(" "),a("div",{staticClass:"language-$xslt line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("/incubator-iotdb/server/target/iotdb-server-0.10.0/tools/tsfileToolSet$ ./print-tsfile-sketch.sh test.tsfile\n​````````````````````````\nStarting Printing the TsFile Sketch\n​````````````````````````\nTsFile path:test.tsfile\nSketch save path:TsFile_sketch_view.txt\n-------------------------------- TsFile Sketch --------------------------------\nfile path: test.tsfile\nfile length: 33436\n\n POSITION| CONTENT\n -------- -------\n 0| [magic head] TsFile\n 6| [version number] 000002\n||||||||||||||||||||| [Chunk Group] of root.group_12.d2, num of Chunks:3\n 12| [Chunk] of s_INT64e_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:INT64, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 2 pages\n 677| [Chunk] of s_INT64e_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:INT64, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 1349| [Chunk] of s_INT64e_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:INT64, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 2 pages\n 5766| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d2\n | [dataSize] 5754\n | [num of chunks] 3\n||||||||||||||||||||| [Chunk Group] of root.group_12.d2 ends\n 5799| [Version Info]\n | [marker] 3\n | [version] 102\n||||||||||||||||||||| [Chunk Group] of root.group_12.d1, num of Chunks:3\n 5808| [Chunk] of s_INT32e_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:INT32, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 8231| [Chunk] of s_INT32e_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:INT32, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 8852| [Chunk] of s_INT32e_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:INT32, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 9399| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d1\n | [dataSize] 3591\n | [num of chunks] 3\n||||||||||||||||||||| [Chunk Group] of root.group_12.d1 ends\n 9432| [Version Info]\n | [marker] 3\n | [version] 102\n||||||||||||||||||||| [Chunk Group] of root.group_12.d0, num of Chunks:2\n 9441| [Chunk] of s_BOOLEANe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:BOOLEAN, \n startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 9968| [Chunk] of s_BOOLEANe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:BOOLEAN, \n startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 10961| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d0\n | [dataSize] 1520\n | [num of chunks] 2\n||||||||||||||||||||| [Chunk Group] of root.group_12.d0 ends\n 10994| [Version Info]\n | [marker] 3\n | [version] 102\n||||||||||||||||||||| [Chunk Group] of root.group_12.d5, num of Chunks:1\n 11003| [Chunk] of s_TEXTe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:TEXT, \n startTime: 1 endTime: 10000 count: 10000 [firstValue:version_test,lastValue:version_test]\n | [marker] 1\n | [ChunkHeader]\n | 3 pages\n 19278| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d5\n | [dataSize] 8275\n | [num of chunks] 1\n||||||||||||||||||||| [Chunk Group] of root.group_12.d5 ends\n 19311| [Version Info]\n | [marker] 3\n | [version] 102\n||||||||||||||||||||| [Chunk Group] of root.group_12.d4, num of Chunks:4\n 19320| [Chunk] of s_DOUBLEe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00000000123]\n | [marker] 1\n | [ChunkHeader]\n | 2 pages\n 23740| [Chunk] of s_DOUBLEe_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 24414| [Chunk] of s_DOUBLEe_GORILLA, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 25054| [Chunk] of s_DOUBLEe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000001224]\n | [marker] 1\n | [ChunkHeader]\n | 2 pages\n 25717| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d4\n | [dataSize] 6397\n | [num of chunks] 4\n||||||||||||||||||||| [Chunk Group] of root.group_12.d4 ends\n 25750| [Version Info]\n | [marker] 3\n | [version] 102\n||||||||||||||||||||| [Chunk Group] of root.group_12.d3, num of Chunks:4\n 25759| [Chunk] of s_FLOATe_GORILLA, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 26375| [Chunk] of s_FLOATe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 28796| [Chunk] of s_FLOATe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 29343| [Chunk] of s_FLOATe_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT, \n startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]\n | [marker] 1\n | [ChunkHeader]\n | 1 pages\n 29967| [Chunk Group Footer]\n | [marker] 0\n | [deviceID] root.group_12.d3\n | [dataSize] 4208\n | [num of chunks] 4\n||||||||||||||||||||| [Chunk Group] of root.group_12.d3 ends\n 30000| [Version Info]\n | [marker] 3\n | [version] 102\n 30009| [marker] 2\n 30010| [ChunkMetadataList] of root.group_12.d0.s_BOOLEANe_PLAIN, tsDataType:BOOLEAN\n | [startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]] \n 30066| [ChunkMetadataList] of root.group_12.d0.s_BOOLEANe_RLE, tsDataType:BOOLEAN\n | [startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]] \n 30120| [ChunkMetadataList] of root.group_12.d1.s_INT32e_PLAIN, tsDataType:INT32\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30196| [ChunkMetadataList] of root.group_12.d1.s_INT32e_RLE, tsDataType:INT32\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30270| [ChunkMetadataList] of root.group_12.d1.s_INT32e_TS_2DIFF, tsDataType:INT32\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30349| [ChunkMetadataList] of root.group_12.d2.s_INT64e_PLAIN, tsDataType:INT64\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30441| [ChunkMetadataList] of root.group_12.d2.s_INT64e_RLE, tsDataType:INT64\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30531| [ChunkMetadataList] of root.group_12.d2.s_INT64e_TS_2DIFF, tsDataType:INT64\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]] \n 30626| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_GORILLA, tsDataType:FLOAT\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]] \n 30704| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_PLAIN, tsDataType:FLOAT\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]] \n 30780| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_RLE, tsDataType:FLOAT\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]] \n 30854| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_TS_2DIFF, tsDataType:FLOAT\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]] \n 30933| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_GORILLA, tsDataType:DOUBLE\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]] \n 31028| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_PLAIN, tsDataType:DOUBLE\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00000000123]] \n 31121| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_RLE, tsDataType:DOUBLE\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000001224]] \n 31212| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_TS_2DIFF, tsDataType:DOUBLE\n | [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]] \n 31308| [ChunkMetadataList] of root.group_12.d5.s_TEXTe_PLAIN, tsDataType:TEXT\n | [startTime: 1 endTime: 10000 count: 10000 [firstValue:version_test,lastValue:version_test]] \n 32840| [MetadataIndex] of root.group_12.d0\n 32881| [MetadataIndex] of root.group_12.d1\n 32920| [MetadataIndex] of root.group_12.d2\n 32959| [MetadataIndex] of root.group_12.d3\n 33000| [MetadataIndex] of root.group_12.d4\n 33042| [MetadataIndex] of root.group_12.d5\n 33080| [TsFileMetadata]\n | [num of devices] 6\n | 6 key&TsMetadataIndex\n | [totalChunkNum] 17\n | [invalidChunkNum] 0\n | [bloom filter bit vector byte array length] 32\n | [bloom filter bit vector byte array] \n | [bloom filter number of bits] 256\n | [bloom filter number of hash functions] 5\n 33426| [TsFileMetadataSize] 346\n 33430| [magic tail] TsFile\n 33436| END of TsFile\n\n---------------------------------- TsFile Sketch End ----------------------------------\n\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br"),a("span",{staticClass:"line-number"},[t._v("11")]),a("br"),a("span",{staticClass:"line-number"},[t._v("12")]),a("br"),a("span",{staticClass:"line-number"},[t._v("13")]),a("br"),a("span",{staticClass:"line-number"},[t._v("14")]),a("br"),a("span",{staticClass:"line-number"},[t._v("15")]),a("br"),a("span",{staticClass:"line-number"},[t._v("16")]),a("br"),a("span",{staticClass:"line-number"},[t._v("17")]),a("br"),a("span",{staticClass:"line-number"},[t._v("18")]),a("br"),a("span",{staticClass:"line-number"},[t._v("19")]),a("br"),a("span",{staticClass:"line-number"},[t._v("20")]),a("br"),a("span",{staticClass:"line-number"},[t._v("21")]),a("br"),a("span",{staticClass:"line-number"},[t._v("22")]),a("br"),a("span",{staticClass:"line-number"},[t._v("23")]),a("br"),a("span",{staticClass:"line-number"},[t._v("24")]),a("br"),a("span",{staticClass:"line-number"},[t._v("25")]),a("br"),a("span",{staticClass:"line-number"},[t._v("26")]),a("br"),a("span",{staticClass:"line-number"},[t._v("27")]),a("br"),a("span",{staticClass:"line-number"},[t._v("28")]),a("br"),a("span",{staticClass:"line-number"},[t._v("29")]),a("br"),a("span",{staticClass:"line-number"},[t._v("30")]),a("br"),a("span",{staticClass:"line-number"},[t._v("31")]),a("br"),a("span",{staticClass:"line-number"},[t._v("32")]),a("br"),a("span",{staticClass:"line-number"},[t._v("33")]),a("br"),a("span",{staticClass:"line-number"},[t._v("34")]),a("br"),a("span",{staticClass:"line-number"},[t._v("35")]),a("br"),a("span",{staticClass:"line-number"},[t._v("36")]),a("br"),a("span",{staticClass:"line-number"},[t._v("37")]),a("br"),a("span",{staticClass:"line-number"},[t._v("38")]),a("br"),a("span",{staticClass:"line-number"},[t._v("39")]),a("br"),a("span",{staticClass:"line-number"},[t._v("40")]),a("br"),a("span",{staticClass:"line-number"},[t._v("41")]),a("br"),a("span",{staticClass:"line-number"},[t._v("42")]),a("br"),a("span",{staticClass:"line-number"},[t._v("43")]),a("br"),a("span",{staticClass:"line-number"},[t._v("44")]),a("br"),a("span",{staticClass:"line-number"},[t._v("45")]),a("br"),a("span",{staticClass:"line-number"},[t._v("46")]),a("br"),a("span",{staticClass:"line-number"},[t._v("47")]),a("br"),a("span",{staticClass:"line-number"},[t._v("48")]),a("br"),a("span",{staticClass:"line-number"},[t._v("49")]),a("br"),a("span",{staticClass:"line-number"},[t._v("50")]),a("br"),a("span",{staticClass:"line-number"},[t._v("51")]),a("br"),a("span",{staticClass:"line-number"},[t._v("52")]),a("br"),a("span",{staticClass:"line-number"},[t._v("53")]),a("br"),a("span",{staticClass:"line-number"},[t._v("54")]),a("br"),a("span",{staticClass:"line-number"},[t._v("55")]),a("br"),a("span",{staticClass:"line-number"},[t._v("56")]),a("br"),a("span",{staticClass:"line-number"},[t._v("57")]),a("br"),a("span",{staticClass:"line-number"},[t._v("58")]),a("br"),a("span",{staticClass:"line-number"},[t._v("59")]),a("br"),a("span",{staticClass:"line-number"},[t._v("60")]),a("br"),a("span",{staticClass:"line-number"},[t._v("61")]),a("br"),a("span",{staticClass:"line-number"},[t._v("62")]),a("br"),a("span",{staticClass:"line-number"},[t._v("63")]),a("br"),a("span",{staticClass:"line-number"},[t._v("64")]),a("br"),a("span",{staticClass:"line-number"},[t._v("65")]),a("br"),a("span",{staticClass:"line-number"},[t._v("66")]),a("br"),a("span",{staticClass:"line-number"},[t._v("67")]),a("br"),a("span",{staticClass:"line-number"},[t._v("68")]),a("br"),a("span",{staticClass:"line-number"},[t._v("69")]),a("br"),a("span",{staticClass:"line-number"},[t._v("70")]),a("br"),a("span",{staticClass:"line-number"},[t._v("71")]),a("br"),a("span",{staticClass:"line-number"},[t._v("72")]),a("br"),a("span",{staticClass:"line-number"},[t._v("73")]),a("br"),a("span",{staticClass:"line-number"},[t._v("74")]),a("br"),a("span",{staticClass:"line-number"},[t._v("75")]),a("br"),a("span",{staticClass:"line-number"},[t._v("76")]),a("br"),a("span",{staticClass:"line-number"},[t._v("77")]),a("br"),a("span",{staticClass:"line-number"},[t._v("78")]),a("br"),a("span",{staticClass:"line-number"},[t._v("79")]),a("br"),a("span",{staticClass:"line-number"},[t._v("80")]),a("br"),a("span",{staticClass:"line-number"},[t._v("81")]),a("br"),a("span",{staticClass:"line-number"},[t._v("82")]),a("br"),a("span",{staticClass:"line-number"},[t._v("83")]),a("br"),a("span",{staticClass:"line-number"},[t._v("84")]),a("br"),a("span",{staticClass:"line-number"},[t._v("85")]),a("br"),a("span",{staticClass:"line-number"},[t._v("86")]),a("br"),a("span",{staticClass:"line-number"},[t._v("87")]),a("br"),a("span",{staticClass:"line-number"},[t._v("88")]),a("br"),a("span",{staticClass:"line-number"},[t._v("89")]),a("br"),a("span",{staticClass:"line-number"},[t._v("90")]),a("br"),a("span",{staticClass:"line-number"},[t._v("91")]),a("br"),a("span",{staticClass:"line-number"},[t._v("92")]),a("br"),a("span",{staticClass:"line-number"},[t._v("93")]),a("br"),a("span",{staticClass:"line-number"},[t._v("94")]),a("br"),a("span",{staticClass:"line-number"},[t._v("95")]),a("br"),a("span",{staticClass:"line-number"},[t._v("96")]),a("br"),a("span",{staticClass:"line-number"},[t._v("97")]),a("br"),a("span",{staticClass:"line-number"},[t._v("98")]),a("br"),a("span",{staticClass:"line-number"},[t._v("99")]),a("br"),a("span",{staticClass:"line-number"},[t._v("100")]),a("br"),a("span",{staticClass:"line-number"},[t._v("101")]),a("br"),a("span",{staticClass:"line-number"},[t._v("102")]),a("br"),a("span",{staticClass:"line-number"},[t._v("103")]),a("br"),a("span",{staticClass:"line-number"},[t._v("104")]),a("br"),a("span",{staticClass:"line-number"},[t._v("105")]),a("br"),a("span",{staticClass:"line-number"},[t._v("106")]),a("br"),a("span",{staticClass:"line-number"},[t._v("107")]),a("br"),a("span",{staticClass:"line-number"},[t._v("108")]),a("br"),a("span",{staticClass:"line-number"},[t._v("109")]),a("br"),a("span",{staticClass:"line-number"},[t._v("110")]),a("br"),a("span",{staticClass:"line-number"},[t._v("111")]),a("br"),a("span",{staticClass:"line-number"},[t._v("112")]),a("br"),a("span",{staticClass:"line-number"},[t._v("113")]),a("br"),a("span",{staticClass:"line-number"},[t._v("114")]),a("br"),a("span",{staticClass:"line-number"},[t._v("115")]),a("br"),a("span",{staticClass:"line-number"},[t._v("116")]),a("br"),a("span",{staticClass:"line-number"},[t._v("117")]),a("br"),a("span",{staticClass:"line-number"},[t._v("118")]),a("br"),a("span",{staticClass:"line-number"},[t._v("119")]),a("br"),a("span",{staticClass:"line-number"},[t._v("120")]),a("br"),a("span",{staticClass:"line-number"},[t._v("121")]),a("br"),a("span",{staticClass:"line-number"},[t._v("122")]),a("br"),a("span",{staticClass:"line-number"},[t._v("123")]),a("br"),a("span",{staticClass:"line-number"},[t._v("124")]),a("br"),a("span",{staticClass:"line-number"},[t._v("125")]),a("br"),a("span",{staticClass:"line-number"},[t._v("126")]),a("br"),a("span",{staticClass:"line-number"},[t._v("127")]),a("br"),a("span",{staticClass:"line-number"},[t._v("128")]),a("br"),a("span",{staticClass:"line-number"},[t._v("129")]),a("br"),a("span",{staticClass:"line-number"},[t._v("130")]),a("br"),a("span",{staticClass:"line-number"},[t._v("131")]),a("br"),a("span",{staticClass:"line-number"},[t._v("132")]),a("br"),a("span",{staticClass:"line-number"},[t._v("133")]),a("br"),a("span",{staticClass:"line-number"},[t._v("134")]),a("br"),a("span",{staticClass:"line-number"},[t._v("135")]),a("br"),a("span",{staticClass:"line-number"},[t._v("136")]),a("br"),a("span",{staticClass:"line-number"},[t._v("137")]),a("br"),a("span",{staticClass:"line-number"},[t._v("138")]),a("br"),a("span",{staticClass:"line-number"},[t._v("139")]),a("br"),a("span",{staticClass:"line-number"},[t._v("140")]),a("br"),a("span",{staticClass:"line-number"},[t._v("141")]),a("br"),a("span",{staticClass:"line-number"},[t._v("142")]),a("br"),a("span",{staticClass:"line-number"},[t._v("143")]),a("br"),a("span",{staticClass:"line-number"},[t._v("144")]),a("br"),a("span",{staticClass:"line-number"},[t._v("145")]),a("br"),a("span",{staticClass:"line-number"},[t._v("146")]),a("br"),a("span",{staticClass:"line-number"},[t._v("147")]),a("br"),a("span",{staticClass:"line-number"},[t._v("148")]),a("br"),a("span",{staticClass:"line-number"},[t._v("149")]),a("br"),a("span",{staticClass:"line-number"},[t._v("150")]),a("br"),a("span",{staticClass:"line-number"},[t._v("151")]),a("br"),a("span",{staticClass:"line-number"},[t._v("152")]),a("br"),a("span",{staticClass:"line-number"},[t._v("153")]),a("br"),a("span",{staticClass:"line-number"},[t._v("154")]),a("br"),a("span",{staticClass:"line-number"},[t._v("155")]),a("br"),a("span",{staticClass:"line-number"},[t._v("156")]),a("br"),a("span",{staticClass:"line-number"},[t._v("157")]),a("br"),a("span",{staticClass:"line-number"},[t._v("158")]),a("br"),a("span",{staticClass:"line-number"},[t._v("159")]),a("br"),a("span",{staticClass:"line-number"},[t._v("160")]),a("br"),a("span",{staticClass:"line-number"},[t._v("161")]),a("br"),a("span",{staticClass:"line-number"},[t._v("162")]),a("br"),a("span",{staticClass:"line-number"},[t._v("163")]),a("br"),a("span",{staticClass:"line-number"},[t._v("164")]),a("br"),a("span",{staticClass:"line-number"},[t._v("165")]),a("br"),a("span",{staticClass:"line-number"},[t._v("166")]),a("br"),a("span",{staticClass:"line-number"},[t._v("167")]),a("br"),a("span",{staticClass:"line-number"},[t._v("168")]),a("br"),a("span",{staticClass:"line-number"},[t._v("169")]),a("br"),a("span",{staticClass:"line-number"},[t._v("170")]),a("br"),a("span",{staticClass:"line-number"},[t._v("171")]),a("br"),a("span",{staticClass:"line-number"},[t._v("172")]),a("br"),a("span",{staticClass:"line-number"},[t._v("173")]),a("br"),a("span",{staticClass:"line-number"},[t._v("174")]),a("br"),a("span",{staticClass:"line-number"},[t._v("175")]),a("br"),a("span",{staticClass:"line-number"},[t._v("176")]),a("br"),a("span",{staticClass:"line-number"},[t._v("177")]),a("br"),a("span",{staticClass:"line-number"},[t._v("178")]),a("br"),a("span",{staticClass:"line-number"},[t._v("179")]),a("br"),a("span",{staticClass:"line-number"},[t._v("180")]),a("br"),a("span",{staticClass:"line-number"},[t._v("181")]),a("br"),a("span",{staticClass:"line-number"},[t._v("182")]),a("br"),a("span",{staticClass:"line-number"},[t._v("183")]),a("br"),a("span",{staticClass:"line-number"},[t._v("184")]),a("br"),a("span",{staticClass:"line-number"},[t._v("185")]),a("br"),a("span",{staticClass:"line-number"},[t._v("186")]),a("br"),a("span",{staticClass:"line-number"},[t._v("187")]),a("br"),a("span",{staticClass:"line-number"},[t._v("188")]),a("br"),a("span",{staticClass:"line-number"},[t._v("189")]),a("br"),a("span",{staticClass:"line-number"},[t._v("190")]),a("br"),a("span",{staticClass:"line-number"},[t._v("191")]),a("br"),a("span",{staticClass:"line-number"},[t._v("192")]),a("br"),a("span",{staticClass:"line-number"},[t._v("193")]),a("br"),a("span",{staticClass:"line-number"},[t._v("194")]),a("br"),a("span",{staticClass:"line-number"},[t._v("195")]),a("br"),a("span",{staticClass:"line-number"},[t._v("196")]),a("br"),a("span",{staticClass:"line-number"},[t._v("197")]),a("br"),a("span",{staticClass:"line-number"},[t._v("198")]),a("br"),a("span",{staticClass:"line-number"},[t._v("199")]),a("br"),a("span",{staticClass:"line-number"},[t._v("200")]),a("br"),a("span",{staticClass:"line-number"},[t._v("201")]),a("br"),a("span",{staticClass:"line-number"},[t._v("202")]),a("br"),a("span",{staticClass:"line-number"},[t._v("203")]),a("br"),a("span",{staticClass:"line-number"},[t._v("204")]),a("br"),a("span",{staticClass:"line-number"},[t._v("205")]),a("br"),a("span",{staticClass:"line-number"},[t._v("206")]),a("br"),a("span",{staticClass:"line-number"},[t._v("207")]),a("br"),a("span",{staticClass:"line-number"},[t._v("208")]),a("br"),a("span",{staticClass:"line-number"},[t._v("209")]),a("br"),a("span",{staticClass:"line-number"},[t._v("210")]),a("br"),a("span",{staticClass:"line-number"},[t._v("211")]),a("br"),a("span",{staticClass:"line-number"},[t._v("212")]),a("br"),a("span",{staticClass:"line-number"},[t._v("213")]),a("br"),a("span",{staticClass:"line-number"},[t._v("214")]),a("br"),a("span",{staticClass:"line-number"},[t._v("215")]),a("br")])]),a("h4",{attrs:{id:"_1-3-4-tsfilesequenceread"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-3-4-tsfilesequenceread"}},[t._v("#")]),t._v(" 1.3.4 TsFileSequenceRead")]),t._v(" "),a("p",[t._v("您可以使用示例中的类 "),a("code",[t._v("example/tsfile/org/apache/iotdb/tsfile/TsFileSequenceRead")]),t._v(" 顺序打印 TsFile 中的内容.")]),t._v(" "),a("h3",{attrs:{id:"_1-4-tsfile-的总览图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-4-tsfile-的总览图"}},[t._v("#")]),t._v(" 1.4 TsFile 的总览图")]),t._v(" "),a("h4",{attrs:{id:"v0-8-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v0-8-0"}},[t._v("#")]),t._v(" v0.8.0")]),t._v(" "),a("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/33376433/65209576-2bd36000-dacb-11e9-9e43-49e0dd01274e.png"}}),t._v(" "),a("h4",{attrs:{id:"v0-9-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v0-9-0"}},[t._v("#")]),t._v(" v0.9.0")]),t._v(" "),a("img",{staticStyle:{width:"100%","max-width":"800px","max-height":"600px","margin-left":"auto","margin-right":"auto",display:"block"},attrs:{src:"https://user-images.githubusercontent.com/33376433/69341240-26012300-0ca4-11ea-91a1-d516810cad44.png"}})])}),[],!1,null,null,null);e.default=n.exports}}]);