
后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载本指南以 FerretDB 官方博客《Using Mingo to Analyze and Visualize FerretDB Data》为核心骨架完整复现用 Docker 部署 FerretDB → 用 Mingo 连接 → 导入演示数据 → 查询、聚合与时间范围可视化的全流程。读完本文你将掌握一套可直接落地的 MongoDB GUI 开源替代数据库组合方案并理解其背后的认证机制与命令实现原理能够在自己的环境中复现每一步操作。为什么 FerretDB 可以直接搭配 Mingo 这类 MongoDB GUI 工具无论使用哪种数据库都需要合适的工具来管理、查询和可视化数据FerretDB 也不例外。作为真正开源Apache 2.0的 MongoDB 替代方案FerretDB 的核心设计目标之一是保持 MongoDB 协议级别的兼容性——它不只是看起来像 MongoDB而是让客户端在同一个连接层、同一套命令体系下工作。这意味着MongoDB 生态中成熟的 GUI 工具如 Mingo、NoSQLBooster、Studio 3T无需任何插件或改造只要填上连接字符串就能直接连接 FerretDB 并执行查询、聚合、索引管理等操作。这也正是本指南要验证的核心场景用 Mingo 这一现代、轻快、界面友好的 MongoDB GUI完成对 FerretDB 数据的查询、可视化与分析。从仓库源码可以印证这种兼容性的实现方式FerretDB 在内部实现了完整的 MongoDB wire 协议与命令分发层例如 saslStart 命令的实现 处理 SCRAM-SHA-256 认证流程hello 命令 向客户端通告saslSupportedMechs而 聚合命令 则把 MongoDB 的聚合管道翻译为底层 PostgreSQL 查询。对客户端而言这一切都是透明的 MongoDB 行为。前置条件开始前请准备以下三样东西工具用途说明MingoMongoDB GUI 客户端从 Mingo 官网下载页面获取选择与你的操作系统匹配的安装包Docker运行 FerretDB 与 PostgreSQL用于一键启动 FerretDB 容器环境本仓库 docker-compose.yml 即为开发环境的容器编排参考mongoshMongoDB Shell用于向 FerretDB 导入演示数据并执行命令第一步用 Docker 部署 FerretDBFerretDB 本身不存储数据它把数据委托给底层的 PostgreSQL当前版本要求带 DocumentDB 扩展的 PostgreSQL。因此一个最小可用的部署至少包含两个容器PostgreSQL数据存储 FerretDBMongoDB 协议入口。按官方 Docker 快速上手方式创建如下docker-compose.ymlservices: postgres: image: postgres environment: - POSTGRES_USERusername - POSTGRES_PASSWORDpassword - POSTGRES_DBferretdb volumes: - ./data:/var/lib/postgresql/data ferretdb: image: ghcr.io/ferretdb/ferretdb restart: on-failure ports: - 27017:27017 environment: - FERRETDB_POSTGRESQL_URLpostgres://postgres:5432/ferretdb networks: default: name: ferretdb两点务必注意认证凭据保持一致POSTGRES_USER与POSTGRES_PASSWORD需要与你的实际定义匹配同时 FerretDB 容器中的FERRETDB_POSTGRESQL_URL指向的正是这个 PostgreSQL 实例postgres是 docker-compose 内的服务名会被解析为容器网络地址。认证依赖 PostgreSQLFerretDB 自身不存储任何用户凭据而是完全委托给 PostgreSQL 校验。认证默认开启相关说明见仓库文档 认证机制如确实需要关闭可设置FERRETDB_AUTHfalse或--no-auth参数但生产环境强烈不建议关闭认证参见 配置参数表。配置完成后在终端执行docker compose up -d容器启动后FerretDB 即监听本机27017端口等待 MongoDB 客户端接入。第二步安装并启动 Mingo打开 Mingo 官网下载页面选择与你操作系统匹配的安装包并下载安装完成后启动 Mingo你会进入类似下图的仪表盘界面第三步将 Mingo 连接到 FerretDBMingo 是标准的 MongoDB GUI因此只需提供 FerretDB 实例的连接字符串即可直接连上无需任何特殊配置。在 Mingo 导航栏点击Connections Manage Connections在 Connections 窗口点击Add connection填入连接凭据连接 URI 使用如下格式mongodb://username:password127.0.0.1:27017/?authMechanismPLAIN把其中的username与password替换为第一步在 PostgreSQL 中定义的用户名和密码。关于认证机制的说明原博客写作时的示例采用了authMechanismPLAIN。需要留意的是当前仓库文档明确指出客户端侧目前只支持SCRAM-SHA-256认证机制见 认证文档对应地saslStart 命令实现 也只接受SCRAM-SHA-256。因此在当前版本下连接字符串建议直接使用mongodb://username:password127.0.0.1:27017/让客户端自动协商出受支持的认证方式无论是否显式携带认证参数凭据最终都会由 FerretDB 转发给 PostgreSQL 完成校验。点击Test测试连接成功后保存即可。连接建立后回到 Mingo 仪表盘你应该能看到 FerretDB 中现有的数据库。如果看不到点击Refresh databases刷新列表。第四步用 mongosh 导入演示数据为了演示可视化与聚合分析我们通过mongosh向 FerretDB 插入一组模拟全球交易与供货记录的演示数据包含订单号、客户姓名、客户所在地、商品类别、交易时间、商品名、价格、数量、支付方式等字段。先连接到 FerretDBmongosh mongodb://username:password127.0.0.1:27017/?authMechanismPLAIN然后导入数据。集合中的一条典型文档如下{transaction_id: 10020, customer_name: María Pérez, customer_location: Buenos Aires, Argentina, product_category: Furniture, transaction_time: new Date (2023-07-16T02:00:00Z), product_name: La-Z-Boy Recliner, price: 450, quantity: 1, payment_method: Credit Card}导入完成后回到 Mingo 点击Refresh databases展开对应数据库点击集合即可在仪表盘中看到全部数据实战分析在 Mingo 中查询 FerretDB 数据下面通过三个典型场景展示 Mingo 如何把 FerretDB 的查询、聚合与时间过滤能力可视化地呈现给用户。这些场景对应的查询能力在 FerretDB 侧分别由 find 命令、聚合命令 与查询过滤层实现Mingo 只是以 GUI 方式生成并发送标准 MongoDB 命令。场景一组合条件查询与排序需求查询所有product_category为 Books、payment_method为 Credit Card 的交易并按transaction_id排序。在 Mingo 的Query/Sort区域输入查询表达式{product_category: Books, payment_method: Credit Card}点击执行Mingo 会把它转换为 MongoDB 查询命令发送给 FerretDB并在表格中渲染结果这里使用的正是 MongoDB 标准查询语法字段精确匹配 排序FerretDB 支持其完整语义因此无需学习任何新的查询语言。场景二聚合管道分析Top 5 客户需求找出购买书籍总量最多的前 5 位客户。该需求涉及分组求和、排序与截断在 MongoDB Shell 中对应的聚合管道如下db.supply.aggregate([ { $match: { product_category: Books } }, { $group: { _id: $customer_name, totalQuantity: { $sum: $quantity } } }, { $sort: { totalQuantity: -1 } }, { $limit: 5 } ])管道共四步先用$match过滤出书籍类交易再用$group按客户名分组并对quantity求和随后按totalQuantity降序排列最后用$limit截取前 5 条。在 Mingo 中点击Aggregation标签页按上述顺序逐步添加$match、$group、$sort、$limit阶段即可在图形化界面上搭建出同等的管道并实时查看每一阶段的输出结果这种可视化聚合的方式让不熟悉聚合语法的使用者也能通过界面逐步构建复杂分析流程而管道本身最终仍会以标准aggregate命令在 FerretDB 上执行。场景三时间范围查询与图表可视化需求按交易时间过滤数据并把结果绘制成图表。Mingo 内置了便捷的时间范围快捷选项例如#last2weeks—— 最近两周#today—— 今天#lastWeek—— 最近一周在查询条件中使用这些快捷标签Mingo 会自动生成对应的时间过滤条件随后可在图表视图Chart中选择字段与聚合方式把交易趋势、数量分布等数据直接可视化为图表时间过滤最终对应到 FerretDB 查询中对transaction_time这类日期字段的范围匹配底层由 FerretDB 翻译为对 PostgreSQL 的时间类型比较保证结果语义与 MongoDB 一致。连接与运行的底层原理回顾整个FerretDB Mingo链路之所以顺畅根植于 FerretDB 对 MongoDB 协议的深度兼容仓库源码提供了三处直接证据命令分发层所有来自 Mingo/mongosh 的 MongoDB 命令都经由 handler 命令集 分发到对应的msg_*实现如 find、aggregate、insert因此客户端体验与连接 MongoDB 完全一致认证层连接凭据经 saslStart/saslContinue 完成 SCRAM-SHA-256 握手后由 FerretDB 转发给 PostgreSQL 校验——这也解释了为什么username/password必须与 PostgreSQL 中的用户一致数据层FerretDB 把文档、查询与聚合翻译为对 PostgreSQLDocumentDB 扩展的操作Mingo 侧看到的永远是 MongoDB 语义的接口。总结与延伸至此我们已经完成了FerretDB Mingo从零到一的完整落地Docker 部署 FerretDB → Mingo 建立连接 → mongosh 导入演示数据 → 在 GUI 中完成条件查询、聚合管道分析与时间范围图表可视化。这再次印证了 FerretDB 的设计理念用户可以在完全开源的数据库之上无缝复用自己熟悉的 MongoDB 工具链无需担心专有数据库常见的供应商锁定或许可证变动问题。Mingo 也只是 FerretDB 兼容生态中的一员类似的 GUI 场景还可参考 NoSQLBooster、Studio 3T 等工具的使用方式。如果你希望深入了解 FerretDB 的更多安装选项Deb/RPM 包、Kubernetes、macOS、Windows 等与配置细节可以查阅本仓库 安装文档 与 配置参数说明结合 Docker 开发环境编排示例 进行更贴近生产环境的部署尝试。赞分享后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载相关推荐MongoDB数据可视化终极指南5分钟快速部署实战技巧在当今数据驱动时代如何实现 数据可视化 、建立 实时监控 系统并进行 性能优化 是每个开发者面临的挑战。如果你正在寻找将MongoDB数据转化为直观图表的方法零停机迁移MongoDB到FerretDB从数据同步到应用集成实战指南零停机迁移MongoDB到FerretDB从数据同步到应用集成实战指南 企业数据架构的灵活性与成本控制正面临前所未有的挑战MongoDB的SSPL许可证变更后端数据库文档数据库使用 Studio 3T 连接 FerretDB从 Docker 部署到增删改查、聚合与索引实战使用 Studio 3T 连接 FerretDB从 Docker 部署到增删改查、聚合与索引实战 FerretDB 是一款真正开源、兼容 MongoDB 线协后端数据库文档数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考