范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

mongodb主要用来干嘛,什么时候用,存什么样的数据?

  一年多一直在使用mongodb,基本上从对mongodb不懂的小白,到现在操作mongodb无任何压力,最近的一个项目在做mongodb副本集的管理,三组机器做一个副本集,大概要管几十台上百台副本集,主要用来自动化发布,构建副本集(我们的mongo副本集部署在docker中),所以在写各种mongo shell的代码实现,说白了就是调用mongo的commands。看到这个问题特来回答一下。
  mongodb众所周知不支持事务,所以需要强事务的业务根本不能考虑mongodb。
  mongodb的优势就是文档存储:
  1. 业务经常变动,需要不时的添加字段,那么mongodb比较适合,关系型数据库添加字段的复杂度也还好
  2. 嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟,pg毕竟现在生产中使用还是偏少,个人也不了解,这里不谈。但这不仅仅这一点优势,具体下面会细说。
  3. upsert支持,查询速度也不慢
  4. 高可用的副本集支持
  5. 查询语法非常丰富,嵌套文档查询功能非常强大,不是重度用户可能不能理解
  下面说说一个具体的使用事例:
  项目的一条数据在10kb左右,如果使用关系型数据库那么需要将这条数据拆分成大概几百条左右,建造多个表,设计较复杂,这种数据大概在一百万条左右,想想拆分后在十几亿的数据量就可怕。打平后的数据什么DB也都可以拿下,只是一百万变十几亿比较恐怖而已。
  如果采用MySQL存储,每次查询需要使用外键查询多个表,从这些表中拉取数据,性能肯定要下降很多,比不上只在一个表查询,而且只拉取少两个数量级的数据。查询也还好,业务允许可以对结果做缓存,放到redis里去。
  但是重点来了,需求要增量更新部分数据,这时候需要更新多个表,根本没法做到原子性(注意事务不是原子操作),当然也可以使用cas等技术补偿,达到最终一致性。但使用mongodb存储只需要update一条数据,对相应的嵌套文档中内容更新,可以做到原子性,是不是很方便?
  具体说说该项目的难点,查询无法使用缓存,可能会很吃惊,但是业务决定了确实做不了,而且增量更新的量达到上万的QPS,如果不能保证原子性想想多么可怕!
  所以mongodb在这里帮了大忙,关系型数据库解决不了这个难题。
  有人可能要问,mongodb没有事务,上游数据写入也会有问题,你不可能所有数据都存一个表吧?
  当然不是的,我们mongodb里的数据是从MySQL中清洗出来存到mongodb中的,mongodb只做单点的业务需求,综合的数据还是在MySQL中。
  此项目我们用了上百个副本集,保证系统的高可用,这些副本集配置只要一条shell就搞定,如果用MySQL的主从不知道怎么配(我自己不懂),估计DBA得忙死,而该项目完全不需要也没用到DBA。
  说了这么多mongo的优点,也说说他的缺点:
  1. 查询优化器和MySQL没法比
  2. 不支持reload,只能冷重启,初始化配置的时候比较麻烦
  3. 没有事务,不敢存储第一手数据,多用来做备份数据的存储
  mongodb可以做很多事情,取决于你脑洞,性能不差,存一些相对不重要的数据,mongodb嵌套文档功能强大,多看看官方文档挖掘挖掘有用信息,每次都能发现惊喜。
  希望对你有用!
  文中的图片,是我学习MongoDB之后做的技术分享PPT,可以关注我后发私信"资料"两个字,我会将完整PPT的下载链接发给你,只供个人学习使用哟。
  什么是MongoDB
  首先,我们对MongoDB下一个定义 ,它是一个数据库;再稍微详细一点儿,它是一个开源的、基于分布式文件存储的、非关系型数据库。说到非关系型数据库,最有名的可能就是Redis了,它是一种Key,Value类型的数据库,而MongoDB,它是文档型数据库的一种,它的存储方式类似于JSON。
  我们常用的关系型数据库,在有着事务一致性 、支持复杂SQL、成熟、稳定等优点的同时,与此同时,也有诸如数据结构固定 、需要停机迁移等缺点。而MongoDB正是对关系型数据库进行了完美的补充,它有着数据模式自由 、便于弹性扩展的优点。
  MongoDB中的一些基本概念,和关系型数据库对照着看,还是很好理解的:
  MongoDB中的文档相当于MySQL里面的一行数据(Record):
  MongoDB中的集合相当于MySQL里面的一张表(Table):
  什么时候用MongoDB
  MongoDB更多适用于大数据量、高并发、弱事务、不确定数据类型 的应用; 特别是这里的"不确定数据类型",也是MongoDB最大的特点之一。
  在以往的关系型数据库中,我们需要提前定义一个表的表结构,当表结构发生改变的时候,我们需要执行DDL语句。而MongoDB数据类型是很自由的,表中的每一行数据实际上都是一个JSON串,在同一张表中,每一个JSON串中的键值数量可以是不同的,键的内容可以是不同的,甚至是两个完全不同的JSON串可以共存在一张表中,并且MongoDB是无需事先创建表结构或修改表结构,所有的改变都是动态的。
  但是MongoDB不适用高度事务性的系统;它可以用于对象及JSON数据的存储,或者是一些大尺寸,低价值的数据存储,而且由于性能很高,MongoDB也适合作为应用的缓存层。
  所以总结来说,关系型数据库和非关系型数据库MongoDB是不存在谁替代谁的问题,他们应该是各有优势,相互补充的。就好像我们平时用的无线键盘和机械键盘一样,无线键盘灵活轻便、外观比较时尚,而机械键盘手感出色、跪起来很舒服,不伤膝盖,各有优势。
  以上是我对MongoDB简单分享,如果大家想更深入的了解MongoDB,可以随时找我交流,我是一个喜欢分享的人,比如你们很多人家里的无线路由器,都设密码,不在家的时候还会把无线关了,一点分享的精神都没有。而我,就一直开着无线路由器,也从不设密码,让周围的人可以搜到我的信号,连接成功,我就会很开心。虽然我没装宽带,但我觉得这并不重要,因为我的分享,给了他们带来了希望和快乐。
  希望我的解答能帮助你!
  是一种存储json对象,并提供快速查询,删除和更新的新一代数据库服务软件。可以类比mysql或者sqlserver。但跟传统数据库不同,它不依赖schema(类似mysql的table定义)和关系约束。它可以存任何json对象,并提供多种方法进行查询,聚合,映射。
  由于原生json支持,特别适合作为node的数据库。node中比较知名的mongoose,把mongodb进行了包装,提供schema检验,关系查询,等传统sql的功能,通过promise提供并行批量数据库操作,事务性也可以由第三方插件提供。再结合redis的内存缓存服务,和kareem提供的hook功能。基本上可以优雅的完成自动缓存查询,自动缓存更新。因此,用node快速开发情况下会选择mongodb。
  这个主要看业务,大部分用于存储一些日志,统计相关的数据,如果不要求事物的话mongo是很好的选择,天生具备分布式扩展,大数据量存储。我们是用java操作,用的spring data mongodb,具体你可以百度猿天地,里面有视频教程
  随着云计算的高速发展,越来越多的应用需要存储海量数据,并且对高并发和处理海量数据提出了更高的要求,传统的关系型数据库对于这些应用场景难以满足应用需求。
  作为NoSQL数据库之一的MongoDB数据库能够完全满足和解决在海量数据存储方面的应用,越来越多的大网站和企业选择MongoDB代替Mysql进行存储。什么是MongoDB?
  MongoDB[1] 是一个基于分布式文件存储的数据库。由C 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
  MongoDB的主要特点
  (1)文件存储格式为Bson,使用易于掌握和理解的Json风格语法。相对Json来说,Bson拥有更好的性能,主要表现为更快的遍历速度、操作更简易、增加了额外的
  数据类型。
  (2)模式自由,支持嵌入子文档和数组,无需事先创建数据结构,属于逆规范化的数据模型,有利于提高查询速度。
  (3)动态查询,支持丰富的查询表达式,使用Json形式的标记,可轻易查询文档中内嵌的对象和数组及子文档。
  (4)完整的索引支持,包括文档内嵌对象和数据,同时还提供了全文索引方式,MongoDB的查询优化器会分析查询表达式,并生成一个高效的查询计划。
  (5)使用高效的二进制数据存储,适合存储大型对象(如高清图片、视频等)。
  (6)支持多种复制模式,提供冗余及自动故障转移。支持Master-Slave、Replica Pairs/Replica Sets、有限Master-Master模式。
  (7)支持服务端脚本和Map/Reduce,可以实现海量数据计算,即实现云计算功能。
  (8)性能高、速度快。在多数场合,其查询速度对于MySQL要快的多,对于CPU占用非常小。部署很简单,几乎是零配置。
  (9)自动处理碎片,支持自动分片功能实现水平扩展的数据库集群,可以动态添加或移除节点。
  (10)内置GridFS,支持海量存储。
  (11)可通过网络访问,采用高效的MongoDB网络协议,在性能方面要优于http或Rest协议。
  (12)第三方支持丰富,MongoDB社区活跃,越来越多的公司和网站在生产环境中使用MongoDB进行技术架构优化,同时由10gen公司官方提供强大技术支持。
  MongoDB的适用场景
  MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。
  (1)网站数据:MongoDB非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
  (2)缓存:由于性能很高,MongoDB也适合作为信息基础设施的缓存层。在系统重启之后,由MongoDB搭建的持久化缓存层可以避免下层的数据源过载。
  (3)大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
  (4)高伸缩性的场景:MongoDB非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对MapReduce
  引擎的内置支持。
  (5)用于对象及JSON数据的存储:MongoDB的Bson数据格式非常适合文档化格式的存储及查询。
  如有不同观点,欢迎发表评论。如果喜欢我的回答,欢迎"点赞、分享"。

文案最近很火的情感文案1。人生的出场顺序很重要,不是你不够好,而是你来的不够巧。网易云热评2。每当有人问起为什么我不恋爱的时候,我都以麻烦为由搪塞过去。又有人开始问我到底喜欢过谁没有,我也轻描淡写地表示黄瓜不要凉拌了,加1块五花肉,这样吃才叫过瘾,营养下饭又解馋三餐美味,四季幸福,大家好!黄瓜是一种果蔬两用的食物,它口感清甜,生吃和熟吃都很美味。今天,我要教大家用黄瓜搭配猪肉做个美味佳肴,跟着我做出的菜,吃起来清脆营养又解馋,保管你下两碗秋天,多吃蒸菜身体好!分享5道家常蒸菜,清淡少油,好吃不上火秋天天气干燥,人特别容易上火,饮食上尽量以清淡为主,多吃点水果蔬菜,少吃辛辣油腻之物,就连平时做饭也最好采用清蒸清炒的方式,对身体好。秋燥吃啥好,蒸菜解烦恼!少油少盐还不用闻油烟的中秋将至,推荐这10道家常菜,荤素搭配,好看又好吃,太解馋了大家好,欢迎大家来到我的美食自媒体,我是美食领域创作者锦绣V山东专注美食,让生活更有味。今天为大家带来了几道家常美食的做法,这几道美食也是深受大家的喜欢,而且是很常见的几道美食。天白蘑菇的做法,白蘑菇怎么做好吃白蘑菇生活中特别受欢迎的一种菌类食材,它肉质细嫩,营养丰富,能滋补强壮身体,而且可塑性特别强,可做成多种味道不同的美食,想知道白蘑菇怎么做好吃,可参考下面对白蘑菇做法的具体介绍,能越吃越香的几道家常菜,色香味俱全,做法简单干煸豆角土豆主料土豆2个,豆角250辅料油适量,盐适量,蒜适量,宴友食用油干辣椒适量,葱适量,味精适量具体步骤1。土豆去皮豆角去丝,洗净2。葱蒜,干辣椒切碎,土豆切片,豆角对折3。猪肝好吃有诀窍,很多人第一步就错了,大厨教你正确做法,超解馋生活没有彩排,美食没有美颜。大家好,今天用猪肝给大家分享一道美食。猪肝是指猪体内的一种器官,里面含有了丰富的营养物质,而且适当的吃猪肝对我们人体有好处。而且一头猪仅仅就只有一个猪肝秋季吃鱼,内行人专挑这5种!顺应时节,鲜嫩肥美,好吃又实惠秋天是吃鱼的好季节,无论是淡水鱼还是海鱼,在秋季都是最肥美的时候,此时的鱼会不断觅食储备能量,准备度过寒冬。。因此,秋天的鱼不仅好吃,营养还高,最适合上年纪的人和体弱虚寒者滋补身体梅菜扣肉原料五花肉500克,梅干菜100克调料柱侯酱30克,生抽15克,蚝油10克,红腐乳半块,白糖10克,黄酒10克,盐老抽葱姜各适量做法1葱切段姜切片。梅干菜用冷水浸泡一会儿,洗一遍后家常小菜,百吃而不腻简单又好做一红烧茄子食材长茄子五花肉(适量)辣椒,蒜,油(适量),酱油,糖,酒,油,盐,鸡粉,汤生粉,八角,葱,蒜,香菜,豆瓣,淀粉(芡汁)。制作方法1把茄子洗净去掉头尾,切成滚刀状,泡在清最美之冀共话最美家乡趁着太阳下班,一起步入正定醉人的夜色里!最美之冀共话最美家乡正定初秋的夜晚时而热闹时而静谧时而浪漫如诗趁着太阳的下班时间一起去感受正定初秋夜的魅力吧在你不曾留意的瞬间古城正定的夜幕已被擦亮灯火如同古城的脉络点燃了深邃的夜
与你相约,与戏剧相约奎文区德信现代小学戏剧展演凉风习习,与你相约,相约在金色的落叶下硕果累累,与戏剧相约,相约在筑梦少年的热烈中。秋天是丰收的季节,也是德信现代小学戏剧展演的季节。筑梦2。1剧社在老师和家长的帮助下,上演了一出立冬过后,抓住孩子转骨黄金期,常吃4种食物,来年个头猛长秋日生活打卡季人们总觉得春季是万物生长的开始,也是孩子长高的黄金期,而冬天就不一样了,是长个的惨淡期,但有一种说法叫转骨趁冬天。常言道冬季进补,开春打虎,冬天是一个休养生息储备能量比大促还狠!小米86英寸电视返场,到手价降至4889元现在有朋友买电视咨询,我都会优先推荐大屏幕电视,如果预算够的话直接买巨屏电视,不仅能提升观看体验,挂在客厅里面也是一道装饰风景,家里来了客人也会被巨大的电视屏幕所吸引。大屏电视除了小麦行情迭创新高,种粮大户见好就收今年的小麦行情,让种了十多年粮食的老把式王汉有些看不懂。一方面,今年6月收获的小麦,产量在历史上是最高的另一方面,近期小麦价格迭创新高。产量的出乎意料,在于去年遭遇秋汛,再加上冬小韩佳奇献神扑难阻广州城被绝杀,李玮峰很酸痛但要抬头向前南都讯记者陶新蕾广州城在奋力摆脱降级区的路上遇到了瓶颈。北京时间11月12日晚,在中超第25轮中,广州城又遭遇绝杀,0比1不敌梅州客家,吞下三连败。上一轮广州城遗憾不敌武汉长江,错新闻故事丨修不好的办公设备以为自己那点小聪明能够蒙混过关,手上有一点小权力就想着怎么占公家的便宜,我真的愧对组织对我的信任日前,江苏省淮安市洪泽区公证处主任耿某某收到处分决定书时懊悔不已。此前,洪泽区纪委监一个家最好的模样父亲有大格局,母亲会过小日子作者洞见瑾山月父亲决定一个家的高度,母亲调节家里的温度。看过一句比喻家是一幅山水画,父亲是巍峨挺拔的高山,母亲是绵延不绝的河流。父亲用山的风骨,撑起一片天地母亲用水的细腻,让日子活苹果自研基带,并不是为了让iPhone信号更好不可否认,苹果现在已经是一个半导体巨头。细究起来,苹果最早大概是2007年开始布局自研芯片,再到现在A系和M系芯片遍地开花,也不过在15年的时间。CCSInsight分析师Wayn一跳入云的新兴市场,华为第一它第二11月8日晚,月全食。星空君走出会议室的时候,已经灯火阑珊,月全食基本结束,抬头看了个寂寞。(摄影bluephantom)这次热情洋溢的会议,讨论的是一种新技术SDWAN。想用大白金鸡获奖名单出炉!朱一龙影帝奚美娟影后,吴京遗憾陪跑颗粒无收每年的冬季都是颁奖季,今年也不例外。金鹰刚刚翱翔远去,金鸡又昂首前来了。本月12日晚,第35届金鸡奖颁奖典礼如期而至,在厦门隆重举办。虽然举办时间迎面正撞双11,但影迷们和广大观众为什么我建议所有女孩卸载这些APP?我全部的野心,不过自由一生文小月亮排版月亮巷心理学上有个效应叫错失恐惧症。主要是指信息焦虑,也就是我们总担心失去或错过什么的焦虑心情。在生活里的副作用就是让我们不停地刷视频刷朋友圈