标签:
这两天,公司项目excel数据功能扩展,需要对历史数据进行数据迁移。
公司最近几次重大功能的上线,都设计到数据迁移问题。可以说数据迁移是产品上线之前,重要的一个环节。数据迁移一般设计的问题较多,不单单是数据位置的变动,更多的是数据格式要变化。
这两天我的任务就是根据原有的四个数据库表合成新的三张数据库表,同时将历史的excel数据格式进行转换,存储的MongoDB中。这数据迁移的过程中,还是有很多问题需要注意的。
首先,就是数据迁移时间问题。数据迁移尽量要在短时内搞定,因为只有在短时间内搞定,保证用户不会有新的数据在这短时间内写入旧的系统。只有这样,产品上线后,数据才会保证一直。线上数据迁移我做了两次,第一次使用单线程的方式,对线上数据进行迁移。7个小时内都没有迁移完历史数据,这个时候,又有大量的新数据写入,所以很蛋疼。后才采用多进程方式,利用Redis做队列,实现多进程并发迁移数据。找了一个用户上传excel数量少得时间段进行迁移数据,大约一个小时搞定。这段时间内用户只上传了几个excel,然后再对这几个excel迁移。保证了上线之前,数据的可靠性。
第二,一般数据迁移都会花时间,数据量大,时间更长,因此必须在真正的迁移之间,多次试验。首先我对线下的数据,采取少量的excel做功能试验。保证迁移都的数据是正确地。然后对线下的所有数据进行数据迁移,根据数据量的大小和迁移时间,以此来评估迁移线上数据需要多长时间。然后对线上数据做迁移,来验证数据的正确性。只有正确之后,才能找个合适的时间,对历史数据进行全量迁移。
这次数据迁移,自己也学到了不少东西。数据,毫无疑问,对所有系统来说都是至关重要的。所以,一定要保证数据迁移的正确性。宁愿产品上线比预期完一点,也要保证数据迁移的正确性。
标签:
原文地址:http://my.oschina.net/yulongjiang/blog/421104