频道栏目
首页 > 资讯 > DB2 > 正文

mongoDB应用程序设计

17-08-29        来源:[db:作者]  
收藏   我要投稿

一. 范式与反范式

范式化:将不同数据放在不同集合,不同集合之间可以直接引用数据。避免数据存在于多个集合当中。

由于mongoDB不支持不同集合直接引用数据,类似关系型数据库中的join操作,mongoDB不支持。我们在设计的时候,要慎重考虑用范式还是非范式,参考原则见下图:

也就是,如果数据修改不频繁,比较小,读取频繁适合非范式设计。

二. 优化数据操作

2.1优化文档增长

mongoDB每一条文档都是紧凑的,中间没有间隙,如果一个文档修改增长了,就需要挪动位置了,这样非常影响性能。mongo识别到这种操作之后,会给后续的新增文档预留一定的空间,这个空间就是填充因子。如果文档的确会被大概率的增长,建议插入一个多余字段,来抢占空间。

2.2 删除旧数据

有些数据过几个月没用了,常见删除旧数据的方式是:

使用固定集合 使用TTL集合,定期删除数据

三. 数据库和集合设计

1. 具有相近模式的文档放在一个集合里面,由于mongo不支持集合join,需要经常join的数据,放到一个集合里

2. 数据库最大的问题是锁机制

我们通常需要将访问量相近的数据放到一个库里面,比如用户,用户参与的活动,用户日志这3种属于不同访问量的数据,可以放到3个不同的数据库里面。

四.不适合mongoDB的场景

1. mongoDB不支持事务,如果需要支持事务,建议采用别的存储

2. 从多个维度对不同数据类型的数据进行连接,这是关系数据库擅长的事情

相关TAG标签
上一篇:SQL中char、varchar、nvarchar的区别
下一篇:MySql允许任意ip进行访问的配置方法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站