ARTICLE DETAIL

资讯详情

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

基于 MongoDB Atlas 搭建 Mage AI 数据源测试环境的实践指南

基于 MongoDB Atlas 搭建 Mage AI 数据源测试环境的实践指南 数据工程数据编排ETL任务调度批处理流处理数据集成后端【免费下载链接】mage-ai Build, run, and manage data pipelines for integrating and transforming data.项目地址https://gitcode.com/gh_mirrors/ma/mage-ai点击查看免费下载MongoDB Atlas 是 MongoDB 官方提供的云托管服务支持部署在 AWS 等云平台上适合作为数据集成管道tap的远程测试目标。本文基于 mage-ai 仓库中 MongoDB 数据源的实际探索记录atlas_setup.md系统讲解 Atlas 集群选型、环境隔离方案、命令行连接方法并结合 MongoDB 数据源源码 说明连接参数与底层实现帮助读者快速搭建可用于开发与 CI 的远程 MongoDB 测试环境。一、为什么选择 MongoDB Atlas 作为测试环境对于需要持续验证 MongoDB 数据源Mage 数据集成中的 Source的团队来说需要一个稳定、可复用、接近真实生产形态的 MongoDB 实例。Atlas 的优势在于托管在云上文中记录为可托管于 AWS无需自行维护服务器提供从免费到付费的多个集群层级可按成本灵活选择有专门面向项目Project的环境隔离模型适合为 dev、CIcircle等不同环境分配独立集群。与此相对仓库探索记录中还评估过两种替代方案详见 atlas_setup.md 末尾的 Other Options Considered本地部署 MongoDB 服务器维护成本高尤其在 CI 场景下引入额外运维负担在 AWS 上自行搭建 Mongo Stack需要占用 EC2 实例成本显著更高原记录估算约为每年 12,000 美元。相比之下Atlas 在成本、运维复杂度和多环境隔离能力上更适合作为数据源测试环境。二、Atlas 集群层级Tier选型对照探索记录中给出了完整的集群层级对照表各层级的资源规格与月度价格如下层级RAM存储vCPU价格/月M0共享512 MB共享免费M2共享2 GB共享$9M5共享5 GB共享$25M102 GB10 GB1 vCPU~$58M204 GB20 GB2 vCPU~$144选型要点M0完全免费适合功能验证、连通性测试、冒烟测试等低负载场景M2 / M5共享层级价格适中适合常规开发与持续集成M10 / M20独享资源适合承载更接近生产的测试数据量或并发连接测试。共享层级的限制M0、M2 和 M5 这三个共享层级存在以下已知限制选型时必须考虑每个账号只能创建一个 M0 免费集群因此免费层只能承载单一环境只能使用 MongoDB 4.0 版本以原记录时的测试结论为准版本策略细节可参见 supported_versions_spike.md无法自定义内存或存储大小规格由 Atlas 统一管理。这些限制意味着如果测试依赖特定 MongoDB 版本或需要更大存储就需要使用 M10 及以上的付费层级。另据仓库中的版本探索记录M10付费集群可以选择 MongoDB 版本而免费及共享层级默认使用最新版本因此需要多版本矩阵测试时往往要借助付费集群。三、多环境下的集群组织方案探索记录提出了三种可行的环境组织方式单个集群、多个数据库用一个集群承载 dev 与 circleCI通过不同 database 隔离。Atlas 单集群最低支持 100 个并发连接一般开发场景足够dev 与 CI 各用一个集群物理隔离避免互相干扰使用 Atlas Project项目Atlas 的 Project 就是为独立、隔离的环境设计的官方推荐将项目视为环境隔离的单位。最终的推荐实践是为 dev 与 circle 分别创建独立的 Project每个 Project 内各建一个集群。这样做的好处是环境之间完全隔离误操作不会相互影响后续如果需要新增环境如 dev-tap-tester、harrison-tap-tester 等只需按同样的模式再建 Project 即可避免多环境共用一个集群时可能出现的资源竞争或连接数冲突。这套一环境一项目一集群的模型与仓库中 MongoDB 数据源按database配置读取数据的模型天然契合——每个隔离的测试环境都可以配置独立的连接参数。四、通过 Mongo Shell 连接 Atlas1. 安装 MongoDB 社区版要获得mongoshell需要先在本机安装 MongoDB Community Edition。按官方安装指南在 Ubuntu 上安装即可安装包会同时带来 mongo shell 及其他配套模块。对应到仓库内的探索记录本地完整搭建含认证与副本集配置可参考 local_mongo_setup.md。2. 使用连接串连接集群连接 Atlas 集群推荐使用mongodbsrv://形式的连接串SRV 记录会自动解析到集群的全部节点。原记录中使用的连接命令形如mongo mongodbsrv://cluster-host.mongodb.net/test -u username -p password其中cluster-host是 Atlas 控制台提供的集群主机名例如stitch-upwjw这类内部测试集群实际使用时应替换为自己集群的 host/test是认证后的默认数据库路径-u username/-p password为数据库用户凭证。连接成功后即可执行常规的数据库操作用于验证数据源能否正常读写目标数据库。五、连接配置在数据源实现中的对应关系Atlas 连接方式并非只适用于 shell仓库中的 MongoDB Source 实现会以完全一致的连接参数接入 Atlas。在 templates/config.json 中基础配置模板如下{ database: , host: , password: , port: 27017, user: }而 MongoDB 数据源 README 给出了完整的配置键说明配置键说明示例值database要读取数据的数据库名companyhost数据库主机名127.0.0.1password访问数据库的用户密码abc123...port数据库端口默认 2701727017user访问数据库的用户名adminreplica_set副本集名称可选ssl设为true时使用 SSL 连接false默认值authSource覆盖默认数据库名以完成集群认证the_database可选authMechanism指定 MongoDB 集群的连接认证机制SCRAM-SHA-256默认 None这些参数与 Atlas 场景的对应关系非常明确托管集群一律需要ssl: true认证通常依赖authSource与authMechanism。底层连接实现在 tap_mongodb/init.py 的build_client函数中可以看到这些配置如何被组装成 pymongo 客户端connection_params { host: config[host], port: int(config[port]), username: config.get(user, None), password: config.get(password, None), ssl: use_ssl, replicaset: config.get(replica_set, None), readPreference: secondaryPreferred, } if config.get(authSource): connection_params[authSource] config.get(authSource) if config.get(authMechanism): connection_params[authMechanism] config.get(authMechanism)几个实现细节值得注意readPreference固定为secondaryPreferred从库可读主库优先这与 Atlas 副本集架构配合良好可降低主节点压力authSource/authMechanism为可选仅在配置了对应键时才传入连接参数Atlas 集群通常需要设置认证源数据库与认证机制ssl_cert_reqs仅在启用 SSL 时生效默认校验证书verify_mode默认true当ssl为true且verify_mode为false时可禁用证书校验连接成功后会打印 MongoDB 服务端版本号便于确认实际连到的版本见 build_client 日志。仓库中的 pymongo_spike.py 还给出了另外两种 Atlas 连接方式的验证代码连接串方式pymongo.MongoClient(mongodbsrv://user:passwordhost/test)需要安装dnspython包以解析 SRV 记录连接参数方式显式传入多个 shard 主机列表、port27017与sslTrue。从源码结构看这两种方式最终在build_client中统一收敛为host port 认证参数的连接模式因此无论集群如何部署配置层面对齐即可。六、认证与权限的底层验证逻辑连接 Atlas 之后数据源并非直接盲目枚举所有数据库。在 tap_mongodb/init.py 中get_roles与get_databases会先查询当前用户的角色再据此决定可读取的数据库列表通过usersInfo命令获取当前用户的角色无find权限的角色如dbAdmin、userAdmin、clusterManager等会被跳过具备全库读取权限的角色readAnyDatabase、readWriteAnyDatabase、root可以列出全部非系统数据库否则仅能列出角色中被授予权限的数据库。同时在发现阶段会忽略system、local、config等系统库见 IGNORE_DBS。这意味着在 Atlas 上为测试环境创建专用用户时应当按最小权限原则授予其目标数据库的读取权限例如readWriteAnyDatabase加对local库的只读权限后者用于读取 oplog这与 local_mongo_setup.md 中创建stitch_dev用户的方式一致。七、其他被评估的方案对比方案成本运维复杂度结论来自探索记录本地 MongoDB 服务器低本机资源高尤其 CI 环境开销较大不作为首选AWS 自建 Mongo StackEC2高原记录估算约 $12,000/年高明显偏贵MongoDB Atlas免费起M0按需升级低托管推荐方案八、实践落地建议综合探索记录与源码实现落地一套基于 Atlas 的 MongoDB 测试环境时建议按以下顺序操作创建 Atlas 项目为 dev、CI 等每个环境分别创建独立 Project创建集群低成本阶段选用 M0功能验证或 M2/M5常规开发需要指定版本或更大资源时升级到 M10创建数据库用户按最小权限原则授权目标数据库必要时授予local库只读权限以支持 oplog 增量同步记录连接信息从 Atlas 控制台获取集群 host、端口与认证配置配置数据源将连接信息填入 templates/config.json 对应的host、port、user、password、database托管集群记得开启ssl并按需设置authSource与authMechanism验证连通性先用mongo mongodbsrv://...在 shell 中验证再通过数据源的 discover/sync 流程做端到端验证。通过这套流程可以在不维护任何服务器的情况下获得与生产形态一致的远程 MongoDB 测试目标为数据源的开发、回归与 CI 验证提供稳定支撑。赞分享数据工程数据编排ETL任务调度批处理流处理数据集成后端【免费下载链接】mage-ai Build, run, and manage data pipelines for integrating and transforming data.项目地址https://gitcode.com/gh_mirrors/ma/mage-ai点击查看免费下载相关推荐Yii 2 测试环境搭建指南基于 Codeception 的单元、功能与验收测试完整实践Yii 2 测试环境搭建指南基于 Codeception 的单元、功能与验收测试完整实践 导读 本篇技术指南以 Yii 2 官方测试文档为核心系统讲解如何基后端Web框架NPOI安全指南防止Office文档处理中的潜在风险NPOI安全指南防止Office文档处理中的潜在风险 NPOI是一款强大的.NET库用于读取和写入Microsoft Office二进制和OOXML文件格式Jest 集成 MongoDB基于 jest-mongodb Preset 的数据库测试实战指南Jest 集成 MongoDB基于 jest mongodb Preset 的数据库测试实战指南 本文是 Jest 官方文档中 MongoDB 集成指南 d测试质量保障代码覆盖率开发工具上一篇终极指南如何在SwiftUI中集成ImagePicker实现现代iOS图片选择器下一篇FontTools字体数据导出终极指南格式转换与数据提取完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表