我无法理解如何管理模式以针对不同的环境(开发、测试和生产)拥有相同的数据库结构。并在部署服务器中。如何定义、存储和更新 ArangoDB 或 Neo4j 模式。
我知道 SQL 数据库的 sequelize 实用程序。它具有用于在不同模式版本之间迁移的工具(http://docs.sequelizejs.com/manual/tutorial/migrations.html),以更好地理解我想要的。
我无法理解如何管理模式以针对不同的环境(开发、测试和生产)拥有相同的数据库结构。并在部署服务器中。如何定义、存储和更新 ArangoDB 或 Neo4j 模式。
我知道 SQL 数据库的 sequelize 实用程序。它具有用于在不同模式版本之间迁移的工具(http://docs.sequelizejs.com/manual/tutorial/migrations.html),以更好地理解我想要的。
有一个抽象的迁移框架https://github.com/tj/node-migrate
您可以将它与任何数据库一起使用,因为它允许您执行任何代码并将状态保存到任何地方(默认为文件)
这是我为 ArangoDB 配置它的方式
npm i migrate --save-dev
将脚本添加到package.json
"scripts": {
"migrate": "migrate"
},
创建迁移文件夹
npm run migrate init
创建迁移
npm run migrate create test
将迁移实施替换为
require('dotenv').config();
const arangojs = require('arangojs');
const db = new arangojs.Database({ url: process.env.DB_HOST });
db.useDatabase(process.env.DB_NAME);
db.useBasicAuth(process.env.DB_USERNAME, process.env.DB_PASSWORD);
module.exports.up = async (next) => {
const collection = db.collection('test');
await collection.create();
next();
};
module.exports.down = async (next) => {
const collection = db.collection('test');
await collection.drop();
next();
};
添加.gitignore
.migrate
运行迁移
npm run migrate up
回滚迁移
npm run migrate down
ArangoDB 有 Schema 演化工具,即migrantverde及其继任者arangoMigo。
ArangoMigo 使用 Yaml 文件来描述模式,而 Migrant verde 使用 XML 文件。