blob: 4f26d3269af42d40abc50669a117d0c4f9defdc7 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[927],{1488:function(t,e,r){"use strict";r.r(e);var a=r(69),i=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"tsfile-写流程"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#tsfile-写流程"}},[t._v("#")]),t._v(" TsFile 写流程")]),t._v(" "),r("ul",[r("li",[t._v("org.apache.iotdb.tsfile.write.*")])]),t._v(" "),r("p",[t._v("TsFile 的写入流程如下图所示:")]),t._v(" "),r("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/19167280/73625238-efba2980-467e-11ea-927e-a7021f8153af.png"}}),t._v(" "),r("p",[t._v("其中,每个设备对应一个 ChunkGroupWriter,每个传感器对应一个 ChunkWriter。")]),t._v(" "),r("p",[t._v("文件的写入主要分为三种操作,在图上用 1、2、3 标注")]),t._v(" "),r("ul",[r("li",[t._v("1、写内存换冲区")]),t._v(" "),r("li",[t._v("2、持久化 ChunkGroup")]),t._v(" "),r("li",[t._v("3、关闭文件")])]),t._v(" "),r("h2",{attrs:{id:"_1、写内存缓冲区"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_1、写内存缓冲区"}},[t._v("#")]),t._v(" 1、写内存缓冲区")]),t._v(" "),r("p",[t._v("TsFile 文件层的写入接口有两种")]),t._v(" "),r("ul",[r("li",[t._v("TsFileWriter.write(TSRecord record)")])]),t._v(" "),r("p",[t._v("写入一个设备一个时间戳多个测点。")]),t._v(" "),r("ul",[r("li",[t._v("TsFileWriter.write(Tablet tablet)")])]),t._v(" "),r("p",[t._v("写入一个设备多个时间戳多个测点。")]),t._v(" "),r("p",[t._v("当调用 write 接口时,这个设备的数据会交给对应的 ChunkGroupWriter,其中的每个测点会交给对应的 ChunkWriter 进行写入。ChunkWriter 完成编码和打包(生成 Page)。")]),t._v(" "),r("h2",{attrs:{id:"_2、持久化-chunkgroup"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_2、持久化-chunkgroup"}},[t._v("#")]),t._v(" 2、持久化 ChunkGroup")]),t._v(" "),r("ul",[r("li",[t._v("TsFileWriter.flushAllChunkGroups()")])]),t._v(" "),r("p",[t._v("当内存中的数据达到一定阈值,会触发持久化操作。每次持久化会把当前内存中所有设备的数据全部持久化到磁盘的 TsFile 文件中。每个设备对应一个 ChunkGroup,每个测点对应一个 Chunk。")]),t._v(" "),r("p",[t._v("持久化完成后会在内存中缓存对应的元数据信息,以供查询和生成文件尾部 metadata。")]),t._v(" "),r("h2",{attrs:{id:"_3、关闭文件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#_3、关闭文件"}},[t._v("#")]),t._v(" 3、关闭文件")]),t._v(" "),r("ul",[r("li",[t._v("TsFileWriter.close()")])]),t._v(" "),r("p",[t._v("根据内存中缓存的元数据,生成 TsFileMetadata 追加到文件尾部,最后关闭文件。")])])}),[],!1,null,null,null);e.default=i.exports}}]);