mongo

时间:2024-07-20 21:24:33编辑:花茶君

mono是什么牌子

mono是一家来自德国的知名品牌,主要生产和销售设计感强、功能性强的家居用品。mono成立于1963年,早期主要生产和销售创新的不锈钢餐具,后来逐渐扩展到杯子、壶、茶具、咖啡具等多个领域。mono的产品设计简约、时尚、实用,常常得到设计师、厨师和家庭用户的青睐。mono的产品出口到全球多个国家和地区,多次获得德国设计大奖、日本设计奖和红点奖等国际知名设计奖项。【摘要】
mono是什么牌子【提问】
mono是一家来自德国的知名品牌,主要生产和销售设计感强、功能性强的家居用品。mono成立于1963年,早期主要生产和销售创新的不锈钢餐具,后来逐渐扩展到杯子、壶、茶具、咖啡具等多个领域。mono的产品设计简约、时尚、实用,常常得到设计师、厨师和家庭用户的青睐。mono的产品出口到全球多个国家和地区,多次获得德国设计大奖、日本设计奖和红点奖等国际知名设计奖项。【回答】
您能补充下吗,我有点不太理解【提问】
mono是一家来自德国的知名品牌,主要生产和销售设计感强、功能性强的家居用品。mono成立于1963年,早期主要生产和销售创新的不锈钢餐具,后来逐渐扩展到杯子、壶、茶具、咖啡具等多个领域。mono的产品设计简约、时尚、实用,常常得到设计师、厨师和家庭用户的青睐。mono的产品出口到全球多个国家和地区,多次获得德国设计大奖、日本设计奖和红点奖等国际知名设计奖项。【回答】


[create_time]2023-05-23 12:12:23[/create_time]2023-06-07 12:12:18[finished_time]1[reply_count]0[alue_good]助人欢欣3[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.7b12a020.U0zBWMn302N7N7YHpi3n4Q.jpg?time=11650&tieba_portrait_time=11650[avatar][slogan]这个人很懒,什么都没留下![intro]85[view_count]

montego是哪国的牌子

属于美国品牌的一种,主要做女鞋的。鞋子有着悠久的发展史。大约在5000多年前的仰韶文化时期,就出现了兽皮缝制的最原始的鞋。鞋子是人们保护脚不受伤的一种工具。最早人们为了克服特殊情况,不让脚难受或者受伤,就发明了毛皮鞋子。鞋子发展到现在,就形成了现在这个样子,各种样式功能的鞋子随处可见。质量鉴别鉴定鞋质量的好坏,需要从外观和内在指标两方面着眼。由于内在指标往往需要借助于检测仪器,对于一个消费者来讲,从外观上来鉴别鞋的质量更具有实际意义。从外观上,主要通过对鞋的材料(包括鞋面、鞋底、鞋里)质量和做工两方面来鉴别鞋质量的好坏。尺码可以度量,工艺以目测、手摸、捏、推为主。鞋帮是鞋主要构成部分之一。对于光面鞋,要看其是否柔软和丰满,用手按下鞋面后,是否出现松面现象,好的鞋面应该是丰满柔软,手感舒适,光泽均匀一致,无松面现象。对绒面皮鞋的鞋面,应注意检查其绒毛是否短而均匀,其色调也应一致。鞋里是鞋帮的一部分,它是为了补强鞋面、防止鞋帮延伸变形并改善脚感而使用的。所以,好的鞋里材料(如真皮革鞋里)应具有良好的触感、透气性和排湿性,且不易脱色。在缝制上,鞋里不应有皱纹和肥边。

[create_time]2021-11-16 15:49:40[/create_time]2021-07-10 23:45:17[finished_time]1[reply_count]0[alue_good]越努力越幸運95[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.241688aa.aM90cPAwEGZUBRJ5S_Nb1A.jpg?time=8272&tieba_portrait_time=8272[avatar]用力答题,不用力生活[slogan]这个人很懒,什么都没留下![intro]255[view_count]

mongo和mongodb的区别

MongoDB是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代MySQL。在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说,更加直观,容易理解和掌握。Schema-less,支持嵌入子文档:MongoDB是一个Schema-free的文档数据库。一个数据库可以有多个Collection,每个Collection是Documents的集合。Collection和Document和传统数据库的Table和Row并不对等。无需事先定义Collection,随时可以创建。Collection中可以包含具有不同schema的文档记录。这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embeddocument)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。图1MongoDB是一个Schema-free的文档数据库图2是一个例子,作品和评论可以设计为一个collection,评论作为子文档内嵌在art的comments属性中,评论的回复则作为comment子文档的子文档内嵌于replies属性。按照这种设计模式,只需要按照作品id检索一次,即可获得所有相关的信息了。在MongoDB中,不强调一定对数据进行Normalize,很多场合都建议De-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个Collection,只需定义最顶级的class。MongoDB的文档模型可以让我们很轻松就能将自己的Object映射到collection中实现存储。图2MongoDB支持嵌入子文档简单易用的查询方式:MongoDB中的查询让人很舒适,没有SQL难记的语法,直接使用JSON,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,MongoDB支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的SQL查询。CRUD更加简单,支持in-placeupdate:只要定义一个数组,然后传递给MongoDB的insert/update方法就可自动插入或更新;对于更新模式,MongoDB支持一个upsert选项,即:“如果记录存在那么更新,否则插入”。MongoDB的update方法还支持Modifier,通过Modifier可实现在服务端即时更新,省去客户端和服务端的通讯。这些modifer可以让MongoDB具有和Redis、Memcached等KV类似的功能:较之MySQL,MonoDB更加简单快速。


[create_time]2017-07-28 15:44:14[/create_time]2017-08-12 15:42:44[finished_time]1[reply_count]0[alue_good]匿名用户[uname]https://iknow-base.cdn.bcebos.com/yt/bdsp/icon/anonymous.png?x-bce-process=image/quality,q_80[avatar][slogan]这个人很懒,什么都没留下![intro]411[view_count]

简述mongodb和主流关系数据库的区别

MongoDB 是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
mongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
参考:PHP程序员,雷雪松的个人博客


[create_time]2016-05-09 01:48:16[/create_time]2015-08-29 13:07:55[finished_time]1[reply_count]0[alue_good]雷雪松[uname]https://gips0.baidu.com/it/u=414699081,817014465&fm=3012&app=3012&autime=1687887704&size=b200,200[avatar]TA获得超过394个赞[slogan]这个人很懒,什么都没留下![intro]676[view_count]

mongodb是什么类型数据库

答案:A
1.文档型数据库
作为最受欢迎的NoSQL产品,文档型数据库MongoDB当仁不让地占据了第一的位置,同时它也是所有NoSQL数据库中排名最靠前的产品(总排行榜第七名)。Apache基金会的CouchDB排在第二,基于.Net的数据库RavenDB排在第三,Couchbase排在第四。
2.键值(Key-value)数据库
键值(Key-value)数据库是NoSQL领域中应用范围最广的,也是涉及产品最多的一种模型。从最简单的BerkeleyDB到功能丰富的分布式数据库Riak再到Amazon托管的DynamoDB不一而足。
在键值数据库流行度排行中,Redis不出意外地排名第一,它是一款由Vmware支持的内存数据库,总体排名第十一。排在第二位的是Memcached,它在缓存系统中应用十分广泛。排在之后的是Riak、BerkeleyDB、SimpleDB、DynamoDB以及甲骨文的Oracle NoSQL数据库。值得注意的是,Oracle NoSQL数据库上榜不久,得分已经翻番,上升势头非常迅猛。
3. 列式存储
列式存储被视为NoSQL数据库中非常重要的一种模式,其中Cassandra流行度最高,它已经由Facebook转交给到Apache进行管理,同时Cassandra在全体数据库排名中排在第十位,紧随MongoDB成为第二受欢迎的NoSQL数据库。基于Hadoop的Hbase排在第二位,Hypertable排在第三。而Google的BigTable并未列入排名,原因是它并未正式公开。


[create_time]2022-10-10 13:59:11[/create_time]2022-10-15 04:12:15[finished_time]1[reply_count]0[alue_good]卡洛琳1016[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.17871742.BRpkb_p9lTj4SPG69ylLiA.jpg?time=6663&tieba_portrait_time=6663[avatar]TA获得超过228个赞[slogan]这个人很懒,什么都没留下![intro]47[view_count]

使用mongodb数据库有哪些优势?

下面是一个瑭锦TANJURD总结 MongoDB 优缺点的列表,希望对打算使用 MongoDB 的同学,能有一些作用:\x0d\x0a 优势:\x0d\x0a 快速!(当然,这和具体的应用方式有关,通常来说,它比一般的关系型数据库快5位左右。)\x0d\x0a 很高的可扩展性 _ 轻轻松松就可实现PB级的存储(但是可能我们并不需要PB级的存储,10TB可能就够了)\x0d\x0a 他有一个很好的 replication 模式 (replica sets)\x0d\x0a 有很完善的Java API\x0d\x0a 他的存储格式是Json的,这对Java来说非常好处理,对javascirpt亦然。\x0d\x0a 运维起来非常方便,你不用专门为它安排一个管理员。\x0d\x0a 它有一个非常活跃的社区(我提出的一个bug在20分钟内就能得到修复。多谢Elliot)\x0d\x0a 他的版本控制非常清楚。\x0d\x0a MongoDB 背后的公司(10gen)已经准备好了明天在 MongoDB 上面的投入的资金了。\x0d\x0a 劣势\x0d\x0a 应用经验缺乏,我们都没有相关NoSQL 产品的使用经验。\x0d\x0a 项目相对来说还比较新。\x0d\x0a 和以往的存储相比,数据的关系性操作不再存在。


[create_time]2022-11-16 11:20:33[/create_time]2022-12-01 11:20:33[finished_time]1[reply_count]0[alue_good]信必鑫服务平台[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.3b707489.Pzvh_phCV7cMa9W2PNEYAQ.jpg?time=66&tieba_portrait_time=66[avatar]TA获得超过5.3万个赞[slogan]这个人很懒,什么都没留下![intro]22[view_count]

MongoDB 是什么 ? 能干嘛?

最近在回顾mongodb的相关知识,输出一篇文章做为MongoDB知识点的总结。

总结的目的在于回顾MongoDB的相关知识点,明确MongoDB在企业级应用中充当的角色,为之后的技术选型提供一个可查阅的信息简报。

MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库

(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。

使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。

(2)易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。

(3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。

SQL类型的数据库是正规化的,可以通过主键或者外键的约束保证数据的完整性与唯一性,所以SQL类型的数据库常用于对数据完整性较高的系统。MongoDB在这一方面是不如SQL类型的数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。

MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。

MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。

MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。

MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据操作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。

MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。

MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。

MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。

mongodump和mongorestore,备份和恢复数据库的标准工具。输出BSON格式,迁移数据库。

mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据需要支持多格式时有用。mongoimport还能用与大数据集的初始导入,但是在导入前顺便还要注意一下,为了能充分利用好mongoDB通常需要对数据模型做一些调整。

mongosniff,网络嗅探工具,用来观察发送到数据库的操作。基本就是把网络上传输的BSON转换为易于人们阅读的shell语句。

因此,可以总结得到,MongoDB结合键值存储和关系数据库的最好特性。因为简单,所以数据极快,而且相对容易伸缩还提供复杂查询机制的数据库。MongoDB需要跑在64位的服务器上面,且最好单独部署,因为是数据库,所以也需要对其进行热备、冷备处理。

因为本篇文章不是API手册,所有这里对shell的使用也是基础的介绍什么功能可以用什么语句,主要是为了展示使用MongoDB shell的方便性,如果需要知道具体的MongoDB shell语法可以查阅官方文档。

创建数据库并不是必须的操作,数据库与集合只有在第一次插入文档时才会被创建,与对数据的动态处理方式是一致的。简化并加速开发过程,而且有利于动态分配命名空间。如果担心数据库或集合被意外创建,可以开启严格模式



以上的命令只是简单实例,假设如果你之前没有学习过任何数据库语法,同时开始学sql查询语法和MongoDB 查询语法,你会发现哪一个更简单呢?如果你使用的是java驱动去操作MongoDB,你会发现任何的查询都像Hibernate提供出来的查询方式一样,只要构建好一个查询条件对象,便能轻松查询(接下来会给出示例),博主之前熟悉ES6,所以入手MongoDB js shell完成没问题,也正因为这样简洁,完善的查询机制,深深的爱上了MongoDB。

这里引用的是最新的驱动包,提供了一套新的访问连接方式



这里只举例了简单的链接与简单的MongoDB操作,可见其操作的容易性。使用驱动时是基于TCP套接字与MongoDB进行通信的,如果查询结果较多,恰好无法全部放进第一服务器中,将会向服务器发送一个getmore指令获取下一批查询结果。

插入数据到服务器时间,不会等待服务器的响应,驱动会假设写入是成功的,实际是使用客户端生成对象id,但是该行为可以通过配置配置,可以通过安全模式开启,安全模式可以校验服务器端插入的错误。


[create_time]2022-08-29 21:36:20[/create_time]2022-09-09 18:29:46[finished_time]1[reply_count]0[alue_good]白露饮尘霜17[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.8208c21a.f9V9VBE3sEUezgRl5aWFkg.jpg?time=4585&tieba_portrait_time=4585[avatar]TA获得超过1万个赞[slogan]这个人很懒,什么都没留下![intro]30[view_count]

mongodb 能做什么

MongoDB属于内存型数据库,在需要读性能要求很高的项目中有着比较不错的表现。

可做前段缓存服务器、缓冲数据存储区,同样也可以作为应用系统的存储服务器,例如微博、论坛等应用系统,也可以作为图片存储服务器(分布式);

在数据写方面,Mongo也支持比较高的写速率(当然这取决于硬件设备)。这比一般使用硬盘存储介质的关系数据库的存储效率要高很多。


但是,非关系数据库会造成大量冗余数据,如果前期的系统设计很粗糙,后期的数据维护将会相当困难。


[create_time]2012-08-09 16:32:39[/create_time]2012-08-09 18:57:57[finished_time]3[reply_count]10[alue_good]廉子璇rN[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.2d47a4ac.NKJBnteLFjvBtvlwAUXRCw.jpg?time=3970&tieba_portrait_time=3970[avatar]TA获得超过505个赞[slogan]这个人很懒,什么都没留下![intro]3328[view_count]

怎么连接mongo数据库

怎么连接mongo数据库
1在这里使用的是Mongo VUE进行连接,安装完成mongo客户端后,点击mongo的图标,启动运行程序
2打开面板后在界面的左上角有一个可点击的菜单【connect】连接按钮,这里相信不用我说读者就知道。
3点击后,显示出配置的连接数据库会话名。
4读者需要选择一个数据库的连接,然后点击下方的【Connect】连接
5如果读者没有配置连接需要点击下图红色方框选中的“+”号,点击进行创建一个连接。
6下面就是配置数据库的连接信息,IP、端口、口令等
7连接进入后可以看到对应的数据库中所有的表,将鼠标移至需要的表格,然后鼠标右键,选择view(视图)
8打开后选择第二个视图--Table View,表格视图,就可以看到数据库表中的数据和字段名称。


[create_time]2017-10-02 21:04:36[/create_time]2017-10-02 22:44:58[finished_time]1[reply_count]0[alue_good]司马刀剑[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.aceca565.CKDjQqs5RqG63ZiMRZPhqQ.jpg?time=7050&tieba_portrait_time=7050[avatar]每个回答都超有意思的[slogan]这个人很懒,什么都没留下![intro]26[view_count]

怎么连接mongo数据库

方法/步骤 Windows
1
在这里小编使用的是Mongo VUE进行连接,安装完成mongo客户端后,点击mongo的图标,启动运行程序

2
打开面板后在界面的左上角有一个可点击的菜单【connect】连接按钮,这里相信不用我说读者就知道。

3
点击后如下图,如果读者已经配置过数据库连接会话信息,那么就会和下图一样,显示出配置的连接数据库会话名。

4
读者需要选择一个数据库的连接,然后点击下方的【Connect】连接

5
如果读者没有配置连接需要点击下图红色方框选中的“+”号,点击进行创建一个连接。

6
下面就是配置数据库的连接信息,IP、端口、口令等

7
连接进入后可以看到对应的数据库中所有的表,将鼠标移至需要的表格,然后鼠标右键,选择view(视图)

8
打开后选择第二个视图--Table View,表格视图,就可以看到数据库表中的数据和字段名称。

http://jingyan.baidu.com/article/cbf0e500e8f25f2eaa2893f0.html


[create_time]2016-05-13 13:51:39[/create_time]2016-05-28 13:47:52[finished_time]1[reply_count]0[alue_good]匿名用户[uname]https://iknow-base.cdn.bcebos.com/yt/bdsp/icon/anonymous.png?x-bce-process=image/quality,q_80[avatar][slogan]这个人很懒,什么都没留下![intro]19[view_count]

mongoDB主要使用在什么场景?

MongoDB的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例:

? ??●? ? 游戏场景:使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。

? ??●? ? 物流场景:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

? ??●? ? 社交场景:使用MongoDB存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。

? ??●? ? 物联网场景:使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。

? ??●? ? 视频直播:使用MongoDB存储用户信息、礼物信息等。


[create_time]2022-06-29 16:05:23[/create_time]2022-07-10 17:49:54[finished_time]1[reply_count]0[alue_good]清宁时光17[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.f66817d0.sg2uptlA4rVTuV_qaAgZJw.jpg?time=582&tieba_portrait_time=582[avatar]TA获得超过1.1万个赞[slogan]这个人很懒,什么都没留下![intro]144[view_count]

mongodb应用场景,举例说明。。谢谢高手解答

MongoDB属于内存型数据库,在需要读性能要求很高的项目中有着比较不错的表现。可做前段缓存服务器、缓冲数据存储区,同样也可以作为应用系统的存储服务器,例如微博、论坛等应用系统,也可以作为图片存储服务器(分布式);在数据写方面,Mongo也支持比较高的写速率(当然这取决于硬件设备)。这比一般使用硬盘存储介质的关系数据库的存储效率要高很多。但是,非关系数据库会造成大量冗余数据,如果前期的系统设计很粗糙,后期的数据维护将会相当困难。


[create_time]2016-12-02 03:01:06[/create_time]2012-02-24 09:30:42[finished_time]1[reply_count]11[alue_good]sniper2003[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.167612ba.Pqf4swY1fVy9gGmnkgdv1g.jpg?time=2913&tieba_portrait_time=2913[avatar]TA获得超过1882个赞[slogan]这个人很懒,什么都没留下![intro]6048[view_count]

MongoDB是什么,怎么用?看完你就知道了

MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库。 (1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。 使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。 (2)易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。 (3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。 (1)文档数据类型 SQL类型的数据库是正规化的,可以通过主键或者外键的约束保证数据的完整性与唯一性,所以SQL类型的数据库常用于对数据完整性较高的系统。MongoDB在这一方面是不如SQL类型的数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。 (2)即时查询能力 MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。 (3)复制能力 MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。 (4)速度与持久性 MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。 MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据操作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。 (5)数据扩展 MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。 MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。 MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。 mongodump和mongorestore,备份和恢复数据库的标准工具。输出BSON格式,迁移数据库。 mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据需要支持多格式时有用。mongoimport还能用与大数据集的初始导入,但是在导入前顺便还要注意一下,为了能充分利用好mongoDB通常需要对数据模型做一些调整。 mongosniff,网络嗅探工具,用来观察发送到数据库的操作。基本就是把网络上传输的BSON转换为易于人们阅读的shell语句。 因此,可以总结得到,MongoDB结合键值存储和关系数据库的最好特性。因为简单,所以数据极快,而且相对容易伸缩还提供复杂查询机制的数据库。MongoDB需要跑在64位的服务器上面,且最好单独部署,因为是数据库,所以也需要对其进行热备、冷备处理。 因为本篇文章不是API手册,所有这里对shell的使用也是基础的介绍什么功能可以用什么语句,主要是为了展示使用MongoDB shell的方便性,如果需要知道具体的MongoDB shell语法可以查阅官方文档。 创建数据库并不是必须的操作,数据库与集合只有在第一次插入文档时才会被创建,与对数据的动态处理方式是一致的。简化并加速开发过程,而且有利于动态分配命名空间。如果担心数据库或集合被意外创建,可以开启严格模式。 以上的命令只是简单实例,假设如果你之前没有学习过任何数据库语法,同时开始学sql查询语法和MongoDB 查询语法,你会发现哪一个更简单呢?如果你使用的是java驱动去操作MongoDB,你会发现任何的查询都像Hibernate提供出来的查询方式一样,只要构建好一个查询条件对象,便能轻松查询(接下来会给出示例),博主之前熟悉ES6,所以入手MongoDB js shell完成没问题,也正因为这样简洁,完善的查询机制,深深的爱上了MongoDB。 使用java驱动链接MongoDB是一件非常简单的事情,简单的引用,简单的做增删改查。在使用完java驱动后我才发现spring 对MongoDB 的封装还不如官方自身提供出来的东西好用,下面简单的展示一下使用。 这里只举例了简单的链接与简单的MongoDB操作,可见其操作的容易性。使用驱动时是基于TCP套接字与MongoDB进行通信的,如果查询结果较多,恰好无法全部放进第一服务器中,将会向服务器发送一个getmore指令获取下一批查询结果。 插入数据到服务器时间,不会等待服务器的响应,驱动会假设写入是成功的,实际是使用客户端生成对象id,但是该行为可以通过配置配置,可以通过安全模式开启,安全模式可以校验服务器端插入的错误。 要清楚了解MongoDB的基本数据单元。在关系型数据库中有带列和行的数据表。而MongoDB数据的基本单元是BSON文档,在键值中有指向不定类型值的键,MongoDB拥有即时查询,但不支持联结操作,简单的键值存储只能根据单个键来获取值,不支持事务,但支持多种原子更新操作。 如读写比是怎样的,需要何种查询,数据是如何更新的,会不会存在什么并发问题,数据结构化的程度是要求高还是低。系统本身的需求决定mysql还是MongoDB。 在关于schema 的设计中要注意一些原则,比如: 数据库是集合的逻辑与物理分组,MongoDB没有提供创建数据库的语法,只有在插入集合时,数据库才开始建立。创建数据库后会在磁盘分配一组数据文件,所有集合、索引和数据库的其他元数据都保存在这些文件中,查阅数据库使用磁盘状态可通过。 集合是结构上或概念上相似得文档的容器,集合的名称可以包含数字、字母或 . 符号,但必须以字母或数字开头,完全。 限定集合名不能超过128个字符,实际上 . 符号在集合中很有用,能提供某种虚拟命名空间,这是一种组织上的原则,和其他集合是一视同仁的。在集合中可以使用。 其次是键值,在MongoDB里面所有的字符串都是UTF-8类型。数字类型包括double、int、long。日期类型都是UTC格式,所以在MongoDB里面看到的时间会比北京时间慢8小时。整个文档大小会限制在16m以内,因为这样可以防止创建难看的数据类型,且小文档可以提升性能,批量插入文档理想数字范围是10~200,大小不能超过16MB。 (1)索引能显著减少获取文档的所需工作量,具体的对比可以通过 .explain()方法进行对比 (2)解析查询时MongoDB通过最优计划选择一个索引进行查询,当没有最适合索引时,会先不同的使用各个索引进行查询,最终选出一个最优索引做查询 (3)如果有一个a-b的复合索引,那么仅针对a的索引是冗余的 (4)复合索引里的键的顺序是很重要的 (1)单键索引 (2)复合索引 (3)唯一性索引 (4)稀疏索引 如索引的字段会出现null的值,或是大量文档都不包含被索引的键。 如果数据集很大时,构建索引将会花费很长的时间,且会影响程序性能,可通过 当使用 mongorestore 时会重新构建索引。当曾经执行过大规模的删除时,可使用 对索引进行压缩,重建。 (1)查阅慢查询日志 (2)分析慢查询 注意新版本的MongoDB 的explain方法是需要参数的,不然只显示普通的信息。 本节同样主要简单呈现MongoDB副本集搭建的简易性,与副本集的强壮性,监控容易性 提供主从复制能力,热备能力,故障转移能力 实际上MongoDB对副本集的操作跟mysql主从操作是差不多的,先看一下mysql的主从数据流动过程 而MongoDB主要依赖的日志文件是oplog 写操作先被记录下来,添加到主节点的oplog里。与此同时,所有从结点复制oplog。首先,查看自己oplog里最后一条的时间戳;其次,查询主节点oplog里所有大于此时间戳的条目;最后,把那些条目添加到自己的oplog里并应用到自己的库里。从节点使用长轮询立即应用来自主结点oplog的新条目。 当遇到以下情况,从节点会停止复制 local数据库保存了所有副本集元素据和oplog日志 可以使用以下命令查看复制情况 每个副本集成员每秒钟ping一次其他所有成员,可以通过rs.status()看到节点上次的心跳检测时间戳和 健康 状况。 这个点没必要过多描述,但是有一个特殊场景,如果从节点和仲裁节点都被杀了,只剩下主节点,他会把自己降级成为从节点。 如果主节点的数据还没有写到从库,那么数据不能算提交,当该主节点变成从节点时,便会触发回滚,那些没写到从库的数据将会被删除,可以通过rollback子目录中的BSON文件恢复回滚的内容。 (1)使用单节点链接 只能链接到主节点,如果链接到从节点的话,会被拒绝写入操作,但是如果没有使用安全模式,因为mongo的fire and forget 特性,会把拒绝写入的异常给吃掉。 (2)使用副本集方式链接 能根据写入的情况自动进行故障转移,但是当副本集进行新的选举时,还是会出现故障,如果不使用安全模式,依旧会出现写不进去,但现实成功的情况。 分片是数据库切分的一个概念实现,这里也是简单总结为什么要使用分片以及分片的原理,操作。 当数据量过大,索引和工作数据集占用的内存就会越来越多,所以需要通过分片负载来解决这个问题 (1)分片组件 (2)分片的核心操作 分片一个集合:分片是根据一个属性的范围进行划分的,MongoDB使用所谓的分片键让每个文档在这些范围里找到自己的位置 块:是位于一个分片中的一段连续的分片键范围,可以理解为若干个块组成分片,分片组成MongoDB的全部数据 (3)拆分与迁移 块的拆分:初始化时只有一个块,达到最大块尺寸64MB或100000个文档就会触发块的拆分。把原来的范围一分为二,这样就有了两个块,每个块都有相同数量的文档。 迁移:当分片中的数据大小不一时会产生迁移的动作,比如分片A的数据比较多,会将分片A里面的一些块转移到分片B里面去。分片集群通过在分片中移动块来实现均衡,是由名为均衡器的软件进程管理的,任务是确保数据在各个分片中保持均匀分布,当集群中拥有块最多的分片与拥有块最少分片的块差大于8时,均衡器就会发起一次均衡处理。 启动两个副本集、三个配置服务器、一个mongos进程 配置分片 (1)分片查询类型 (2)索引 分片集合只允许在_id字段和分片键上添加唯一性索引,其他地方不行,因为这需要在分片间进行通信,实施起来很复杂。 当创建分片时,会根据分片键创建一个索引。 (1)分片键是不可修改的、分片键的选择非常重要 (2)低效的分片键 (3)理想的分片键 (1)部署拓扑 根据不同的数据中心划分 这里写图片描述 (2)最低要求 (3)配置的注意事项 需要估计集群大小,可使用以下命令对现有集合进行分片处理 (4)备份分片集群 备份分片时需要停止均衡器 (1)部署架构 使用64位机器、32位机器会制约mongodb的内存,使其最大值为1.5GB (2)cpu mongodb 只有当索引和工作集都可放入内存时,才会遇到CPU瓶颈,CPU在mongodb使用中的作用是用来检索数据,如果看到CPU使用饱和的情况,可以通过查询慢查询日志,排查是不是查询的问题导致的,如果是可以通过添加索引来解决问题 mongodb写入数据时会使用到CPU,但是mongodb写入时间一次只用到一个核,如果有频繁的写入行为,可以通过分片来解决这个问题 (3)内存 大内存是mongodb的保障,如果工作集大小超过内存,将会导致性能下降,因为这将会增加数据加载入内存的动作 (4)硬盘 mongodb默认每60s会与磁盘强制同步一次,称为后台刷新,会产生I/O操作。在重启时mongodb会将磁盘里面的数据加载至内存,高速磁盘将会减少同步的时间 (5)文件系统 使用ext4 和 xfs 文件系统 禁用最后访问时间 (6)文件描述符 linux 默认文件描述符是1024,需要大额度的提升这个额度 (7)时钟 mongodb各个节点服务器之间使用ntp服务器 (1)绑定IP 启动时使用 - -bind_ip 命令 (2)身份验证 启动时使用 - -auth 命令 (3)副本集身份认证 使用keyFile,注意keyFile文件的权限必须是600,不然会启动不起来 (1)拓扑结构 搭建副本集至少需要两个节点,其中仲裁结点不需要有自己的服务器 (2)Journaling日志 写数据时会先写入日志,而此时的数据也不是直接写入硬盘,而是写入内存 但是Journaling日志会消耗内存,所以可以在主库上面关闭,在从库上面启动 可以单独为Journaling日志使用一块固态硬盘 在插入时,可以通过驱动确保Journaling插入后再反馈,但是会非常影响性能。 logpath 选项指定日志存储地址 -vvvvv 选项(v越多,输出越详细) db.runCommand({logrotare:1}) 开启滚动日志 (1)serverStatus 这里写图片描述 (2)top (3)db.currentOp() 动态展示mongodb活动数据 占用当前mongodb监听端口往上1000号的端口 (1)mongodump 把数据库内容导出成BSON文件,而mongorestore能读取并还原这些文件 (2)mongorestore 把导出的BSON文件还原到数据库 (3)备份原始数据文件 可以这么做,但是,操作之前需要进行锁库处理 db.runCommand({fsync:1,lock:true}) db.$cmd.sys.unlock.findOne() 请求解锁操作,但是数据库不会立刻解锁,需要使用db.currentOp()验证。 (1)修复 mongd --repair 修复所有数据库 db.runCommand({repairDatabase:1}) 修复单个数据库 修复就是根据Jourling文件读取和重写所有数据文件并重建各个索引 (2)压紧 压紧,会重写数据文件,并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行,需要添加force参数 保证加写锁。 (1)监控磁盘状态 (2)为提升性能检查索引和查询 总的来说,扫描尽可能少的文档。 保证没有冗余的索引,冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作 (3)添加内存 dataSize 数据大小 和 indexSize 索引大小,如果两者的和大于内存,那么将会影响性能。 storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能,需要压缩。

[create_time]2022-07-08 08:41:21[/create_time]2022-07-21 22:31:11[finished_time]1[reply_count]0[alue_good]舒适还明净的海鸥i[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.47c7c989.PNHyyviQpkbkWYf_U9mbzQ.jpg?time=670&tieba_portrait_time=670[avatar]TA获得超过1.3万个赞[slogan]这个人很懒,什么都没留下![intro]44[view_count]

MongoDB 是什么?看完你就知道了

点击上方 蓝色字体 ,选择“置顶公众号” 优质文章,第一时间送达 链接 | blog.csdn.net/hayre/article/details/80628431 1.MongoDB是什么?用一句话总结 MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库。 (1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。 使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。 (2)易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。 (3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。 3.主要特性 (1)文档数据类型 SQL类型的数据库是正规化的,可以通过主键或者外键的约束保证数据的完整性与唯一性,所以SQL类型的数据库常用于对数据完整性较高的系统。MongoDB在这一方面是不如SQL类型的数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。 (2)即时查询能力 MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。 (3)复制能力 MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。 (4)速度与持久性 MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。 MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据操作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。 (5)数据扩展 MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。 MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。 MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。 mongodump和mongorestore,备份和恢复数据库的标准工具。输出BSON格式,迁移数据库。 mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据需要支持多格式时有用。mongoimport还能用与大数据集的初始导入,但是在导入前顺便还要注意一下,为了能充分利用好mongoDB通常需要对数据模型做一些调整。 mongosniff,网络嗅探工具,用来观察发送到数据库的操作。基本就是把网络上传输的BSON转换为易于人们阅读的shell语句。 因此,可以总结得到,MongoDB结合键值存储和关系数据库的最好特性。因为简单,所以数据极快,而且相对容易伸缩还提供复杂查询机制的数据库。MongoDB需要跑在64位的服务器上面,且最好单独部署,因为是数据库,所以也需要对其进行热备、冷备处理。 因为本篇文章不是API手册,所有这里对shell的使用也是基础的介绍什么功能可以用什么语句,主要是为了展示使用MongoDB shell的方便性,如果需要知道具体的MongoDB shell语法可以查阅官方文档。 创建数据库并不是必须的操作,数据库与集合只有在第一次插入文档时才会被创建,与对数据的动态处理方式是一致的。简化并加速开发过程,而且有利于动态分配命名空间。如果担心数据库或集合被意外创建,可以开启严格模式。 以上的命令只是简单实例,假设如果你之前没有学习过任何数据库语法,同时开始学sql查询语法和MongoDB 查询语法,你会发现哪一个更简单呢?如果你使用的是java驱动去操作MongoDB,你会发现任何的查询都像Hibernate提供出来的查询方式一样,只要构建好一个查询条件对象,便能轻松查询(接下来会给出示例),博主之前熟悉ES6,所以入手MongoDB js shell完成没问题,也正因为这样简洁,完善的查询机制,深深的爱上了MongoDB。 使用java驱动链接MongoDB是一件非常简单的事情,简单的引用,简单的做增删改查。在使用完java驱动后我才发现spring 对MongoDB 的封装还不如官方自身提供出来的东西好用,下面简单的展示一下使用。 这里只举例了简单的链接与简单的MongoDB操作,可见其操作的容易性。使用驱动时是基于TCP套接字与MongoDB进行通信的,如果查询结果较多,恰好无法全部放进第一服务器中,将会向服务器发送一个getmore指令获取下一批查询结果。 插入数据到服务器时间,不会等待服务器的响应,驱动会假设写入是成功的,实际是使用客户端生成对象id,但是该行为可以通过配置配置,可以通过安全模式开启,安全模式可以校验服务器端插入的错误。 要清楚了解MongoDB的基本数据单元。在关系型数据库中有带列和行的数据表。而MongoDB数据的基本单元是BSON文档,在键值中有指向不定类型值的键,MongoDB拥有即时查询,但不支持联结操作,简单的键值存储只能根据单个键来获取值,不支持事务,但支持多种原子更新操作。 如读写比是怎样的,需要何种查询,数据是如何更新的,会不会存在什么并发问题,数据结构化的程度是要求高还是低。系统本身的需求决定mysql还是MongoDB。 在关于schema 的设计中要注意一些原则,比如: 数据库是集合的逻辑与物理分组,MongoDB没有提供创建数据库的语法,只有在插入集合时,数据库才开始建立。创建数据库后会在磁盘分配一组数据文件,所有集合、索引和数据库的其他元数据都保存在这些文件中,查阅数据库使用磁盘状态可通过。 集合是结构上或概念上相似得文档的容器,集合的名称可以包含数字、字母或 . 符号,但必须以字母或数字开头,完全。 限定集合名不能超过128个字符,实际上 . 符号在集合中很有用,能提供某种虚拟命名空间,这是一种组织上的原则,和其他集合是一视同仁的。在集合中可以使用。 其次是键值,在MongoDB里面所有的字符串都是UTF-8类型。数字类型包括double、int、long。日期类型都是UTC格式,所以在MongoDB里面看到的时间会比北京时间慢8小时。整个文档大小会限制在16m以内,因为这样可以防止创建难看的数据类型,且小文档可以提升性能,批量插入文档理想数字范围是10~200,大小不能超过16MB。 (2)解析查询时MongoDB通过最优计划选择一个索引进行查询,当没有最适合索引时,会先不同的使用各个索引进行查询,最终选出一个最优索引做查询 (3)如果有一个a-b的复合索引,那么仅针对a的索引是冗余的 (4)复合索引里的键的顺序是很重要的 (2)复合索引 (3)唯一性索引 (4)稀疏索引 如索引的字段会出现的值,或是大量文档都不包含被索引的键。 如果数据集很大时,构建索引将会花费很长的时间,且会影响程序性能,可通过 当使用 mongorestore 时会重新构建索引。当曾经执行过大规模的删除时,可使用 对索引进行压缩,重建。 (1)查阅慢查询日志 (2)分析慢查询 注意新版本的MongoDB 的explain方法是需要参数的,不然只显示普通的信息。 本节同样主要简单呈现MongoDB副本集搭建的简易性,与副本集的强壮性,监控容易性 提供主从复制能力,热备能力,故障转移能力 实际上MongoDB对副本集的操作跟mysql主从操作是差不多的,先看一下mysql的主从数据流动过程 而MongoDB主要依赖的日志文件是oplog 写操作先被记录下来,添加到主节点的oplog里。与此同时,所有从结点复制oplog。首先,查看自己oplog里最后一条的时间戳;其次,查询主节点oplog里所有大于此时间戳的条目;最后,把那些条目添加到自己的oplog里并应用到自己的库里。从节点使用长轮询立即应用来自主结点oplog的新条目。 当遇到以下情况,从节点会停止复制 local数据库保存了所有副本集元素据和oplog日志 可以使用以下命令查看复制情况 每个副本集成员每秒钟ping一次其他所有成员,可以通过rs.status看到节点上次的心跳检测时间戳和 健康 状况。 这个点没必要过多描述,但是有一个特殊场景,如果从节点和仲裁节点都被杀了,只剩下主节点,他会把自己降级成为从节点。 如果主节点的数据还没有写到从库,那么数据不能算提交,当该主节点变成从节点时,便会触发回滚,那些没写到从库的数据将会被删除,可以通过rollback子目录中的BSON文件恢复回滚的内容。 只能链接到主节点,如果链接到从节点的话,会被拒绝写入操作,但是如果没有使用安全模式,因为mongo的fire and forget 特性,会把拒绝写入的异常给吃掉。 (2)使用副本集方式链接 能根据写入的情况自动进行故障转移,但是当副本集进行新的选举时,还是会出现故障,如果不使用安全模式,依旧会出现写不进去,但现实成功的情况。 分片是数据库切分的一个概念实现,这里也是简单总结为什么要使用分片以及分片的原理,操作。 当数据量过大,索引和工作数据集占用的内存就会越来越多,所以需要通过分片负载来解决这个问题 (2)分片的核心操作 分片一个集合:分片是根据一个属性的范围进行划分的,MongoDB使用所谓的分片键让每个文档在这些范围里找到自己的位置 块:是位于一个分片中的一段连续的分片键范围,可以理解为若干个块组成分片,分片组成MongoDB的全部数据 (3)拆分与迁移 块的拆分:初始化时只有一个块,达到最大块尺寸64MB或100000个文档就会触发块的拆分。把原来的范围一分为二,这样就有了两个块,每个块都有相同数量的文档。 迁移:当分片中的数据大小不一时会产生迁移的动作,比如分片A的数据比较多,会将分片A里面的一些块转移到分片B里面去。分片集群通过在分片中移动块来实现均衡,是由名为均衡器的软件进程管理的,任务是确保数据在各个分片中保持均匀分布,当集群中拥有块最多的分片与拥有块最少分片的块差大于8时,均衡器就会发起一次均衡处理。 启动两个副本集、三个配置服务器、一个mongos进程 配置分片 (2)索引 分片集合只允许在_id字段和分片键上添加唯一性索引,其他地方不行,因为这需要在分片间进行通信,实施起来很复杂。 当创建分片时,会根据分片键创建一个索引。 (2)低效的分片键 (3)理想的分片键 根据不同的数据中心划分 (2)最低要求 (3)配置的注意事项 需要估计集群大小,可使用以下命令对现有集合进行分片处理 (4)备份分片集群 备份分片时需要停止均衡器 使用64位机器、32位机器会制约mongodb的内存,使其最大值为1.5GB (2)cpu mongodb 只有当索引和工作集都可放入内存时,才会遇到CPU瓶颈,CPU在mongodb使用中的作用是用来检索数据,如果看到CPU使用饱和的情况,可以通过查询慢查询日志,排查是不是查询的问题导致的,如果是可以通过添加索引来解决问题 mongodb写入数据时会使用到CPU,但是mongodb写入时间一次只用到一个核,如果有频繁的写入行为,可以通过分片来解决这个问题 (3)内存 大内存是mongodb的保障,如果工作集大小超过内存,将会导致性能下降,因为这将会增加数据加载入内存的动作 (4)硬盘 mongodb默认每60s会与磁盘强制同步一次,称为后台刷新,会产生I/O操作。在重启时mongodb会将磁盘里面的数据加载至内存,高速磁盘将会减少同步的时间 (5)文件系统 使用ext4 和 xfs 文件系统 禁用最后访问时间 (6)文件描述符 linux 默认文件描述符是1024,需要大额度的提升这个额度 (7)时钟 mongodb各个节点服务器之间使用ntp服务器 启动时使用 - -bind_ip 命令 (2)身份验证 启动时使用 - -auth 命令 (3)副本集身份认证 使用keyFile,注意keyFile文件的权限必须是600,不然会启动不起来 搭建副本集至少需要两个节点,其中仲裁结点不需要有自己的服务器 (2)Journaling日志 写数据时会先写入日志,而此时的数据也不是直接写入硬盘,而是写入内存 但是Journaling日志会消耗内存,所以可以在主库上面关闭,在从库上面启动 可以单独为Journaling日志使用一块固态硬盘 在插入时,可以通过驱动确保Journaling插入后再反馈,但是会非常影响性能。 -vvvvv 选项(v越多,输出越详细) db.runCommand({logrotare:1}) 开启滚动日志 (2)top (3)db.currentOp 动态展示mongodb活动数据 占用当前mongodb监听端口往上1000号的端口 把数据库内容导出成BSON文件,而mongorestore能读取并还原这些文件 (2)mongorestore 把导出的BSON文件还原到数据库 (3)备份原始数据文件 可以这么做,但是,操作之前需要进行锁库处理 db.runCommand({fsync:1,lock:true}) db.$cmd.sys.unlock.findOne 请求解锁操作,但是数据库不会立刻解锁,需要使用 db.currentOp 验证。 db.runCommand({repairDatabase:1}) 修复单个数据库 修复就是根据Jourling文件读取和重写所有数据文件并重建各个索引 (2)压紧 压紧,会重写数据文件,并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行,需要添加force参数 保证加写锁。 (2)为提升性能检查索引和查询 总的来说,扫描尽可能少的文档。 保证没有冗余的索引,冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作 (3)添加内存 dataSize 数据大小 和 indexSize 索引大小,如果两者的和大于内存,那么将会影响性能。 storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能,需要压缩。

[create_time]2022-08-19 15:44:50[/create_time]2022-09-01 01:46:31[finished_time]1[reply_count]0[alue_good]濒危物种1718[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.a10b6192.d3KLU23Bel2Of-Z1oa_bnA.jpg?time=4585&tieba_portrait_time=4585[avatar]TA获得超过1万个赞[slogan]这个人很懒,什么都没留下![intro]56[view_count]

如何安装,配置MongoDB?

1、创建数据库路径(data目录)、日志路径(logs目录)和日志文件(mongo.log文件),完成后如下图所示2、创建配置文件mongo.conf。3、启动MongoDB,前两步操作完成后,就可以启动MongoDB了,首先进入D:\Program Files\MongoDB\Server\3.2\bin(依安装目录而定)目录下,启动命令如下:mongod --config "D:\Program Files\MongoDB\Server\3.2\mongo.conf" 4、命令执行后,浏览器中输入http://127.0.0.1:27017看到如下界面即说明启动成功5、创建并启动MongoDB服务,如果每次都按照步骤三那样操作,岂不是相当麻烦,按照如下命令来创建并启动MongoDB服务,就可以通过windows服务来管理MongoDB的启动和关闭了。首先进入D:\Program Files\MongoDB\Server\3.2\bin(依安装目录而定)目录下,启动命令如下:mongod --config "D:\Program Files\MongoDB\Server\3.2\mongo.conf" --install --serviceName "MongoDB" net start MongoDB。Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。

[create_time]2022-11-16 15:54:14[/create_time]2022-12-01 15:54:14[finished_time]1[reply_count]0[alue_good]信必鑫服务平台[uname]https://himg.bdimg.com/sys/portrait/item/wise.1.3b707489.Pzvh_phCV7cMa9W2PNEYAQ.jpg?time=66&tieba_portrait_time=66[avatar]TA获得超过5.3万个赞[slogan]这个人很懒,什么都没留下![intro]26[view_count]

上一篇:超级网剧

下一篇:非诚勿扰 哈佛