【Monogdb】MongoDB之十大应用设计技巧

技巧一、速度和完整性的折中

在多个文档中使用的数据可以采用内嵌(反范式话)的方式,也可以采用引用(范式化)的方式。这种策略并没有优劣之分,各自都有优缺点。关键是要选择适合自己的应用场景方案。 反范式化会产生不一致的数据。但要是范式化,应用则必须在每次确认时做额外一次查找。因为极高的性能和瞬间一致性不可兼得,所以必须要想清楚哪个才是应用最需要的。

考虑因素一般包括:

是否总要额外读取一次几乎不怎么改变的数据?

一致性很重要吗?

要不要快速读取?

技巧二、适应未来的数据要范式化

范式化可使数据可用性更加长久,未来可以在不同的应用中以不同的方式查询范式化的数据。这里的前提是有些数据将会一年不断地被各种应用得到。

技巧三、尽量单个查询获得数据

mongodb的数据库设计应该从应用单元的查询出发。

应用单元,对于web应用或者移动应用可以将对后端的一次请求视作一个应用单元

对于桌面应用,一次用户交互可以算是一个应用单元

对于分析系统,一个图表的加载算作是一个应用单元

技巧四、嵌入关联数据

当在嵌入和引用文档之间犹豫不决时候,不防想想查询的目的是为了获得字段本身还是为了进一步获得更加广泛的信息。如果前者建议采用嵌入关联数据。

技巧五、嵌入时间点数据

比如某人更新了个人信息,那么就不需要更改其以往的订单内容

技巧六、不要嵌入不断增加的数据

mongodb存储数据的机制决定了对数据的不断追加数据是很低效的。在正常使用中数据和对象的大小应该相对固定。

技巧七、预填充数据

如果已经知道未来要用到哪些字段,第一次插入是就带着这些字段会比用到时再创建效率更高。 比如每天都要使用新的集合,最好提前创建。

技巧八、尽可能预先分配空间

只要知道文档开始比较小,后来会变得确定的大小,就可以使用这种优化方法。 一开始插入文档的时候就用和最终数据大小一样的垃圾数据填充。即添加一个garbage字段(其中包含一个字符串,串大小与文档最终大小相同)

技巧九、用数组存放要匿名访问的内嵌数据

一个常见的问题就是内嵌信息到底是欧也妮个数据还是用文档来存。如果确切知道查询内容就用子文档存。如果有时不太清楚查询的具体内容,则要数组。 当知道一些条目的查询条件时候通常该使用数组。

技巧十:文档要自给自足

mongodb是一个无脑的大型数据存储。mongodb几乎不做任何数据处理,仅仅存储数据。要尽量遵守这点,避免让mongodb做些能在客户端完成的计算。即便是写小任务,像求平均值或求和,也要放在客户端去做。

如果要找的信息必须经过计算,且无法直接从文档中获得,有两种定义:

付出高昂的性能代价;优化文档结构,使得这些信息能够从文档中直接获得。

时间: 2024-08-07 04:32:17

【Monogdb】MongoDB之十大应用设计技巧的相关文章

十大网站设计错误

1.搜索引擎不友好 搜索引擎对于难以处理和识别的打字稿.复数.连字号等等各种各样的问题,搜索的准确度会降低.显然,如果搜索引擎刻意去迎合这种错误使用的话,会伤害到所有的搜索使用者. 一个相关的问题是,搜索引擎区分结果是依靠文档的重要性,而只是按照内容关联次数简单地进行结果区分. 当找不到信息的时候,搜索是用户的救生索.即使有高级搜索功能,建议还是使用简单搜索,搜索形式应该是一个简单的录入框,就像我们常见的那一种. 2.使用PDF文件做为在线阅读 用户讨厌在浏览的时候跳出PDF文件,因为那会打断用

让数据库飞起来 十大DB2优化技巧

DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的操作系统平台上服务.下文中将为大家讲解DB2十大优化技巧. 为了帮助DB2 DBA 避免性能灾难并获得高性能,我为我们的客户.用户和 DB2 专家同行总结了一套故障诊断流程.以下详细说明在 Unix.Windows 和 OS/2 环境下使用 DB2 UDB 的电子商务OLTP 应用程序的10 条最重要的性能改善技巧,希望下文中涉及到的内容对大家能够有所帮助. 一. 监视开关 确保已经打开监视开关.如果它们没有打开,您将无法获取您需要的性

【转】程序员应知道这十大面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式, 而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像“抽象”.“封装”.“多态”.“继承” 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不知道这些 OOPS 和SOLID设计原则,有的只是不知道一个特定的设计

Android 应用中十大导航设计错误

原文网址链接:http://www.geekpark.net/topics/199244 1. 将导航项放在 Action Overflow 里 我应该已经不止一次在各种 App 上看到有人把导航项放在 Action Overflow 中了.经常被放进 Action Overflow 的导航有"主页","商店","我的信息 (微信,twitter 中枪)",甚至一些分类.但是 Action Overflow 真的不是导航项该去的地方,别忘了这地方

十大技巧快速提升Android应用开发性能

一个应用程序要想开发成功,质量至关重要.用户要求它们决定安装到自己设备上的Android应用程序反应迅即.性能合理.如果应用程序未能提供好用的功能和稳定的用户体验,那么很快就会被卸载掉.本文我们将介绍十大技巧快速提升Android应用开发性能. 1:首先要有良好的编程习惯 要成为一名优秀的资源管理员;既要运用常识,还要使用公认的算法和标准的设计模式.在资源使用方面,如果你打开了资源,要记得关闭资源.要尽量晚地获取,尽量早地释放.这些由来已久的编程准则同样适用于你的Android应用程序,如果它们

上海天象网络技术有限公司----十大设计趋势

十大设计趋势-----上海天象网络技术今日上海天象网络技术有限公司为大家提供一篇互联网领域的设计趋势,欢迎大家阅读.1.?极简风(艺术.品质.效率)极简风体现在:更少的按钮和选项,这样使得UI界面变得更加干净整齐,使用起来格外简洁,从而带给用户更加良好的操作体验.因为可以更加简单直接地将信息和事物的工作方式展示出来,所以可以有效减少认知障碍的产生.此风格的具体特征表现在没有多余的效果,例如复杂的投影.凹凸或渐变等:使用简洁风格的元素和icon:大胆且明亮的配色风格:尽量减少装饰的极简设计.2.?

十大响应式Web设计框架

http://www.csdn.net/article/2014-05-13/2819739-responsive-frameworks-for-web-design 对于设计师而言,网站设计中的任意一环节都不容忽视.时下,借助网上的一些资源,只需简单的几个步骤你就可创建出更具吸引力的设计,包括菜单.背景.动画.眉头.body等设计.响应式Web设计不仅能够适用于任何屏幕尺寸,还为用户带来更完美的体验,本文将分享十款最佳的响应式Web设计,助你大大简化工作流程. Gumby Framework

优秀API设计的十大原则

优秀API设计的十大原则 2015-09-23    分类:编程开发.设计模式.首页精华暂无人评论 分享到:更多4 二十万年薪PHP工程师培养计划 成为被疯抢的Android牛人 风中叶讲Java重难点 Linux运维基础课程 本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎加入技术翻译小组! 每个软件开发人员都使用API.“优秀”的API设计就像魔法.不过,我不知道有多少人可以解释为什么有的API很复杂.很难学,而有的则干净.简单.使用起来堪称是一种快乐.关于这个问题,我将在文中

十大开源的.NET用户界面框架 让GUI设计不再犯难

选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI更能吸引用户,有时甚至成为决定一款应用成败的关键.下面小编整理出十大应用最广泛.NET开源用户界面框架,希望.NET开发人员以后选择GUI框架时不再犯难. Windows.Forms Windows.Forms是微软的.NET开发框架图形用户界面的一部分,该组件通过将现有的Windows API(Win32 API)封装为托管代码提供了对Windows本地(na