ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TDengine 零代码接入 MongoDB:通过 taosExplorer 配置数据同步任务实战指南

TDengine 零代码接入 MongoDB:通过 taosExplorer 配置数据同步任务实战指南 TDengine 零代码接入 MongoDB通过 taosExplorer 配置数据同步任务实战指南【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineMongoDB 作为介于关系型与非关系型之间的文档数据库广泛应用于内容管理系统、移动应用与物联网场景其数据往往需要与 TDengine 的时序能力结合使用。本文基于 TDengine 企业版 3.3.3.0 起的 taosExplorer 数据写入功能完整讲解如何以零代码方式创建 MongoDB 到 TDengine 的数据接入任务覆盖连接配置、认证、查询模板、数据映射与异常处理全流程。读完本文你将能够独立完成 MongoDB 历史数据迁移与实时数据同步任务的创建、调优与排障。功能概述MongoDB 是一个介于关系型数据库与非关系型数据库之间的产品被广泛应用于内容管理系统、移动应用与物联网等众多领域。很多业务系统会先使用 MongoDB 承载设备上报数据但随着设备量增长与实时性要求提高需要将数据迁移到专门为时序数据优化的 TDengine 中进行存储与分析。从TDengine 企业版 3.3.3.0开始TDengine 可以高效地从 MongoDB 读取数据并将其写入 TDengine以实现历史数据迁移或实时数据同步解决业务面临的技术痛点。根据 零代码数据写入总览 中的数据源支持列表MongoDB 支持版本为3.6。该能力由 taosExplorer 图形界面与 taosX 数据接入服务共同承载写入过程中可对数据执行提取、过滤和转换以统一命名空间并提升数据质量从而减少额外 ETL 组件。若 taosX 无法直连数据源可参考 安装 taosX-Agent 在数据源侧部署代理。前置条件在创建 MongoDB 数据写入任务前请确认以下条件taosExplorer 已可访问且目标 TDengine 集群运行正常。目标数据库已存在或准备在任务创建页面直接创建。源 MongoDB 数据库可连通且用于认证的用户具备读取权限。如需通过代理接入确保 taosX-Agent 已安装并在线详见 安装 taosX-Agent。创建任务新增数据源登录 taosExplorer 后在左侧导航栏点击“数据写入”进入任务列表页面点击新增数据源按钮进入新增数据源页面如下图所示进入新增数据源页面配置基本信息在名称字段中输入任务名称例如test_mongodb_01。选择类型下拉框中的MongoDB选择完成后页面中的字段会随数据源类型发生变化如下图所示选择数据源类型为 MongoDB其余基本信息说明如下代理非必填项。如有需要可以在下拉框中选择指定的代理也可以先点击右侧的创建新的代理按钮创建一个新的代理。目标数据库必填项。可以在下拉框中选择指定的数据库也可以先点击右侧的创建数据库按钮创建一个新的数据库。配置连接信息在连接配置区域填写源 MongoDB 数据库的连接信息包括源 MongoDB 服务的地址、端口等如下图所示填写源 MongoDB 数据库的连接信息配置认证信息配置项说明用户输入源 MongoDB 数据库的用户该用户必须在 MongoDB 系统中拥有读取权限密码输入源 MongoDB 数据库中上方用户的登录密码认证数据库MongoDB 中存储用户信息的数据库默认为admin配置认证信息配置连接选项应用名称设置应用程序名称用于标识连接的应用程序。SSL 证书设置是否使用加密连接默认关闭。如果开启需要上传以下两个文件CA 文件上传 SSL 加密的证书授权文件证书文件上传 SSL 加密的证书文件。配置连接选项配置完成后点击检查连通性按钮可以检查上方填写的信息是否可以正常获取源 MongoDB 数据库的数据若检查失败请根据页面返回的具体错误提示修正配置。配置数据查询数据查询部分决定了“读什么、按什么顺序读、分几段读”是 MongoDB 任务的核心配置区域。配置数据查询数据库与集合支持动态占位符数据库MongoDB 中的源数据库可以使用占位符进行动态配置例如database_${Y}。集合MongoDB 中的集合可以使用占位符进行动态配置例如collection_${md}。可用占位符列表如下占位符描述示例数据Y完整的公历年表示零填充的 4 位整数2024y公历年除以 100零填充的 2 位整数24M整数月份1 - 121m整数月份01 - 1201B月份英文全拼Januaryb月份英文的缩写3 个字母JanD日期的数字表示1 - 311d日期的数字表示01 - 3101J一年中的第几天1 - 3661j一年中的第几天001 - 366001F相当于${Y}-${m}-${d}2024-01-01子表字段子表字段用于拆分子表的字段通常与 transform 中的 tag 相对应多个字段使用英文逗号分隔例如col_name1,col_name2。此项配置主要为了解决数据迁移乱序问题需要结合查询模板共同使用否则不能达到预期效果。使用示例如下配置两个子表字段col_name1,col_name2在查询模板中添加子表字段占位符例如{ddate:{$gte:${start_datetime},$lt:${end_datetime}}, ${col_name1}, ${col_name2}}。运行时${col_name1}、${col_name2}会展开为 JSON 字段过滤条件如col_name1:deviceA而不是裸字段名在transform中配置col_name1与col_name2两个 tag 映射。通过这种方式查询会按子表维度分段进行避免跨子表乱序写入导致的数据错乱。查询模板查询模板是用于查询数据的查询语句JSON 格式。语句中必须包含时间范围条件且开始时间和结束时间必须成对出现。模板中定义的时间范围由源数据库中的某个代表时间的列和下方定义的占位符组成。使用不同的占位符表示不同的时间格式要求具体有以下占位符格式${start_datetime}、${end_datetime}对应后端 datetime 类型字段的筛选。例如{ddate:{$gte:${start_datetime},$lt:${end_datetime}}}将被转换为{ddate:{$gte:{$date:2024-06-01T00:00:0000:00},$lt:{$date:2024-07-01T00:00:0000:00}}}${start_timestamp}、${end_timestamp}对应后端 timestamp 类型字段的筛选。例如{ttime:{$gte:${start_timestamp},$lt:${end_timestamp}}}将被转换为{ttime:{$gte:{$timestamp:{t:123,i:456}},$lt:{$timestamp:{t:123,i:456}}}}查询排序查询排序是执行查询时的排序条件JSON 格式它必须符合 MongoDB 排序条件的格式规范。使用示例如下{createtime:1}MongoDB 查询结果按 createtime 正序返回{createdate:1, createtime:1}MongoDB 查询结果按 createdate 正序、createtime 正序返回。建议为迁移任务配置按时间列正序排序与 MySQL 接入 文档中“解决迁移数据乱序应在查询语句中添加排序条件”的思路一致可进一步规避乱序问题。时间范围与分段查询起始时间迁移数据的起始时间此项为必填字段。结束时间迁移数据的结束时间可留空。如果设置则迁移任务执行到结束时间后任务完成自动停止如果留空则持续同步实时数据任务不会自动停止。查询间隔分段查询数据的时间间隔默认1 天。为了避免查询数据量过大一次数据同步子任务会使用查询间隔分时间段查询数据。延迟时长与查询间隔配合使用。在实时同步数据场景中为了避免延迟写入的数据丢失每次同步任务会在“时间间隔 延迟时长”的时间点触发查询。例如时间间隔为 3600s延迟时长为 60 秒那么查询任务会在 09:01 时触发查询源数据库中 08:00 - 09:00 时间段的数据。配置数据映射在Payload 转换区域填写数据映射相关的配置参数通过内置 ETL 能力完成从原始 MongoDB 文档到 TDengine 表结构的转换。关于 ETL 各环节的完整规则说明可参见 零代码数据写入总览 中的“数据提取、过滤和转换”章节。点击从服务器检索按钮从 MongoDB 服务器获取示例数据。在解析中选择 JSON / Regex / UDT 三种规则解析原始消息体配置完成后点击右侧的预览按钮可以查看解析的结果。在从列中提取或拆分中填写从消息体中提取或拆分的字段。例如将 vValue 字段拆分成vValue_0和vValue_1这 2 个字段选择 split 提取器separator 填写分割符,number 填写 2配置完成后点击右侧的预览按钮可以查看转换的结果。拆分后的字段命名规则为{原字段名}_{顺序号}。在过滤中填写过滤条件。例如填写Value 0则只有 Value 大于 0 的数据才会被写入 TDengine配置完成后点击右侧的预览按钮可以查看过滤的结果。过滤条件表达式的计算结果必须是 boolean 类型支持、、、、、!等比较操作符以及、||、!逻辑组合。在映射中选择要映射到 TDengine 的超级表以及映射到超级表的列tag 与 column配置完成后点击右侧的预览按钮可以查看映射的结果。支持的映射规则包括直接映射mapping、常量value、时间戳生成器generator、字符串连接join、字符串格式化format、求和sum以及数值运算表达式expr子表名也可以通过 format 表达式动态生成。配置高级选项高级选项区域默认折叠点击右侧可展开不同数据源展示的字段可能略有差异。常见配置项如下最大读取并发数限制数据源连接数或读取线程数。默认0表示由采集器自动配置数据源响应较慢时可适当增大。批次大小单次发送的最大消息数或行数。默认值因数据源而异常见为1000或10000。写入并发数量同时写入 TDengine 的并发任务数部分数据源提供。健康监测相关选项健康监测时段、Busy 状态阈值、写入队列长度、写入错误阈值等的含义见 零代码数据写入总览中的健康状态。完整字段说明可查看 高级选项配置。异常处理策略异常处理策略区域默认折叠点击右侧可展开用于对写入过程中的各类异常配置处置策略。通用策略说明如下归档将异常数据写入归档文件默认路径为${data_dir}/tasks/_id/.datetime不写入目标库丢弃将异常数据忽略不写入目标库报错任务报错。各异常项及其可选处理策略如下详见 异常处理策略配置异常项可选处理策略目标库连接超时归档、丢弃、报错、缓存目标库恢复后重新入库目标库不存在归档、丢弃、报错表不存在归档、丢弃、报错、自动建表建表成功后重试主键时间戳溢出归档、丢弃、报错检查时间戳是否在 now - keep1 到 now 100y 范围内主键时间戳空归档、丢弃、报错、使用当前时间复合主键空归档、丢弃、报错表名长度溢出归档、丢弃、报错、截断、截断且归档最大 192 字符表名非法字符归档、丢弃、报错、非法字符替换为指定字符串表名模板变量空值丢弃、留空、变量替换为指定字符串列名不存在归档、丢弃、报错、自动增加缺失列列名长度溢出归档、丢弃、报错最大 64 字符列自动扩容开关选项打开时列数据超长自动修改表结构并重试列长度溢出归档、丢弃、报错、截断、截断且归档数据异常归档、丢弃、报错连接超时配置目标库连接超时时间单位“秒”取值范围 1~600临时存储文件位置配置缓存文件位置实际生效位置为${data_dir}/tasks/:id/{location}归档数据保留天数非负整数0 表示无限制归档数据可用空间0~65535其中 0 表示无限制归档数据文件位置配置归档文件位置实际生效位置为${data_dir}/tasks/:id/{location}归档数据失败处理策略删除旧文件、丢弃、报错并停止任务创建完成点击提交按钮完成创建 MongoDB 到 TDengine 的数据同步任务回到数据源列表页面可查看任务执行情况。任务提交后可在任务列表页面对任务进行启动、停止、查看、删除、复制等操作并可查看写入记录条数、流量等运行指标。任务断点恢复从 零代码数据写入总览 可知MongoDB 数据源支持断点恢复taosX 会持久化记录上次查询的时间戳在任务重新启动后从记录的时间戳开始继续查询从而保证历史迁移或实时同步任务在重启后不丢数据、不重复消费。与之类似的机制也应用于 TDengine 查询、MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等数据源。对于任务运行中的异常可结合任务列表的健康状态Ready、Idle、Active、Pending、Busy、Bounce、SourceError、SinkError、Fatal与活动日志快速定位问题例如 MongoDB 源库异常时任务会进入 SourceError 状态并尝试重连数据源。总结通过 taosExplorer 的零代码数据写入能力MongoDB 用户可以在一套图形界面中完成从数据源接入、连接与认证配置、查询模板设计、数据提取与映射到异常处理与断点恢复的完整数据同步闭环无需编写任何代码即可实现存量 MongoDB 数据到 TDengine 的历史迁移设置结束时间任务完成后自动停止增量数据的持续实时同步结束时间留空配合查询间隔与延迟时长避免数据丢失借助动态占位符${Y}、${m}、${d}等实现按库/按集合分片的数据接入借助查询模板占位符${start_datetime}、${start_timestamp}等与子表字段、排序条件解决迁移乱序问题。相关配置细节可继续查阅 MongoDB 官方文档 及 零代码数据写入总览并结合 高级选项 与 异常处理策略 对任务进行调优。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表