- 博客(311)
- 收藏
- 关注
原创 100行代码提升80%?技术直觉的“子弹校准”秘籍
作为一个数据库开发者,或者一个大型系统的开发者,日常就是不断观测,测试改动在某些场景中的表现是不是符合我们预期,如果符合,那就谢天谢地。经过不断的校准,培养自己的系统观,这样就能在做之前就能预估一个优化是不是值得做,大概需要付出多少成本,收获多少提升。因此,不同的开发者差异可能非常大,或者说,一个工作对系统表现的全部影响,如何更全面的度量和评价,本身也是一个难题,大家能做的也只能用尽量多的采样场景去模拟全貌。所以,换一个视角,如果一个人说数据库的某个改动一定没问题,不需要测了,别人也是不可能相信的。
2025-08-08 17:01:03
150
原创 商业化是开源项目的“吸血鬼”还是“救世主”?
读博时候,我没觉得项目开源后能有同学毕业继续参与,也没想到自己当了这个第一个吃螃蟹的人,这是一个生产关系的创新,国家提倡产学研结合,到底怎么结合,其中有模式的因素,也有人的情感因素。之前有很多案例,个人维护的开源项目,由于没有收入(纯靠开源打赏几乎为0),开源社区又提出了越来越多的需求,导致对开源社区失望而不再维护社区的,这就是典型的升米恩,斗米仇。我们决定出来创业,一个很大的原因是,每当7、8、9月份,实验室同学们实习、找工作、毕业季,就是人力荒的时候,而且毕业生都是干了三年的项目骨干。
2025-08-06 20:50:15
440
原创 数据库研究生的灵魂之问:每天写代码、做工程,是理想的科研状态吗?
实验室今年的硕士毕业生陈荣钊,自从大四进组就负责 IoTDB 系统管理节点 ConfigNode 的开发,我们一起支持过无数项目,也是在实际项目中发现了现有分布式数据迁移的瓶颈,并给出了自己的独特解决思路,于是将工作总结了一篇论文,发表在数据库顶会VLDB,这种创新工作有项目支撑,解决的问题就很实际,也很实用。好像也没啥特别高级的东西,论文里讲的原理、讲的存储引擎架构,我都会。朴素的、具象的、指标清晰的,大家容易认为是“工程问题”,酷炫的、抽象的,指标模糊的,大家容易认为是“科研问题”。
2025-08-02 16:00:28
234
原创 从独奏到协奏,团队一致性让数据库“永不跑调”
经历了几年的配合,在面对一个问题时的解决思路,我们基本能达成90%以上的一致性,因此我俩一般不需要一起开大会,十分钟就能快速同步一天的有效信息,因为知道对方关心哪些内容。在数据库的开发过程中,有大大小小的信息会在各个时间、各个地方产生,小到一个变量的命名,中到一段代码是否要进行复用还是再写一套,大到发现一个功能没法实现,是否要进行取舍。数据库的开发是一个团队协作的过程,不管是功能定义、架构设计、代码开发、代码审阅,每个人能覆盖的范围总是有限的,一定会两两之间相互有部分重叠,另一部分工作还需要独立完成。
2025-07-25 17:04:16
373
原创 数据库内核开发:一场没有终点的修行
比如一个餐饮店自己开发了一个下单软件,这个软件每天要服务多少人次的订单,是有一定规律的,对软件性能和功能的需求也比较明确。比如,写入性能和查询性能是一对经典矛盾,可能你会发现,CSV 的写入性能是最快的,但是 CSV 对数据的过滤查询能力为 0,只能全量扫描。每一个数据库的诞生都是经过了几年的打磨,如果你听说有人几个月就写出来了一个数据库,不用怀疑自己的开发效率,那不能叫数据库,只能叫玩具。这时,不同数据库就会有不同的取舍方式,做什么样的取舍,就意味着选择什么样的场景,这些取舍没有对错,也没有铁律。
2025-07-13 16:36:09
313
原创 Java与数据库:从质疑到实践的十年探索
第二种是嵌入式场景,只支持 C/C++ 环境,内存几十兆,需要实时采集数据,存储上传。数据库是个综合的系统,单一的技术优势和技术劣势都不足以定义一个数据库,在我们维护的线上环境从来没有碰到过 Java GC 算法表现不够的场景,如果碰到了严重 GC 停顿,要么是使用问题,要么是遇到了内存泄漏,但是这些问题在测试阶段通常当天就能掉解决了。此外,大量的平台和应用在使用 Java 开发,Java 生态的中间件和软件互相集成的便捷度很高,也促使了 Java 应用开发者对 Java 语言的数据库的可掌握程度就更高。
2025-06-21 16:00:24
292
原创 IoTDB一台节点的DataNode出现xxxx.tsfile is not complete, and some source files is lost错误
在低版本的 IoTDB 当中,Compaction 时出现上述异常,会将对应的 DataNode 设置为 ReadOnly 的状态,此时该节点会无法进行写入请求。还有两个 DataNode 节点是好的,连接好的 DataNode 节点写入是没有问题的,但是剩下的节点就不行了。更新至时序数据库 IoTDB 1.3.3 及以上版本。
2025-03-21 18:52:37
423
原创 IoTDB TTL不生效
1.3.0 版本数据库的 TTL 设置为两天,show databases details 看到设置也是正确的,怎么还是可以查到好几天前的数据?因为有很多不活跃的测点,所以专门设置了两天过期,有什么办法可以自动清理呢?设置方式是在配置文件统一设置的。
2025-03-21 18:48:41
337
原创 IoTDB日志提示Too many open files
1.3.3 版本 IoTDB 执行查询操作失败,日志打印提示 Too many open files。如果条件允许(系统资源利用率不高,对其他模块无影响的情况下),可以适当再调大合并写入限速、合并任务并发数,加速合并。过多可以调优合并,顺序文件或者乱序文件过多可以修改配置。解决方案:观察顺乱序文件数目以及各个模块文件的大小,解决方案:降一点客户端并发。
2025-03-21 18:46:39
215
原创 IoTDB写入数据后data目录为空
写入数据时首先写入 memtable,记录 wal,并没有直接落盘。在 CLI 中手动执行 flush 可以将当前 memtable 的所有数据持久化到磁盘上,将 TsFile 文件封口,然后在 data 下对应的目录中可以获取到完整的 TsFile。在做测试、备份等场景中,保证此时没有并发写入的条件下,需要当前数据文件完整性的话,可以手动 flush(使用 CLI 或者程序)。写入少量数据后,使用 CLI 工具可以查询到这部分数据,但是在 data 目录下未查找到对应的。
2025-03-21 18:43:01
340
原创 IoTDB看门狗配置后不生效
安装包自带的脚本 daemon-confignode.sh 和 daemon-datanode.sh 配置看门狗后,使用“kill -9 ConfigNode 进程号 DataNode 进程号”的方式杀掉数据库进程后,数据库进程不会自动重启。执行脚本后,默认生成的 service 文件中的 RestartPreventExitStatus=SIGKILL,表示如果服务退出状态码为 SIGKILL(信号 9),则不会重启服务,所以数据库进程不会自动重启。
2025-03-21 18:38:56
422
原创 IoTDB 集群节点 IP 改变,如何更新集群
目前我们这儿 3C3D 集群,需要进行 IP 地址变更,之前配置文件里面,没有采用 hostname 模型,采用的是 IP 地址参数配置,请问服务器如果 IP 进行了变更,需要针对 IoTDB 集群进行如何调整,才能保证数据的完整性?问题6:刚开始电脑部署的 IoTDB 数据库以 127.0 IP 运行,现在想改为以 hostname 运行、因为不能改配置中的 IP,历史数据我可以不要,所以我重新下载了 1.3.0 版本,配置为 hostname 运行成功,但 CLI 连不上,什么原因呢?
2025-02-14 18:02:14
920
原创 IoTDB 集群重启某节点失败
如果实际情况不允许修改配置信息,则可以参考集群中其他节点的 confignode-system.properties 和system.properties 文件,手动创建符合当前节点信息的 confignode-system.properties 和 system.properties,然后分别放到对应的 data/confignode/system 及 data/datanode/system 路径下,再启动即可成功。可以按照日志提示信息,修改配置重新加入,成功后再移除掉失效的旧节点。
2025-02-14 17:55:43
443
原创 IoTDB 断电后无法启动 DataNode,日志提示 Meet error while starting up
断电时文件系统产生某些意外错误,导致 data/datanode/system/pipe/reboot_times.txt 文件写入内容异常。如果系统中不存在 pipe 的使用,手动删除文件 data/datanode/system/pipe/reboot_times.txt 即可。如果系统中存在 pipe 的使用,请联系社区开发同学提供安全解决方案(可以参考。自行修改源码后启动,或升级最新社区版本 > v1.3.3)。
2025-02-14 17:54:01
673
原创 IoTDB 导入数据时提示内存不足如何处理
数据导入脚本会在触发内存不足的时候主动进行重试。当遇到此问题时,用户不用做任何操作,脚本也可以正确进行处理。导入数据时提示内存不足,该如何处理?
2025-02-14 17:50:39
351
原创 IoTDB Pipe 数据同步提示内存不足,如何调整
1.3.3 版本进行 Pipe 数据同步时,数据发送方出现内存不足报错,具体信息为:“failed to allocate because there’s too much memory for tablets, total memory size 4939212390 bytes, used memory for tablet size 1975791992 bytes”。在进行参数调整时,建议先在测试环境中进行验证,观察调整后的内存使用情况和数据同步效果。该参数控制每次批量发送数据的字节数大小。
2025-01-21 18:20:10
550
原创 想从 IoTDB 中读取大量数据经过一定程度的分析再写入 MySQL 或 SQLServer,在这种需求下,哪一种 ETL 方案最适合
读取大量数据,经过一定分析后写入 MySQL 或 SQL Server 的场景下,寻求最适合的 ETL(Extract,Transform,Load)方案。若采用 IoTDB 的查询语句,可考虑自行开发程序,结合流处理(Pipe)功能将数据推送至目标数据库。此方案具有高度灵活性,可根据具体业务需求进行定制化开发,但需要一定的编程基础和技术能力。无论选择哪种工具,都建议先熟悉其使用方法和配置流程,以确保能够高效、准确地完成数据的 ETL 操作。
2025-01-21 18:17:36
546
原创 IoTDB Pipe 数据同步 InsertNode 内存结构过多导致 DataNode OOM 问题
通过 Grafana 监控发现,发送端 DataNode 的 Heap Memory 中老年代存在部分内存无法随垃圾回收(GC)过程释放,随着运行时间的推移,最终导致 OOM 并使 DataNode 节点崩溃。1.3.3.5 及以下版本时,开启 Pipe 数据同步功能后,发送端 DataNode 频繁遭遇 Out of Memory(OOM)异常,而接收端节点(DataNode)却能正常运行。同步,以释放占用的内存资源。由于内存无法得到有效释放,堆内内存持续被耗尽,最终引发 OOM 异常。
2025-01-21 18:13:39
417
原创 IoTDB 1.2 升级 1.3 后 Pipe 插件失效
包引用存在差异,导致插件中原本引用的 1.2 版本 TsFile 包下的 Tablet 类无法找到,进而使得 Kafka 插件无法正常发送数据,影响了数据从 IoTDB 系统到 Kafka 集群的传输流程。升级 Kafka Pipe 插件包:将 Kafka 插件包升级至匹配 1.3 版本 TsFile 的版本,确保其正确引用 1.3 版本的 TsFile 包,从而恢复数据传输功能;注册新的 Kafka Pipe:使用新注册的 Pipe 插件,创建并注册新的 Kafka Pipe,建立新的数据传输通道;
2025-01-21 18:01:36
288
原创 Java 中如何使用 SSL 连接 IoTDB
重启成功后,可以先通过 CLI 窗口验证一下 SSL 是否配置成功。SSL(Secure Sockets Layer)是一种安全协议,用于在网络通信中提供加密、认证和数据完整性保护。它主要用于在互联网上保护数据传输,确保数据在传输过程中不被窃听或篡改。因此,我们需要开启 SSL,并配置 key_store 相关参数(可使用 Java 提供的 keytool 工具生成 SSL 证书),然后重启 IoTDB 服务。验证通过后,可以通过 IoTDB 提供的 Java 原生接口创建 SSL 连接。
2025-01-21 17:59:00
702
原创 IoTDB 数据类型相关问题
通过 tools/import-data.sh 命令导入数据时,需要指定 -typeInfer 参数,用于指定类型推断规则,如:<srcTsDataType1=dstTsDataType1,srcTsDataType2=dstTsDataType2,…上面的查询在 1.0 版本是没问题的,1.3.2 版本就提示转换错误,这个可以设置吗,还是新版本只能这样转换?通过 tools/import-data.sh 导入数据时,发现默认推断类型配置没有生效,请问是什么原因?
2025-01-17 15:05:58
437
原创 IoTDB 升级后 Trigger 不可用
1.3.2 版本升级到了 1.3.3(通过替换 lib 的方式)。替换后发现原有触发器,show triggers 显示 active,但实际并未生效。卸载安装后依旧无法监听路径上的插入数据,不知道触发器逻辑是否有变更?没有发现异常日志,回退 1.3.2 版本后正常。目前已经独立成了一个项目,原来在 TsFile 下的类的包名都发生了变化,因此 Trigger 中依赖的 TsFile 路径发生了变化,需要重新打包注册。
2025-01-17 15:00:42
356
原创 IoTDB Continuous Query 在 ConfigNode 运行还是在 DataNode 运行
Continuous Query 执行阶段运行在 DataNode 中,但 Continuous Query 的调度和控制阶段(比如定时向 DataNode 发起查询)是在 ConfigNode 发生的。中的 ConfigNode 仅用于做集群管理及节点调度等,所有与元数据/数据相关的操作均在 DataNode 节点上进行。请问 Continuous Query 在 ConfigNode 运行还是在 DataNode 运行?
2025-01-17 14:59:11
218
原创 IoTDB 查询时报可用内存不足
3C3D 集群中,进行查询时报可用内存不足,即使是 show devices 这样简单的查询也会报内存不足。以后如果遇到集群性能发挥不佳的情况,可以排查一下集群间的网络延迟情况,这个对集群性能影响还是比较大的。采用上述解决方案后,查询可用内存不足的问题得到解决,同时查询效率得到明显提升。
2025-01-17 14:58:20
280
原创 IoTDB 集群中某一节点掉线导致删除序列失败
当前版本中,删除序列时所有元数据引擎的缓存都需要强一致性失效,某一节点不能成功则全部失败。因此元数据删除操作是必须要求所有节点都在线的。1.3.2 版本三台机器的集群部署,删除时间序列时,三台机器都在线没问题,掉了一台机器之后报错,请问是什么原因?恢复集群异常节点的状态,再进行删除操作。
2025-01-17 14:55:22
172
原创 IoTDB 查询最新值和 null 数据相加方法
在版本 1.1.1 中,group by 遇到两列数据相加时,其中一列为 null,另一列属性不为 null,导致两者相加之后为 null,有类似 ifnull 的函数处理这种问题吗?查 1000 个点的最新值,这些点的设备地址可能都不相同,那么我怎么查?select 后面也可以写多个测点。from 后面可以写多个设备。
2025-01-17 14:52:41
451
原创 IoTDB 报错 There are no available SchemaRegionGroup RegionGroups currently
配置时可根据系统中的 DataRegion 数、SchemaRegion 数进行计算:wal_buffer_size_in_byte * DataRegion 数 + schema_region_ratis_log_appender_buffer_size_max * SchemaRegion 数 < OFF_HEAP_MEMORY * 0.8。其中,保留 20% 堆外内存用于各模块中的临时使用。100 个设备/测点,和在 n。
2024-12-13 18:19:24
884
原创 IoTDB 如何修改测点类型
删除旧序列,修改自动推断策略配置并重启服务,以实现自动创建新的目标类型元数据。删除旧序列,并在创建新元数据时手动指定目标数据类型,然后重新写入数据。IoTDB 不支持修改已经创建测点的类型。方案一:删除旧序列重新创建新元数据。方案二:修改自动推断策略配置。
2024-12-13 18:10:46
666
原创 IoTDB 集群扩容方法
问题1:当时序数据库集群的存储占用达到多少时,建议增加节点?是等到存储完全满,还是达到一半时就进行扩容?如果集群存储已满,是否需要手动进行数据清理,比如设置 TTL,还是可以直接忽略,只增加节点即可?问题2:目前使用三台服务器构建的集群配置了元数据 3 副本和数据 2 副本。现在想要将一年前的数据迁移到其他服务器上以释放空间,这个操作应该如何执行?
2024-12-13 17:57:27
440
原创 IoTDB AINode 报错,call inference 301: Error ocurred while executing inference
使用时序数据库。
2024-12-10 18:29:50
524
原创 创业过去1024天,我后悔了吗?
本文字数:1724字阅读时间:5分钟最近看到一个展板,很有感触,回想这几年的时间,也一直在对这句话亲身实践。今天聊聊从清华博士毕业后的创业故事。投入开源,热爱开源2015年,我躺在大学宿舍的床上,看着手机里学姐的短信:“要不要来清华读博,挑战一下,不要浪费你的才华”,虽然不知道读博到底有多难,但还是想挑战一下。在读博的5年时间里,除了在不断体会博士毕业有多难之外,绝大部分精力还是放在了另一件事上,...
2024-08-15 18:21:29
381
原创 Apache IoTDB:Cannot register datanode with wrong id 无法注册 DataNode
集群无法注册 DataNode
2022-12-20 11:18:19
818
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人