如何决定是否在NoSQL数据库中存储深层文档或精简相关文档

时间:2012-10-29 05:38:05

标签: mongodb database-design web-applications nosql

NoSQL新手

在我8年的网络开发中,我总是使用关系数据库。最近我开始将MongoDB用于一个简单的多用户Web应用程序,用户可以在其中创建自己的照片库。

我的域名

我的域很简单,有“用户”> “网站”> “照片集”> “照片”。

我一直在努力决定如何存储这些文件。在应用程序中,有时我只需要一小部分“照片”,有时只需要“集合”,但总是需要一些关于“用户”的信息,可能还需要“网站”。

薄与深

目前我正在使用我自己的外键实现存储多个瘦文档。问题当然是我有时必须多次调用Mongo才能呈现单个页面。

问题

当然我确定有办法解决这些低效率,缓存等问题,但NoSQLers如何处理这些问题:

  • 像这样关联你的文件是否正常?
  • 仅存储潜在的大量深层文档会更好吗?
  • 我弄错了,实际上我应该专门为不同的观点存储多个文件吗?
  • 如果您要为不同的视图存储多个文档,那么如何管理更新?
  • 使用Mongo的“嵌入”功能的答案是什么?这是最能解决这个问题的吗?

1 个答案:

答案 0 :(得分:1)

考虑在使用NoSQL数据库时考虑,尤其是MongoDB:

您如何操纵数据?

  • 动态查询
  • 二级索引
  • 原子更新
  • Map Reduce

您的访问模式(每个集合)怎么样?

  • 读/写比率
  • 更新类型
  • 查询类型
  • 数据生命周期

基础知识:

  • 文档写入是原子的
  • 最大文档大小为16Meg(使用GridFS也可以存储更大的文件)

提防:

  • 粗心索引
  • 大型深层嵌套文档

这是一个关于架构设计的老话题:Schema Design Basics