能否切换NoSQL服务提供商?Cloud Firestore可迁移到MongoDB吗?
问题解答
从Firebase Firestore迁移到MongoDB的可行性
完全可以迁移,两个都是文档型数据库,数据模型适配成本很低:
- 你可以直接通过Firebase控制台或者
gcloud命令行工具导出所有Firestore内的结构化数据,支持导出JSON、CSV格式,导出的文件可以直接导入MongoDB,绝大多数字段不需要额外改造。 - 如果你有图片这类静态资源,正常是存在Firebase Cloud Storage而非Firestore中,这类资源可以批量导出下载,迁移后只需要把MongoDB中存储的资源访问地址替换为新地址即可。
关于密码是否会丢失的说明
首先明确一个通用安全规则:正规云服务的鉴权体系不会存储用户明文密码,也不会支持明文导出,Firebase也不例外,会不会出现登录问题分两种情况:
- 如果你用的是Firebase Auth自带的用户鉴权体系,没有自己在Firestore里存储密码(非常不建议自行存储用户密码,无论是否加密),那迁移时你无法导出用户的密码哈希值,这种情况你可以二选一处理:
- 新服务暂时保留对接Firebase Auth的鉴权逻辑,后续逐步引导用户重置密码,等所有活跃用户都完成密码重置后,再完全切换到新的鉴权体系
- 切换服务前提前发通知,切换后引导所有用户重置密码后登录,不会出现密码“丢失”的问题,只是用户需要走一次重置流程
- 如果你是自行把加密后的密码存在Firestore中,只要导出数据时完整保留加密后的密码字段,导入MongoDB后沿用原来的加密校验规则,用户可以正常登录,完全不会受迁移影响。
迁移建议
- 正式迁移前先做小批量数据的导出导入测试,验证字段完整性、接口适配逻辑、鉴权流程没有问题后,再切全量流量
- 如果是线上业务,建议做双写过渡,先把新写入的数据同时写到Firestore和MongoDB,验证没有问题后再逐步切读流量,最大程度降低业务影响
内容的提问来源于stack exchange,提问作者RodParedes
相关产品推荐
相关产品推荐

