# influxDB-cleint **Repository Path**: Gulu_Lv/influx-db-cleint ## Basic Information - **Project Name**: influxDB-cleint - **Description**: InfluxDB Client 是一款基于 Electron、Vue.js 和 Node.js 构建的跨平台桌面应用程序,为管理和查询 InfluxDB 数据库提供了直观的界面。它简化了数据库操作、数据可视化和查询管理,使开发人员和数据分析师更容易处理时间序列数据。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-09-10 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: dbmanager **Tags**: Vue, Electron, influxdb ## README
GuLu Logo

InfluxDB Client

现代化、强大的时序数据库客户端

Gitee InfluxDB License Version Vue.js Electron Node.js

## 📖 概述 InfluxDB Client 是一款基于 Electron、Vue.js 和 Node.js 构建的跨平台桌面应用程序,为管理和查询 InfluxDB 数据库提供了直观的界面。它简化了数据库操作、数据可视化和查询管理,使开发人员和数据分析师更容易处理时间序列数据。 ## ✨ 功能特性 ### 核心功能 - 🔌 **连接管理** - 管理多个 InfluxDB 连接,支持 InfluxDB 1.x(用户名/密码)和 2.x(Token)认证 - 📊 **数据库浏览器** - 浏览数据库、测量和数据,支持高级筛选和时间范围选择 - ✍️ **查询编辑器** - 编写和执行 InfluxQL 查询,支持语法高亮和查询历史 - 📈 **数据可视化** - 从查询结果创建交互式图表(折线图、柱状图、面积图、散点图) - 🗄️ **数据库管理** - 创建和删除数据库及测量 ### 数据操作 - 💾 **数据导出** - 以 CSV 或 JSON 格式导出查询结果 - 🕐 **时间范围筛选** - 使用日期/时间选择器按自定义时间范围筛选数据 - 🎛️ **列显示控制** - 自定义数据表格中显示哪些列,支持列搜索和批量选择 - 🔢 **纳秒精度显示** - 表格和图表完整显示纳秒级别的时间戳(精确到 9 位小数) - 📄 **分页支持** - 支持自定义每页显示数量(10/20/50/100/200/500/1000) ### 界面与交互 - 🔍 **数据库搜索** - 快速搜索和筛选数据库列表,支持高亮匹配 - 🔄 **数据库排序** - 支持按名称(A-Z/Z-A)或按数据时间(最新/最早)排序 - 🌍 **国际化** - 完全支持中英文双语切换 - 🎨 **现代化界面** - 使用 Element UI 构建的简洁响应式界面 - 🖱️ **右键菜单** - 数据库右键菜单支持快速删除操作 ### 性能优化 - ⚡ **连接池** - Axios 实例池化,支持多连接高效管理 - 💾 **查询缓存** - LRU 缓存机制,5 分钟 TTL,最多缓存 50 条查询结果 - 🎯 **数据采样** - 支持 LTTB 算法对大数据集进行智能采样 - 📊 **虚拟滚动准备** - 性能工具类已实现,支持大数据集渲染优化 - 📝 **结构化日志** - 完整的日志系统,支持性能监控和调试 ## 🖼️ 应用截图 ### 连接管理与数据浏览
连接管理与数据库浏览器

连接管理器 - 管理多个 InfluxDB 连接,支持连接测试

### 数据库浏览器
数据库浏览器

数据库浏览器 - 浏览数据库、查看测量数据,支持纳秒精度时间显示、数据排序和导出

### 数据可视化
数据可视化

数据可视化 - 创建交互式图表,支持折线图、柱状图、面积图、散点图

## 🎯 主要功能界面 | 界面 | 功能说明 | |------|---------| | **连接管理器** | 创建、编辑、删除和测试 InfluxDB 连接 | | **数据库浏览器** | 浏览数据库、测量,查看和导出数据 | | **查询编辑器** | 执行 InfluxQL 查询,查看历史记录 | | **数据可视化** | 创建交互式图表,支持多种图表类型 | | **数据管理** | 额外的数据管理功能 | | **设置** | 语言切换和应用配置 | | **关于** | 应用信息和技术栈介绍 | ## 🛠️ 技术栈 - **前端框架:** Vue.js 2.6 + Vue Router + Vuex - **UI 组件库:** Element UI - **桌面框架:** Electron 25 - **运行时:** Node.js 18+ - **图表库:** ECharts 5.4 - **代码编辑器:** CodeMirror 5.65 - **InfluxDB 客户端:** @influxdata/influxdb-client 1.33 - **HTTP 客户端:** Axios 0.27 - **CSV 处理:** PapaParse 5.4 - **构建工具:** Vue CLI + Electron Builder - **国际化:** Vue I18n ## 📦 安装 ### 环境要求 - Node.js 18 或更高版本 - npm 或 yarn 包管理器 - InfluxDB 1.x 或 2.x 服务器 ### 下载发布版本 从 [Releases](https://gitee.com/Gulu_Lv/influx-db-cleint/releases) 页面下载适合您平台的最新版本。 ### 从源码构建 ```bash # 克隆仓库 git clone https://gitee.com/Gulu_Lv/influx-db-cleint.git cd influx-db-cleint # 安装依赖 npm install # 开发模式运行 npm run electron:serve # 构建生产版本 npm run electron:build ``` ## 📖 使用说明 ### 1. 连接到 InfluxDB 1. 启动应用程序 2. 在连接管理器中点击"新建连接" 3. 输入 InfluxDB 连接详情: - **名称:** 连接的友好名称 - **URL:** InfluxDB 服务器地址(例如:`http://localhost:8086`) - **查询类型:** 选择 InfluxQL(1.x)或 Flux(2.x) - **用户名/密码:** 用于 InfluxDB 1.x 认证 - **Token:** 用于 InfluxDB 2.x 认证 4. 点击"测试连接"进行验证 5. 点击"保存"保存连接 6. 点击"连接"按钮激活连接 ### 2. 浏览数据库 1. 从侧边栏进入"数据库浏览器" 2. 左侧面板显示所有数据库: - 使用搜索框快速查找数据库 - 使用排序下拉菜单按名称或时间排序 - 点击"+"按钮创建新数据库 - 右键点击数据库可删除 3. 选择数据库后,右侧显示 Measurements 列表 4. 选择 Measurement 查看数据: - 数据以表格形式展示,支持分页 - 时间列显示纳秒精度(格式:`YYYY-MM-DD HH:mm:ss.nnnnnnnnn`) - 点击"列设置"按钮自定义显示的列 - 使用排序功能对列进行排序 5. 时间筛选: - 设置开始时间和结束时间 - 调整数据限制(Limit) - 点击"应用筛选"更新数据 6. 导出数据: - 点击"导出数据"按钮 - 选择 CSV 或 JSON 格式 ### 3. 执行查询 1. 从侧边栏进入"查询编辑器" 2. 在代码编辑器中编写 InfluxQL 查询 3. 点击"执行"按钮运行查询 4. 结果显示在下方的表格中 5. 功能按钮: - **查询历史:** 查看之前执行的查询 - **清空:** 清空编辑器内容 - **导出:** 导出查询结果 - **可视化:** 将结果发送到可视化页面 ### 4. 创建可视化 1. 执行查询后,点击"可视化"按钮,或直接从侧边栏进入"数据可视化" 2. 配置图表: - **图表类型:** 折线图、柱状图、面积图、散点图 - **图表标题:** 自定义标题 - **X 轴:** 选择 X 轴数据列(通常选择 time 列) - **Y 轴:** 选择 Y 轴数据列(数值类型) - **分组:** 可选,按某个字段分组显示多条线 3. 图表交互: - 鼠标悬停查看详细数据(时间显示纳秒精度) - 使用数据缩放工具放大/缩小 - 拖动查看不同时间段 4. 导出图表: - 点击"导出图片"按钮 - 保存为 PNG 格式 ### 5. 管理数据库 #### 创建数据库 1. 在数据库浏览器左侧面板点击"+"按钮 2. 输入数据库名称(只允许字母、数字和下划线) 3. 点击"确定"创建 #### 删除数据库 1. 在数据库列表中右键点击要删除的数据库 2. 选择"删除数据库" 3. 确认删除操作 #### 删除 Measurement 1. 选择数据库后,在右侧 Measurement 下拉框中选择要删除的 Measurement 2. 点击"删除 Measurement"按钮 3. 确认删除操作 ### 6. 列显示设置 1. 在数据表格上方点击"列设置"按钮 2. 在弹出的对话框中: - 使用搜索框快速查找列 - 勾选/取消勾选要显示/隐藏的列 - 使用"全选"/"全不选"按钮批量操作 - 点击"重置"恢复默认设置 3. 点击"确定"应用设置 ### 7. 应用设置 1. 从侧边栏进入"设置" 2. 选择界面语言: - 中文(简体) - English 3. 设置会自动保存 ## 💻 开发 ### 项目结构 ``` influxdb-client/ ├── src/ │ ├── background.js # Electron 主进程 │ ├── App.vue # 根 Vue 组件 │ ├── main.js # Vue 应用入口 │ ├── router/ # Vue Router 配置 │ │ └── index.js │ ├── store/ # Vuex 状态管理 │ │ └── index.js │ ├── views/ # 页面组件 │ │ ├── ConnectionManager.vue # 连接管理器 │ │ ├── DatabaseExplorer.vue # 数据库浏览器 │ │ ├── QueryEditor.vue # 查询编辑器 │ │ ├── DataVisualization.vue # 数据可视化 │ │ ├── DataManagement.vue # 数据管理 │ │ ├── Settings.vue # 设置 │ │ └── About.vue # 关于 │ ├── components/ # 可复用组件 │ │ └── Sidebar.vue # 侧边栏导航 │ ├── utils/ # 工具函数 │ │ ├── influxdb.js # InfluxDB 客户端服务 │ │ ├── storage.js # 本地存储服务 │ │ ├── logger.js # 日志系统 │ │ └── performance.js # 性能优化工具 │ ├── i18n/ # 国际化 │ │ └── index.js # 中英文翻译 │ ├── mixins/ # Vue 混入 │ │ └── i18nMixin.js │ └── assets/ # 静态资源 │ └── icon.jpg ├── public/ # 公共资源 │ └── icon.jpg ├── package.json # 项目配置 ├── vue.config.js # Vue CLI 配置 └── babel.config.js # Babel 配置 ``` ### 可用脚本 ```bash # 开发 npm run serve # 运行 Web 版本(用于开发调试) npm run electron:serve # 运行桌面版本(支持热重载) # 生产构建 npm run build # 构建 Web 版本 npm run electron:build # 构建桌面版本(当前平台) # 其他 npm run postinstall # 安装 Electron 依赖 npm run check-icons # 检查图标文件 ``` ### 构建说明 Electron Builder 会根据当前平台自动构建: - **Windows:** 生成 NSIS 安装程序 - **Linux:** 生成 AppImage - **macOS:** 需要在 macOS 系统上构建 构建输出目录:`dist_electron/` ### 环境设置 1. 克隆仓库 2. 安装依赖:`npm install` 3. 启动开发服务器:`npm run electron:serve` 4. 进行开发修改 5. 测试功能 6. 构建生产版本:`npm run electron:build` ## 🎯 核心功能说明 ### 查询缓存机制 - 使用 LRU(Least Recently Used)算法 - 缓存容量:50 条查询结果 - 缓存过期时间:5 分钟 - 自动清理:每 60 秒清理一次过期缓存 - 缓存键:基于连接 ID + 查询语句 + 数据库名 ### 时间精度处理 系统支持多种时间格式,并统一显示为纳秒精度: | 输入格式 | 示例 | 输出显示 | |---------|------|---------| | RFC3339 字符串 | `2024-10-22T15:30:45.123456789Z` | `2024-10-22 15:30:45.123456789` | | 纳秒时间戳(19位) | `1729608645123456789` | `2024-10-22 15:30:45.123456789` | | 微秒时间戳(16位) | `1729608645123456` | `2024-10-22 15:30:45.123456000` | | 毫秒时间戳(13位) | `1729608645123` | `2024-10-22 15:30:45.123000000` | ### 数据排序功能 数据库列表支持 4 种排序方式: 1. **名称升序(A-Z)** - 按字母顺序排序 2. **名称降序(Z-A)** - 按字母倒序排序 3. **最新数据(新到旧)** - 按数据库中最新数据的时间排序 4. **最早数据(旧到新)** - 按数据库中最早数据的时间排序 排序功能会自动查询每个数据库的元数据,首次加载可能需要一些时间。 ### 连接管理 - 支持多连接保存,使用 LocalStorage 持久化 - 支持 InfluxDB 1.x(InfluxQL + 用户名密码认证) - 支持 InfluxDB 2.x(Flux + Token 认证) - 连接测试功能,保存前验证连接有效性 - 连接池管理,每个连接使用独立的 Axios 实例 ## 🔧 常见问题 ### 连接失败 **问题:** 无法连接到 InfluxDB 服务器 **解决方案:** 1. 检查 InfluxDB 服务是否正在运行 2. 确认 URL 地址正确(包括协议 `http://` 或 `https://`) 3. 检查防火墙设置 4. 验证用户名密码或 Token 是否正确 5. 确认选择了正确的查询类型(InfluxQL 或 Flux) ### 查询超时 **问题:** 查询执行时间过长或超时 **解决方案:** 1. 减少查询的数据量(使用 LIMIT) 2. 缩小时间范围筛选 3. 检查网络连接 4. 考虑在服务器端优化数据索引 ### 时间显示不正确 **问题:** 时间列显示格式不对或时区不对 **解决方案:** 1. 时间会自动转换为本地时区显示 2. 检查系统时区设置 3. InfluxDB 默认使用 UTC 时间存储 ### 数据导出失败 **问题:** CSV 或 JSON 导出没有响应 **解决方案:** 1. 检查是否有数据可导出 2. 确认浏览器允许文件下载 3. 检查磁盘空间是否充足 ## 🤝 贡献 欢迎贡献!请随时提交 Pull Request。 贡献流程: 1. Fork 本仓库 2. 创建您的功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开一个 Pull Request ## 📄 许可证 本项目基于 MIT 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🔗 相关链接 - **项目仓库:** [Gitee - influx-db-cleint](https://gitee.com/Gulu_Lv/influx-db-cleint) - **InfluxDB 官方文档:** [InfluxDB Documentation](https://docs.influxdata.com/influxdb/) - **问题反馈:** [Issues](https://gitee.com/Gulu_Lv/influx-db-cleint/issues) - **InfluxDB GitHub:** [influxdata/influxdb](https://github.com/influxdata/influxdb)

© 2025 GuLu. All rights reserved.

为时间序列数据社区用 ❤️ 打造