MongoDB 数据库

时间:2021年10月19日 来源:

MongoDB是什么?为什么要使用MongoDB?MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库。1、MongoDB提出的是文档、会集的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库较大增强。2、易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。3、数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。MongoDB把尽可能多的内存用作缓存cache,视图为每次查询自动选择正确的索引。MongoDB 数据库

schema设计原则:1.需要关注MongoDB的自身的特性。要清楚了解MongoDB的基本数据单元。在关系型数据库中有带列和行的数据表。而MongoDB数据的基本单元是BSON文档,在键值中有指向不定类型值的键,MongoDB拥有即时查询,但不支持联结操作,简单的键值存储只能根据单个键来获取值,不支持事务,但支持多种原子更新操作。2.需要关注系统本身的读写特性。如读写比是怎样的,需要何种查询,数据是如何更新的,会不会存在什么并发问题,数据结构化的程度是要求高还是低。系统本身的需求决定mysql还是MongoDB。MongoDB 数据库MongoDB适用的场景:高伸缩性的场景。

MongoDB的拆分与迁移:块的拆分:初始化时只有一个块,达到较大块尺寸64MB或100000个文档就会触发块的拆分。把原来的范围一分为二,这样就有了两个块,每个块都有相同数量的文档。迁移:当分片中的数据大小不一时会产生迁移的动作,比如分片A的数据比较多,会将分片A里面的一些块转移到分片B里面去。分片集群通过在分片中移动块来实现均衡,是由名为均衡器的软件进程管理的,任务是确保数据在各个分片中保持均匀分布,当集群中拥有块较多的分片与拥有块较少分片的块差大于8时,均衡器就会发起一次均衡处理。

启动MongoDB服务:在前面的教程中,我们已经讨论了如何启动MongoDB服务,你只需要在MongoDB安装目录的bin目录下执行'mongod'即可。执行启动操作后,mongodb在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。你可以使用MongoDBshell来连接MongoDB服务器。你也可以使用PHP来连接MongoDB。我们会使用MongoDBshell来连接Mongodb服务,之后的我们将会介绍如何通过php来连接MongoDB服务。MongoDB除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group等。

MongoDB的主要特点:1、MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。2、你可以在MongoDB记录中设置任何属性的索引(如:FirstName="Sameer",Address="8GandhiRoad")来实现更快的排序。3、你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。4、如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。6、MongoDb使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。MongoDB区分类型和大小写。mongo架构

Mongo支持丰富的查询表达式。MongoDB 数据库

MongoDB中心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理较好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。MongoDB的主要客户端是可以交互的jsshell通过mongo启动,使用jsshell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。MongoDB 数据库

信息来源于互联网 本站不为信息真实性负责