MongoDB表的设计

本文探讨了MongoDB表设计中的挑战,如Sharding key选择、数据分布均匀性、索引构建与管理、存储效率优化以及Schema设计。强调了固定Schema、减少字段名和合理生成_id的重要性,并对比了RDBMS与MongoDB的异同。同时,文章提到了地理空间索引的应用和潜在问题,以及在处理一对一、一对多和多对多关系时的策略。
摘要由CSDN通过智能技术生成
1、Collection Sharding是否靠谱
  • Sharding key的一些烦恼;
    • 单一key可能导致分布不均匀;
    • 使用符合Sharding KEY
    • 复合sharding key也不是万能的;
  • Count计算性不准确;
  • Balancer不够智能,时间不确定;
  • 禁用Auto-Sharding功能不可靠(尤其是2.X版本);
  • 线上禁用Auto-Sharding
  • 开启库级Sharding;
  • 固定分片;
  • 手动分片、分表;
  • 完全控制并取得较好结果;
2、Free Schema真的Free吗?如何应对
  • Free Schema意味着重复的Schema;
  • 每个文档都需要有Schema(重复存储的代价);
  • Free Schema意味着ALL Schema,需要知道所有schema并且进行查询与解析;
  • 尽量表中Schema都是固定的,将会大大简化程序复杂度;
  • 尽可能减少字段名,数据存储压缩(字段名称都一样、压缩比高、zlib type compression、减少存储空间、减少访问压力);
3、字段名如何进行选取
  • FreeSchema意味着重复存储,存储空间浪费;
  • 字段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值