Mongodb

今天聊聊mongodb。

Mongodb作为一种文档数据库刚出现的时候吸粉无数,最吸引开发者的特性可能就在于它的结构的自由性,你可以把完全不同结构的数据保存到同一个collection(相当于RDBMS里面的table),而且它支持在一条数据里面嵌套别的数据,从而可以把相互关联的数据以denormalized的形式保存在一起,从而可以“避免昂贵的join操作”。

我个人对mongodb一直不是太认同,比如结构的自由性,我觉得这是一个缺点而不是一个优点,它把我们本来可以让数据库可以帮我们管好的结构信息弱化掉,放到代码里面去了,这样当然自由,但是自由的代价是代码需要管的东西更多了,个人觉得这绝对不是好事。一个类似的对比是静态语言与动态语言的比较,我也是觉得静态语言更好,因为让别的事物(数据库,语言)帮你更专业地做了更多的事情。

Mongodb声称的另一个“可以避免昂贵join操作”的特性,我感觉也是有点饮鸩止渴,这本来应该是让数据库好好做,把join做得更好,代价更小,现在完全把数据denormalize掉了。denormalize这种手段本身没有错,错的是不应该被作为一个数据库的关键特性,有点反智。

不过话又说回来,mongodb的意义可能跟其它nosql数据库一样探索了一种不一样的途径,丰富了数据库生态的多样性。但是总是感觉这种途径这是一种折中方案,不是那么美好的方案。

你可能感兴趣的:(Mongodb)