MongoDB存储是否需遵循分治原则?单表能否支撑海量数据存储需求?
问题解答
1. 当前是否需要拆分存储
- 若你当前的单集合(对应你所说的关系表)查询延迟、写入吞吐量都在业务可接受范围内,暂不需要做拆分。过早拆分不仅会大幅提升业务逻辑复杂度,还会增加后续维护成本,反而拖累迭代效率。你规划的内存扩容可以直接提升MongoDB热点数据的查询性能,能进一步推迟拆分的时间节点。
- 拆分集合的触发条件可以参考:单集合文档量超过5000万、或单集合存储容量超过2TB,此时索引遍历、数据备份的耗时会出现明显上升,可优先按业务维度(如数据创建时间、用户所属地域)拆分集合。
- 拆分集群的触发条件可以参考:单集群写入QPS超过集群硬件配置上限、或总存储量超过单集群容量上限,拆分时尽量按业务域做隔离,避免出现跨集群关联查询的场景。
2. 单集合能否支撑海量访问
只要索引设计合理、冷热点数据分层清晰、热点数据可以命中内存,MongoDB单集合完全可以支撑十亿级文档量、万级QPS的访问需求,官方也有单集合PB级存储的落地案例,无需提前做过度设计。
3. 连接配置说明
你当前的mongoose连接配置没有问题,敏感信息通过环境变量读取的方式符合安全规范,注意不要对外泄露集群哈希、用户名、密码等敏感信息即可,连接代码参考:
mongoose.connect( `mongodb+srv://{myusername}:${process.env.MONGOPASS}@cluster0.{此处集群哈希请勿对外公开}.mongodb.net/sometests?retryWrites=true&w=majority`, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true, useFindAndModify: true, } );
内容的提问来源于stack exchange,提问作者Lorasia Andrikanych
相关产品推荐
相关产品推荐

