blob: 52a0a17a7029e58906c297ce6578b7e77bc1598a [file] [log] [blame]
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-beta.61" />
<meta name="theme" content="VuePress Theme Hope" />
<link rel="alternate" hreflang="en-us" href="https://iotdb.apache.org/UserGuide/V1.2.x/Reference/TSDB-Comparison.html"><meta property="og:url" content="https://iotdb.apache.org/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:description" content="时间序列数据库比较 Overview TSDB Comparison *表格外观启发自 Andriy Zabavskyy: How to Select Time Series DB (https://towardsdatascience.com/how-to-select-time-series-db-123b0eb4ab82) 1. 已知的时间序列数..."><meta property="og:type" content="article"><meta property="og:locale" content="zh-CN"><meta property="og:locale:alternate" content="en-US"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"","image":[""],"dateModified":null,"author":[]}</script><link rel="icon" href="/favicon.ico"><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"><title>IoTDB Website</title><meta name="description" content="时间序列数据库比较 Overview TSDB Comparison *表格外观启发自 Andriy Zabavskyy: How to Select Time Series DB (https://towardsdatascience.com/how-to-select-time-series-db-123b0eb4ab82) 1. 已知的时间序列数...">
<style>
:root {
--bg-color: #fff;
}
html[data-theme="dark"] {
--bg-color: #1d1e1f;
}
html,
body {
background: var(--bg-color);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<link rel="preload" href="/assets/style-2f652485.css" as="style"><link rel="stylesheet" href="/assets/style-2f652485.css">
<link rel="modulepreload" href="/assets/app-cbe6e1e7.js"><link rel="modulepreload" href="/assets/framework-44b8a372.js"><link rel="modulepreload" href="/assets/TSDB-Comparison.html-f5978359.js"><link rel="modulepreload" href="/assets/TSDB-Comparison.html-d9bb52b7.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="skip-link sr-only">跳至主要內容</a><!--]--><!--[--><div class="theme-container has-toc"><!--[--><header class="navbar hide-icon" id="navbar"><div class="navbar-start"><button class="toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><!----><!--]--><a href="/zh/" class="brand"><img class="logo" src="/logo.png" alt="IoTDB Website"><!----><span class="site-name hide-in-pad">IoTDB Website</span></a><!--[--><!----><!--]--></div><div class="navbar-center"><!--[--><!----><!--]--><!--[--><!----><!--]--></div><div class="navbar-end"><!--[--><!----><!--]--><div id="docsearch-container"></div><nav class="nav-links"><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="文档"><span class="title"><!---->文档</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/UserGuide/Master/QuickStart/QuickStart.html" class="nav-link" aria-label="latest"><!---->latest<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.2.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.1.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.1.x"><!---->v1.1.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V1.0.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v1.0.x"><!---->v1.0.x<!----></a></li><li class="dropdown-item"><a href="/zh/UserGuide/V0.13.x/QuickStart/QuickStart.html" class="nav-link" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177051872" rel="noopener noreferrer" target="_blank" aria-label="系统设计" class="nav-link"><!---->系统设计<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="nav-item hide-in-mobile"><a href="/zh/Download/" class="nav-link" aria-label="下载"><!---->下载<!----></a></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="社区"><span class="title"><!---->社区</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/Community/About.html" class="nav-link" aria-label="关于社区"><!---->关于社区<!----></a></li><li class="dropdown-item"><a href="https://cwiki.apache.org/confluence/display/iotdb" rel="noopener noreferrer" target="_blank" aria-label="Wiki" class="nav-link"><!---->Wiki<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="/zh/Community/Community-Project-Committers.html" class="nav-link" aria-label="开发人员"><!---->开发人员<!----></a></li><li class="dropdown-item"><a href="/zh/Community/Community-Powered-By.html" class="nav-link" aria-label="技术支持"><!---->技术支持<!----></a></li><li class="dropdown-item"><a href="/Community/Materials.html" class="nav-link" aria-label="活动与报告"><!---->活动与报告<!----></a></li><li class="dropdown-item"><a href="/zh/Community/Feedback.html" class="nav-link" aria-label="交流与反馈"><!---->交流与反馈<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="开发"><span class="title"><!---->开发</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/zh/Development/VoteRelease.html" class="nav-link" aria-label="如何投票"><!---->如何投票<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowToCommit.html" class="nav-link" aria-label="如何提交代码"><!---->如何提交代码<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowToJoin.html" class="nav-link" aria-label="成为Contributor"><!---->成为Contributor<!----></a></li><li class="dropdown-item"><a href="/zh/Development/Committer.html" class="nav-link" aria-label="成为Committer"><!---->成为Committer<!----></a></li><li class="dropdown-item"><a href="/zh/Development/ContributeGuide.html" class="nav-link" aria-label="项目开发指南"><!---->项目开发指南<!----></a></li><li class="dropdown-item"><a href="/zh/Development/HowtoContributeCode.html" class="nav-link" aria-label="技术贡献指南"><!---->技术贡献指南<!----></a></li><li class="dropdown-item"><a href="/zh/Development/format-changelist.html" class="nav-link" aria-label="TsFile的更改列表"><!---->TsFile的更改列表<!----></a></li><li class="dropdown-item"><a href="/zh/Development/rpc-changelist" class="nav-link" aria-label="RPC变更清单"><!---->RPC变更清单<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><div class="dropdown-wrapper"><button class="dropdown-title" type="button" aria-label="ASF"><span class="title"><!---->ASF</span><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="https://www.apache.org/" rel="noopener noreferrer" target="_blank" aria-label="基金会" class="nav-link"><!---->基金会<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/licenses/" rel="noopener noreferrer" target="_blank" aria-label="许可证" class="nav-link"><!---->许可证<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/security/" rel="noopener noreferrer" target="_blank" aria-label="安全" class="nav-link"><!---->安全<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/sponsorship.html" rel="noopener noreferrer" target="_blank" aria-label="赞助" class="nav-link"><!---->赞助<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/foundation/thanks.html" rel="noopener noreferrer" target="_blank" aria-label="致谢" class="nav-link"><!---->致谢<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li><li class="dropdown-item"><a href="https://www.apache.org/events/current-event" rel="noopener noreferrer" target="_blank" aria-label="活动" class="nav-link"><!---->活动<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></li></ul></button></div></div></nav><div class="nav-item"><div class="dropdown-wrapper i18n-dropdown"><button class="dropdown-title" type="button" aria-label="选择语言"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="nav-dropdown"><li class="dropdown-item"><a href="/UserGuide/V1.2.x/Reference/TSDB-Comparison.html" class="nav-link" aria-label="English"><!---->English<!----></a></li><li class="dropdown-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html" class="router-link-active router-link-exact-active nav-link active" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="nav-item hide-in-mobile"><button id="appearance-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" style="display:block;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" style="display:none;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="nav-item"><a class="repo-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--[--><!----><!--]--><button class="toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span class="button-container"><span class="button-top"></span><span class="button-middle"></span><span class="button-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside class="sidebar" id="sidebar"><!--[--><!----><!--]--><ul class="sidebar-links"><li><section class="sidebar-group"><p class="sidebar-heading"><!----><span class="title">IoTDB用户手册 (V1.2.x)</span><!----></p><ul class="sidebar-links"></ul></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">关于IoTDB</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">快速上手</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据模式与概念</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">语法约定</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">应用编程接口</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">元数据操作</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据写入(数据更新)</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据删除</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">数据查询</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">运算符和函数</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">触发器</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">监控告警</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">权限管理</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">运维工具</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">端云协同</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">系统集成</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">分布式</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable"><!----><span class="title">FAQ</span><span class="arrow end"></span></button><!----></section></li><li><section class="sidebar-group"><button class="sidebar-heading clickable active"><!----><span class="title">参考</span><span class="arrow down"></span></button><ul class="sidebar-links"><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/Common-Config-Manual.html" class="nav-link sidebar-link sidebar-page" aria-label="公共配置参数"><!---->公共配置参数<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/ConfigNode-Config-Manual.html" class="nav-link sidebar-link sidebar-page" aria-label="ConfigNode配置参数"><!---->ConfigNode配置参数<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/DataNode-Config-Manual.html" class="nav-link sidebar-link sidebar-page" aria-label="DataNode配置参数"><!---->DataNode配置参数<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/SQL-Reference.html" class="nav-link sidebar-link sidebar-page" aria-label="SQL参考文档"><!---->SQL参考文档<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/Status-Codes.html" class="nav-link sidebar-link sidebar-page" aria-label="状态码"><!---->状态码<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a href="/zh/UserGuide/V1.2.x/Reference/Keywords.html" class="nav-link sidebar-link sidebar-page" aria-label="关键字"><!---->关键字<!----></a><ul class="sidebar-sub-headers"></ul><!--]--></li><li><!--[--><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html" class="router-link-active router-link-exact-active nav-link active sidebar-link sidebar-page active" aria-label="时间序列数据库比较"><!---->时间序列数据库比较<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#时间序列数据库比较" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="时间序列数据库比较"><!---->时间序列数据库比较<!----></a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#overview" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="Overview"><!---->Overview<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_1-已知的时间序列数据库" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="1. 已知的时间序列数据库"><!---->1. 已知的时间序列数据库<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_2-比较" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="2. 比较"><!---->2. 比较<!----></a><ul class="sidebar-sub-headers"></ul></li><li class="sidebar-sub-header"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_3-结论" class="router-link-active router-link-exact-active nav-link sidebar-link heading" aria-label="3. 结论"><!---->3. 结论<!----></a><ul class="sidebar-sub-headers"></ul></li></ul></li></ul><!--]--></li></ul></section></li></ul><!--[--><!----><!--]--></aside><!--[--><main class="page" id="main-content"><!--[--><!----><nav class="breadcrumb disable"></nav><div class="page-title"><h1><!----></h1><div class="page-info"><!----><!----><!----><!----><span class="page-reading-time-info" aria-label="阅读时间"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>大约 13 分钟</span><meta property="timeRequired" content="PT13M"></span><!----><!----></div><hr></div><div class="toc-place-holder"><aside id="toc"><!--[--><!----><!--]--><div class="toc-header">此页内容<button class="print-button" title="打印"><svg xmlns="http://www.w3.org/2000/svg" class="icon print-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="print icon"><path d="M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"></path></svg></button></div><div class="toc-wrapper"><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#时间序列数据库比较" class="router-link-active router-link-exact-active toc-link level2">时间序列数据库比较</a></li><ul class="toc-list"><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#overview" class="router-link-active router-link-exact-active toc-link level3">Overview</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_1-已知的时间序列数据库" class="router-link-active router-link-exact-active toc-link level3">1. 已知的时间序列数据库</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_2-比较" class="router-link-active router-link-exact-active toc-link level3">2. 比较</a></li><!----><!--]--><!--[--><li class="toc-item"><a aria-current="page" href="/zh/UserGuide/V1.2.x/Reference/TSDB-Comparison.html#_3-结论" class="router-link-active router-link-exact-active toc-link level3">3. 结论</a></li><!----><!--]--></ul><!--]--></ul></div><!--[--><!----><!--]--></aside></div><!----><div class="theme-hope-content"><!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--><h2 id="时间序列数据库比较" tabindex="-1"><a class="header-anchor" href="#时间序列数据库比较" aria-hidden="true">#</a> 时间序列数据库比较</h2><h3 id="overview" tabindex="-1"><a class="header-anchor" href="#overview" aria-hidden="true">#</a> Overview</h3><figure><img src="https://alioss.timecho.com/docs/img/github/119833923-182ffc00-bf32-11eb-8b3f-9f95d3729ad2.png" alt="TSDB Comparison" tabindex="0" loading="lazy"><figcaption>TSDB Comparison</figcaption></figure><p>*<em>表格外观启发自 <a href="https://towardsdatascience.com/how-to-select-time-series-db-123b0eb4ab82" target="_blank" rel="noopener noreferrer">Andriy Zabavskyy: How to Select Time Series DB<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a></em></p><h3 id="_1-已知的时间序列数据库" tabindex="-1"><a class="header-anchor" href="#_1-已知的时间序列数据库" aria-hidden="true">#</a> 1. 已知的时间序列数据库</h3><p>随着时间序列数据变得越来越重要,一些开源的时间序列数据库(Time Series Databases,or TSDB)诞生了。</p><p>但是,它们中很少有专门为物联网(IoT)或者工业物联网(Industrial IoT,缩写 IIoT)场景开发的。</p><p>本文把 IoTDB 和下述三种类型的时间序列数据库进行了比较:</p><ul><li><p>InfluxDB - 原生时间序列数据库</p><p>InfluxDB 是最流行的时间序列数据库之一。</p><p>接口:InfluxQL and HTTP API</p></li><li><p>OpenTSDB 和 KairosDB - 基于 NoSQL 的时间序列数据库</p><p>这两种数据库是相似的,但是 OpenTSDB 基于 HBase 而 KairosDB 基于 Cassandra。</p><p>它们两个都提供 RESTful 风格的 API。</p><p>接口:Restful API</p></li><li><p>TimescaleDB - 基于关系型数据库的时间序列数据库</p><p>接口:SQL</p></li></ul><p>Prometheus 和 Druid 也因为时间序列数据管理而闻名,但是 Prometheus 聚焦在数据采集、可视化和报警,Druid 聚焦在 OLAP 负载的数据分析,因此本文省略了 Prometheus 和 Druid。</p><h3 id="_2-比较" tabindex="-1"><a class="header-anchor" href="#_2-比较" aria-hidden="true">#</a> 2. 比较</h3><p>本文将从以下两个角度比较时间序列数据库:功能比较、性能比较。</p><h4 id="_2-1-功能比较" tabindex="-1"><a class="header-anchor" href="#_2-1-功能比较" aria-hidden="true">#</a> 2.1 功能比较</h4><p>以下两节分别是时间序列数据库的基础功能比较(2.1.1)和高级功能比较(2.1.2)。</p><p>表格中符号的含义:</p><ul><li><code>++</code>:强大支持</li><li><code>+</code>:支持</li><li><code>+-</code>:支持但欠佳</li><li><code>-</code>:不支持</li><li><code>?</code>:未知</li></ul><h5 id="_2-1-1-基础功能" tabindex="-1"><a class="header-anchor" href="#_2-1-1-基础功能" aria-hidden="true">#</a> 2.1.1 基础功能</h5><table><thead><tr><th>TSDB</th><th style="text-align:center;">IoTDB</th><th style="text-align:center;">InfluxDB</th><th style="text-align:center;">OpenTSDB</th><th style="text-align:center;">KairosDB</th><th style="text-align:center;">TimescaleDB</th></tr></thead><tbody><tr><td><em>OpenSource</em></td><td style="text-align:center;"><strong>+</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;"><strong>+</strong></td><td style="text-align:center;">+</td></tr><tr><td><em>SQL-like</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;"><strong>++</strong></td></tr><tr><td><em>Schema</em></td><td style="text-align:center;">Tree-based, tag-based</td><td style="text-align:center;">tag-based</td><td style="text-align:center;">tag-based</td><td style="text-align:center;">tag-based</td><td style="text-align:center;">Relational</td></tr><tr><td><em>Writing out-of-order data</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Schema-less</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Batch insertion</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Time range filter</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Order by time</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">+</td></tr><tr><td><em>Value filter</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">+</td></tr><tr><td><em>Downsampling</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Fill</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">+</td></tr><tr><td><em>LIMIT</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>SLIMIT</em></td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">?</td></tr><tr><td><em>Latest value</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">+</td></tr></tbody></table><p>具体地:</p><ul><li><p><em>OpenSource</em></p><ul><li>IoTDB 使用 Apache License 2.0。</li><li>InfluxDB 使用 MIT license。但是,<strong>它的集群版本没有开源</strong></li><li>OpenTSDB 使用 LGPL2.1,<strong>和 Apache License 不兼容</strong></li><li>KairosDB 使用 Apache License 2.0。</li><li>TimescaleDB 使用 Timescale License,对企业来说不是免费的。</li></ul></li><li><p><em>SQL-like</em></p><ul><li>IoTDB 和 InfluxDB 支持 SQL-like 语言。</li><li>OpenTSDB 和 KairosDB 只支持 Rest API。IoTDB 也支持 Rest API。</li><li>TimescaleDB 使用的是和 PostgreSQL 一样的 SQL。</li></ul></li><li><p><em>Schema</em></p><ul><li>IoTDB:IoTDB 提出了一种 <a href="http://iotdb.apache.org/zh/UserGuide/Master/Data-Concept/Data-Model-and-Terminology.html" target="_blank" rel="noopener noreferrer">基于树的 schema<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a>。这和其它时间序列数据库很不一样。这种 schema 有以下优点: <ul><li>在许多工业场景里,设备管理是有层次的,而不是扁平的。因此我们认为基于树的 schema 比基于 tag-value 的 schema 更好。</li><li>在许多现实应用中,tag 的名字是不变的。例如:风力发电机制造商总是用风机所在的国家、所属的风场以及在风场中的 ID 来标识一个风机,因此,一个 4 层高的树(“root.the-country-name.the-farm-name.the-id”)来表示就足矣。你不需要重复告诉 IoTDB”树的第二层是国家名”、“树的第三层是风场名“等等这种信息。</li><li>这样的基于路径的时间序列 ID 定义还能够支持灵活的查询,例如:”root.*.a.b.*“,其中、*是一个通配符。</li></ul></li><li>InfluxDB, KairosDB, OpenTSDB:使用基于 tag-value 的 schema。现在比较流行这种 schema。</li><li>TimescaleDB 使用关系表。</li></ul></li><li><p><em>Order by time</em></p><p>对于时间序列数据库来说,Order by time 好像是一个琐碎的功能。但是当我们考虑另一个叫做”align by time“的功能时,事情就变得有趣起来。这就是为什么我们把 OpenTSDB 和 KairosDB 标记为”不支持“。事实上,所有时间序列数据库都支持单条时间序列的按时间戳排序。但是,OpenTSDB 和 KairosDB 不支持多条时间序列的按时间戳排序。</p><p>下面考虑一个新的例子:这里有两条时间序列,一条是风场 1 中的风速,一条是风场 1 中的风机 1 产生的电能。如果我们想要研究风速和产生电能之间的关系,我们首先需要知道二者在相同时间戳下的值。也就是说,我们需要按照时间戳对齐这两条时间序列。因此,结果应该是:</p><table><thead><tr><th>时间戳</th><th>风场 1 中的风速</th><th>风场 1 中的风机 1 产生的电能</th></tr></thead><tbody><tr><td>1</td><td>5.0</td><td>13.1</td></tr><tr><td>2</td><td>6.0</td><td>13.3</td></tr><tr><td>3</td><td>null</td><td>13.1</td></tr></tbody></table><p>或者:</p><table><thead><tr><th>时间戳</th><th>时间序列名</th><th></th></tr></thead><tbody><tr><td>1</td><td>风场 1 中的风速</td><td>5.0</td></tr><tr><td>1</td><td>风场 1 中的风机 1 产生的电能</td><td>13.1</td></tr><tr><td>2</td><td>风场 1 中的风速</td><td>6.0</td></tr><tr><td>2</td><td>风场 1 中的风机 1 产生的电能</td><td>13.3</td></tr><tr><td>3</td><td>风场 1 中的风机 1 产生的电能</td><td>13.1</td></tr></tbody></table><p>虽然第二个表格没有按照时间戳对齐两条时间序列,但是只需要逐行扫描数据就可以很容易地在客户端实现这个功能。</p><p>IoTDB 支持第一种表格格式(叫做 align by time),InfluxDB 支持第二种表格格式。</p></li><li><p><em>Downsampling</em></p><p>Downsampling(降采样)用于改变时间序列的粒度,例如:从 10Hz 到 1Hz,或者每天 1 个点。</p><p>和其他数据库不同的是,IoTDB 能够实时降采样数据,而其它时间序列数据库在磁盘上序列化降采样数据。</p><p>也就是说:</p><ul><li><p>IoTDB 支持在任意时间对数据进行即席(ad-hoc)降采样。例如:一条 SQL 返回从 2020-04-27 08:00:00 开始的每 5 分钟采样 1 个点的降采样数据,另一条 SQL 返回从 2020-04-27 08:00:01 开始的每 5 分 10 秒采样 1 个点的降采样数据。</p><p>(InfluxDB 也支持即席降采样,但是性能似乎并不好。)</p></li><li><p>IoTDB 的降采样不占用磁盘。</p></li></ul></li><li><p><em>Fill</em></p><p>有时候我们认为数据是按照某种固定的频率采集的,比如 1Hz(即每秒 1 个点)。但是通常我们会丢失一些数据点,可能由于网络不稳定、机器繁忙、机器宕机等等。在这些场景下,填充这些数据空洞是重要的。数据科学家可以因此避免很多所谓的”dirty work“比如数据清洗。</p><p>InfluxDB 和 OpenTSDB 只支持在 group by 语句里使用 fill,而 IoTDB 能支持给定一个特定的时间戳的 fill。此外,IoTDB 还支持多种填充策略。</p></li><li><p><em>Slimit</em></p><p>Slimit 是指返回指定数量的 measurements(或者,InfluxDB 中的 fields)。</p><p>例如:一个风机有 1000 个测点(风速、电压等等),使用 slimit 和 soffset 可以只返回其中的一部分测点。</p></li><li><p><em>Latest value</em></p><p>最基础的时间序列应用之一是监视最新数据。因此,返回一条时间序列的最新点是非常重要的查询功能。</p><p>IoTDB 和 OpenTSDB 使用一个特殊的 SQL 或 API 来支持这个功能,而 InfluxDB 使用聚合函数来支持。</p><p>IoTDB 提供一个特殊的 SQL 的原因是 IoTDB 专门优化了查询。</p></li></ul><p><strong>结论:</strong></p><p>通过对基础功能的比较,我们可以发现:</p><ul><li>OpenTSDB 和 KairosDB 缺少一些重要的查询功能。</li><li>TimescaleDB 不能被企业免费使用。</li><li>IoTDB 和 InfluxDB 可以满足时间序列数据管理的大部分需求,同时它俩之间有一些不同之处。</li></ul><h5 id="_2-1-2-高级功能" tabindex="-1"><a class="header-anchor" href="#_2-1-2-高级功能" aria-hidden="true">#</a> 2.1.2 高级功能</h5><table><thead><tr><th>TSDB</th><th style="text-align:center;">IoTDB</th><th style="text-align:center;">InfluxDB</th><th style="text-align:center;">OpenTSDB</th><th style="text-align:center;">KairosDB</th><th style="text-align:center;">TimescaleDB</th></tr></thead><tbody><tr><td><em>Align by time</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">+</td></tr><tr><td><em>Compression</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+-</td><td style="text-align:center;">+-</td><td style="text-align:center;">+-</td><td style="text-align:center;">+-</td></tr><tr><td><em>MQTT support</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">+-</td></tr><tr><td><em>Run on Edge-side Device</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">+-</td><td style="text-align:center;">+</td></tr><tr><td><em>Multi-instance Sync</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td></tr><tr><td><em>JDBC Driver</em></td><td style="text-align:center;"><strong>+</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">++</td></tr><tr><td><em>Standard SQL</em></td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;"><strong>++</strong></td></tr><tr><td><em>Spark integration</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td></tr><tr><td><em>Hive integration</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td></tr><tr><td><em>Writing data to NFS (HDFS)</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">+</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td></tr><tr><td><em>Flink integration</em></td><td style="text-align:center;"><strong>++</strong></td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td><td style="text-align:center;">-</td></tr></tbody></table><p>具体地:</p><ul><li><p><em>Align by time</em>:上文已经介绍过,这里不再赘述。</p></li><li><p><em>Compression</em></p><ul><li>IoTDB 支持许多时间序列编码和压缩方法,比如 RLE, 2DIFF, Gorilla 等等,以及 Snappy 压缩。在 IoTDB 里,你可以根据数据分布选择你想要的编码方法。更多信息参考 <a href="http://iotdb.apache.org/UserGuide/Master/Data-Concept/Encoding.html" target="_blank" rel="noopener noreferrer">这里<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a></li><li>InfluxDB 也支持编码和压缩,但是你不能定义你想要的编码方法,编码只取决于数据类型。更多信息参考 <a href="https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/" target="_blank" rel="noopener noreferrer">这里<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a></li><li>OpenTSDB 和 KairosDB 在后端使用 HBase 和 Cassandra,并且没有针对时间序列的特殊编码。</li></ul></li><li><p><em>MQTT protocol support</em></p><p>MQTT protocol 是一个被工业用户广泛知晓的国际标准。只有 IoTDB 和 InfluxDB 支持用户使用 MQTT 客户端来写数据。</p></li><li><p><em>Running on Edge-side Device</em></p><p>现在,边缘计算变得越来越重要,边缘设备有越来越强大的计算资源。</p><p>在边缘侧部署时间序列数据库,对于管理边缘侧数据、服务于边缘计算来说,是有用的。</p><p>由于 OpenTSDB 和 KairosDB 依赖另外的数据库,它们的体系结构是臃肿的。特别是很难在边缘侧运行 Hadoop。</p></li><li><p><em>Multi-instance Sync</em></p><p>现在假设我们在边缘侧有许多时间序列数据库实例,考虑如何把它们的数据上传到数据中心去形成一个数据湖。</p><p>一个解决方法是从这些实例读取数据,然后逐点写入到数据中心。</p><p>IoTDB 提供了另一个选项:把数据文件增量上传到数据中心,然后数据中心可以支持在数据上的服务。</p></li><li><p><em>JDBC driver</em></p><p>现在只有 IoTDB 支持了 JDBC driver(虽然不是所有接口都实现),这使得 IoTDB 可以整合许多其它的基于 JDBC driver 的软件。</p></li><li><p><em>Spark and Hive integration</em></p><p>让大数据分析软件访问数据库中的数据来完成复杂数据分析是非常重要的。</p><p>IoTDB 支持 Hive-connector 和 Spark-connector 来完成更好的整合。</p></li><li><p><em>Writing data to NFS (HDFS)</em></p><p>Sharing nothing 的体系结构是好的,但是有时候你不得不增加新的服务器,即便你的 CPU 和内存都是空闲的而磁盘已经满了。</p><p>此外,如果我们能直接把数据文件存储到 HDFS 中,用 Spark 和其它软件来分析数据将会更加简单,不需要 ETL。</p><ul><li>IoTDB 支持往本地或者 HDFS 写数据。IoTDB 还允许用户扩展实现在其它 NFS 上存储数据。</li><li>InfluxDB 和 KairosDB 只能往本地写数据。</li><li>OpenTSDB 只能往 HDFS 写数据。</li></ul></li></ul><p><strong>结论:</strong></p><p>IoTDB 拥有许多其它时间序列数据库不支持的强大功能。</p><h4 id="_2-2-性能比较" tabindex="-1"><a class="header-anchor" href="#_2-2-性能比较" aria-hidden="true">#</a> 2.2 性能比较</h4><p>如果你觉得:”如果我只需要基础功能的话,IoTDB 好像和其它的时间序列数据库没有什么不同。“</p><p>这好像是有道理的。但是如果考虑性能的话,你也许会改变你的想法。</p><h5 id="_2-2-1-快速浏览" tabindex="-1"><a class="header-anchor" href="#_2-2-1-快速浏览" aria-hidden="true">#</a> 2.2.1 快速浏览</h5><table><thead><tr><th>TSDB</th><th style="text-align:center;">IoTDB</th><th style="text-align:center;">InfluxDB</th><th style="text-align:center;">KairosDB</th><th style="text-align:center;">TimescaleDB</th></tr></thead><tbody><tr><td><em>Scalable Writes</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Raw Data Query</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Aggregation Query</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td><td style="text-align:center;">+</td></tr><tr><td><em>Downsampling Query</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+-</td><td style="text-align:center;">+-</td></tr><tr><td><em>Latest Query</em></td><td style="text-align:center;">++</td><td style="text-align:center;">+</td><td style="text-align:center;">+-</td><td style="text-align:center;">+</td></tr></tbody></table><h6 id="写入性能" tabindex="-1"><a class="header-anchor" href="#写入性能" aria-hidden="true">#</a> 写入性能</h6><p>我们从两个方面来测试写性能:batch size 和 client num。存储组的数量是 10。有 1000 个设备,每个设备有 100 个传感器,也就是说一共有 100K 条时间序列。</p><p>测试使用的 IoTDB 版本是<code>v0.11.1</code></p><ul><li>改变 batch size</li></ul><p>10 个客户端并发地写数据。IoTDB 使用 batch insertion API,batch size 从 1ms 到 1min 变化(每次调用 write API 写 N 个数据点)。</p><p>写入吞吐率(points/second)如下图所示:</p><img src="https://alioss.timecho.com/docs/img/github/106254214-6cacbe80-6253-11eb-8532-d6a1829f8f66.png" alt="Batch Size with Write Throughput (points/second)"><center>Figure 1. Batch Size with Write throughput (points/second) IoTDB v0.11.1</center><ul><li>改变 client num</li></ul><p>client num 从 1 到 50 变化。IoTDB 使用 batch insertion API,batch size 是 100(每次调用 write API 写 100 个数据点)。</p><p>写入吞吐率(points/second)如下图所示:</p><figure><img src="https://alioss.timecho.com/docs/img/github/106251411-e5aa1700-624f-11eb-8ca8-00c0627b1e96.png" alt="Client Num with Write Throughput (points/second) (ms)" tabindex="0" loading="lazy"><figcaption>Client Num with Write Throughput (points/second) (ms)</figcaption></figure><center>Figure 3. Client Num with Write Throughput (points/second) IoTDB v0.11.1</center><h6 id="查询性能" tabindex="-1"><a class="header-anchor" href="#查询性能" aria-hidden="true">#</a> 查询性能</h6><p>10 个客户端并发地读数据。存储组的数量是 10。有 10 个设备,每个设备有 10 个传感器,也就是说一共有 100 条时间序列。</p><p>数据类型是* double*,编码类型是* GORILLA*。</p><p>测试使用的 IoTDB 版本是<code>v0.11.1</code></p><p>测试结果如下图所示:</p><figure><img src="https://alioss.timecho.com/docs/img/github/106251377-daef8200-624f-11eb-9678-b1d5440be2de.png" alt="Raw data query 1 col" tabindex="0" loading="lazy"><figcaption>Raw data query 1 col</figcaption></figure><center>Figure 4. Raw data query 1 col time cost(ms) IoTDB v0.11.1</center><figure><img src="https://alioss.timecho.com/docs/img/github/106251336-cf03c000-624f-11eb-8395-de5e349f47b5.png" alt="Aggregation query" tabindex="0" loading="lazy"><figcaption>Aggregation query</figcaption></figure><center>Figure 5. Aggregation query time cost(ms) IoTDB v0.11.1</center><figure><img src="https://alioss.timecho.com/docs/img/github/106251353-d32fdd80-624f-11eb-80c1-fdb4197939fe.png" alt="Downsampling query" tabindex="0" loading="lazy"><figcaption>Downsampling query</figcaption></figure><center>Figure 6. Downsampling query time cost(ms) IoTDB v0.11.1</center><figure><img src="https://alioss.timecho.com/docs/img/github/106251369-d7f49180-624f-11eb-9d19-fc7341582b90.png" alt="Latest query" tabindex="0" loading="lazy"><figcaption>Latest query</figcaption></figure><center>Figure 7. Latest query time cost(ms) IoTDB v0.11.1</center><p>可以看到,IoTDB 的 raw data query、aggregation query、downsampling query、latest query 查询性能表现都超越了其它数据库。</p><h5 id="_2-2-2-更多细节" tabindex="-1"><a class="header-anchor" href="#_2-2-2-更多细节" aria-hidden="true">#</a> 2.2.2 更多细节</h5><p>我们提供了一个 benchmark 工具,叫做 <a href="https://github.com/thulab/iotdb-benchmark" target="_blank" rel="noopener noreferrer">IoTDB-benchamrk<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a>(你可以用 dev branch 来编译它)。它支持 IoTDB, InfluxDB, KairosDB, TimescaleDB, OpenTSDB。</p><p>我们有一篇文章关于用这个 benchmark 工具比较这些时间序列数据库:<a href="https://arxiv.org/abs/1901.08304" target="_blank" rel="noopener noreferrer">Benchmarking Time Series Databases with IoTDB-Benchmark for IoT Scenarios<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span></a>。我们发表这个文章的时候,IoTDB 才刚刚加入 Apache incubator,所以我们在那篇文章里删去了 IoTDB 的性能测试。但是在比较之后,一些结果展示在这里:</p><ul><li>对于 InfluxDB,我们把 cache-max-memory-size 和 max-series-perbase 设置成 unlimited(否则它很快就会超时)。</li><li>对于 KairosDB,我们把 Cassandra 的 read_repair_chance 设置为 0.1(但是这没有什么影响,因为我们只有一个结点)。</li><li>对于 TimescaleDB,我们用 PGTune 工具来优化 PostgreSQL。</li></ul><p>所有的时间序列数据库运行的机器配置是:Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz, (8 cores 16 threads), 32GB memory, 256G SSD and 10T HDD, OS: Ubuntu 16.04.7 LTS, 64bits.</p><p>所有的客户端运行的机器配置是:Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz,(6 cores 12 threads), 16GB memory, 256G SSD, OS: Ubuntu 16.04.7 LTS, 64bits.</p><h3 id="_3-结论" tabindex="-1"><a class="header-anchor" href="#_3-结论" aria-hidden="true">#</a> 3. 结论</h3><p>从以上所有实验中,我们可以看到 IoTDB 的性能大大优于其他数据库。</p><p>IoTDB 具有最小的写入延迟。批处理大小越大,IoTDB 的写入吞吐量就越高。这表明 IoTDB 最适合批处理数据写入方案。</p><p>在高并发方案中,IoTDB 也可以保持吞吐量的稳定增长。 (每秒 1200 万个点可能已达到千兆网卡的限制)</p><p>在原始数据查询中,随着查询范围的扩大,IoTDB 的优势开始显现。因为数据块的粒度更大,列式存储的优势体现出来,所以基于列的压缩和列迭代器都将加速查询。</p><p>在聚合查询中,我们使用文件层的统计信息并缓存统计信息。因此,多个查询仅需要执行内存计算(不需要遍历原始数据点,也不需要访问磁盘),因此聚合性能优势显而易见。</p><p>降采样查询场景更加有趣,因为时间分区越来越大,IoTDB 的查询性能逐渐提高。它可能上升了两倍,这对应于 2 个粒度(3 小时和 4.5 天)的预先计算的信息。因此,分别加快了 1 天和 1 周范围内的查询。其他数据库仅上升一次,表明它们只有一个粒度统计。</p><p>如果您正在为您的 IIoT 应用程序考虑使用 TSDB,那么新的时间序列数据库 Apache IoTDB 是您的最佳选择。</p><p>发布新版本并完成实验后,我们将更新此页面。</p><p>我们也欢迎更多的贡献者更正本文,为 IoTDB 做出贡献或复现实验。</p></div><!----><footer class="page-meta"><div class="meta-item edit-link"><a href="https://github.com/apache/iotdb/edit/rel/1.2/docs/zh/UserGuide/Reference/TSDB-Comparison.md" rel="noopener noreferrer" target="_blank" aria-label="发现错误?在 GitHub 上编辑此页" class="nav-link label"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->发现错误?在 GitHub 上编辑此页<span><svg class="external-link-icon" 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"><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="external-link-icon-sr-only">open in new window</span></span><!----></a></div><div class="meta-item git-info"><!----><!----></div></footer><nav class="page-nav"><a href="/zh/UserGuide/V1.2.x/Reference/Keywords.html" class="nav-link prev" aria-label="关键字"><div class="hint"><span class="arrow start"></span>上一页</div><div class="link"><!---->关键字</div></a><!----></nav><!----><!----><!--]--></main><!--]--><footer style="padding-bottom:2rem;"><span id="doc-version" style="display:none;">rel/1.2</span><p style="text-align:center;color:#909399;font-size:12px;margin:0 30px;">Copyright © 2023 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:#909399;font-size:12px;margin:0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"> We use <a href="https://analytics.google.com">Google Analytics</a> to collect anonymous, aggregated usage information. </p></footer></div><!--]--><!--]--><!----><!--]--></div>
<script type="module" src="/assets/app-cbe6e1e7.js" defer></script>
</body>
</html>