目前有一些工具可以很方便的升级线上的数据库的结构,比如ruby写的rails以及php的doctrine都有migration,不知道mongodb有没有很方便升级库结构的方法。
PHP中文网2017-04-21 10:59:11
MongoDB升级数据库还是相对比较方便的,如非特殊版本更新,基本上都不用停服务。
1.如果你的数据结构有变化,MongoDB的Schema-free机制使你可以不用迁移
2.如果你想使用新版本中的新功能,那确实得迁移数据了,一种比较通常的做法是通过其Replication机制。可以看一下官方的相应版本的release notes,通常会写升级时是否可以用Replication的方式,不能用的话可能是因为本次新版本在Replicastion协议上本来就有改动。那可能就得停服务来做迁移了。
3.停服务迁移前,也可以先通过mongodump和mongorestore迁移当前数据,然后停服务再迁移增量数据,通常也不会停太长时间服务。
阿神2017-04-21 10:59:11
没有,只能靠你自己在程序里做约定。
这也是这类面向文档的数据库的最大问题,开发的时候不得不小心翼翼,因为我们只能在客户端维护了一份数据库结构,万一有某个开发者多插入或者少插入了些什么字段,服务端都是可以接受的。
更苦恼的是有时候客户端不是唯一的,因此我们就要在不同的客户端上维护同一份数据结构,这为数据结构的升级带来了很大的不方便。面向文档的设计本来是要解放对数据结构的依赖,但是却没有解决没有数据结构约定后带来的随意性。