作者回复: MongoDB的GridFS 不是一个真正的filesystem。它其实是一个api sugarcoating。实现是在驱动端(不是mongodb服务器!),提供一个字节流的API, 允许你把二进制文件通过这个接口提交给MongoDB 驱动,或者从这个接口读取二进制文件流。然后驱动会把这个文件分块,每一块作为一个mongodb的文档插入到集合里。 当你需要的时候,mongodb驱动会把所有相关的切块读出来,拼成一整个文件,返回给应用程序。 所以这个不是真的文件系统,只是提供了一个虚拟的文件接口供应用进行文件存储和读取。优点是可以用到mongo的分布式能力,做海量的二进制文件管理和高可用等。
作者回复: 不用一个个改,可以是一个update语句,更新所有匹配项
作者回复: 么有太大区别,性能上也不会有什么差别,除了你自己要保证这个_id的唯一性。
作者回复: Linux 有个命令叫tail,如果你理解那个的用法,就知道这个名词的由来了。 tail -f debug.log 这个命令会打印debug.log 的内容,然后不会退出,会在那里监听debug.log文件是否有新的日志写入,一旦有新的,就会马上在控制台打印出来。 使用tailable cursor, 你的程序不会退出,读完cursor最后一条以后会block,等待下一条数据过来后继续。很多时候可以用来做一些类似Java里面 observer pattern的事情或者传统数据库里触发器的事情。
作者回复: 新增表字段,就会引来上亿流量冲击 - 这个能详细说下是什么样的一个情况吗?我脑补不上 上亿流量是一天?一个小时?取决于时间周期,这个大概率不是什么问题。