blob: a9d71c5026c2cac2f41b76eaac34ec7865683e67 [file] [log] [blame]
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title> </title>
<meta name="generator" content="VuePress 1.6.0">
<link rel="icon" href="/favicon.ico">
<meta name="description" content=" ">
<meta name="Description" content="Apache IoTDB: Time Series Database for IoT">
<meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据">
<meta name="baidu-site-verification" content="wfKETzB3OT">
<meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo">
<link rel="preload" href="/assets/css/0.styles.1c0ab417.css" as="style"><link rel="preload" href="/assets/js/app.a43d7cd0.js" as="script"><link rel="preload" href="/assets/js/3.6210d98e.js" as="script"><link rel="preload" href="/assets/js/275.3534c62b.js" as="script"><link rel="prefetch" href="/assets/js/10.a8c2da4d.js"><link rel="prefetch" href="/assets/js/100.610c16f2.js"><link rel="prefetch" href="/assets/js/101.cb7d6071.js"><link rel="prefetch" href="/assets/js/102.ae495060.js"><link rel="prefetch" href="/assets/js/103.a8df0800.js"><link rel="prefetch" href="/assets/js/104.2245511e.js"><link rel="prefetch" href="/assets/js/105.3f6e6516.js"><link rel="prefetch" href="/assets/js/106.c29577c2.js"><link rel="prefetch" href="/assets/js/107.d1b2cd67.js"><link rel="prefetch" href="/assets/js/108.8ef3a4c5.js"><link rel="prefetch" href="/assets/js/109.dc0fb58e.js"><link rel="prefetch" href="/assets/js/11.a8f8817f.js"><link rel="prefetch" href="/assets/js/110.b714fc01.js"><link rel="prefetch" href="/assets/js/111.a5d11e38.js"><link rel="prefetch" href="/assets/js/112.6d1a395f.js"><link rel="prefetch" href="/assets/js/113.5dfad6f9.js"><link rel="prefetch" href="/assets/js/114.43308969.js"><link rel="prefetch" href="/assets/js/115.8096c93e.js"><link rel="prefetch" href="/assets/js/116.a6976ccd.js"><link rel="prefetch" href="/assets/js/117.f323e27f.js"><link rel="prefetch" href="/assets/js/118.57bb1abd.js"><link rel="prefetch" href="/assets/js/119.c73ae4f0.js"><link rel="prefetch" href="/assets/js/12.d6e39d88.js"><link rel="prefetch" href="/assets/js/120.13871423.js"><link rel="prefetch" href="/assets/js/121.9d905e19.js"><link rel="prefetch" href="/assets/js/122.668d2488.js"><link rel="prefetch" href="/assets/js/123.ce6c2002.js"><link rel="prefetch" href="/assets/js/124.66d50dad.js"><link rel="prefetch" href="/assets/js/125.9f34d14d.js"><link rel="prefetch" href="/assets/js/126.4e916938.js"><link rel="prefetch" href="/assets/js/127.de1c9600.js"><link rel="prefetch" href="/assets/js/128.18945ba9.js"><link rel="prefetch" href="/assets/js/129.e371cf05.js"><link rel="prefetch" href="/assets/js/13.19327a9c.js"><link rel="prefetch" href="/assets/js/130.6f0854cf.js"><link rel="prefetch" href="/assets/js/131.4490139b.js"><link rel="prefetch" href="/assets/js/132.d17b7727.js"><link rel="prefetch" href="/assets/js/133.5d136bd2.js"><link rel="prefetch" href="/assets/js/134.85e21f55.js"><link rel="prefetch" href="/assets/js/135.c2a5c73e.js"><link rel="prefetch" href="/assets/js/136.ea80add8.js"><link rel="prefetch" href="/assets/js/137.162ad739.js"><link rel="prefetch" href="/assets/js/138.003e92a6.js"><link rel="prefetch" href="/assets/js/139.77af0781.js"><link rel="prefetch" href="/assets/js/14.155ff9c5.js"><link rel="prefetch" href="/assets/js/140.9a3b2358.js"><link rel="prefetch" href="/assets/js/141.08896ed8.js"><link rel="prefetch" href="/assets/js/142.8f892360.js"><link rel="prefetch" href="/assets/js/143.c07eb590.js"><link rel="prefetch" href="/assets/js/144.d786614a.js"><link rel="prefetch" href="/assets/js/145.795b9025.js"><link rel="prefetch" href="/assets/js/146.b999e2b1.js"><link rel="prefetch" href="/assets/js/147.ae5efbfc.js"><link rel="prefetch" href="/assets/js/148.55918b45.js"><link rel="prefetch" href="/assets/js/149.963af3d6.js"><link rel="prefetch" href="/assets/js/15.f2dcca51.js"><link rel="prefetch" href="/assets/js/150.7ecfce29.js"><link rel="prefetch" href="/assets/js/151.2cedc233.js"><link rel="prefetch" href="/assets/js/152.5a57be5f.js"><link rel="prefetch" href="/assets/js/153.0269b0ba.js"><link rel="prefetch" href="/assets/js/154.b21f8642.js"><link rel="prefetch" href="/assets/js/155.aa88d113.js"><link rel="prefetch" href="/assets/js/156.d81dea62.js"><link rel="prefetch" href="/assets/js/157.f4c11fdc.js"><link rel="prefetch" href="/assets/js/158.f37d52c1.js"><link rel="prefetch" href="/assets/js/159.698bd399.js"><link rel="prefetch" href="/assets/js/16.68617903.js"><link rel="prefetch" href="/assets/js/160.3cbd628c.js"><link rel="prefetch" href="/assets/js/161.e509f048.js"><link rel="prefetch" href="/assets/js/162.c8a094e6.js"><link rel="prefetch" href="/assets/js/163.3a775f8c.js"><link rel="prefetch" href="/assets/js/164.d2890cfc.js"><link rel="prefetch" href="/assets/js/165.b4b5c056.js"><link rel="prefetch" href="/assets/js/166.dbe88230.js"><link rel="prefetch" href="/assets/js/167.f06c4e8e.js"><link rel="prefetch" href="/assets/js/168.4ba6d0d5.js"><link rel="prefetch" href="/assets/js/169.8db4c44f.js"><link rel="prefetch" href="/assets/js/17.f9c56825.js"><link rel="prefetch" href="/assets/js/170.e0f40101.js"><link rel="prefetch" href="/assets/js/171.02f1c9a7.js"><link rel="prefetch" href="/assets/js/172.23fa5fe7.js"><link rel="prefetch" href="/assets/js/173.3426b1ab.js"><link rel="prefetch" href="/assets/js/174.2912e5dd.js"><link rel="prefetch" href="/assets/js/175.b49e057c.js"><link rel="prefetch" href="/assets/js/176.3fecec61.js"><link rel="prefetch" href="/assets/js/177.120d4f6d.js"><link rel="prefetch" href="/assets/js/178.f31cf22e.js"><link rel="prefetch" href="/assets/js/179.8250f5b4.js"><link rel="prefetch" href="/assets/js/18.6a45243e.js"><link rel="prefetch" href="/assets/js/180.03c29a93.js"><link rel="prefetch" href="/assets/js/181.76d2e48e.js"><link rel="prefetch" href="/assets/js/182.a1289998.js"><link rel="prefetch" href="/assets/js/183.95e8b928.js"><link rel="prefetch" href="/assets/js/184.51ec376a.js"><link rel="prefetch" href="/assets/js/185.7850656d.js"><link rel="prefetch" href="/assets/js/186.46790403.js"><link rel="prefetch" href="/assets/js/187.dba668f4.js"><link rel="prefetch" href="/assets/js/188.9ef76ad8.js"><link rel="prefetch" href="/assets/js/189.e17095d5.js"><link rel="prefetch" href="/assets/js/19.db72f43f.js"><link rel="prefetch" href="/assets/js/190.b06fed0c.js"><link rel="prefetch" href="/assets/js/191.82487132.js"><link rel="prefetch" href="/assets/js/192.6f6ed4ef.js"><link rel="prefetch" href="/assets/js/193.4553db6e.js"><link rel="prefetch" href="/assets/js/194.dc7c8aed.js"><link rel="prefetch" href="/assets/js/195.18a15b0a.js"><link rel="prefetch" href="/assets/js/196.30b5b248.js"><link rel="prefetch" href="/assets/js/197.e10b8a1d.js"><link rel="prefetch" href="/assets/js/198.a5e0c58e.js"><link rel="prefetch" href="/assets/js/199.2c0baf59.js"><link rel="prefetch" href="/assets/js/20.4c74811a.js"><link rel="prefetch" href="/assets/js/200.d07091f7.js"><link rel="prefetch" href="/assets/js/201.1ebc8666.js"><link rel="prefetch" href="/assets/js/202.f5267ff1.js"><link rel="prefetch" href="/assets/js/203.acfb9c3d.js"><link rel="prefetch" href="/assets/js/204.8d928037.js"><link rel="prefetch" href="/assets/js/205.9bc72cf2.js"><link rel="prefetch" href="/assets/js/206.80d7696d.js"><link rel="prefetch" href="/assets/js/207.6298850d.js"><link rel="prefetch" href="/assets/js/208.afe92c6b.js"><link rel="prefetch" href="/assets/js/209.133841c6.js"><link rel="prefetch" href="/assets/js/21.19ce7f11.js"><link rel="prefetch" href="/assets/js/210.132b2f3d.js"><link rel="prefetch" href="/assets/js/211.02812a4d.js"><link rel="prefetch" href="/assets/js/212.4d5ea528.js"><link rel="prefetch" href="/assets/js/213.53e6d733.js"><link rel="prefetch" href="/assets/js/214.730115ce.js"><link rel="prefetch" href="/assets/js/215.37dbe437.js"><link rel="prefetch" href="/assets/js/216.a65b1897.js"><link rel="prefetch" href="/assets/js/217.a0d8d7f2.js"><link rel="prefetch" href="/assets/js/218.ad3bdbec.js"><link rel="prefetch" href="/assets/js/219.4b296837.js"><link rel="prefetch" href="/assets/js/22.9a23de49.js"><link rel="prefetch" href="/assets/js/220.e6548648.js"><link rel="prefetch" href="/assets/js/221.73cc84cf.js"><link rel="prefetch" href="/assets/js/222.6ff0f81e.js"><link rel="prefetch" href="/assets/js/223.e4b3404e.js"><link rel="prefetch" href="/assets/js/224.4e148f22.js"><link rel="prefetch" href="/assets/js/225.7ab00c65.js"><link rel="prefetch" href="/assets/js/226.6ee2800c.js"><link rel="prefetch" href="/assets/js/227.dbafe68f.js"><link rel="prefetch" href="/assets/js/228.3635bbf3.js"><link rel="prefetch" href="/assets/js/229.c8b044a3.js"><link rel="prefetch" href="/assets/js/23.eb7d2c98.js"><link rel="prefetch" href="/assets/js/230.5cd73e63.js"><link rel="prefetch" href="/assets/js/231.b5154f98.js"><link rel="prefetch" href="/assets/js/232.b394b06b.js"><link rel="prefetch" href="/assets/js/233.89870d38.js"><link rel="prefetch" href="/assets/js/234.3626182e.js"><link rel="prefetch" href="/assets/js/235.918055e1.js"><link rel="prefetch" href="/assets/js/236.c5884eb4.js"><link rel="prefetch" href="/assets/js/237.bc5f6c74.js"><link rel="prefetch" href="/assets/js/238.462914c3.js"><link rel="prefetch" href="/assets/js/239.45f73834.js"><link rel="prefetch" href="/assets/js/24.22e7a403.js"><link rel="prefetch" href="/assets/js/240.780a1ce0.js"><link rel="prefetch" href="/assets/js/241.6b01b690.js"><link rel="prefetch" href="/assets/js/242.0c763bc8.js"><link rel="prefetch" href="/assets/js/243.d4c09b4e.js"><link rel="prefetch" href="/assets/js/244.31b37057.js"><link rel="prefetch" href="/assets/js/245.981233f0.js"><link rel="prefetch" href="/assets/js/246.e4c1428a.js"><link rel="prefetch" href="/assets/js/247.e25f44b4.js"><link rel="prefetch" href="/assets/js/248.7bdfd8b2.js"><link rel="prefetch" href="/assets/js/249.d3a237d9.js"><link rel="prefetch" href="/assets/js/25.6410dcd3.js"><link rel="prefetch" href="/assets/js/250.10034fc7.js"><link rel="prefetch" href="/assets/js/251.168761c0.js"><link rel="prefetch" href="/assets/js/252.6f0f4214.js"><link rel="prefetch" href="/assets/js/253.4b794839.js"><link rel="prefetch" href="/assets/js/254.b563d2fa.js"><link rel="prefetch" href="/assets/js/255.7cfd9f1f.js"><link rel="prefetch" href="/assets/js/256.86cbb101.js"><link rel="prefetch" href="/assets/js/257.f150714a.js"><link rel="prefetch" href="/assets/js/258.1cf5cfe1.js"><link rel="prefetch" href="/assets/js/259.4e2f6cde.js"><link rel="prefetch" href="/assets/js/26.3bad1fe4.js"><link rel="prefetch" href="/assets/js/260.43d2bf2c.js"><link rel="prefetch" href="/assets/js/261.de64501f.js"><link rel="prefetch" href="/assets/js/262.3fffbe47.js"><link rel="prefetch" href="/assets/js/263.431cfbc4.js"><link rel="prefetch" href="/assets/js/264.3ac3da15.js"><link rel="prefetch" href="/assets/js/265.f6808bd4.js"><link rel="prefetch" href="/assets/js/266.4ca922e8.js"><link rel="prefetch" href="/assets/js/267.43a0858e.js"><link rel="prefetch" href="/assets/js/268.cdfdd162.js"><link rel="prefetch" href="/assets/js/269.bfa60072.js"><link rel="prefetch" href="/assets/js/27.e0436567.js"><link rel="prefetch" href="/assets/js/270.10b63901.js"><link rel="prefetch" href="/assets/js/271.c08237ce.js"><link rel="prefetch" href="/assets/js/272.eb663d76.js"><link rel="prefetch" href="/assets/js/273.286cd5e4.js"><link rel="prefetch" href="/assets/js/274.1e503eb5.js"><link rel="prefetch" href="/assets/js/276.82fbecb1.js"><link rel="prefetch" href="/assets/js/277.0f5d5705.js"><link rel="prefetch" href="/assets/js/278.6f43457f.js"><link rel="prefetch" href="/assets/js/279.98bcf600.js"><link rel="prefetch" href="/assets/js/28.87ee303f.js"><link rel="prefetch" href="/assets/js/280.b98abe82.js"><link rel="prefetch" href="/assets/js/281.be2dc320.js"><link rel="prefetch" href="/assets/js/282.3f6ca7fc.js"><link rel="prefetch" href="/assets/js/283.2f170354.js"><link rel="prefetch" href="/assets/js/284.6513faa5.js"><link rel="prefetch" href="/assets/js/285.aaf2cbc6.js"><link rel="prefetch" href="/assets/js/286.4fc383e8.js"><link rel="prefetch" href="/assets/js/287.d9029cf5.js"><link rel="prefetch" href="/assets/js/288.135ff5c4.js"><link rel="prefetch" href="/assets/js/289.d33c4d85.js"><link rel="prefetch" href="/assets/js/29.d3d6e6b3.js"><link rel="prefetch" href="/assets/js/290.8c5fb962.js"><link rel="prefetch" href="/assets/js/291.0b9c7751.js"><link rel="prefetch" href="/assets/js/292.54c34e79.js"><link rel="prefetch" href="/assets/js/293.86e62273.js"><link rel="prefetch" href="/assets/js/294.df4b0bc9.js"><link rel="prefetch" href="/assets/js/295.e50b7cd9.js"><link rel="prefetch" href="/assets/js/296.91f8770b.js"><link rel="prefetch" href="/assets/js/297.5e8c5bfa.js"><link rel="prefetch" href="/assets/js/298.b6bbf7c5.js"><link rel="prefetch" href="/assets/js/299.04718448.js"><link rel="prefetch" href="/assets/js/30.3650586b.js"><link rel="prefetch" href="/assets/js/300.bec6a12b.js"><link rel="prefetch" href="/assets/js/301.d50543c3.js"><link rel="prefetch" href="/assets/js/302.8c809032.js"><link rel="prefetch" href="/assets/js/303.4a1071b2.js"><link rel="prefetch" href="/assets/js/304.aafbe597.js"><link rel="prefetch" href="/assets/js/305.66139de5.js"><link rel="prefetch" href="/assets/js/306.6310a4f5.js"><link rel="prefetch" href="/assets/js/307.8a392989.js"><link rel="prefetch" href="/assets/js/308.18595d18.js"><link rel="prefetch" href="/assets/js/309.e67b8dbe.js"><link rel="prefetch" href="/assets/js/31.b94d0bbe.js"><link rel="prefetch" href="/assets/js/310.b1dbbf1c.js"><link rel="prefetch" href="/assets/js/311.f9f34ef3.js"><link rel="prefetch" href="/assets/js/312.98309630.js"><link rel="prefetch" href="/assets/js/313.44844612.js"><link rel="prefetch" href="/assets/js/314.a3b20b70.js"><link rel="prefetch" href="/assets/js/315.b4af0dbe.js"><link rel="prefetch" href="/assets/js/316.11be37cf.js"><link rel="prefetch" href="/assets/js/317.8bfdda93.js"><link rel="prefetch" href="/assets/js/318.663ffbcc.js"><link rel="prefetch" href="/assets/js/319.59af0d55.js"><link rel="prefetch" href="/assets/js/32.ff896413.js"><link rel="prefetch" href="/assets/js/320.9ed2a82c.js"><link rel="prefetch" href="/assets/js/321.fac3ebc4.js"><link rel="prefetch" href="/assets/js/322.96d349d2.js"><link rel="prefetch" href="/assets/js/323.2fcdfd96.js"><link rel="prefetch" href="/assets/js/324.a19966ff.js"><link rel="prefetch" href="/assets/js/325.987eaec4.js"><link rel="prefetch" href="/assets/js/326.18894f23.js"><link rel="prefetch" href="/assets/js/327.2014e08f.js"><link rel="prefetch" href="/assets/js/328.86e52e6b.js"><link rel="prefetch" href="/assets/js/329.0424d7d5.js"><link rel="prefetch" href="/assets/js/33.95a3ac05.js"><link rel="prefetch" href="/assets/js/330.40f26bb0.js"><link rel="prefetch" href="/assets/js/331.65ee89c2.js"><link rel="prefetch" href="/assets/js/332.31da3cb2.js"><link rel="prefetch" href="/assets/js/333.793650ee.js"><link rel="prefetch" href="/assets/js/334.63832503.js"><link rel="prefetch" href="/assets/js/335.62c60028.js"><link rel="prefetch" href="/assets/js/336.a520628c.js"><link rel="prefetch" href="/assets/js/337.236ce253.js"><link rel="prefetch" href="/assets/js/338.88377897.js"><link rel="prefetch" href="/assets/js/339.88b3d8a2.js"><link rel="prefetch" href="/assets/js/34.e93e2e55.js"><link rel="prefetch" href="/assets/js/340.5b139ee6.js"><link rel="prefetch" href="/assets/js/341.9fc8c6ed.js"><link rel="prefetch" href="/assets/js/342.3ad73777.js"><link rel="prefetch" href="/assets/js/343.2c8ba853.js"><link rel="prefetch" href="/assets/js/344.d9f7d184.js"><link rel="prefetch" href="/assets/js/345.59284c96.js"><link rel="prefetch" href="/assets/js/346.bb62fee3.js"><link rel="prefetch" href="/assets/js/347.a504768f.js"><link rel="prefetch" href="/assets/js/348.f7fc33f2.js"><link rel="prefetch" href="/assets/js/349.a0969f85.js"><link rel="prefetch" href="/assets/js/35.2eaa786a.js"><link rel="prefetch" href="/assets/js/350.8be88652.js"><link rel="prefetch" href="/assets/js/351.a0134bc5.js"><link rel="prefetch" href="/assets/js/352.7c6b05f5.js"><link rel="prefetch" href="/assets/js/353.13f82a67.js"><link rel="prefetch" href="/assets/js/354.7a15a639.js"><link rel="prefetch" href="/assets/js/355.ce87b8a8.js"><link rel="prefetch" href="/assets/js/356.7f271afc.js"><link rel="prefetch" href="/assets/js/357.cd4e6ad5.js"><link rel="prefetch" href="/assets/js/358.231646f5.js"><link rel="prefetch" href="/assets/js/359.951751b8.js"><link rel="prefetch" href="/assets/js/36.0eb14751.js"><link rel="prefetch" href="/assets/js/360.d10a92ff.js"><link rel="prefetch" href="/assets/js/361.30a528c6.js"><link rel="prefetch" href="/assets/js/362.605a4856.js"><link rel="prefetch" href="/assets/js/363.4b0724ed.js"><link rel="prefetch" href="/assets/js/364.09e0ac23.js"><link rel="prefetch" href="/assets/js/365.6cbdb6bb.js"><link rel="prefetch" href="/assets/js/366.f3df5cb3.js"><link rel="prefetch" href="/assets/js/367.5dc304a0.js"><link rel="prefetch" href="/assets/js/368.cfe55d3a.js"><link rel="prefetch" href="/assets/js/369.122e17a6.js"><link rel="prefetch" href="/assets/js/37.373de478.js"><link rel="prefetch" href="/assets/js/370.57e7ca05.js"><link rel="prefetch" href="/assets/js/371.aed8699f.js"><link rel="prefetch" href="/assets/js/372.1c47c97c.js"><link rel="prefetch" href="/assets/js/373.9d2cee25.js"><link rel="prefetch" href="/assets/js/374.0e15cf2e.js"><link rel="prefetch" href="/assets/js/375.d505f167.js"><link rel="prefetch" href="/assets/js/376.5c7a7c26.js"><link rel="prefetch" href="/assets/js/377.a4a94146.js"><link rel="prefetch" href="/assets/js/378.4147bf94.js"><link rel="prefetch" href="/assets/js/379.d4ee40ad.js"><link rel="prefetch" href="/assets/js/38.ab334ffd.js"><link rel="prefetch" href="/assets/js/380.6fa857a5.js"><link rel="prefetch" href="/assets/js/381.2aeee47a.js"><link rel="prefetch" href="/assets/js/382.630fed60.js"><link rel="prefetch" href="/assets/js/383.e6921012.js"><link rel="prefetch" href="/assets/js/384.57717d76.js"><link rel="prefetch" href="/assets/js/385.b4355c7e.js"><link rel="prefetch" href="/assets/js/386.5e7b9753.js"><link rel="prefetch" href="/assets/js/387.c752e45f.js"><link rel="prefetch" href="/assets/js/388.05e04b1c.js"><link rel="prefetch" href="/assets/js/389.a8ad271f.js"><link rel="prefetch" href="/assets/js/39.409d903d.js"><link rel="prefetch" href="/assets/js/390.560fbe59.js"><link rel="prefetch" href="/assets/js/391.4fc3f261.js"><link rel="prefetch" href="/assets/js/392.b409a196.js"><link rel="prefetch" href="/assets/js/393.043b9fb3.js"><link rel="prefetch" href="/assets/js/394.07d26f84.js"><link rel="prefetch" href="/assets/js/395.ac86423f.js"><link rel="prefetch" href="/assets/js/396.096b1b5d.js"><link rel="prefetch" href="/assets/js/397.c36e4f7d.js"><link rel="prefetch" href="/assets/js/398.62aed540.js"><link rel="prefetch" href="/assets/js/399.081d7ba5.js"><link rel="prefetch" href="/assets/js/4.e53d8224.js"><link rel="prefetch" href="/assets/js/40.8d1d6eb3.js"><link rel="prefetch" href="/assets/js/400.baebd974.js"><link rel="prefetch" href="/assets/js/401.297d2159.js"><link rel="prefetch" href="/assets/js/402.37a81f3c.js"><link rel="prefetch" href="/assets/js/403.9ddf70fc.js"><link rel="prefetch" href="/assets/js/404.bb1cf823.js"><link rel="prefetch" href="/assets/js/405.c1f982a3.js"><link rel="prefetch" href="/assets/js/406.cef2382f.js"><link rel="prefetch" href="/assets/js/407.8ce0ef14.js"><link rel="prefetch" href="/assets/js/408.70093677.js"><link rel="prefetch" href="/assets/js/409.8470a10f.js"><link rel="prefetch" href="/assets/js/41.a0b11040.js"><link rel="prefetch" href="/assets/js/410.7fcfbb14.js"><link rel="prefetch" href="/assets/js/411.12656519.js"><link rel="prefetch" href="/assets/js/412.4ed961de.js"><link rel="prefetch" href="/assets/js/413.fb18f466.js"><link rel="prefetch" href="/assets/js/414.52ae334e.js"><link rel="prefetch" href="/assets/js/415.bf1d3eef.js"><link rel="prefetch" href="/assets/js/416.bfb61bc5.js"><link rel="prefetch" href="/assets/js/417.693a17bd.js"><link rel="prefetch" href="/assets/js/418.2a62e26f.js"><link rel="prefetch" href="/assets/js/419.af18f800.js"><link rel="prefetch" href="/assets/js/42.d7b5cb69.js"><link rel="prefetch" href="/assets/js/420.96bf44c3.js"><link rel="prefetch" href="/assets/js/421.d40d2a5b.js"><link rel="prefetch" href="/assets/js/422.d4aa9626.js"><link rel="prefetch" href="/assets/js/423.2c29f7aa.js"><link rel="prefetch" href="/assets/js/424.30db9de9.js"><link rel="prefetch" href="/assets/js/425.9c8b4212.js"><link rel="prefetch" href="/assets/js/426.d258d015.js"><link rel="prefetch" href="/assets/js/427.e5c806f7.js"><link rel="prefetch" href="/assets/js/428.35490fd4.js"><link rel="prefetch" href="/assets/js/429.71b82b78.js"><link rel="prefetch" href="/assets/js/43.070ce713.js"><link rel="prefetch" href="/assets/js/430.cedb78bd.js"><link rel="prefetch" href="/assets/js/431.37ca9c54.js"><link rel="prefetch" href="/assets/js/432.828817f0.js"><link rel="prefetch" href="/assets/js/433.645623f7.js"><link rel="prefetch" href="/assets/js/434.7bb50d9b.js"><link rel="prefetch" href="/assets/js/435.f39a1847.js"><link rel="prefetch" href="/assets/js/436.63593e43.js"><link rel="prefetch" href="/assets/js/437.c596b089.js"><link rel="prefetch" href="/assets/js/438.240d8e15.js"><link rel="prefetch" href="/assets/js/439.feaf2e3b.js"><link rel="prefetch" href="/assets/js/44.127fc92f.js"><link rel="prefetch" href="/assets/js/440.9580ce02.js"><link rel="prefetch" href="/assets/js/441.b9d60f11.js"><link rel="prefetch" href="/assets/js/442.5ee1e745.js"><link rel="prefetch" href="/assets/js/443.b130f757.js"><link rel="prefetch" href="/assets/js/444.8e1416de.js"><link rel="prefetch" href="/assets/js/445.db2ad3e4.js"><link rel="prefetch" href="/assets/js/446.908a7437.js"><link rel="prefetch" href="/assets/js/447.569f186b.js"><link rel="prefetch" href="/assets/js/448.cfa84110.js"><link rel="prefetch" href="/assets/js/449.8a975324.js"><link rel="prefetch" href="/assets/js/45.aa6f26c9.js"><link rel="prefetch" href="/assets/js/450.db91d3af.js"><link rel="prefetch" href="/assets/js/451.8c67130b.js"><link rel="prefetch" href="/assets/js/46.d987e0bb.js"><link rel="prefetch" href="/assets/js/47.b175ddf4.js"><link rel="prefetch" href="/assets/js/48.1c23dfdd.js"><link rel="prefetch" href="/assets/js/49.5be54faf.js"><link rel="prefetch" href="/assets/js/5.e17246d6.js"><link rel="prefetch" href="/assets/js/50.b1da13e4.js"><link rel="prefetch" href="/assets/js/51.a89ccc8f.js"><link rel="prefetch" href="/assets/js/52.7549ee24.js"><link rel="prefetch" href="/assets/js/53.a5101355.js"><link rel="prefetch" href="/assets/js/54.ca16bf1e.js"><link rel="prefetch" href="/assets/js/55.088c245a.js"><link rel="prefetch" href="/assets/js/56.b04f7476.js"><link rel="prefetch" href="/assets/js/57.52759a0c.js"><link rel="prefetch" href="/assets/js/58.11d3f0dd.js"><link rel="prefetch" href="/assets/js/59.c0d44170.js"><link rel="prefetch" href="/assets/js/6.b497f2de.js"><link rel="prefetch" href="/assets/js/60.f4a5b3ce.js"><link rel="prefetch" href="/assets/js/61.69a0f8ec.js"><link rel="prefetch" href="/assets/js/62.f2884dc3.js"><link rel="prefetch" href="/assets/js/63.2200cd75.js"><link rel="prefetch" href="/assets/js/64.d1e195f6.js"><link rel="prefetch" href="/assets/js/65.f0196f55.js"><link rel="prefetch" href="/assets/js/66.a1d8a358.js"><link rel="prefetch" href="/assets/js/67.eb3af313.js"><link rel="prefetch" href="/assets/js/68.fc37b146.js"><link rel="prefetch" href="/assets/js/69.8a3039c1.js"><link rel="prefetch" href="/assets/js/7.050bd105.js"><link rel="prefetch" href="/assets/js/70.18f2ac49.js"><link rel="prefetch" href="/assets/js/71.f9c04e4e.js"><link rel="prefetch" href="/assets/js/72.72bb4f92.js"><link rel="prefetch" href="/assets/js/73.93a0e56f.js"><link rel="prefetch" href="/assets/js/74.94b0e415.js"><link rel="prefetch" href="/assets/js/75.0efe5bd8.js"><link rel="prefetch" href="/assets/js/76.411a149b.js"><link rel="prefetch" href="/assets/js/77.93f3a85b.js"><link rel="prefetch" href="/assets/js/78.e721ad23.js"><link rel="prefetch" href="/assets/js/79.52b8d1bb.js"><link rel="prefetch" href="/assets/js/8.ca5874dd.js"><link rel="prefetch" href="/assets/js/80.f7ff9764.js"><link rel="prefetch" href="/assets/js/81.b3fb800e.js"><link rel="prefetch" href="/assets/js/82.cda965c9.js"><link rel="prefetch" href="/assets/js/83.67402967.js"><link rel="prefetch" href="/assets/js/84.7111aac5.js"><link rel="prefetch" href="/assets/js/85.98a2cf19.js"><link rel="prefetch" href="/assets/js/86.08ccbd30.js"><link rel="prefetch" href="/assets/js/87.1d9976a5.js"><link rel="prefetch" href="/assets/js/88.4c2af5cc.js"><link rel="prefetch" href="/assets/js/89.be23dd95.js"><link rel="prefetch" href="/assets/js/9.448d01b4.js"><link rel="prefetch" href="/assets/js/90.bfe2cd95.js"><link rel="prefetch" href="/assets/js/91.c3c25fa1.js"><link rel="prefetch" href="/assets/js/92.043be796.js"><link rel="prefetch" href="/assets/js/93.59f34557.js"><link rel="prefetch" href="/assets/js/94.52822aff.js"><link rel="prefetch" href="/assets/js/95.a9490191.js"><link rel="prefetch" href="/assets/js/96.517f15b2.js"><link rel="prefetch" href="/assets/js/97.27be6b97.js"><link rel="prefetch" href="/assets/js/98.05e0ebd7.js"><link rel="prefetch" href="/assets/js/99.8b7ca3c5.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.3b3aacb0.js">
<link rel="stylesheet" href="/assets/css/0.styles.1c0ab417.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/zh/" class="home-link router-link-active"><img src="/img/logo.png" alt=" " class="logo"></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">文档</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.8.x</a></li></ul></div></div><div class="nav-item"><a href="/zh/SystemDesign/Architecture/Architecture.html" class="nav-link">系统设计</a></div><div class="nav-item"><a href="/zh/Download/" class="nav-link">下载</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">社区</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Community-Project Committers.html" class="nav-link">开发人员</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Community-Powered By.html" class="nav-link">技术支持</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Materials.html" class="nav-link">活动与报告</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Feedback.html" class="nav-link">交流与反馈</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">开发</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/zh/Development/VoteRelease.html" class="nav-link">如何投票</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/HowToCommit.html" class="nav-link">如何提交代码</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/Committer.html" class="nav-link">成为Committer</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/ContributeGuide.html" class="nav-link">项目开发指南</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/format-changelist.html" class="nav-link">TsFile的更改列表</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/rpc-changelist.html" class="nav-link">RPC变更清单</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
基金会
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
许可证
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
安全
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
赞助
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
致谢
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
活动
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/SystemDesign/TsFile/Format.html" class="nav-link">English</a></li><li class="dropdown-item"><!----> <a href="/zh/SystemDesign/TsFile/Format.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-labelledby="outbound-link-title" role="img" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><title id="outbound-link-title">(opens new window)</title> <path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">文档</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.8.x</a></li></ul></div></div><div class="nav-item"><a href="/zh/SystemDesign/Architecture/Architecture.html" class="nav-link">系统设计</a></div><div class="nav-item"><a href="/zh/Download/" class="nav-link">下载</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">社区</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Community-Project Committers.html" class="nav-link">开发人员</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Community-Powered By.html" class="nav-link">技术支持</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Materials.html" class="nav-link">活动与报告</a></li><li class="dropdown-item"><!----> <a href="/zh/Community/Feedback.html" class="nav-link">交流与反馈</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">开发</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/zh/Development/VoteRelease.html" class="nav-link">如何投票</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/HowToCommit.html" class="nav-link">如何提交代码</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/Committer.html" class="nav-link">成为Committer</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/ContributeGuide.html" class="nav-link">项目开发指南</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/format-changelist.html" class="nav-link">TsFile的更改列表</a></li><li class="dropdown-item"><!----> <a href="/zh/Development/rpc-changelist.html" class="nav-link">RPC变更清单</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
基金会
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
许可证
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
安全
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
赞助
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
致谢
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
活动
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/SystemDesign/TsFile/Format.html" class="nav-link">English</a></li><li class="dropdown-item"><!----> <a href="/zh/SystemDesign/TsFile/Format.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<svg xmlns="http://www.w3.org/2000/svg" aria-labelledby="outbound-link-title" role="img" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><title id="outbound-link-title">(opens new window)</title> <path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>系统设计</span> <!----></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>应用概览</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>TsFile</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/zh/SystemDesign/TsFile/TsFile.html" class="sidebar-link">TsFile</a></li><li><a href="/zh/SystemDesign/TsFile/Format.html" aria-current="page" class="active sidebar-link">格式</a></li><li><a href="/zh/SystemDesign/TsFile/Write.html" class="sidebar-link">写流程</a></li><li><a href="/zh/SystemDesign/TsFile/Read.html" class="sidebar-link">读流程</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>查询引擎</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>元数据管理</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>存储引擎</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>数据查询</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>工具</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>连接器</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content content__default"><h1 id="tsfile-文件格式"><a href="#tsfile-文件格式" class="header-anchor">#</a> TsFile 文件格式</h1> <h2 id="_1-tsfile-设计"><a href="#_1-tsfile-设计" class="header-anchor">#</a> 1. TsFile 设计</h2> <p>本章是关于 TsFile 的设计细节。</p> <h3 id="_1-1-变量的存储"><a href="#_1-1-变量的存储" class="header-anchor">#</a> 1.1 变量的存储</h3> <ul><li><strong>大端存储</strong> <ul><li>比如: <code>int</code> <code>0x8</code> 将会被存储为 <code>00 00 00 08</code>, 而不是 <code>08 00 00 00</code></li></ul></li> <li><strong>可变长的字符串类型</strong> <ul><li>存储的方式是以一个 <code>int</code> 类型的 <code>Size</code> + 字符串组成。<code>Size</code> 的值可以为 0。</li> <li><code>Size</code> 指的是字符串所占的字节数,它并不一定等于字符串的长度。</li> <li>举例来说,&quot;sensor_1&quot; 这个字符串将被存储为 <code>00 00 00 08</code> + &quot;sensor_1&quot; (ASCII编码)。</li> <li>另外需要注意的一点是文件签名 &quot;TsFile000001&quot; (<code>Magic String</code> + <code>Version</code>), 因为他的 <code>Size(12)</code> 和 ASCII 编码值是固定的,所以没有必要在这个字符串前的写入 <code>Size</code> 值。</li></ul></li> <li><strong>数据类型</strong> <ul><li>0: BOOLEAN</li> <li>1: INT32 (<code>int</code>)</li> <li>2: INT64 (<code>long</code>)</li> <li>3: FLOAT</li> <li>4: DOUBLE</li> <li>5: TEXT (<code>String</code>)</li></ul></li> <li><strong>编码类型</strong> <ul><li>0: PLAIN</li> <li>1: PLAIN_DICTIONARY</li> <li>2: RLE</li> <li>3: DIFF</li> <li>4: TS_2DIFF</li> <li>5: BITMAP</li> <li>6: GORILLA</li> <li>7: REGULAR</li></ul></li> <li><strong>压缩类型</strong> <ul><li>0: UNCOMPRESSED</li> <li>1: SNAPPY</li></ul></li> <li><strong>预聚合信息</strong> <ul><li>0: min_value</li> <li>1: max_value</li> <li>2: first_value</li> <li>3: last_value</li> <li>4: sum_value</li></ul></li></ul> <h3 id="_1-2-tsfile-概述"><a href="#_1-2-tsfile-概述" class="header-anchor">#</a> 1.2 TsFile 概述</h3> <p>下图是关于TsFile的结构图。</p> <img src="https://user-images.githubusercontent.com/19167280/82010604-299ac300-96a5-11ea-996d-013c0017f669.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>此文件包括两个设备 d1、d2,每个设备包含两个测点 s1、s2,共 4 个时间序列。每个时间序列包含两个 Chunk。</p> <p>元数据分为三部分</p> <ul><li>按时间序列组织的 ChunkMetadata 列表</li> <li>按时间序列组织的 TimeseriesMetadata</li> <li>TsFileMetadata</li></ul> <p>查询流程:以查 d1.s1 为例</p> <ul><li>反序列化 TsFileMetadata,得到 d1.s1 的 TimeseriesMetadata 的位置</li> <li>反序列化得到 d1.s1 的 TimeseriesMetadata</li> <li>根据 d1.s1 的 TimeseriesMetadata,反序列化其所有 ChunkMetadata</li> <li>根据 d1.s1 的每一个 ChunkMetadata,读取其 Chunk 数据</li></ul> <h4 id="_1-2-1-文件签名和版本号"><a href="#_1-2-1-文件签名和版本号" class="header-anchor">#</a> 1.2.1 文件签名和版本号</h4> <p>TsFile文件头由 6 个字节的 &quot;Magic String&quot; (<code>TsFile</code>) 和 6 个字节的版本号 (<code>000002</code>)组成。</p> <h4 id="_1-2-2-数据文件"><a href="#_1-2-2-数据文件" class="header-anchor">#</a> 1.2.2 数据文件</h4> <p>TsFile文件的内容可以划分为两个部分: 数据(Chunk)和元数据(XXMetadata)。数据和元数据之间是由一个字节的 <code>0x02</code> 做为分隔符。</p> <p><code>ChunkGroup</code> 存储了一个 <em>设备(device)</em> 一段时间的数据。</p> <h5 id="chunkgroup"><a href="#chunkgroup" class="header-anchor">#</a> ChunkGroup</h5> <p><code>ChunkGroup</code> 由若干个 <code>Chunk</code>, 一个字节的分隔符 <code>0x00</code> 和 一个<code>ChunkFooter</code>组成。</p> <h5 id="chunk"><a href="#chunk" class="header-anchor">#</a> Chunk</h5> <p>一个 <code>Chunk</code> 存储了一个 <em>测点(measurement)</em> 一段时间的数据,Chunk 内数据是按时间递增序存储的。<code>Chunk</code> 是由一个字节的分隔符 <code>0x01</code>, 一个 <code>ChunkHeader</code> 和若干个 <code>Page</code> 构成。</p> <h5 id="chunkheader"><a href="#chunkheader" class="header-anchor">#</a> ChunkHeader</h5> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">measurementID</td> <td style="text-align:center;">String</td> <td style="text-align:center;">传感器名称</td></tr> <tr><td style="text-align:center;">dataSize</td> <td style="text-align:center;">int</td> <td style="text-align:center;">chunk 大小</td></tr> <tr><td style="text-align:center;">dataType</td> <td style="text-align:center;">TSDataType</td> <td style="text-align:center;">chunk的数据类型</td></tr> <tr><td style="text-align:center;">compressionType</td> <td style="text-align:center;">CompressionType</td> <td style="text-align:center;">压缩类型</td></tr> <tr><td style="text-align:center;">encodingType</td> <td style="text-align:center;">TSEncoding</td> <td style="text-align:center;">编码类型</td></tr> <tr><td style="text-align:center;">numOfPages</td> <td style="text-align:center;">int</td> <td style="text-align:center;">包含的page数量</td></tr></tbody></table> <h5 id="page"><a href="#page" class="header-anchor">#</a> Page</h5> <p>一个 <code>Page</code> 页存储了 <code>Chunk</code> 的一些数据。 它包含一个 <code>PageHeader</code> 和实际的数据(time-value 编码的键值对)。</p> <p>PageHeader 结构</p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">uncompressedSize</td> <td style="text-align:center;">int</td> <td style="text-align:center;">压缩前数据大小</td></tr> <tr><td style="text-align:center;">compressedSize</td> <td style="text-align:center;">int</td> <td style="text-align:center;">SNAPPY压缩后数据大小</td></tr> <tr><td style="text-align:center;">statistics</td> <td style="text-align:center;">Statistics</td> <td style="text-align:center;">统计量</td></tr></tbody></table> <p>这里是<code>statistics</code>的详细信息:</p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">描述</th> <th style="text-align:center;">DoubleStatistics</th> <th style="text-align:center;">FloatStatistics</th> <th style="text-align:center;">IntegerStatistics</th> <th style="text-align:center;">LongStatistics</th> <th style="text-align:center;">BinaryStatistics</th> <th style="text-align:center;">BooleanStatistics</th></tr></thead> <tbody><tr><td style="text-align:center;">count</td> <td style="text-align:center;">数据点个数</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td></tr> <tr><td style="text-align:center;">startTime</td> <td style="text-align:center;">开始时间</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td></tr> <tr><td style="text-align:center;">endTime</td> <td style="text-align:center;">结束时间</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td> <td style="text-align:center;">long</td></tr> <tr><td style="text-align:center;">minValue</td> <td style="text-align:center;">最小值</td> <td style="text-align:center;">double</td> <td style="text-align:center;">float</td> <td style="text-align:center;">int</td> <td style="text-align:center;">long</td> <td style="text-align:center;">-</td> <td style="text-align:center;">-</td></tr> <tr><td style="text-align:center;">maxValue</td> <td style="text-align:center;">最大值</td> <td style="text-align:center;">double</td> <td style="text-align:center;">float</td> <td style="text-align:center;">int</td> <td style="text-align:center;">long</td> <td style="text-align:center;">-</td> <td style="text-align:center;">-</td></tr> <tr><td style="text-align:center;">firstValue</td> <td style="text-align:center;">第一个值</td> <td style="text-align:center;">double</td> <td style="text-align:center;">float</td> <td style="text-align:center;">int</td> <td style="text-align:center;">long</td> <td style="text-align:center;">Binary</td> <td style="text-align:center;">boolean</td></tr> <tr><td style="text-align:center;">lastValue</td> <td style="text-align:center;">最后一个值</td> <td style="text-align:center;">double</td> <td style="text-align:center;">float</td> <td style="text-align:center;">int</td> <td style="text-align:center;">long</td> <td style="text-align:center;">Binary</td> <td style="text-align:center;">boolean</td></tr> <tr><td style="text-align:center;">sumValue</td> <td style="text-align:center;"></td> <td style="text-align:center;">double</td> <td style="text-align:center;">double</td> <td style="text-align:center;">double</td> <td style="text-align:center;">double</td> <td style="text-align:center;">-</td> <td style="text-align:center;">-</td></tr></tbody></table> <h5 id="chunkgroupfooter"><a href="#chunkgroupfooter" class="header-anchor">#</a> ChunkGroupFooter</h5> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">deviceID</td> <td style="text-align:center;">String</td> <td style="text-align:center;">设备名称</td></tr> <tr><td style="text-align:center;">dataSize</td> <td style="text-align:center;">long</td> <td style="text-align:center;">ChunkGroup 大小</td></tr> <tr><td style="text-align:center;">numberOfChunks</td> <td style="text-align:center;">int</td> <td style="text-align:center;">包含的 chunks 的数量</td></tr></tbody></table> <h4 id="_1-2-3-元数据"><a href="#_1-2-3-元数据" class="header-anchor">#</a> 1.2.3 元数据</h4> <h5 id="_1-2-3-1-chunkmetadata"><a href="#_1-2-3-1-chunkmetadata" class="header-anchor">#</a> 1.2.3.1 ChunkMetadata</h5> <p>第一部分的元数据是 <code>ChunkMetadata</code></p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">measurementUid</td> <td style="text-align:center;">String</td> <td style="text-align:center;">传感器名称</td></tr> <tr><td style="text-align:center;">offsetOfChunkHeader</td> <td style="text-align:center;">long</td> <td style="text-align:center;">文件中 ChunkHeader 开始的偏移量</td></tr> <tr><td style="text-align:center;">tsDataType</td> <td style="text-align:center;">TSDataType</td> <td style="text-align:center;">数据类型</td></tr> <tr><td style="text-align:center;">statistics</td> <td style="text-align:center;">Statistics</td> <td style="text-align:center;">统计量</td></tr></tbody></table> <h5 id="_1-2-3-2-timeseriesmetadata"><a href="#_1-2-3-2-timeseriesmetadata" class="header-anchor">#</a> 1.2.3.2 TimeseriesMetadata</h5> <p>第二部分的元数据是 <code>TimeseriesMetadata</code></p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">measurementUid</td> <td style="text-align:center;">String</td> <td style="text-align:center;">传感器名称</td></tr> <tr><td style="text-align:center;">tsDataType</td> <td style="text-align:center;">TSDataType</td> <td style="text-align:center;">数据类型</td></tr> <tr><td style="text-align:center;">startOffsetOfChunkMetadataList</td> <td style="text-align:center;">long</td> <td style="text-align:center;">文件中 ChunkMetadata 列表开始的偏移量</td></tr> <tr><td style="text-align:center;">chunkMetaDataListDataSize</td> <td style="text-align:center;">int</td> <td style="text-align:center;">ChunkMetadata 列表的大小</td></tr> <tr><td style="text-align:center;">statistics</td> <td style="text-align:center;">Statistics</td> <td style="text-align:center;">统计量</td></tr></tbody></table> <h5 id="_1-2-3-3-tsfilemetadata"><a href="#_1-2-3-3-tsfilemetadata" class="header-anchor">#</a> 1.2.3.3 TsFileMetaData</h5> <p>第三部分的元数据是 <code>TsFileMetaData</code></p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">MetadataIndex</td> <td style="text-align:center;">MetadataIndexNode</td> <td style="text-align:center;">元数据索引节点</td></tr> <tr><td style="text-align:center;">totalChunkNum</td> <td style="text-align:center;">int</td> <td style="text-align:center;">包含的 Chunk 总数</td></tr> <tr><td style="text-align:center;">invalidChunkNum</td> <td style="text-align:center;">int</td> <td style="text-align:center;">失效的 Chunk 总数</td></tr> <tr><td style="text-align:center;">versionInfo</td> <td style="text-align:center;">List&lt;Pair&lt;Long, Long&gt;&gt;</td> <td style="text-align:center;">版本信息映射</td></tr> <tr><td style="text-align:center;">metaOffset</td> <td style="text-align:center;">long</td> <td style="text-align:center;">MetaMarker.SEPARATOR偏移量</td></tr> <tr><td style="text-align:center;">bloomFilter</td> <td style="text-align:center;">BloomFilter</td> <td style="text-align:center;">布隆过滤器</td></tr></tbody></table> <p>元数据索引节点 (MetadataIndexNode) 的成员和类型具体如下:</p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">children</td> <td style="text-align:center;">List<MetadataIndexEntry></MetadataIndexEntry></td> <td style="text-align:center;">节点元数据索引项列表</td></tr> <tr><td style="text-align:center;">endOffset</td> <td style="text-align:center;">long</td> <td style="text-align:center;">此元数据索引节点的结束偏移量</td></tr> <tr><td style="text-align:center;">nodeType</td> <td style="text-align:center;">MetadataIndexNodeType</td> <td style="text-align:center;">节点类型</td></tr></tbody></table> <p>元数据索引项 (MetadataIndexEntry) 的成员和类型具体如下:</p> <table><thead><tr><th style="text-align:center;">成员</th> <th style="text-align:center;">类型</th> <th style="text-align:center;">解释</th></tr></thead> <tbody><tr><td style="text-align:center;">name</td> <td style="text-align:center;">String</td> <td style="text-align:center;">对应设备或传感器的名字</td></tr> <tr><td style="text-align:center;">offset</td> <td style="text-align:center;">long</td> <td style="text-align:center;">偏移量</td></tr></tbody></table> <p>所有的元数据索引节点构成一棵<strong>元数据索引树</strong>,这棵树最多由两个层级组成:设备索引层级和传感器索引层级,在不同的情况下会有不同的组成方式。元数据索引节点类型有四种,分别是<code>INTERNAL_DEVICE</code><code>LEAF_DEVICE</code><code>INTERNAL_MEASUREMENT</code><code>LEAF_MEASUREMENT</code>,分别对应设备索引层级的中间节点和叶子节点,和传感器索引层级的中间节点和叶子节点。
只有传感器索引层级的叶子节点(<code>LEAF_MEASUREMENT</code>) 指向 <code>TimeseriesMetadata</code></p> <p>为了更清楚的说明元数据索引树的结构,这里我们使用四个例子来加以详细说明。</p> <p>元数据索引树的最大度(即每个节点的最大子节点个数)是可以由用户进行配置的,配置项为<code>max_degree_of_index_node</code>,其默认值为1024。在以下例子中,为了简化,我们假定 <code>max_degree_of_index_node = 10</code></p> <img src="https://user-images.githubusercontent.com/19167280/81935219-de3fd080-9622-11ea-9aa1-a59bef1c0001.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>在5个设备,每个设备有5个传感器的情况下,由于设备数和传感器树均不超过 <code>max_degree_of_index_node</code>,因此元数据索引树只有默认的传感器层级。在这个层级里,每个 MetadataIndexNode 最多由10个 MetadataIndexEntry 组成。根节点的 MetadataIndexNode 是 <code>INTERNAL_MEASUREMENT</code> 类型,其中的5个 MetadataIndexEntry 指向对应的设备的 MetadataIndexNode,这些节点直接指向 <code>TimeseriesMetadata</code>,是 <code>LEAF_MEASUREMENT</code></p> <img src="https://user-images.githubusercontent.com/19167280/81935210-d97b1c80-9622-11ea-8a69-2c2c5f05a876.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>在1个设备,设备中有150个传感器的情况下,传感器个数超过了 <code>max_degree_of_index_node</code>,元数据索引树有默认的传感器层级。在这个层级里,每个 MetadataIndexNode 最多由10个 MetadataIndexEntry 组成。直接指向 <code>TimeseriesMetadata</code>的节点类型均为 <code>LEAF_MEASUREMENT</code>;而后续产生的中间节点和根节点不是传感器索引层级的叶子节点,这些节点是 <code>INTERNAL_MEASUREMENT</code></p> <img src="https://user-images.githubusercontent.com/19167280/81935182-cd8f5a80-9622-11ea-8e41-661a5219974b.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>在150个设备,每个设备中有1个传感器的情况下,设备个数超过了 <code>max_degree_of_index_node</code>,形成元数据索引树的传感器层级和设备索引层级。在这两个层级里,每个 MetadataIndexNode 最多由10个 MetadataIndexEntry 组成。直接指向 <code>TimeseriesMetadata</code> 的节点类型为 <code>LEAF_MEASUREMENT</code>,传感器索引层级的根节点同时作为设备索引层级的叶子节点,其节点类型为 <code>LEAF_DEVICE</code>;而后续产生的中间节点和根节点不是设备索引层级的叶子节点,因此节点类型为 <code>INTERNAL_DEVICE</code></p> <img src="https://user-images.githubusercontent.com/19167280/81935138-b6e90380-9622-11ea-94f9-c97bd2b5d050.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>在150个设备,每个设备中有150个传感器的情况下,传感器和设备个数均超过了 <code>max_degree_of_index_node</code>,形成元数据索引树的传感器层级和设备索引层级。在这两个层级里,每个 MetadataIndexNode 均最多由10个 MetadataIndexEntry 组成。如前所述,从根节点到设备索引层级的叶子节点,类型分别为<code>INTERNAL_DEVICE</code><code>LEAF_DEVICE</code>,而每个设备索引层级的叶子节点都是传感器索引层级的根节点,从这里到传感器索引层级的叶子节点,类型分别为<code>INTERNAL_MEASUREMENT</code><code>LEAF_MEASUREMENT</code></p> <p>元数据索引采用树形结构进行设计的目的是在设备数或者传感器数量过大时,可以不用一次读取所有的 <code>TimeseriesMetadata</code>,只需要根据所读取的传感器定位对应的节点,从而减少 I/O,加快查询速度。有关 TsFile 的读流程将在本章最后一节加以详细说明。</p> <h5 id="_1-2-3-4-tsfilemetadatasize"><a href="#_1-2-3-4-tsfilemetadatasize" class="header-anchor">#</a> 1.2.3.4 TsFileMetadataSize</h5> <p>在TsFileMetaData之后,有一个int值用来表示TsFileMetaData的大小。</p> <h4 id="_1-2-4-magic-string"><a href="#_1-2-4-magic-string" class="header-anchor">#</a> 1.2.4 Magic String</h4> <p>TsFile 是以6个字节的magic string (<code>TsFile</code>) 作为结束.</p> <p>恭喜您, 至此您已经完成了 TsFile 的探秘之旅,祝您玩儿的开心!</p> <h3 id="_1-3-tsfile工具集"><a href="#_1-3-tsfile工具集" class="header-anchor">#</a> 1.3 TsFile工具集</h3> <h4 id="_1-3-1-iotdb-data-directory-快速概览工具"><a href="#_1-3-1-iotdb-data-directory-快速概览工具" class="header-anchor">#</a> 1.3.1 IoTDB Data Directory 快速概览工具</h4> <p>该工具的启动脚本会在编译 server 之后生成至 <code>server\target\iotdb-server-0.10.0\tools\tsfileToolSet</code> 目录中。</p> <p>使用方式:</p> <p>For Windows:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>.\print-iotdb-data-dir.bat &lt;IoTDB数据文件夹路径,如果是多个文件夹用逗号分隔&gt; (&lt;输出结果的存储路径&gt;)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>For Linux or MacOs:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>./print-iotdb-data-dir.sh &lt;IoTDB数据文件夹路径,如果是多个文件夹用逗号分隔&gt; (&lt;输出结果的存储路径&gt;)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>在Windows系统中的示例:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>D:\incubator-iotdb\server\target\iotdb-server-0.11.0-SNAPSHOT\tools\tsfileToolSet&gt;.\print-iotdb-data-dir.bat D:\\data\data
​````````````````````````
Starting Printing the IoTDB Data Directory Overview
​````````````````````````
output save path:IoTDB_data_dir_overview.txt
TsFile data dir num:1
21: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
|==============================================================
|D:\\data\data
|--sequence
| |--root.ln.wf01.wt01
| | |--1575813520203-101-0.tsfile
| | |--1575813520203-101-0.tsfile.resource
| | | |--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])
| | |--1575813520669-103-0.tsfile
| | |--1575813520669-103-0.tsfile.resource
| | | |--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])
| | |--1575813521372-107-0.tsfile
| | |--1575813521372-107-0.tsfile.resource
| | | |--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])
|--unsequence
| |--root.ln.wf01.wt01
| | |--1575813521063-105-0.tsfile
| | |--1575813521063-105-0.tsfile.resource
| | | |--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])
|==============================================================
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br></div></div><h4 id="_1-3-2-tsfileresource-打印工具"><a href="#_1-3-2-tsfileresource-打印工具" class="header-anchor">#</a> 1.3.2 TsFileResource 打印工具</h4> <p>该工具的启动脚本会在编译 server 之后生成至 <code>server\target\iotdb-server-0.10.0\tools\tsfileToolSet</code> 目录中。</p> <p>使用方式:</p> <p>Windows:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>.\print-tsfile-sketch.bat &lt;TsFileResource文件夹路径&gt;
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>Linux or MacOs:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>./print-tsfile-sketch.sh &lt;TsFileResource文件夹路径&gt;
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>在Windows系统中的示例:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>D:\incubator-iotdb\server\target\iotdb-server-0.10.0\tools\tsfileToolSet&gt;.\print-tsfile-resource-files.bat D:\data\data\sequence\root.vehicle
​````````````````````````
Starting Printing the TsFileResources
​````````````````````````
12: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
analyzing D:\data\data\sequence\root.vehicle\1572496142067-101-0.tsfile ...
device 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])
analyzing the resource file finished.
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h4 id="_1-3-3-tsfile-描述工具"><a href="#_1-3-3-tsfile-描述工具" class="header-anchor">#</a> 1.3.3 TsFile 描述工具</h4> <p>该工具的启动脚本会在编译 server 之后生成至 <code>server\target\iotdb-server-0.10.0\tools\tsfileToolSet</code> 目录中。</p> <p>使用方式:</p> <p>Windows:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>.\print-tsfile-sketch.bat &lt;TsFile文件路径&gt; (&lt;输出结果的存储路径&gt;)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><ul><li>注意: 如果没有设置输出文件的存储路径, 将使用 &quot;TsFile_sketch_view.txt&quot; 做为默认值。</li></ul> <p>Linux or MacOs:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>./print-tsfile-sketch.sh &lt;TsFile文件路径&gt; (&lt;输出结果的存储路径&gt;)
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><ul><li>注意: 如果没有设置输出文件的存储路径, 将使用 &quot;TsFile_sketch_view.txt&quot; 做为默认值。</li></ul> <p>在mac系统中的示例:</p> <div class="language-console line-numbers-mode"><pre class="language-text"><code>/iotdb/server/target/iotdb-server-0.10.0/tools/tsfileToolSet$ ./print-tsfile-sketch.sh test.tsfile
​````````````````````````
Starting Printing the TsFile Sketch
​````````````````````````
TsFile path:test.tsfile
Sketch save path:TsFile_sketch_view.txt
-------------------------------- TsFile Sketch --------------------------------
file path: test.tsfile
file length: 33436
POSITION| CONTENT
-------- -------
0| [magic head] TsFile
6| [version number] 000002
||||||||||||||||||||| [Chunk Group] of root.group_12.d2, num of Chunks:3
12| [Chunk] of s_INT64e_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:INT64,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 2 pages
677| [Chunk] of s_INT64e_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:INT64,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 1 pages
1349| [Chunk] of s_INT64e_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:INT64,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 2 pages
5766| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d2
| [dataSize] 5754
| [num of chunks] 3
||||||||||||||||||||| [Chunk Group] of root.group_12.d2 ends
5799| [Version Info]
| [marker] 3
| [version] 102
||||||||||||||||||||| [Chunk Group] of root.group_12.d1, num of Chunks:3
5808| [Chunk] of s_INT32e_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:INT32,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 1 pages
8231| [Chunk] of s_INT32e_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:INT32,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 1 pages
8852| [Chunk] of s_INT32e_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:INT32,
startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]
| [marker] 1
| [ChunkHeader]
| 1 pages
9399| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d1
| [dataSize] 3591
| [num of chunks] 3
||||||||||||||||||||| [Chunk Group] of root.group_12.d1 ends
9432| [Version Info]
| [marker] 3
| [version] 102
||||||||||||||||||||| [Chunk Group] of root.group_12.d0, num of Chunks:2
9441| [Chunk] of s_BOOLEANe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:BOOLEAN,
startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]
| [marker] 1
| [ChunkHeader]
| 1 pages
9968| [Chunk] of s_BOOLEANe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:BOOLEAN,
startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]
| [marker] 1
| [ChunkHeader]
| 1 pages
10961| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d0
| [dataSize] 1520
| [num of chunks] 2
||||||||||||||||||||| [Chunk Group] of root.group_12.d0 ends
10994| [Version Info]
| [marker] 3
| [version] 102
||||||||||||||||||||| [Chunk Group] of root.group_12.d5, num of Chunks:1
11003| [Chunk] of s_TEXTe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:TEXT,
startTime: 1 endTime: 10000 count: 10000 [firstValue:version_test,lastValue:version_test]
| [marker] 1
| [ChunkHeader]
| 3 pages
19278| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d5
| [dataSize] 8275
| [num of chunks] 1
||||||||||||||||||||| [Chunk Group] of root.group_12.d5 ends
19311| [Version Info]
| [marker] 3
| [version] 102
||||||||||||||||||||| [Chunk Group] of root.group_12.d4, num of Chunks:4
19320| [Chunk] of s_DOUBLEe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00000000123]
| [marker] 1
| [ChunkHeader]
| 2 pages
23740| [Chunk] of s_DOUBLEe_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]
| [marker] 1
| [ChunkHeader]
| 1 pages
24414| [Chunk] of s_DOUBLEe_GORILLA, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]
| [marker] 1
| [ChunkHeader]
| 1 pages
25054| [Chunk] of s_DOUBLEe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:DOUBLE,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000001224]
| [marker] 1
| [ChunkHeader]
| 2 pages
25717| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d4
| [dataSize] 6397
| [num of chunks] 4
||||||||||||||||||||| [Chunk Group] of root.group_12.d4 ends
25750| [Version Info]
| [marker] 3
| [version] 102
||||||||||||||||||||| [Chunk Group] of root.group_12.d3, num of Chunks:4
25759| [Chunk] of s_FLOATe_GORILLA, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]
| [marker] 1
| [ChunkHeader]
| 1 pages
26375| [Chunk] of s_FLOATe_PLAIN, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]
| [marker] 1
| [ChunkHeader]
| 1 pages
28796| [Chunk] of s_FLOATe_RLE, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]
| [marker] 1
| [ChunkHeader]
| 1 pages
29343| [Chunk] of s_FLOATe_TS_2DIFF, numOfPoints:10000, time range:[1,10000], tsDataType:FLOAT,
startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]
| [marker] 1
| [ChunkHeader]
| 1 pages
29967| [Chunk Group Footer]
| [marker] 0
| [deviceID] root.group_12.d3
| [dataSize] 4208
| [num of chunks] 4
||||||||||||||||||||| [Chunk Group] of root.group_12.d3 ends
30000| [Version Info]
| [marker] 3
| [version] 102
30009| [marker] 2
30010| [ChunkMetadataList] of root.group_12.d0.s_BOOLEANe_PLAIN, tsDataType:BOOLEAN
| [startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]]
30066| [ChunkMetadataList] of root.group_12.d0.s_BOOLEANe_RLE, tsDataType:BOOLEAN
| [startTime: 1 endTime: 10000 count: 10000 [firstValue:true,lastValue:true]]
30120| [ChunkMetadataList] of root.group_12.d1.s_INT32e_PLAIN, tsDataType:INT32
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30196| [ChunkMetadataList] of root.group_12.d1.s_INT32e_RLE, tsDataType:INT32
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30270| [ChunkMetadataList] of root.group_12.d1.s_INT32e_TS_2DIFF, tsDataType:INT32
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30349| [ChunkMetadataList] of root.group_12.d2.s_INT64e_PLAIN, tsDataType:INT64
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30441| [ChunkMetadataList] of root.group_12.d2.s_INT64e_RLE, tsDataType:INT64
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30531| [ChunkMetadataList] of root.group_12.d2.s_INT64e_TS_2DIFF, tsDataType:INT64
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1,maxValue:1,firstValue:1,lastValue:1,sumValue:10000.0]]
30626| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_GORILLA, tsDataType:FLOAT
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]]
30704| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_PLAIN, tsDataType:FLOAT
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]]
30780| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_RLE, tsDataType:FLOAT
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]]
30854| [ChunkMetadataList] of root.group_12.d3.s_FLOATe_TS_2DIFF, tsDataType:FLOAT
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00023841858]]
30933| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_GORILLA, tsDataType:DOUBLE
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]]
31028| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_PLAIN, tsDataType:DOUBLE
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.00000000123]]
31121| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_RLE, tsDataType:DOUBLE
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000001224]]
31212| [ChunkMetadataList] of root.group_12.d4.s_DOUBLEe_TS_2DIFF, tsDataType:DOUBLE
| [startTime: 1 endTime: 10000 count: 10000 [minValue:1.1,maxValue:1.1,firstValue:1.1,lastValue:1.1,sumValue:11000.000000002045]]
31308| [ChunkMetadataList] of root.group_12.d5.s_TEXTe_PLAIN, tsDataType:TEXT
| [startTime: 1 endTime: 10000 count: 10000 [firstValue:version_test,lastValue:version_test]]
32840| [MetadataIndex] of root.group_12.d0
32881| [MetadataIndex] of root.group_12.d1
32920| [MetadataIndex] of root.group_12.d2
32959| [MetadataIndex] of root.group_12.d3
33000| [MetadataIndex] of root.group_12.d4
33042| [MetadataIndex] of root.group_12.d5
33080| [TsFileMetadata]
| [num of devices] 6
| 6 key&amp;TsMetadataIndex
| [totalChunkNum] 17
| [invalidChunkNum] 0
| [bloom filter bit vector byte array length] 32
| [bloom filter bit vector byte array]
| [bloom filter number of bits] 256
| [bloom filter number of hash functions] 5
33426| [TsFileMetadataSize] 346
33430| [magic tail] TsFile
33436| END of TsFile
---------------------------------- TsFile Sketch End ----------------------------------
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br><span class="line-number">66</span><br><span class="line-number">67</span><br><span class="line-number">68</span><br><span class="line-number">69</span><br><span class="line-number">70</span><br><span class="line-number">71</span><br><span class="line-number">72</span><br><span class="line-number">73</span><br><span class="line-number">74</span><br><span class="line-number">75</span><br><span class="line-number">76</span><br><span class="line-number">77</span><br><span class="line-number">78</span><br><span class="line-number">79</span><br><span class="line-number">80</span><br><span class="line-number">81</span><br><span class="line-number">82</span><br><span class="line-number">83</span><br><span class="line-number">84</span><br><span class="line-number">85</span><br><span class="line-number">86</span><br><span class="line-number">87</span><br><span class="line-number">88</span><br><span class="line-number">89</span><br><span class="line-number">90</span><br><span class="line-number">91</span><br><span class="line-number">92</span><br><span class="line-number">93</span><br><span class="line-number">94</span><br><span class="line-number">95</span><br><span class="line-number">96</span><br><span class="line-number">97</span><br><span class="line-number">98</span><br><span class="line-number">99</span><br><span class="line-number">100</span><br><span class="line-number">101</span><br><span class="line-number">102</span><br><span class="line-number">103</span><br><span class="line-number">104</span><br><span class="line-number">105</span><br><span class="line-number">106</span><br><span class="line-number">107</span><br><span class="line-number">108</span><br><span class="line-number">109</span><br><span class="line-number">110</span><br><span class="line-number">111</span><br><span class="line-number">112</span><br><span class="line-number">113</span><br><span class="line-number">114</span><br><span class="line-number">115</span><br><span class="line-number">116</span><br><span class="line-number">117</span><br><span class="line-number">118</span><br><span class="line-number">119</span><br><span class="line-number">120</span><br><span class="line-number">121</span><br><span class="line-number">122</span><br><span class="line-number">123</span><br><span class="line-number">124</span><br><span class="line-number">125</span><br><span class="line-number">126</span><br><span class="line-number">127</span><br><span class="line-number">128</span><br><span class="line-number">129</span><br><span class="line-number">130</span><br><span class="line-number">131</span><br><span class="line-number">132</span><br><span class="line-number">133</span><br><span class="line-number">134</span><br><span class="line-number">135</span><br><span class="line-number">136</span><br><span class="line-number">137</span><br><span class="line-number">138</span><br><span class="line-number">139</span><br><span class="line-number">140</span><br><span class="line-number">141</span><br><span class="line-number">142</span><br><span class="line-number">143</span><br><span class="line-number">144</span><br><span class="line-number">145</span><br><span class="line-number">146</span><br><span class="line-number">147</span><br><span class="line-number">148</span><br><span class="line-number">149</span><br><span class="line-number">150</span><br><span class="line-number">151</span><br><span class="line-number">152</span><br><span class="line-number">153</span><br><span class="line-number">154</span><br><span class="line-number">155</span><br><span class="line-number">156</span><br><span class="line-number">157</span><br><span class="line-number">158</span><br><span class="line-number">159</span><br><span class="line-number">160</span><br><span class="line-number">161</span><br><span class="line-number">162</span><br><span class="line-number">163</span><br><span class="line-number">164</span><br><span class="line-number">165</span><br><span class="line-number">166</span><br><span class="line-number">167</span><br><span class="line-number">168</span><br><span class="line-number">169</span><br><span class="line-number">170</span><br><span class="line-number">171</span><br><span class="line-number">172</span><br><span class="line-number">173</span><br><span class="line-number">174</span><br><span class="line-number">175</span><br><span class="line-number">176</span><br><span class="line-number">177</span><br><span class="line-number">178</span><br><span class="line-number">179</span><br><span class="line-number">180</span><br><span class="line-number">181</span><br><span class="line-number">182</span><br><span class="line-number">183</span><br><span class="line-number">184</span><br><span class="line-number">185</span><br><span class="line-number">186</span><br><span class="line-number">187</span><br><span class="line-number">188</span><br><span class="line-number">189</span><br><span class="line-number">190</span><br><span class="line-number">191</span><br><span class="line-number">192</span><br><span class="line-number">193</span><br><span class="line-number">194</span><br><span class="line-number">195</span><br><span class="line-number">196</span><br><span class="line-number">197</span><br><span class="line-number">198</span><br><span class="line-number">199</span><br><span class="line-number">200</span><br><span class="line-number">201</span><br><span class="line-number">202</span><br><span class="line-number">203</span><br><span class="line-number">204</span><br><span class="line-number">205</span><br><span class="line-number">206</span><br><span class="line-number">207</span><br><span class="line-number">208</span><br><span class="line-number">209</span><br><span class="line-number">210</span><br><span class="line-number">211</span><br><span class="line-number">212</span><br><span class="line-number">213</span><br><span class="line-number">214</span><br></div></div><h4 id="_1-3-4-tsfilesequenceread"><a href="#_1-3-4-tsfilesequenceread" class="header-anchor">#</a> 1.3.4 TsFileSequenceRead</h4> <p>您可以使用示例中的类 <code>example/tsfile/org/apache/iotdb/tsfile/TsFileSequenceRead</code> 顺序打印 TsFile 中的内容.</p> <h3 id="_1-4-tsfile-的总览图"><a href="#_1-4-tsfile-的总览图" class="header-anchor">#</a> 1.4 TsFile 的总览图</h3> <h4 id="v0-8"><a href="#v0-8" class="header-anchor">#</a> v0.8</h4> <img src="https://user-images.githubusercontent.com/33376433/65209576-2bd36000-dacb-11e9-9e43-49e0dd01274e.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <h4 id="v0-9-000001"><a href="#v0-9-000001" class="header-anchor">#</a> v0.9 / 000001</h4> <img src="https://user-images.githubusercontent.com/33376433/69341240-26012300-0ca4-11ea-91a1-d516810cad44.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <h4 id="v0-10-000002"><a href="#v0-10-000002" class="header-anchor">#</a> v0.10 / 000002</h4> <img src="https://user-images.githubusercontent.com/19167280/82010604-299ac300-96a5-11ea-996d-013c0017f669.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"></div> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/zh/SystemDesign/TsFile/TsFile.html" class="prev">
TsFile
</a></span> <span class="next"><a href="/zh/SystemDesign/TsFile/Write.html">
写流程
</a>
</span></p></div> <p style="text-align: center;">Copyright © 2020 The Apache Software Foundation.<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p></main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.a43d7cd0.js" defer></script><script src="/assets/js/3.6210d98e.js" defer></script><script src="/assets/js/275.3534c62b.js" defer></script>
</body>
</html>