import{_ as n,O as t,P as i,ah as o,Q as e,U as s}from"./framework-62ad666a.js";const a={},r=e("h1",{id:"iotdb-简介",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#iotdb-简介","aria-hidden":"true"},"#"),s(" IoTDB 简介")],-1),c=e("p",null,"IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。它具有体量轻、性能高、易使用的特点，完美对接 Hadoop 与 Spark 生态，适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求。",-1);function d(h,l){return t(),i("div",null,[o(`

    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.

`),r,c])}const u=n(a,[["render",d],["__file","What-is-IoTDB.html.vue"]]);export{u as default};