#第二条 要使你的数据面向未来,那么就对数据进行规范化(Normalize if you need to future-proof data)
“面向未来的规范的数据”就是指在未来,不同的应用程序能够以各种不同的方式对规范化过的数据进行查询。
这就假定了你有一些数据集合是要被许多应用程序年复一年的使用,有些数据集合是像这样的,但大多数人的数据是不断发展变化的,一些旧的数据会被更新或是丢弃。大多数的人都希望自己现在的查询能够尽可能的快速高效,但是如果他们在将来改变这些查询,他们将要为新的查询去优化数据库。
另外,如果一个应用很成功,其数据集往往变得非常特定于应用程序。这并不是说该数据集不能被应用于多个应用程序,通常你会考虑在其上做“荟萃分析”(meta-analysis)。但是这很难等同于“面向未来”所追求的“在10年内人们可以做任何他们想要的查询”。
#我的评注:
其实这里的“规范化(Normalization)”并不是指关系型数据库中的"规范化"。这里的规范化其实指的是“reference objects in a different collection”。就是使用我们“#第一条“中的引用。
读完这条我有些云里雾里,所以查阅了一些资料,StackOverflow上有一则关于MongoDB Normalization的问答让我高清了一些问题:
http://stackoverflow.com/questions/5841681/mongodb-normalization-foreign-key-and-joining-question