首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

给MongoDB开发者的50条提议(二)

2012-08-13 
给MongoDB开发者的50条建议(二)#第二条 要使你的数据面向未来,那么就对数据进行规范化(Normalize if you n

给MongoDB开发者的50条建议(二)

#第二条 要使你的数据面向未来,那么就对数据进行规范化(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

?


3 楼 jonerxq 2012-04-13   你好:
  我现在有一个数据结构
{
  "location": {
    "latitude": 51.0,
    "longitude": -0.1,
    "altitude": 30.1,
    "accuracy": 1200.1,
    "altitude_accuracy": 10.1,
    "address": {
      "street_number": "100",
      "street": "Amphibian Walkway",
      "postal_code": "94043",
      "city": "Mountain View",
      "county": "Mountain View County",
      "region": "California",
      "country": "United States of America",
      "country_code": "US"
    }
  }
}
你说我这样和
{
  "location": {
    "latitude": 51.0,
    "longitude": -0.1,
    "altitude": 30.1,
    "accuracy": 1200.1,
    "altitude_accuracy": 10.1,
   
      "street_number": "100",
      "street": "Amphibian Walkway",
      "postal_code": "94043",
      "city": "Mountain View",
      "county": "Mountain View County",
      "region": "California",
      "country": "United States of America",
      "country_code": "US"
    }
}
这样查询性能上是不是没什么影响,
我用上面那种方式会不会更面向对象一点

热点排行