blob: 5f32b188e55256ea678351b503c43d0489b04869 [file] [log] [blame]
import{_ as d,C as s,O as n,P as r,ah as c,Q as e,U as a,ai as t,ae as l,aW as o}from"./framework-62ad666a.js";const h={},u=e("h2",{id:"数据文件存储",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#数据文件存储","aria-hidden":"true"},"#"),a(" 数据文件存储")],-1),m=e("p",null,"本节将介绍 IoTDB 的数据存储方式,便于您对 IoTDB 的数据管理有一个直观的了解。",-1),_=e("p",null,"IoTDB 需要存储的数据分为三类,分别为数据文件、系统文件以及写前日志文件。",-1),p=e("h3",{id:"数据文件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#数据文件","aria-hidden":"true"},"#"),a(" 数据文件")],-1),b=e("blockquote",null,[e("p",null,"在 basedir/data/目录下")],-1),f=o('<h4 id="tsfile" tabindex="-1"><a class="header-anchor" href="#tsfile" aria-hidden="true">#</a> TsFile</h4><blockquote><p>在 basedir/data/sequence or unsequence/{DatabaseName}/{DataRegionId}/{TimePartitionId}/目录下</p></blockquote><ol><li>{time}-{version}-{inner_compaction_count}-{cross_compaction_count}.tsfile <ul><li>数据文件</li></ul></li><li>{TsFileName}.tsfile.mod <ul><li>更新文件,主要记录删除操作</li></ul></li></ol><h4 id="tsfileresource" tabindex="-1"><a class="header-anchor" href="#tsfileresource" aria-hidden="true">#</a> TsFileResource</h4><ol><li>{TsFileName}.tsfile.resource <ul><li>TsFile 的概要与索引文件</li></ul></li></ol><h4 id="与合并相关的数据文件" tabindex="-1"><a class="header-anchor" href="#与合并相关的数据文件" aria-hidden="true">#</a> 与合并相关的数据文件</h4><blockquote><p>在 basedir/data/sequence or unsequence/{DatabaseName}/目录下</p></blockquote><ol><li>后缀为<code>.cross </code> 或者 <code>.inner</code><ul><li>合并过程中产生的临时文件</li></ul></li><li>后缀为<code>.inner-compaction.log</code> 或者 <code>.cross-compaction.log</code><ul><li>记录合并进展的日志文件</li></ul></li><li>后缀为<code>.compaction.mods</code><ul><li>记录合并过程中发生的删除等操作</li></ul></li><li>后缀为<code>.meta</code>的文件 <ul><li>合并过程生成的元数据临时文件</li></ul></li></ol><h3 id="系统文件" tabindex="-1"><a class="header-anchor" href="#系统文件" aria-hidden="true">#</a> 系统文件</h3>',9),g=o('<h4 id="元数据相关文件" tabindex="-1"><a class="header-anchor" href="#元数据相关文件" aria-hidden="true">#</a> 元数据相关文件</h4><blockquote><p>在 basedir/system/schema 目录下</p></blockquote><h5 id="元数据" tabindex="-1"><a class="header-anchor" href="#元数据" aria-hidden="true">#</a> 元数据</h5><ol><li>mlog.bin <ul><li>记录的是元数据操作</li></ul></li><li>mtree-1.snapshot <ul><li>元数据快照</li></ul></li><li>mtree-1.snapshot.tmp <ul><li>临时文件,防止快照更新时,损坏旧快照文件</li></ul></li></ol><h5 id="标签和属性" tabindex="-1"><a class="header-anchor" href="#标签和属性" aria-hidden="true">#</a> 标签和属性</h5><ol><li>tlog.txt <ul><li>存储每个时序的标签和属性</li><li>默认情况下每个时序 700 字节</li></ul></li></ol><h4 id="其他系统文件" tabindex="-1"><a class="header-anchor" href="#其他系统文件" aria-hidden="true">#</a> 其他系统文件</h4><h5 id="version" tabindex="-1"><a class="header-anchor" href="#version" aria-hidden="true">#</a> Version</h5><blockquote><p>在 basedir/system/database/{DatabaseName}/{TimePartitionId} or upgrade 目录下</p></blockquote>',9),x=e("ol",null,[e("li",{version:""},[a("Version- "),e("ul",null,[e("li",null,"版本号文件,使用文件名来记录当前最大的版本号")])])],-1),T=o('<h5 id="upgrade" tabindex="-1"><a class="header-anchor" href="#upgrade" aria-hidden="true">#</a> Upgrade</h5><blockquote><p>在 basedir/system/upgrade 目录下</p></blockquote><ol><li>upgrade.txt <ul><li>记录升级进度</li></ul></li></ol><h5 id="authority" tabindex="-1"><a class="header-anchor" href="#authority" aria-hidden="true">#</a> Authority</h5><blockquote><p>在 basedir/system/users/目录下是用户信息 在 basedir/system/roles/目录下是角色信息</p></blockquote><h5 id="compressratio" tabindex="-1"><a class="header-anchor" href="#compressratio" aria-hidden="true">#</a> CompressRatio</h5><blockquote><p>在 basedir/system/compression_ration 目录下</p></blockquote>',7),y=e("ol",null,[e("li",{calTimes:""},[a("Ration-{compressionRatioSum}- "),e("ul",null,[e("li",null,"记录每个文件的压缩率")])])],-1),D=e("h3",{id:"写前日志文件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#写前日志文件","aria-hidden":"true"},"#"),a(" 写前日志文件")],-1),N=e("code",null,"wal_dir",-1),k=o(`<blockquote><p>在 basedir/wal 目录下</p></blockquote><ol><li>{DatabaseName}-{TsFileName}/wal1 <ul><li>每个 memtable 会对应一个 wal 文件</li></ul></li></ol><h3 id="数据存储目录设置举例" tabindex="-1"><a class="header-anchor" href="#数据存储目录设置举例" aria-hidden="true">#</a> 数据存储目录设置举例</h3><p>接下来我们将举一个数据目录配置的例子,来具体说明如何配置数据的存储目录。</p><p>IoTDB 涉及到的所有数据目录路径有:data_dirs, multi_dir_strategy, system_dir 和 wal_dir,它们分别涉及的是 IoTDB 的数据文件、数据文件多目录存储策略、系统文件以及写前日志文件。您可以选择输入路径自行配置,也可以不进行任何操作使用系统默认的配置项。</p><p>以下我们给出一个用户对五个目录都进行自行配置的例子。</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>dn_system_dir = $IOTDB_HOME/data/datanode/system
dn_data_dirs = /data1/datanode/data, /data2/datanode/data, /data3/datanode/data
dn_multi_dir_strategy=MaxDiskUsableSpaceFirstStrategy
dn_wal_dirs= $IOTDB_HOME/data/datanode/wal
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>按照上述配置,系统会:</p><ul><li>将 TsFile 存储在路径 /data1/datanode/data、路径 /data2/datanode/data 和路径 /data3/datanode/data 中。且对这三个路径的选择策略是:<code>优先选择磁盘剩余空间最大的目录</code>,即在每次数据持久化到磁盘时系统会自动选择磁盘剩余空间最大的一个目录将数据进行写入</li><li>将系统文件存储在$IOTDB_HOME/data/datanode/data</li><li>将写前日志文件存储在$IOTDB_HOME/data/datanode/wal</li></ul>`,9);function I(q,w){const i=s("RouterLink");return n(),r("div",null,[c(`
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.
`),u,m,_,p,b,e("p",null,[a("数据文件存储了用户写入 IoTDB 系统的所有数据。包含 TsFile 文件和其他文件,可通过 "),t(i,{to:"/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html"},{default:l(()=>[a("data_dirs 配置项")]),_:1}),a(" 进行配置。")]),e("p",null,[a("为了更好的支持用户对于磁盘空间扩展等存储需求,IoTDB 为 TsFile 的存储配置增加了多文件目录的存储方式,用户可自主配置多个存储路径作为数据的持久化位置(详情见 "),t(i,{to:"/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html"},{default:l(()=>[a("data_dirs 配置项")]),_:1}),a("),并可以指定或自定义目录选择策略(详情见 "),t(i,{to:"/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html"},{default:l(()=>[a("multi_dir_strategy 配置项")]),_:1}),a(")。")]),f,e("p",null,[a("系统 Schema 文件,存储了数据文件的元数据信息。可通过 system_dir 配置项进行配置(详情见 "),t(i,{to:"/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html"},{default:l(()=>[a("system_dir 配置项")]),_:1}),a(")。")]),g,x,T,y,D,e("p",null,[a("写前日志文件存储了系统的写前日志。可通过"),N,a("配置项进行配置(详情见 "),t(i,{to:"/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html"},{default:l(()=>[a("wal_dir 配置项")]),_:1}),a(")。")]),k])}const S=d(h,[["render",I],["__file","Files.html.vue"]]);export{S as default};