首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将数据从迁移到另一个NoSQL数据库?

是否可以将数据从迁移到另一个NoSQL数据库?
EN

Stack Overflow用户
提问于 2019-05-04 08:33:31
回答 3查看 4.5K关注 0票数 7

我正在启动一个新的web应用程序,我对作为我的主数据库的Cloud非常感兴趣。但是,在我将时间投入到之前,我需要一个备份计划。

与其他NoSQL数据库(如Cassandra和Couchbase )不同,云修复仅作为云服务提供。

选择意味着您将进入供应商锁定的世界。

这是否意味着不可能将云图中存储的数据移动到另一个NoSQL数据库?

我读过这里,从一个Cloud数据库导出的数据可以导入到另一个Cloud数据库中。但我希望可以选择将数据移动到不同的NoSQL数据库。

有可能吗?如果是的话,你能大致解释一下怎么做吗?

我并不是要求一个详细的答案如何一步一步地迁移数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-04 14:04:28

如果两个数据库都有API,那么就可以将数据从一个迁移到另一个。但是,考虑到NoSQL数据库的不同,不太可能有任何自动化的东西来执行这种迁移。而且,由于NoSQL数据库没有标准的API,您还需要修改应用程序代码来处理新的数据库。

“最简单”的迁移类型将是另一个基于集合/文档的数据库。在这种情况下,这是一个迭代Firestore中的每个集合,并在新数据库中重新创建相应的数据结构的问题。

票数 4
EN

Stack Overflow用户

发布于 2021-04-18 23:05:35

好吧,伙计们,同样的问题。从Firestore到Mongodb的迁移解决方案

npm install @sgg10/firestore-backup

代码语言:javascript
复制
const firestoreBackup = require('@sgg10/firestore-backup');
const serviceAccount = require('./key');

let fsb = new firestoreBackup(serviceAccount, 'https://you data base link here');

// fsb.exportAll().then(result => fsb.saveFile(result, { name: 'All'}));

fsb.exportCustom(['users']).then(result => fsb.saveFile(result, { name: 'users'}));

接下来,我们有json文件,所以,解析这个文件并保存到Mongodb作为一个文档。

npm install mongodb --save

代码语言:javascript
复制
const { MongoClient } = require('mongodb');
const jsonFile = require('./users.json');

const MONGO_USERNAME = '';
const MONGO_PASSWORD = '';
const MONGO_HOSTNAME = '';
const MONGO_PORT = '27017';
const MONGO_DB = '';
const AUTH_SOURCE = '';

const url = `mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_HOSTNAME}:${MONGO_PORT}/${MONGO_DB}?authSource=${AUTH_SOURCE}`;
const client = new MongoClient(url, { useUnifiedTopology: true });

const start = async () => {
    await client.connect()
    .then(() => console.log('success'))
    .catch(() => console.log('error'))
}

const saveToDb = () => {
    const database = client.db(MONGO_DB);
    const users = database.collection("users");
    const userKeys = Object.keys(jsonFile.users);
    for (let i = 0; i < userKeys.length; i++) {
    users.insertOne({ _id: userKeys[i], ...jsonFile.users[userKeys[i]] })
    }
}
start().then(() => {
    saveToDb();
})
票数 3
EN

Stack Overflow用户

发布于 2019-05-04 17:46:24

如果您想导出一个文件,然后将它导入到另一个数据库中,这似乎是在非常受限的条件下才可行的。

  • 首先,两个数据库都必须能够读写相同类型的转储文件。
  • 第二,这两个数据库必须具有相同的物理实现,或者第二个数据库必须能够从原始转储文件中自动执行ETL。

这不仅是一个云修复数据库问题,也是一个目的地问题。

您正在讨论的迁移类型似乎与SQL数据库更相关,在SQL数据库中可以打开任何转储文件。

您所面临的概念问题是:使用数据库作为服务就是服务。它的优点是减少了执行工作时间。例如,您可以在Heroku上移动postgres数据库,但是您必须实现服务器。每个服务提供者都将是不同的,因为这就是他们的竞争方式,因为有不同的物理实现供应商有更强的观点来区分他们和其他供应商。

最后,您可以始终访问数据库。这意味着可以完成迁移,读取原始数据库,然后将相同的内容发布到另一个数据库。此迁移过程必须考虑服务之间的差异。并且应该在受信任的环境中提供,许多这些服务都提供了可以使用的admin。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55980847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档