我们正在将mongoDB用于我们的Web应用程序。 该应用程序需要超快速和响应。 该数据库包含10-20个小型馆藏和1个不断快速增长的庞大馆藏。
庞大的集合是持久的历史信息,可以由我们在服务器上公开的api用户获取,如下所示:
GET: http://app.com/history/5318a72ea0fc598286e7bbaf
而' 5318a72ea0fc598286e7bbafis'该文件的_id。
我们使用的复制集包含1个主要和2个辅助(一个是隐藏的)。
我们的问题是:
1)巨大的收藏品的增长是否会影响我们的网络应用程序性能?
2)如果是这样 - 我们如何扩大规模?是否可以分割单个集合?如果那是一个好主意?
3)为了提高我们的webapp性能,我们是否应该将庞大的集合分离到不同的数据库? (如果是这样的话 - 不应该mongoDB能够正确处理大数据吗?)
谢谢!
答案 0 :(得分:1)
有点难以回答这个问题而没有听起来很自以为是,但这里有一个去;
1)是的,一个巨大的集合可能会降低性能,尽管你可以做很多独特的键查找,因为你没有看到太多的退化。从长远来看,如果你继续按照这种速度添加文档并进行大量的查找,可能需要进行分片以保持性能提升。
2)是的,您可以轻松地对单个集合进行分片。由于您的ID是唯一的,因此在该ID上使用hashed shard key进行分片应该是一个不错的选择并提供良好的性能。
3)除非您的性能要求极端,否则我认为没有理由将集合分成单独的数据库。