blob: 24ef3c0a1ca0aafcad8d534db12b8474a93dd7de [file] [log] [blame]
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title> </title>
<meta name="generator" content="VuePress 1.8.2">
<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.ccadf850.css" as="style"><link rel="preload" href="/assets/js/app.fe44b663.js" as="script"><link rel="preload" href="/assets/js/3.5626571b.js" as="script"><link rel="preload" href="/assets/js/43.3fff5a4c.js" as="script"><link rel="prefetch" href="/assets/js/10.77e7d27b.js"><link rel="prefetch" href="/assets/js/100.5392026f.js"><link rel="prefetch" href="/assets/js/101.4d24dbb3.js"><link rel="prefetch" href="/assets/js/102.4db55384.js"><link rel="prefetch" href="/assets/js/103.28a00d56.js"><link rel="prefetch" href="/assets/js/104.c1cad722.js"><link rel="prefetch" href="/assets/js/105.2dbc18e7.js"><link rel="prefetch" href="/assets/js/106.03cb3598.js"><link rel="prefetch" href="/assets/js/107.1aa2e9d5.js"><link rel="prefetch" href="/assets/js/108.c8e15789.js"><link rel="prefetch" href="/assets/js/109.4e029678.js"><link rel="prefetch" href="/assets/js/11.242ea813.js"><link rel="prefetch" href="/assets/js/110.2673e754.js"><link rel="prefetch" href="/assets/js/111.99869946.js"><link rel="prefetch" href="/assets/js/112.6931e30d.js"><link rel="prefetch" href="/assets/js/113.30edd688.js"><link rel="prefetch" href="/assets/js/114.cba21417.js"><link rel="prefetch" href="/assets/js/115.36ed9d85.js"><link rel="prefetch" href="/assets/js/116.b6f26e1b.js"><link rel="prefetch" href="/assets/js/117.b7ead194.js"><link rel="prefetch" href="/assets/js/118.0489f137.js"><link rel="prefetch" href="/assets/js/119.f4531020.js"><link rel="prefetch" href="/assets/js/12.4c48405a.js"><link rel="prefetch" href="/assets/js/120.d1bc4a0d.js"><link rel="prefetch" href="/assets/js/121.c4dac7da.js"><link rel="prefetch" href="/assets/js/122.37b6650b.js"><link rel="prefetch" href="/assets/js/123.6802c679.js"><link rel="prefetch" href="/assets/js/124.3a1dcf58.js"><link rel="prefetch" href="/assets/js/125.0c3e885a.js"><link rel="prefetch" href="/assets/js/126.fbfa46eb.js"><link rel="prefetch" href="/assets/js/127.110bc389.js"><link rel="prefetch" href="/assets/js/128.fd2a9b78.js"><link rel="prefetch" href="/assets/js/129.b0669c7b.js"><link rel="prefetch" href="/assets/js/13.16ded47d.js"><link rel="prefetch" href="/assets/js/130.830f695a.js"><link rel="prefetch" href="/assets/js/131.f74784eb.js"><link rel="prefetch" href="/assets/js/132.5bd44b31.js"><link rel="prefetch" href="/assets/js/133.4871f071.js"><link rel="prefetch" href="/assets/js/134.c1ebfd44.js"><link rel="prefetch" href="/assets/js/135.06b43884.js"><link rel="prefetch" href="/assets/js/136.4125fe2d.js"><link rel="prefetch" href="/assets/js/137.f79fb732.js"><link rel="prefetch" href="/assets/js/138.925cc589.js"><link rel="prefetch" href="/assets/js/139.269b4122.js"><link rel="prefetch" href="/assets/js/14.66eebc6d.js"><link rel="prefetch" href="/assets/js/140.8acac491.js"><link rel="prefetch" href="/assets/js/141.5739ba5c.js"><link rel="prefetch" href="/assets/js/142.0a0bb60d.js"><link rel="prefetch" href="/assets/js/143.a85602a6.js"><link rel="prefetch" href="/assets/js/144.af08976e.js"><link rel="prefetch" href="/assets/js/145.54dd8613.js"><link rel="prefetch" href="/assets/js/146.d6942192.js"><link rel="prefetch" href="/assets/js/147.58b089c2.js"><link rel="prefetch" href="/assets/js/148.f3061126.js"><link rel="prefetch" href="/assets/js/149.bed18caa.js"><link rel="prefetch" href="/assets/js/15.843fe861.js"><link rel="prefetch" href="/assets/js/150.857bbcb9.js"><link rel="prefetch" href="/assets/js/151.8df8eaff.js"><link rel="prefetch" href="/assets/js/152.7fbfa55b.js"><link rel="prefetch" href="/assets/js/153.88e78e8e.js"><link rel="prefetch" href="/assets/js/154.4c0105cf.js"><link rel="prefetch" href="/assets/js/155.56c02f22.js"><link rel="prefetch" href="/assets/js/156.3610ca5b.js"><link rel="prefetch" href="/assets/js/157.a82e8d14.js"><link rel="prefetch" href="/assets/js/158.cd306550.js"><link rel="prefetch" href="/assets/js/159.7c3f6836.js"><link rel="prefetch" href="/assets/js/16.17c1f643.js"><link rel="prefetch" href="/assets/js/160.d9e7ebc3.js"><link rel="prefetch" href="/assets/js/161.f69489a3.js"><link rel="prefetch" href="/assets/js/162.260f8f8c.js"><link rel="prefetch" href="/assets/js/163.6f4c436f.js"><link rel="prefetch" href="/assets/js/164.48a2358e.js"><link rel="prefetch" href="/assets/js/165.beba59fe.js"><link rel="prefetch" href="/assets/js/166.2534a588.js"><link rel="prefetch" href="/assets/js/167.daba1492.js"><link rel="prefetch" href="/assets/js/168.66d50e2f.js"><link rel="prefetch" href="/assets/js/169.4a288ab4.js"><link rel="prefetch" href="/assets/js/17.9b8df773.js"><link rel="prefetch" href="/assets/js/170.f0555c86.js"><link rel="prefetch" href="/assets/js/171.bbe4ba1a.js"><link rel="prefetch" href="/assets/js/172.712c6bac.js"><link rel="prefetch" href="/assets/js/173.c3917d0d.js"><link rel="prefetch" href="/assets/js/174.9d843f6f.js"><link rel="prefetch" href="/assets/js/175.ca25b135.js"><link rel="prefetch" href="/assets/js/176.35f2d232.js"><link rel="prefetch" href="/assets/js/177.e8e6286d.js"><link rel="prefetch" href="/assets/js/178.c37c5efd.js"><link rel="prefetch" href="/assets/js/179.84f3bdd6.js"><link rel="prefetch" href="/assets/js/18.122d5826.js"><link rel="prefetch" href="/assets/js/180.32503609.js"><link rel="prefetch" href="/assets/js/181.219cb189.js"><link rel="prefetch" href="/assets/js/182.e90074d5.js"><link rel="prefetch" href="/assets/js/183.87f069d1.js"><link rel="prefetch" href="/assets/js/184.6b62bd9f.js"><link rel="prefetch" href="/assets/js/185.4e6b021e.js"><link rel="prefetch" href="/assets/js/186.3679d30d.js"><link rel="prefetch" href="/assets/js/187.aeba6c58.js"><link rel="prefetch" href="/assets/js/188.cc1022eb.js"><link rel="prefetch" href="/assets/js/189.5ac3b4a4.js"><link rel="prefetch" href="/assets/js/19.9187dec1.js"><link rel="prefetch" href="/assets/js/190.ff15e49f.js"><link rel="prefetch" href="/assets/js/191.369829d5.js"><link rel="prefetch" href="/assets/js/192.1d1eb36e.js"><link rel="prefetch" href="/assets/js/193.fc0fb393.js"><link rel="prefetch" href="/assets/js/194.b47fbc4c.js"><link rel="prefetch" href="/assets/js/195.9e36d668.js"><link rel="prefetch" href="/assets/js/196.2d1223f7.js"><link rel="prefetch" href="/assets/js/197.55863e11.js"><link rel="prefetch" href="/assets/js/198.a48cc095.js"><link rel="prefetch" href="/assets/js/199.3a9c2528.js"><link rel="prefetch" href="/assets/js/20.cf088c3b.js"><link rel="prefetch" href="/assets/js/200.195ff96b.js"><link rel="prefetch" href="/assets/js/201.4d6c6e24.js"><link rel="prefetch" href="/assets/js/202.c32388f7.js"><link rel="prefetch" href="/assets/js/203.080586a5.js"><link rel="prefetch" href="/assets/js/204.a3b3ce92.js"><link rel="prefetch" href="/assets/js/205.9af51d77.js"><link rel="prefetch" href="/assets/js/206.ea246089.js"><link rel="prefetch" href="/assets/js/207.1c222b6c.js"><link rel="prefetch" href="/assets/js/208.fa41b6db.js"><link rel="prefetch" href="/assets/js/209.206e9cfe.js"><link rel="prefetch" href="/assets/js/21.fd51f269.js"><link rel="prefetch" href="/assets/js/210.e4599d5b.js"><link rel="prefetch" href="/assets/js/211.b4f21019.js"><link rel="prefetch" href="/assets/js/212.552b3f7c.js"><link rel="prefetch" href="/assets/js/213.e7924e39.js"><link rel="prefetch" href="/assets/js/214.4889616d.js"><link rel="prefetch" href="/assets/js/215.8bc1d1bf.js"><link rel="prefetch" href="/assets/js/216.aeaaff79.js"><link rel="prefetch" href="/assets/js/217.51dbbd91.js"><link rel="prefetch" href="/assets/js/218.477c1e20.js"><link rel="prefetch" href="/assets/js/219.fd6ed6fa.js"><link rel="prefetch" href="/assets/js/22.f9d73f8a.js"><link rel="prefetch" href="/assets/js/220.84349773.js"><link rel="prefetch" href="/assets/js/221.4b98b09e.js"><link rel="prefetch" href="/assets/js/222.57476182.js"><link rel="prefetch" href="/assets/js/223.1c0323f8.js"><link rel="prefetch" href="/assets/js/224.61e78712.js"><link rel="prefetch" href="/assets/js/225.9b6f0752.js"><link rel="prefetch" href="/assets/js/226.4868d0a5.js"><link rel="prefetch" href="/assets/js/227.6ba50795.js"><link rel="prefetch" href="/assets/js/228.1d3cd90f.js"><link rel="prefetch" href="/assets/js/229.6ca83068.js"><link rel="prefetch" href="/assets/js/23.6c7d7eea.js"><link rel="prefetch" href="/assets/js/230.5e6f7ed2.js"><link rel="prefetch" href="/assets/js/231.a8ecd36e.js"><link rel="prefetch" href="/assets/js/232.a18567c5.js"><link rel="prefetch" href="/assets/js/233.f79fadcf.js"><link rel="prefetch" href="/assets/js/234.d9207163.js"><link rel="prefetch" href="/assets/js/235.e81b51ae.js"><link rel="prefetch" href="/assets/js/236.b9c32f41.js"><link rel="prefetch" href="/assets/js/237.d795e1ce.js"><link rel="prefetch" href="/assets/js/238.49757612.js"><link rel="prefetch" href="/assets/js/239.aeda84ea.js"><link rel="prefetch" href="/assets/js/24.a553bb19.js"><link rel="prefetch" href="/assets/js/240.07479801.js"><link rel="prefetch" href="/assets/js/241.ba1379fe.js"><link rel="prefetch" href="/assets/js/242.ce1b153f.js"><link rel="prefetch" href="/assets/js/243.18fd3c66.js"><link rel="prefetch" href="/assets/js/244.2b98e85b.js"><link rel="prefetch" href="/assets/js/245.bf64d7c9.js"><link rel="prefetch" href="/assets/js/246.d0a5b73c.js"><link rel="prefetch" href="/assets/js/247.b9bc9104.js"><link rel="prefetch" href="/assets/js/248.714df448.js"><link rel="prefetch" href="/assets/js/249.e0039e9d.js"><link rel="prefetch" href="/assets/js/25.1e42b275.js"><link rel="prefetch" href="/assets/js/250.ca664993.js"><link rel="prefetch" href="/assets/js/251.b47f298a.js"><link rel="prefetch" href="/assets/js/252.71392152.js"><link rel="prefetch" href="/assets/js/253.e0f23ec8.js"><link rel="prefetch" href="/assets/js/254.6d43bbe7.js"><link rel="prefetch" href="/assets/js/255.c1779bd2.js"><link rel="prefetch" href="/assets/js/256.6a8a06f3.js"><link rel="prefetch" href="/assets/js/257.4e74c883.js"><link rel="prefetch" href="/assets/js/258.f4b72fd8.js"><link rel="prefetch" href="/assets/js/259.f9b80571.js"><link rel="prefetch" href="/assets/js/26.0057d37b.js"><link rel="prefetch" href="/assets/js/260.10e21bfc.js"><link rel="prefetch" href="/assets/js/261.402db160.js"><link rel="prefetch" href="/assets/js/262.02c5372b.js"><link rel="prefetch" href="/assets/js/263.3454f741.js"><link rel="prefetch" href="/assets/js/264.dfc588bd.js"><link rel="prefetch" href="/assets/js/265.f1fee64b.js"><link rel="prefetch" href="/assets/js/266.baac44a1.js"><link rel="prefetch" href="/assets/js/267.b6f584a5.js"><link rel="prefetch" href="/assets/js/268.013f92f7.js"><link rel="prefetch" href="/assets/js/269.706a27e5.js"><link rel="prefetch" href="/assets/js/27.9e25f953.js"><link rel="prefetch" href="/assets/js/270.397dc6f7.js"><link rel="prefetch" href="/assets/js/271.5f063e14.js"><link rel="prefetch" href="/assets/js/272.b88b9e6e.js"><link rel="prefetch" href="/assets/js/273.f7eeeb80.js"><link rel="prefetch" href="/assets/js/274.8d7d8c2a.js"><link rel="prefetch" href="/assets/js/275.167633d2.js"><link rel="prefetch" href="/assets/js/276.bf42d85f.js"><link rel="prefetch" href="/assets/js/277.195beb55.js"><link rel="prefetch" href="/assets/js/278.852d1996.js"><link rel="prefetch" href="/assets/js/279.a3fb5857.js"><link rel="prefetch" href="/assets/js/28.0a801078.js"><link rel="prefetch" href="/assets/js/280.de229c1d.js"><link rel="prefetch" href="/assets/js/281.47d676fa.js"><link rel="prefetch" href="/assets/js/282.1db3920a.js"><link rel="prefetch" href="/assets/js/283.0ed31a9c.js"><link rel="prefetch" href="/assets/js/284.d2f802aa.js"><link rel="prefetch" href="/assets/js/285.0a18923e.js"><link rel="prefetch" href="/assets/js/286.60438a30.js"><link rel="prefetch" href="/assets/js/287.6fa63573.js"><link rel="prefetch" href="/assets/js/288.4432c980.js"><link rel="prefetch" href="/assets/js/289.789f44e7.js"><link rel="prefetch" href="/assets/js/29.a31435b1.js"><link rel="prefetch" href="/assets/js/290.3c1f2e4c.js"><link rel="prefetch" href="/assets/js/291.a340398b.js"><link rel="prefetch" href="/assets/js/292.8568adc1.js"><link rel="prefetch" href="/assets/js/293.42107ac0.js"><link rel="prefetch" href="/assets/js/294.5fae363a.js"><link rel="prefetch" href="/assets/js/295.eb955643.js"><link rel="prefetch" href="/assets/js/296.77ae03d2.js"><link rel="prefetch" href="/assets/js/297.e548ba7e.js"><link rel="prefetch" href="/assets/js/298.d08bd092.js"><link rel="prefetch" href="/assets/js/299.a9495179.js"><link rel="prefetch" href="/assets/js/30.60649b66.js"><link rel="prefetch" href="/assets/js/300.1f1c6539.js"><link rel="prefetch" href="/assets/js/301.45e54d01.js"><link rel="prefetch" href="/assets/js/302.41fa5b16.js"><link rel="prefetch" href="/assets/js/303.50302303.js"><link rel="prefetch" href="/assets/js/304.45ec5f49.js"><link rel="prefetch" href="/assets/js/305.4667a075.js"><link rel="prefetch" href="/assets/js/306.9adbbd88.js"><link rel="prefetch" href="/assets/js/307.01fbd282.js"><link rel="prefetch" href="/assets/js/308.ee661372.js"><link rel="prefetch" href="/assets/js/309.71fd6514.js"><link rel="prefetch" href="/assets/js/31.b5e715ce.js"><link rel="prefetch" href="/assets/js/310.2c1b5f58.js"><link rel="prefetch" href="/assets/js/311.bf369b6f.js"><link rel="prefetch" href="/assets/js/312.ee6deb53.js"><link rel="prefetch" href="/assets/js/313.b173305e.js"><link rel="prefetch" href="/assets/js/314.9bf7681c.js"><link rel="prefetch" href="/assets/js/315.9dced4c4.js"><link rel="prefetch" href="/assets/js/316.d1625f8e.js"><link rel="prefetch" href="/assets/js/317.ff874148.js"><link rel="prefetch" href="/assets/js/318.bc83f98a.js"><link rel="prefetch" href="/assets/js/319.eb7b75c1.js"><link rel="prefetch" href="/assets/js/32.e5e702b0.js"><link rel="prefetch" href="/assets/js/320.017cca1c.js"><link rel="prefetch" href="/assets/js/321.e34387cb.js"><link rel="prefetch" href="/assets/js/322.5aae6989.js"><link rel="prefetch" href="/assets/js/323.e4fd51b3.js"><link rel="prefetch" href="/assets/js/324.1ba3ee32.js"><link rel="prefetch" href="/assets/js/325.21254638.js"><link rel="prefetch" href="/assets/js/326.377d3f46.js"><link rel="prefetch" href="/assets/js/327.7734ba1d.js"><link rel="prefetch" href="/assets/js/328.e9791163.js"><link rel="prefetch" href="/assets/js/329.8acd00bc.js"><link rel="prefetch" href="/assets/js/33.b678d537.js"><link rel="prefetch" href="/assets/js/330.6cff02ec.js"><link rel="prefetch" href="/assets/js/331.98ebbe7d.js"><link rel="prefetch" href="/assets/js/332.1d9d1a04.js"><link rel="prefetch" href="/assets/js/333.e8be9a85.js"><link rel="prefetch" href="/assets/js/334.677f7d89.js"><link rel="prefetch" href="/assets/js/335.9bca2b37.js"><link rel="prefetch" href="/assets/js/336.b2a7394a.js"><link rel="prefetch" href="/assets/js/337.0231a5b2.js"><link rel="prefetch" href="/assets/js/338.1979cb4d.js"><link rel="prefetch" href="/assets/js/339.4bb8f0a9.js"><link rel="prefetch" href="/assets/js/34.f1aa3803.js"><link rel="prefetch" href="/assets/js/340.f0fa3c52.js"><link rel="prefetch" href="/assets/js/341.f8178251.js"><link rel="prefetch" href="/assets/js/342.7dd47706.js"><link rel="prefetch" href="/assets/js/343.363f2cae.js"><link rel="prefetch" href="/assets/js/344.2b4d1572.js"><link rel="prefetch" href="/assets/js/345.54e08f16.js"><link rel="prefetch" href="/assets/js/346.541ef94e.js"><link rel="prefetch" href="/assets/js/347.1f8a56e7.js"><link rel="prefetch" href="/assets/js/348.ff08d1b4.js"><link rel="prefetch" href="/assets/js/349.97e1160f.js"><link rel="prefetch" href="/assets/js/35.5612ab6a.js"><link rel="prefetch" href="/assets/js/350.1fa64f48.js"><link rel="prefetch" href="/assets/js/351.0cdcbb68.js"><link rel="prefetch" href="/assets/js/352.04f35660.js"><link rel="prefetch" href="/assets/js/353.c63abb11.js"><link rel="prefetch" href="/assets/js/354.f07fe232.js"><link rel="prefetch" href="/assets/js/355.9db8e984.js"><link rel="prefetch" href="/assets/js/356.7e54a7f7.js"><link rel="prefetch" href="/assets/js/357.b8b2c19a.js"><link rel="prefetch" href="/assets/js/358.ec88593c.js"><link rel="prefetch" href="/assets/js/359.57a348e6.js"><link rel="prefetch" href="/assets/js/36.4e36f97e.js"><link rel="prefetch" href="/assets/js/360.f91d4985.js"><link rel="prefetch" href="/assets/js/361.fd0b896b.js"><link rel="prefetch" href="/assets/js/362.3078bc4c.js"><link rel="prefetch" href="/assets/js/363.970af9b1.js"><link rel="prefetch" href="/assets/js/364.ce305e49.js"><link rel="prefetch" href="/assets/js/365.228a2005.js"><link rel="prefetch" href="/assets/js/366.3e0ce2e8.js"><link rel="prefetch" href="/assets/js/367.dfba61c0.js"><link rel="prefetch" href="/assets/js/368.d4307f98.js"><link rel="prefetch" href="/assets/js/369.730e7097.js"><link rel="prefetch" href="/assets/js/37.13b65e5d.js"><link rel="prefetch" href="/assets/js/370.e7a52728.js"><link rel="prefetch" href="/assets/js/371.99346247.js"><link rel="prefetch" href="/assets/js/372.09676253.js"><link rel="prefetch" href="/assets/js/373.2a7b274a.js"><link rel="prefetch" href="/assets/js/374.e347ead4.js"><link rel="prefetch" href="/assets/js/375.f70bcedd.js"><link rel="prefetch" href="/assets/js/376.c776b0ed.js"><link rel="prefetch" href="/assets/js/377.3d81f722.js"><link rel="prefetch" href="/assets/js/378.a7f10c5f.js"><link rel="prefetch" href="/assets/js/379.b18f1c51.js"><link rel="prefetch" href="/assets/js/38.c6f83038.js"><link rel="prefetch" href="/assets/js/380.a84e788a.js"><link rel="prefetch" href="/assets/js/381.521f1a2b.js"><link rel="prefetch" href="/assets/js/382.10ebffdc.js"><link rel="prefetch" href="/assets/js/383.fa0c4858.js"><link rel="prefetch" href="/assets/js/384.4d3a1d3e.js"><link rel="prefetch" href="/assets/js/385.edbe545d.js"><link rel="prefetch" href="/assets/js/386.aa0e0479.js"><link rel="prefetch" href="/assets/js/387.d08b9da1.js"><link rel="prefetch" href="/assets/js/388.3cafa76f.js"><link rel="prefetch" href="/assets/js/389.1c150739.js"><link rel="prefetch" href="/assets/js/39.41707d32.js"><link rel="prefetch" href="/assets/js/390.e3c6dc5b.js"><link rel="prefetch" href="/assets/js/391.097ce5d5.js"><link rel="prefetch" href="/assets/js/392.b1450deb.js"><link rel="prefetch" href="/assets/js/393.a9be5042.js"><link rel="prefetch" href="/assets/js/394.0f496e89.js"><link rel="prefetch" href="/assets/js/395.d66b20d2.js"><link rel="prefetch" href="/assets/js/396.a238eb17.js"><link rel="prefetch" href="/assets/js/397.c76a0b8d.js"><link rel="prefetch" href="/assets/js/398.3812b640.js"><link rel="prefetch" href="/assets/js/399.e6940f90.js"><link rel="prefetch" href="/assets/js/4.9c4b1c6d.js"><link rel="prefetch" href="/assets/js/40.f82f0187.js"><link rel="prefetch" href="/assets/js/400.5e0cfb93.js"><link rel="prefetch" href="/assets/js/401.f613f2ba.js"><link rel="prefetch" href="/assets/js/402.be1f5783.js"><link rel="prefetch" href="/assets/js/403.33c1396d.js"><link rel="prefetch" href="/assets/js/404.562089b0.js"><link rel="prefetch" href="/assets/js/405.93f42baf.js"><link rel="prefetch" href="/assets/js/406.ba8d00d1.js"><link rel="prefetch" href="/assets/js/407.0150b19f.js"><link rel="prefetch" href="/assets/js/408.728a1d15.js"><link rel="prefetch" href="/assets/js/409.ef560ed7.js"><link rel="prefetch" href="/assets/js/41.b6799c44.js"><link rel="prefetch" href="/assets/js/410.d3f65621.js"><link rel="prefetch" href="/assets/js/411.07ef2c9f.js"><link rel="prefetch" href="/assets/js/412.4a1d8057.js"><link rel="prefetch" href="/assets/js/413.ebf9aafc.js"><link rel="prefetch" href="/assets/js/414.a5433120.js"><link rel="prefetch" href="/assets/js/415.4dcc07c7.js"><link rel="prefetch" href="/assets/js/416.11747f6b.js"><link rel="prefetch" href="/assets/js/417.5270e086.js"><link rel="prefetch" href="/assets/js/418.d5fc9d05.js"><link rel="prefetch" href="/assets/js/419.540dcd2a.js"><link rel="prefetch" href="/assets/js/42.e6b0aae2.js"><link rel="prefetch" href="/assets/js/420.28641617.js"><link rel="prefetch" href="/assets/js/421.a6c3c8af.js"><link rel="prefetch" href="/assets/js/422.52ab97a6.js"><link rel="prefetch" href="/assets/js/423.7c5da32e.js"><link rel="prefetch" href="/assets/js/424.d39b15e0.js"><link rel="prefetch" href="/assets/js/425.2c8fbc5a.js"><link rel="prefetch" href="/assets/js/426.b6957825.js"><link rel="prefetch" href="/assets/js/427.b96cf924.js"><link rel="prefetch" href="/assets/js/428.6440b235.js"><link rel="prefetch" href="/assets/js/429.57902fe0.js"><link rel="prefetch" href="/assets/js/430.04255b2f.js"><link rel="prefetch" href="/assets/js/431.321286eb.js"><link rel="prefetch" href="/assets/js/432.72fdf31f.js"><link rel="prefetch" href="/assets/js/433.52676bc7.js"><link rel="prefetch" href="/assets/js/434.7bc3fee7.js"><link rel="prefetch" href="/assets/js/435.deac35a6.js"><link rel="prefetch" href="/assets/js/436.46f753f4.js"><link rel="prefetch" href="/assets/js/437.6a675a68.js"><link rel="prefetch" href="/assets/js/438.e8c8ae5b.js"><link rel="prefetch" href="/assets/js/439.ba3f2700.js"><link rel="prefetch" href="/assets/js/44.fee39d6b.js"><link rel="prefetch" href="/assets/js/440.98a7bff0.js"><link rel="prefetch" href="/assets/js/441.e12292fb.js"><link rel="prefetch" href="/assets/js/442.08f60114.js"><link rel="prefetch" href="/assets/js/443.d5d255b9.js"><link rel="prefetch" href="/assets/js/444.01c13452.js"><link rel="prefetch" href="/assets/js/445.954c3b0b.js"><link rel="prefetch" href="/assets/js/446.81521199.js"><link rel="prefetch" href="/assets/js/447.0cf2269e.js"><link rel="prefetch" href="/assets/js/448.fb62b763.js"><link rel="prefetch" href="/assets/js/449.2fd7ec4e.js"><link rel="prefetch" href="/assets/js/45.244b7680.js"><link rel="prefetch" href="/assets/js/450.3ff3ce7b.js"><link rel="prefetch" href="/assets/js/451.4b455f4a.js"><link rel="prefetch" href="/assets/js/452.51fbf6e4.js"><link rel="prefetch" href="/assets/js/453.4d5d4319.js"><link rel="prefetch" href="/assets/js/454.99948bc3.js"><link rel="prefetch" href="/assets/js/455.d1380266.js"><link rel="prefetch" href="/assets/js/456.22423caf.js"><link rel="prefetch" href="/assets/js/457.05a6e43b.js"><link rel="prefetch" href="/assets/js/458.2a93e9bc.js"><link rel="prefetch" href="/assets/js/459.dfc3d492.js"><link rel="prefetch" href="/assets/js/46.539f062d.js"><link rel="prefetch" href="/assets/js/460.2a50d5c4.js"><link rel="prefetch" href="/assets/js/461.07548ac3.js"><link rel="prefetch" href="/assets/js/462.214e91ce.js"><link rel="prefetch" href="/assets/js/463.414bc138.js"><link rel="prefetch" href="/assets/js/464.779a26ec.js"><link rel="prefetch" href="/assets/js/465.c61d57fa.js"><link rel="prefetch" href="/assets/js/466.ab4c1900.js"><link rel="prefetch" href="/assets/js/467.6398c8fc.js"><link rel="prefetch" href="/assets/js/468.f013763e.js"><link rel="prefetch" href="/assets/js/469.40bcf372.js"><link rel="prefetch" href="/assets/js/47.a8742825.js"><link rel="prefetch" href="/assets/js/470.ba1d5a08.js"><link rel="prefetch" href="/assets/js/471.9842c3d9.js"><link rel="prefetch" href="/assets/js/472.887667b1.js"><link rel="prefetch" href="/assets/js/473.ac9f4dc8.js"><link rel="prefetch" href="/assets/js/474.c950558a.js"><link rel="prefetch" href="/assets/js/475.ec6929d7.js"><link rel="prefetch" href="/assets/js/476.d351ffef.js"><link rel="prefetch" href="/assets/js/477.cbb436f4.js"><link rel="prefetch" href="/assets/js/478.10a8af05.js"><link rel="prefetch" href="/assets/js/479.3e21eec2.js"><link rel="prefetch" href="/assets/js/48.656f2900.js"><link rel="prefetch" href="/assets/js/480.2889f790.js"><link rel="prefetch" href="/assets/js/481.6504abc3.js"><link rel="prefetch" href="/assets/js/482.25c23f5a.js"><link rel="prefetch" href="/assets/js/483.11c430e0.js"><link rel="prefetch" href="/assets/js/484.4fb1d507.js"><link rel="prefetch" href="/assets/js/485.1ecbb4e0.js"><link rel="prefetch" href="/assets/js/486.a15cc699.js"><link rel="prefetch" href="/assets/js/487.b4a9526d.js"><link rel="prefetch" href="/assets/js/488.85d13879.js"><link rel="prefetch" href="/assets/js/489.3a566e3d.js"><link rel="prefetch" href="/assets/js/49.f271ac34.js"><link rel="prefetch" href="/assets/js/490.347d23af.js"><link rel="prefetch" href="/assets/js/491.558b7aa9.js"><link rel="prefetch" href="/assets/js/492.af9c4c53.js"><link rel="prefetch" href="/assets/js/493.f89bdb3c.js"><link rel="prefetch" href="/assets/js/494.a0142c98.js"><link rel="prefetch" href="/assets/js/495.d3de8850.js"><link rel="prefetch" href="/assets/js/496.d48c6630.js"><link rel="prefetch" href="/assets/js/497.3b9635e2.js"><link rel="prefetch" href="/assets/js/498.f587a80e.js"><link rel="prefetch" href="/assets/js/499.22f6be18.js"><link rel="prefetch" href="/assets/js/5.2a4451ec.js"><link rel="prefetch" href="/assets/js/50.7d8944cd.js"><link rel="prefetch" href="/assets/js/500.d054de5c.js"><link rel="prefetch" href="/assets/js/501.954e1b5c.js"><link rel="prefetch" href="/assets/js/502.4b184e51.js"><link rel="prefetch" href="/assets/js/503.10334ca5.js"><link rel="prefetch" href="/assets/js/504.0e074cd3.js"><link rel="prefetch" href="/assets/js/505.4993e90d.js"><link rel="prefetch" href="/assets/js/506.6f94a2f8.js"><link rel="prefetch" href="/assets/js/507.b255fcfd.js"><link rel="prefetch" href="/assets/js/508.95c9551e.js"><link rel="prefetch" href="/assets/js/509.1d2ab0fb.js"><link rel="prefetch" href="/assets/js/51.fd01b1a1.js"><link rel="prefetch" href="/assets/js/510.36c66e50.js"><link rel="prefetch" href="/assets/js/511.caf2e589.js"><link rel="prefetch" href="/assets/js/512.133bca04.js"><link rel="prefetch" href="/assets/js/513.e3f62ca2.js"><link rel="prefetch" href="/assets/js/514.f17c4a44.js"><link rel="prefetch" href="/assets/js/515.f637b155.js"><link rel="prefetch" href="/assets/js/516.3cccca96.js"><link rel="prefetch" href="/assets/js/517.80c43b59.js"><link rel="prefetch" href="/assets/js/518.f3438412.js"><link rel="prefetch" href="/assets/js/519.5a0ef98b.js"><link rel="prefetch" href="/assets/js/52.10d8a15b.js"><link rel="prefetch" href="/assets/js/520.d83038f1.js"><link rel="prefetch" href="/assets/js/521.4726d233.js"><link rel="prefetch" href="/assets/js/522.045aff30.js"><link rel="prefetch" href="/assets/js/523.9d9b45b5.js"><link rel="prefetch" href="/assets/js/524.86a7c6cf.js"><link rel="prefetch" href="/assets/js/525.1d6e7b79.js"><link rel="prefetch" href="/assets/js/526.c365bd67.js"><link rel="prefetch" href="/assets/js/527.555f8b61.js"><link rel="prefetch" href="/assets/js/528.690272cc.js"><link rel="prefetch" href="/assets/js/529.7f05b847.js"><link rel="prefetch" href="/assets/js/53.79f66cea.js"><link rel="prefetch" href="/assets/js/530.3fb31398.js"><link rel="prefetch" href="/assets/js/531.54b0ee66.js"><link rel="prefetch" href="/assets/js/532.42a967ca.js"><link rel="prefetch" href="/assets/js/54.1ec48dc5.js"><link rel="prefetch" href="/assets/js/55.9d4b8667.js"><link rel="prefetch" href="/assets/js/56.aa94202c.js"><link rel="prefetch" href="/assets/js/57.dd80489d.js"><link rel="prefetch" href="/assets/js/58.9af3c40d.js"><link rel="prefetch" href="/assets/js/59.70e0291b.js"><link rel="prefetch" href="/assets/js/6.3450075a.js"><link rel="prefetch" href="/assets/js/60.53b7d88b.js"><link rel="prefetch" href="/assets/js/61.b70ccd57.js"><link rel="prefetch" href="/assets/js/62.eef65e9b.js"><link rel="prefetch" href="/assets/js/63.3a66528e.js"><link rel="prefetch" href="/assets/js/64.ed6b77b6.js"><link rel="prefetch" href="/assets/js/65.5573ce3d.js"><link rel="prefetch" href="/assets/js/66.aa4ead2c.js"><link rel="prefetch" href="/assets/js/67.29edf638.js"><link rel="prefetch" href="/assets/js/68.38ac76fc.js"><link rel="prefetch" href="/assets/js/69.7f8c7118.js"><link rel="prefetch" href="/assets/js/7.c5c54fb4.js"><link rel="prefetch" href="/assets/js/70.368e2128.js"><link rel="prefetch" href="/assets/js/71.cf483d39.js"><link rel="prefetch" href="/assets/js/72.b095c9c5.js"><link rel="prefetch" href="/assets/js/73.7f2ffe57.js"><link rel="prefetch" href="/assets/js/74.d67c3927.js"><link rel="prefetch" href="/assets/js/75.d4945299.js"><link rel="prefetch" href="/assets/js/76.f01b8b07.js"><link rel="prefetch" href="/assets/js/77.3c1e294c.js"><link rel="prefetch" href="/assets/js/78.cfcd53d4.js"><link rel="prefetch" href="/assets/js/79.a50c96bd.js"><link rel="prefetch" href="/assets/js/8.68d2fe5c.js"><link rel="prefetch" href="/assets/js/80.8358bd99.js"><link rel="prefetch" href="/assets/js/81.754e7cd2.js"><link rel="prefetch" href="/assets/js/82.e42aff88.js"><link rel="prefetch" href="/assets/js/83.152a1582.js"><link rel="prefetch" href="/assets/js/84.4867883c.js"><link rel="prefetch" href="/assets/js/85.6b2afa69.js"><link rel="prefetch" href="/assets/js/86.3e058a7a.js"><link rel="prefetch" href="/assets/js/87.cf9a4fcf.js"><link rel="prefetch" href="/assets/js/88.dc32204f.js"><link rel="prefetch" href="/assets/js/89.fb10ca17.js"><link rel="prefetch" href="/assets/js/9.e4a451d3.js"><link rel="prefetch" href="/assets/js/90.7f184d9a.js"><link rel="prefetch" href="/assets/js/91.35f464f6.js"><link rel="prefetch" href="/assets/js/92.e45a3d68.js"><link rel="prefetch" href="/assets/js/93.0d192890.js"><link rel="prefetch" href="/assets/js/94.13f91cee.js"><link rel="prefetch" href="/assets/js/95.732898b6.js"><link rel="prefetch" href="/assets/js/96.10bfabc4.js"><link rel="prefetch" href="/assets/js/97.20f5d113.js"><link rel="prefetch" href="/assets/js/98.49efa8b4.js"><link rel="prefetch" href="/assets/js/99.9abce7a4.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.eff714eb.js">
<link rel="stylesheet" href="/assets/css/0.styles.ccadf850.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="/" 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">Document</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">V0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/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="/SystemDesign/Architecture/Architecture.html" class="nav-link">System design</a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</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="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Blog</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Blog/Index.html" class="nav-link">Overview</a></li><li class="dropdown-item"><!----> <a href="/Blog/Release0_93.html" class="nav-link">Some Notes on Release 0.9.3 and upcoming 0.10.0</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">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/SystemDesign/QueryEngine/ResultSetConstruction.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">English</a></li><li class="dropdown-item"><!----> <a href="/zh/SystemDesign/QueryEngine/ResultSetConstruction.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><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> <span class="sr-only">(opens new window)</span></span></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">Document</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Get Started/QuickStart.html" class="nav-link">In progress</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">V0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">V0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">V0.9.x</a></li><li class="dropdown-item"><!----> <a href="/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="/SystemDesign/Architecture/Architecture.html" class="nav-link">System design</a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</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="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Blog</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Blog/Index.html" class="nav-link">Overview</a></li><li class="dropdown-item"><!----> <a href="/Blog/Release0_93.html" class="nav-link">Some Notes on Release 0.9.3 and upcoming 0.10.0</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">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/SystemDesign/QueryEngine/ResultSetConstruction.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">English</a></li><li class="dropdown-item"><!----> <a href="/zh/SystemDesign/QueryEngine/ResultSetConstruction.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
gitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><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> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>System design</span> <!----></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Architecture</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>TsFile</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>QueryEngine</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/SystemDesign/QueryEngine/QueryEngine.html" class="sidebar-link">QueryEngine</a></li><li><a href="/SystemDesign/QueryEngine/Planner.html" class="sidebar-link">Planner</a></li><li><a href="/SystemDesign/QueryEngine/PlanExecutor.html" class="sidebar-link">PlanExecutor</a></li><li><a href="/SystemDesign/QueryEngine/ResultSetConstruction.html" aria-current="page" class="active sidebar-link">ResultSetConstruction</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>SchemaManager</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>StorageEngine</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>DataQuery</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Tools</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Connector</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Client</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content content__default"><h1 id="query-result-set-construction"><a href="#query-result-set-construction" class="header-anchor">#</a> Query Result Set Construction</h1> <h2 id="introduction"><a href="#introduction" class="header-anchor">#</a> Introduction</h2> <p>This text mainly introduces the construction principle of query result set, including three parts: header construction, generating non repeated result set and restoring complete result set.</p> <h2 id="header-construction"><a href="#header-construction" class="header-anchor">#</a> Header construction</h2> <p>Next Introduce the first part: including the result set header construction way of RawDataQuery, AlignByDeviceQuery and LastQuery. e.g. DownsamplingQuery and FillQuery etc. will be introduced as subquery in these three queries.</p> <h3 id="raw-data-query"><a href="#raw-data-query" class="header-anchor">#</a> Raw data query</h3> <p>The header construction logic of raw data query is in the <code>getWideQueryHeaders()</code> method.</p> <ul><li>org.apache.iotdb.db.service.TSServiceImpl.getWideQueryHeaders</li></ul> <p>For the construction of each header, you need to provide the column name and the corresponding data type of the column.</p> <ul><li><p>Ordinary raw data query (including FillQuery) only needs to obtain timeseries paths <strong>not de duplicated</strong> from the physical query plan, which are the column names, and use these paths to obtain the corresponding data type to generate the result set header.</p></li> <li><p>If the raw data query contains aggregate functions (including AggregateQuery and DownsamplingQuery), the time column will be ignored and <strong>aggregate function and timeseries path will be combined to form the column name</strong>, and when obtaining the data type, the type of aggregate function will prevail. For example, <code>root.sg.d1.s1</code> is of FLOAT type, while <code>count(root.sg.d1.s1)</code> shoule be of LONG type.</p></li></ul> <p>Next, we will give examples:</p> <p>Assuming that all timeseries in the query below exist, the result set headers generated by the following two queries are respectively:</p> <p>SQL1:<code>SELECT s1, s2 FROM root.sg.d1;</code> -&gt;</p> <table><thead><tr><th>Time</th> <th>root.sg.d1.s1</th> <th>root.sg.d1.s2</th></tr></thead> <tbody><tr><td></td> <td></td> <td></td></tr></tbody></table> <p>SQL2:<code>SELECT count(s1), max_time(s1) FROM root.sg.d1;</code> -&gt;</p> <table><thead><tr><th>count(root.sg.d1.s1)</th> <th>max_time(root.sg.d1.s2)</th></tr></thead> <tbody><tr><td></td> <td></td></tr></tbody></table> <h3 id="align-by-device-query"><a href="#align-by-device-query" class="header-anchor">#</a> Align by device query</h3> <p>The header construction logic of align by device query is in the <code>getAlignByDeviceQueryHeaders()</code> method.</p> <ul><li>org.apache.iotdb.db.service.TSServiceImpl.getAlignByDeviceQueryHeaders</li></ul> <p>The result set construction of the AlignByDeviceQuery depends on the list of <strong>measurements not deduplicated</strong> generated in the physical query plan. For a brief introduction, the measurements list is a list generated by the suffix path (including wildcards) in the SELECT clause, including three types, namely constant, exist and nonexist. For details, please refer to <a href="/SystemDesign/DataQuery/AlignByDeviceQuery.html">Align by device query</a></p> <p>Since the structure of relation table is used for AlignByDeviceQuery, the device column is added to the header first, and its corresponding data type is text type.</p> <p>Then get the list of measurements, take each measurement as the column name, and get the corresponding data type depending on the measurements' type. If it is a Constant or NonExist type, the data type is directly set as Text type. If it's an Exist type, then get the corresponding type from the <code>measurementdatatypemap</code>, which is stored in the physical query plan.</p> <p>Note that in the case of an AggregationQuery, the measuremnts in the list here will contain aggregate functions, so they can be processed together.</p> <p>Next, we will give an example:</p> <p>Assuming there are two timeseries now: <code>root.sg.d1.s1</code>, <code>root.sg.d1.s2</code>, then the result set header generated by the query below is:</p> <p>SQL:<code>SELECT '111', s1, s2, *, s5 FROM root.sg.d1 ALIGN BY DEVICE;</code></p> <p>-&gt; measurements list: ['111', s1, s2, s1, s2, s5]</p> <p>-&gt; header</p> <table><thead><tr><th>Time</th> <th>Device</th> <th>111</th> <th>s1</th> <th>s2</th> <th>s1</th> <th>s2</th> <th>s5</th></tr></thead> <tbody><tr><td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td></tr></tbody></table> <h3 id="lastquery"><a href="#lastquery" class="header-anchor">#</a> LastQuery</h3> <p>The header construction logic of last query is in the static method <code>LAST_RESP</code>.</p> <ul><li>org.apache.iotdb.db.service.StaticResps.LAST_RESP</li></ul> <p>The latest data query calculates the result with the largest timestamp of the timeseries to be queried and displays it in three columns: time, timeseries and the corresponding value.</p> <p>Next, we will give an example:</p> <p>Assuming there are two timeseries now: <code>root.sg.d1.s1</code>, <code>root.sg.d1.s2</code>, then the result set header generated by the query below is:</p> <p>SQL:<code>SELECT last s1, s2 FROM root.sg.d1;</code></p> <table><thead><tr><th>Time</th> <th>timeseries</th> <th>value</th></tr></thead> <tbody><tr><td>...</td> <td>root.sg.d1.s1</td> <td>...</td></tr> <tr><td>...</td> <td>root.sg.d1.s2</td> <td>...</td></tr></tbody></table> <h2 id="generate-non-repeated-result-set"><a href="#generate-non-repeated-result-set" class="header-anchor">#</a> Generate non repeated result set</h2> <p>Unlike the header construction, we do not need to query duplicate data when executing the physical query plan. For example, for the query <code>select s1, s1 from root.sg.d1</code>, we only need to query the value of the timeseries <code>root.sg.d1.s1</code> once. Therefore, after the header is constructed, we need to generate a non repeated result set on the server side.</p> <p>In addition to AlignByDeviceQuery, the deduplication logic of <strong>RawDataQuery, AggregateQuery, LastQuery</strong> etc. is in the <code>duplicate()</code> method.</p> <ul><li>org.apache.iotdb.db.qp.strategy.PhysicalGenerator.deduplicate()</li></ul> <p>The deduplication logic is relatively simple: first, get the path not deduplicated from the query plan, and then create a <code>Set</code> structure to deduplicate during traversal.</p> <p>It is worth noting that the timeseries paths of the query are sorted by device before the RawDataQuery and AggregateQuery are deduplicated, in order to reduce I/O and deserialization operations and speed up the query.
Here an additional data structure <code>pathToIndex</code> is calculated to record the position of each path in the query.</p> <p>Because only one set of data needs to be calculated for the LastQuery, there is no need to sort the paths. Its <code>pathToIndex</code> will be null.</p> <p>The deduplication logic of <strong>AlignByDeviceQuery</strong> is in the <code>hasNextWithoutConstraint()</code> method of its result set.</p> <ul><li>org.apache.iotdb.db.query.dataset.AlignByDeviceDataSet.hasNextWithoutConstraint()</li></ul> <p>Because AlignByDeviceQuery need to organize their query plans by device, each device query may not have the same path, and it is allowed to contain constant columns and nonexistent timeseries, so it cannot simply be deduplicated with other queries. Deduplication requires <strong>removing not only the repeated timeseries path, but also the constant columns appearing in the query and the timeseries that do not exist in the current device</strong>.
The implementation logic can be referred to <a href="/SystemDesign/DataQuery/AlignByDeviceQuery.html">Align by device query</a>.</p> <p>After the deduplication paths in the query plan are completed, the query executor of IoTDB can be called to execute the query and obtain the deduplication result set.</p> <h2 id="restore-the-complete-result-set"><a href="#restore-the-complete-result-set" class="header-anchor">#</a> Restore the complete result set</h2> <p>The construction of headers and the generation of non-repeating result set above are done on the server side and then returned to the client side. After the client restores the non-repeating result set based on the original header, the complete result set is presented to the user. To distinguish two result sets, they are called <strong>query result set</strong> and <strong>final result set</strong> respectively.</p> <p>To explain simply, an example is given first:</p> <p>SQL: <code>SELECT s2, s1, s2 FROM root.sg.d1;</code></p> <p>The list of column names <code>columnNameList</code> in the header which has been calculated using the steps above is (Timestamp will be contained later if need be):</p> <p><code>[root.sg.d1.s2, root.sg.d1.s1, root.sg.d1.s2].</code></p> <p>The position of the timeseries path in the query <code>pathToIndex</code> is(sorted by device):</p> <p><code>root.sg.d1.s1 -&gt; 0, root.sg.d1.s2 -&gt; 1;</code></p> <p>Then query result set is:</p> <table><thead><tr><th>Time</th> <th>root.sg.d1.s1</th> <th>root.sg.d1.s2</th></tr></thead> <tbody><tr><td></td> <td></td> <td></td></tr></tbody></table> <p>To restore the final result set, we need to construct a mapping set <code>columnOrdinalMap</code> with the column name to its position in the query result set, which is aimed at fetching the corresponding result of a column from the query result set. This part of logic is completed in the constructor of the new result set <code>IoTDBQueryResultSet</code>.</p> <ul><li>org.apache.iotdb.jdbc.AbstractIoTDBResultSet.AbstractIoTDBResultSet()</li></ul> <p>In order to construct metadata information in final result set, a complete column name list is needed. The <code>columnnamelist</code> given above does not contain a timestamp. Therefore, it's necessary to determine whether a timestamp needs to be printed. If so, add the <code>Time</code> column to the header to form a complete header.</p> <p>The complete header in example is:</p> <table><thead><tr><th>Time</th> <th>root.sg.d1.s2</th> <th>root.sg.d1.s1</th> <th>root.sg.d1.s2</th></tr></thead> <tbody><tr><td></td> <td></td> <td></td> <td></td></tr></tbody></table> <p>Then calculating <code>columnordinalmap</code>, judge whether to print a timestamp first. If so, record the timestamp as the first column.</p> <p>Then traverse the column name list in the header and then check whether <code>columnnameindex</code> is initialized. This field comes from <code>pathtoindex</code> calculated during deduplication, which records the location of each timeseries path in the query. If it is initialized, record the position + 2 as its position in the result set. If not, record the positions in traversal order, which is consistent with the query order in server side.</p> <p>The <code>columnOrdinalMap</code> in example is:</p> <p><code>Time -&gt; 1, root.sg.d1.s2 -&gt; 3, root.sg.d1.s1 -&gt; 2</code></p> <p>Next, traverse the column names in the header, and then fill in the complete result set according to the mapping set. Its logic is in the <code>cacheResult()</code> method.</p> <ul><li>org.apache.iotdb.cli.AbstractCli.cacheResult()</li></ul> <p>For example, the second column in the final result set is <code>root.sg.d1.s2</code>, therefore the result of the third column will be taken as its value from the result set. Repeat the process to fill the results of each row until there is no next result in the query result set or the maximum number of output rows is reached.</p></div> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/SystemDesign/QueryEngine/PlanExecutor.html" class="prev">
PlanExecutor
</a></span> <span class="next"><a href="/SystemDesign/SchemaManager/SchemaManager.html">
SchemaManager
</a>
</span></p></div> <p style="text-align: center;">Copyright © 2021 The Apache Software Foundation.<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p> <p style="text-align: center; margin-top: 10px; color: #444">
Contact us: Join QQ Group 659990460 | Add friend <i>tietouqiao</i> and be invited to Wechat Group<br>
see <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> for more</p></main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.fe44b663.js" defer></script><script src="/assets/js/3.5626571b.js" defer></script><script src="/assets/js/43.3fff5a4c.js" defer></script>
</body>
</html>