NoSQL反模式 – 文档数据库篇

虽然目前NoSQL产品没有一套完整的Schema设计方案,但我们在使用过程中还是能总结一些经验和教训,文章对文档数据库的一些错误的使用思路进行了总结。

动态Schema的传说

原文地址:http://forchenyun.iteye.com/blog/1018324

众所周知,对于海量数据的schema修改是一个极其昂贵的代价,MySQL分表的很大原因其实就有500w数据一个表,DDL会比较快。

一般来说,动态schema是指的非固定表结构,schema字段(有时也指索引)的增删对于正常的读写没有任何影响。一般有两个方向的表现形式:

Online Schema Change
Schema-Free

NoSQL中一般采用后者,而关系型数据库可能会采用前者,两者的区别是,前者虽然是固定表结构,但是可以通过一定的方式进行在线修改,同时尽可能不影响服务,而后者是原生支持动态schema,是很多NoSQL产品所支持的feature之一,也是它们之于开源关系型数据库的优势所在。下面我将就目前比较通用的动态schema解决方案就一一介绍。

MongoDB Schema Design

从关系型数据库转型到文档型存储,最容易犯的一个错误也许就是延用了老的表设计思维来对待新的结构。要矫正长期以来形成的思维方式不是一件容易的事,下面这个Slide提供了一些MongoDB下Schema设计方面的知识,让我们更好的组织我们的数据。希望对你有所帮助。