sailsjs中的数据迁移方式

时间:2019-10-18
本文章向大家介绍sailsjs中的数据迁移方式,主要包括sailsjs中的数据迁移方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

目录

sailsjs中,有三种数据迁移方式: safe,alterdrop.在开发环境和测试环境中,直接使用alter会很方便的进行数据的迁移.

官方对三种方式的说明 具体可查看此链接

方式 解释
safe 系统不会主动迁移数据(库),必须手动操作
alter 自动迁移数据字段,并试图保存现有数据
drop 每次启动系统时,删除所有数据,并且每次重建model

在实际工作中碰到两个问题

  1. alter方式中,当数据库中有比较多的数据的时候(其实也不多,比如6000个用户),在网速情况不好的情况,会出现两个问题.
  2. 在正式环境中,无法使用alter,导致在正式环境下,必须手动进行数据库的表结构修改.

alter的两个问题

官方说明如下:

Auto-migrations - Auto-migrations should never be enabled when connecting to a database with data you care about. Instead, use auto-migrations with fake data, or with cached data that you can easily recreate.
But if you are using drop or alter, Sails will load every record in your development database into memory, then drop and recreate the physical layer representation of the data (i.e. tables/collections/sets/etc.)

标注的地方,说明一下.
alter模式下,sails在启动的时候,会把每一条放到内存中,然后删除并且重建数据.这就会导致下面两个问题

启动时间超时

我的数据在6000条,网速在1m的情况,启动大约会有4分钟,想想就太恐怖了.当然在我的正式环境中,10000条数据,10秒内就可以搞定了.
sails的默认超时时间是60*1000ms,也就是1分钟.
解决办法: 延长超时时间.
配置如下:

1
2
3
4
5
6
7
8
9
module.exports.orm = {
_hookTimeout: 60000
};
// config/pubsub.js
module.exports.pubsub = {
_hookTimeout: 60000
};

提示: 网上说只需要配置orm就可以,但是经过实际验证,需要修改以上两个地方

大专栏  sailsjs中的数据迁移方式lass="headerlink" title="超时后未被验证的数据会被删除">超时后未被验证的数据会被删除

按照上面的说法,在alter模式下,sails在启动的时候,会把每一条放到内存中,然后删除并且重建数据.,也就是说,如果数据超时时间到了,还有些数据没有被重建完,那这些数据就会被丢弃,也就造成了数据库的数据丢失.

这就是官方说的 never``never``never不要在正式环境中使用alter数据迁移方式

鱼和熊掌想兼得

出于实际情况(就是没钱找DBA),我既想使用sails便捷的数据方式,但是也要保证我的正式环境的数据不会被丢弃.

原文地址:https://www.cnblogs.com/wangziqiang123/p/11696540.html