当前位置: 首页 > article >正文

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点Author: ChangJin Wei (魏昌进)最近我做了一个小插件把 TDengine 接入到了 JetBrains IDEs 的数据库工具链里。先埋个小提示文末有彩蛋。项目地址GitHub: https://github.com/galaxy-sea/TDengine-Driver-IntegrationJetBrains Plugin Marketplace: https://plugins.jetbrains.com/plugin/30538-tdengine-driver-integration写这个插件的起因其实很直接。我平时更习惯在 JetBrains IDEs 里处理数据库相关工作尤其是 DataGrip 这一套交互逻辑已经用顺手了。对于 MySQL、PostgreSQL、ClickHouse 这类 JetBrains 已经支持得比较完整的数据库连库、写 SQL、看对象定义、做补全整个过程都比较流畅。但一旦切到 TDengine体验就会突然断层。不是说不能用而是“不顺”。要么是驱动和连接参数要自己折腾要么是 SQL 编辑体验不完整再加上其他数据库管理工具的交互逻辑和 JetBrains IDEs 并不完全一样来回切换时总会有一种“工具在迁就数据库而不是数据库融入工具”的感觉。所以我当时的想法很简单能不能让 TDengine 在 JetBrains IDEs 里至少先拥有接近原生数据库的基础体验一开始真正难的不是写代码真正开始动手以后我很快发现最难的部分并不是“把功能写出来”而是“搞清楚应该怎么写”。原因主要有两个。第一JetBrains Database 插件开发资料很少。常规 IntelliJ Platform 插件还能找到不少示例和文章但一旦具体到 database 模块、数据源注册、元数据包装、方言挂载这些问题能参考的内容就明显少很多。很多时候只能对着现象试、对着 API 猜或者直接进源码里一点点摸。第二关于 PSI 方言设计的资料也不多。尤其是 TDengine 这种并不是完全照搬某个主流数据库方言的场景语法该怎么拆、哪些 token 应该视为关键字、哪些应该进入函数调用链路这些都需要自己整理。换句话说真正的门槛不是“插件开发”而是“在缺少现成路径的情况下把这套东西自己走通”。中间最卡的三个问题如果要总结这次开发过程中最卡的三个问题我会归纳成下面这三个。1. TDengine 方言的 PSI 设计这是最核心、也最容易反复返工的一块。JetBrains 的 SQL 能力很多都建立在 PSI 结构之上。语法树设计得不稳后面的补全、高亮、参数提示、文档提示基本都会跟着变形。看起来像是“只是一个函数没高亮”本质上往往是语法分类错了。比如 TDengine 里有些内容既像关键字又像函数有些写法既支持裸写也支持带括号调用。如果一开始 PSI 设计没把这类情况理顺后续处理会非常痛苦。这部分我花了不少时间反复调整因为它不是单点功能而是整条链路的地基。2. TDengine 方言的整理和归纳写方言不是简单把关键字表贴进去就结束了。真正麻烦的是整理规则哪些属于关键字哪些属于内建函数哪些是特殊语法哪些虽然看起来像函数但又不完全适合按普通函数处理。只要归类模糊最后表现出来就会是补全不一致、高亮不一致、某些语句能过某些语句不能过。这个过程更像是在做“方言工程化整理”而不是单纯写解析器。尤其当你想把体验做成“像 JetBrains 原生支持的数据库一样”时对一致性的要求会更高。3. TDengine 方言的回归测试这个问题一开始其实容易被低估。方言适配最怕的不是“有 bug”而是“你修了一个点又把另一个点带坏了”。今天修了函数高亮明天可能影响补全今天让一种写法能过解析明天可能把另一种写法冲掉。而 TDengine 的语法适配又涉及 lexer、parser、PSI、completion、documentation、live templates 这些不同层次回归验证的成本不低。很多时候不是写完就行而是你得想清楚这次改动到底影响了哪一层。这也让我更明确了一件事方言适配不能只追求“先能用”还得尽量控制后续回退成本。最后做成了什么到目前为止这个插件优先完成的是两件事连接体验和 SQL 开发体验。在连接层面插件提供了 TDengine 数据源入口、内置 JDBC 版本列表、连接参数模板和配置校验。也就是说用户在 JetBrains IDEs 里添加 TDengine 数据源时不需要再从零开始拼接配置整体路径会更接近 JetBrains 已支持数据库的使用方式。在 SQL 开发层面目前已经完成了 TDengine 方言的基础适配包括TDengine 数据源接入JDBC 驱动版本选择与下载连接配置校验SQL 方言支持关键字补全函数补全函数高亮函数参数提示函数悬停文档Live Templates对我来说这里面最重要的不是某一个单独功能而是整体交互逻辑终于开始“像一门被 JetBrains IDEs 认真支持的数据库”了。这也是我最想做成的效果当你在 JetBrains IDEs 里操作 TDengine 时不再明显感觉自己在使用一套“勉强接上去”的能力而是尽量贴近已经熟悉的数据库工作流。还有哪些没做完目前优先完成的是连接与 SQL 开发体验GUI DDL 适配仍在推进中。更直接一点说现在主要还是把“写 SQL、连库、看提示”这条主链路先打通了至于 GUI 侧的表创建、字段修改这类能力还没有完全做完。这部分之所以还在推进中不是因为价值低而是因为它和数据库工具内部的数据模型、元数据行为绑定得更深处理起来比表面看上去复杂得多。后续如果继续迭代我也会优先把这些 GUI 操作补齐。为什么我觉得这件事值得做我一直觉得一个数据库生态是否成熟不只取决于服务端和驱动本身也取决于它能不能自然地进入开发者已经习惯的工作环境。很多时候开发者并不是缺一个“能连接 TDengine 的工具”而是缺一个“能让 TDengine 融入现有工作流的工具”。如果一门数据库在常见 IDE 里始终缺少顺手的支持那它在很多场景里就会天然增加使用门槛。这个插件现在当然还谈不上完美但至少它在一个很具体的问题上往前走了一步让 TDengine 在 JetBrains IDEs 里开始变得更自然一些。如果这篇文章能让更多 TDengine 用户少走一点弯路或者让更多开发者愿意一起补齐 JetBrains 生态里的 TDengine 支持我觉得这件事就已经很值得了。看到最后的彩蛋让我们来个骚操作吧对多语言开发场景来说这次还有一个额外收益。如果你的项目本身就在 JetBrains IDEs 里使用 MyBatis 相关插件那么在 XML 中编写 TDengine SQL 时也可以联动获得语法提示体验。换句话说Java MyBatis 生态的兄弟们也有福了XML 里的 TDengine SQL 不再只能“盲写”。更进一步说这个收益也不局限于 MyBatis、Java甚至不局限于某一个固定框架。只要所在语言或框架支持 JetBrains IDEs 的语言注入能力例如Language(SQL)、//languageSQL或类似机制就可以把字符串里的 TDengine SQL 交给 IDE 识别从而获得接近的补全和提示体验。这不是一个单独做出来的“宣传点”而是 TDengine 方言能力接入 JetBrains IDEs 之后自然带出来的一个实用效果。对日常维护 XML SQL 或嵌入式 SQL 的项目来说这一点会非常省心。

相关文章:

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点

让 TDengine 在 JetBrains IDEs 里更像“原生数据库”一点 Author: ChangJin Wei (魏昌进) 最近我做了一个小插件,把 TDengine 接入到了 JetBrains IDEs 的数据库工具链里。 先埋个小提示:文末有彩蛋。 项目地址: GitHub: https://github.…...

LLM大模型开发实战:6个爆款开源项目,小白也能轻松入门!

本文介绍了6个GitHub上的热门LLM(大型语言模型)开源项目,包括Datawhale的"LLM-Universe"和"LLM-Cookbook"、微软的"Generative AI for Beginners"、mlabonne的"LLM-Course"、liguodongiot的"LL…...

边缘计算中的存储挑战与解决方案

边缘计算中的存储挑战与解决方案 背景 作为一个专注于存储架构的技术人,我一直在关注边缘计算的发展。最近团队在部署边缘计算解决方案时,遇到了许多存储相关的挑战。为了帮助团队更好地理解和解决这些挑战,我决定写这篇实践指南。 边缘计算的…...

终极游戏画质升级指南:用OptiScaler解锁全显卡超采样自由

终极游戏画质升级指南:用OptiScaler解锁全显卡超采样自由 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler OptiScaler是…...

智能家居选遥控器?RF 2.4G vs 蓝牙 vs IR 保姆级对比指南

智能家居遥控技术终极对决:RF 2.4G vs 蓝牙 vs IR 深度解析 当你深夜躺在沙发上想调暗灯光,却发现必须起身对准空调才能操作——这种尴尬正是选错遥控技术的代价。智能家居的"最后一米"控制体验,往往取决于那只看不见的传输协议。本…...

告别手动拖拽!用.men和.tbr文件在UG NX里一键创建专属菜单栏(附完整脚本模板)

告别手动拖拽!用.men和.tbr文件在UG NX里一键创建专属菜单栏(附完整脚本模板) 在UG NX的二次开发中,手动拖拽按钮和菜单不仅效率低下,还容易出错。想象一下,每次部署新功能都要重复点击几十次鼠标&#xff…...

SDMatte多风格背景生成:抠图后智能匹配艺术化背景

SDMatte多风格背景生成:抠图后智能匹配艺术化背景 1. 效果亮点预览 SDMatte带来的不仅是简单的透明背景抠图。它开创性地将精准抠图与智能背景生成相结合,让每张图片都能拥有无限可能的艺术化呈现。想象一下,你的产品照片可以瞬间变成油画风…...

如何快速掌握Fast-F1:Python赛车数据分析实战指南

如何快速掌握Fast-F1:Python赛车数据分析实战指南 【免费下载链接】Fast-F1 FastF1 is a python package for accessing and analyzing Formula 1 results, schedules, timing data and telemetry 项目地址: https://gitcode.com/GitHub_Trending/fa/Fast-F1 …...

大语言模型,视觉模型,全模态模型,语音模型和向量模型的区别和使用

1. 大语言模型(Large Language Model, LLM)定义:以文本为输入,生成文本的模型。特点:输入输出都是自然语言(或包含少量结构化的 prompt)。擅长对话、写作、推理、代码生成等任务。在 LangChain …...

音乐播放器界面定制指南:foobar2000美化方案与体验提升

音乐播放器界面定制指南:foobar2000美化方案与体验提升 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 在数字音乐时代,播放器已不仅是播放工具,更是个人音乐品味的…...

Halcon图像高效转换:HObject到Bitmap的优化实践(20ms内完成)

1. 为什么需要HObject到Bitmap的高效转换 在工业视觉和深度学习应用中,Halcon的HObject图像格式和Windows平台的Bitmap格式就像两个说着不同语言的人。我遇到过太多这样的场景:当我们需要把Halcon处理后的图像交给TensorFlow做推理,或者要在…...

5步打造高效知识管理系统:Obsidian模板库实战指南

5步打造高效知识管理系统:Obsidian模板库实战指南 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirrors/ob/OB_…...

Llama-3.2V-11B-cot设计稿理解效果:从UI草图到前端代码描述

Llama-3.2V-11B-cot设计稿理解效果:从UI草图到前端代码描述 最近在尝试一些新的AI工具时,我偶然接触到了Llama-3.2V-11B-cot这个模型。它有一个听起来挺有意思的能力:能“看懂”设计稿。作为一个经常在设计和开发之间做“翻译”的人&#xf…...

别再重复积分了!手把手教你用IMU预积分优化LIO-SAM(附代码避坑点)

激光SLAM实战:IMU预积分在LIO-SAM中的高效实现与调优指南 当你在深夜调试LIO-SAM时,是否曾被重复积分导致的性能瓶颈折磨得抓狂?IMU预积分技术正是解决这一痛点的银弹。不同于传统惯性积分对初始状态的强依赖,预积分将相对运动量…...

Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生

Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为macOS上第三方鼠标功能受限而…...

贪心算法3(c++)

概念题目最短前缀题目描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串。例如carbon的字串是:cca,carcarb,carbo,和carbon。我们现在希望能用前缀来缩略的表示单词。例如,carbohydrate通常用carb来缩略表示,现在给你一组单词,要求你找到唯一…...

解放双手!用Open-AutoGLM实现微信自动回复消息,亲测可用

解放双手!用Open-AutoGLM实现微信自动回复消息,亲测可用 1. 为什么需要微信自动回复? 每天我们都会收到大量微信消息:工作群的通知、朋友的问候、家人的关心...但总有那么些时刻,我们无法及时回复: 开会…...

Phi-4-reasoning-vision-15B高算力适配:双GPU显存占用监控与低并发稳定性验证

Phi-4-reasoning-vision-15B高算力适配:双GPU显存占用监控与低并发稳定性验证 1. 模型概述与技术背景 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型,专为复杂视觉理解任务设计。作为2026年发布的重要模型,它在图像理解、文档…...

文脉定序系统处理多语言语义排序实战:跨语言检索效果展示

文脉定序系统处理多语言语义排序实战:跨语言检索效果展示 你有没有遇到过这样的烦恼?想找一份关于“机器学习”的日文资料,却只能用中文关键词去搜,结果要么搜不到,要么搜出来的东西完全不对路。或者,你手…...

【OFDM通信】基于matlab室内NOMA-OFDM-VLC系统仿真【含Matlab源码 15240期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

【数字信号调制】基于matlab GMSK调制解调系统【含Matlab源码 15239期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

wan2.1-vae开源模型价值:相比闭源方案节省90%图像生成API调用成本

wan2.1-vae开源模型价值:相比闭源方案节省90%图像生成API调用成本 你有没有算过,每个月花在AI图像生成上的钱有多少? 如果你是内容创作者、电商运营、设计师,或者任何需要大量图片素材的人,可能已经习惯了这样的场景…...

互联网一线大厂最新版 Java面试八股文(含答案,万字总结,精心打磨,建议收藏)

Java 面试 Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 A…...

跨平台开发终极对决:uniapp、uniapp-X、React Native 与 Flutter 全面解析

作者:前端组件开发 发布日期:2026年2月20日 关键词:跨平台开发、uniapp、uniapp-X、React Native、Flutter、前端框架选型 在移动应用开发日益多元化的今天,如何在保证用户体验的同时提升开发效率,成为每个团队必须面对…...

BilibiliDown完整指南:三步掌握B站视频批量下载技巧

BilibiliDown完整指南:三步掌握B站视频批量下载技巧 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…...

收藏备用!小红书二面大模型面试题:Agent 基本架构核心组件详解(小白也能看懂)

很多程序员和大模型小白反馈,最近小红书二面被问到了一道高频题:「Agent 的基本架构由哪些核心组件构成?」,这道题看似基础,却能快速考察对 Agent 核心逻辑的理解,不管是面试还是日常学习都必须掌握。今天就…...

nuScenes数据集深度解析:从传感器融合到3D目标检测的完整数据流

nuScenes数据集工程化实战:多传感器时空对齐与3D检测数据流优化 在自动驾驶研发领域,数据是算法迭代的基石。当我们谈论nuScenes数据集时,多数讨论停留在基础功能介绍层面,却鲜有从工程实现角度剖析其数据流设计的精妙之处。本文将…...

复盘与导出工具V9.0新功能实测:竞价选股与Excel导出最强风口全攻略

复盘与导出工具V9.0深度实战:解锁竞价选股与Excel导出的高阶玩法 对于股票分析爱好者来说,工具的每一次重大更新都意味着效率的跃升。V9.0版本带来的竞价选股条件设置和最强风口Excel导出两大功能,正在重新定义短线交易的数据处理方式。本文将…...

AI净界-RMBG-1.4入门指南:理解Alpha通道、PNG透明度与导出规范

AI净界-RMBG-1.4入门指南:理解Alpha通道、PNG透明度与导出规范 你是不是也遇到过这样的烦恼?拍了一张不错的照片,想换个背景发朋友圈,或者做电商需要把商品图抠出来,结果发现边缘抠得跟狗啃的一样,头发丝和…...

SillyTavern角色卡片系统全解析:从技术原理到实战应用

SillyTavern角色卡片系统全解析:从技术原理到实战应用 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 技术原理:PNG元数据驱动的角色存储机制 SillyTavern角色卡片…...