MongoDB(1): 安装与配置及简介

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 MongoDB,通用型 2核4GB
简介:

一.简介

  MongoDB一种非关系型数据库(NoSql),是一种强大、灵活、可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量、高并发、弱事务的互联网应用,MongoDB可以应对自如,MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,还对MapReduce式聚合的支持,以及对地理空间索引的支持。


1.1、为什么需要NoSQL

简单的说,就是为了解决在web2.0时代,出现的三高要求:

 1:对数据库高并发读写的需求

 2:对海量数据的高效率存储和访问的需求

 3:对数据库的高可扩展性和高可用性的需求

而RDB(关系型数据库)里面的一些特性,在web2.0里面往往变得不那么重要,比如:

 1:数据库事务一致性

 2:数据库的实时读写

 3:复杂的SQL查询,特别是多表关联查询

1.2、CAP定理

CAP定理, 又被称作布鲁尔定理(Eric Brewer)它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

 1:强一致性(Consistency):系统在执行过某项操作后仍然处于一致的,在分布式系统中,更新操作执行成功后所有的用户都应该读取到最新的值,这样的系统被认为具有强一致性

 2:可用性(Availability):每一个操作总是能够在一定的时间内返回结果

 3:分区容错性(Partition tolerance):系统在存在网络分区的情况下仍然可以接受请求并处理,这里网络分区是指由于某种原因网络被分成若干个孤立区域,而区域之间互不相通


根据CAP原理将数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

 1:CA:单点集群,满足一致性,可用性,通常在可扩展性上不太强大,比如RDB

 2:CP:满足一致性和分区容错性,通常性能不是特别高,如分布式数据库

 3:AP:满足可用性和分区容错性,通常可能对一致性要求低一些,如大多数的NoSQL


BASE原理(Basically Available,Soft-state,Eventual consistency )

 1:基本可用(Basically Available):系统能够基本运行、一直提供服务。

 2:软状态(Soft-state):系统不要求一直保持强一致状态。

 3:最终一致性(Eventual consistency):系统需要在某一时刻后达到一致性要求

1.3、NoSQL的优缺点

优点

 1、扩展简单方便,尤其是水平横向扩展

  (纵向扩展是指用更强的机器;横向扩展是指把数据分散到多个机器)

 2、读写快速高效,多数都会映射到内存操作

 3、成本低廉,用普通机器,分布式集群即可

 4、数据模型灵活,没有固定的数据模型

NoSQL的缺点

 不提供对SQL的支持

 现有产品还不够成熟稳定,功能也还有待加强

1.4、mongodb的特点

高性能、易于使用、易于扩展、功能丰富

面向集合存储,模式自由

支持动态查询,支持javascript表达式查询

支持完全索引,包含内部对象

支持复制和故障恢复

支持副本集复制和自动故障恢复

自动处理分片

使用高效的二进制数据储存,包括大型对象

文件存储格式为BSON(一种JSON的扩展)

二.基本概念

数据库

 MongoDB的一个实例可以拥有一个或多个相互独立的数据库,每个数据库都有自己的集合


文档(document):是MongoDB中数据的基本单元

非常类似于关系型数据库系统中的行(但是比行要复杂的多)

注意:

每一个文档都有一个特殊的键_id,它在文档所处的集合中是唯一的,相当于关

系数据库中的表的主键

 

集合(collection:就是一组文档

类似于关系型数据库系统中的表


_id

  每个文档都有个特殊的“_id”,在文档所属集合中是唯一的

JavaScript shell

  MongoDB自带了一个功能强大的JavaScript Shell,可以用于管理或操作MongoDB


MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。

MongoDB自带简介但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大

注意:MongoDB中没有主外键的概念

三.规则与数据类型

3.1、数据库名称定义规则

1、不能是空串

2、不得含有/、\、?、$、空格、空字符等等,基本只能使用ASCII中的字母和数字

3、区分大小写,建议全部小写

4、最多为64字节

5、不得使用保留的数据库名,比如:admin,local,config

注意:数据库最终会成为文件,数据库名就是文件的名称

3.2、集合名称定义规则

1、不能是空串

2、不能包含\0字符(空字符),这个字符表示集合名的结束,也不能包含”$”

3、不能以”system.”开头,这是为系统集合保留的前缀

3.3、文档的键的定义规则

1、不能包含\0字符(空字符),这个字符表示键的结束

2、“.”和“$”是被保留的,只能在特定环境下用

3、区分类型,同时也区分大小写

4、键不能重复

注意:文档的键值对是有顺序的,相同的键值对如果有不同顺序的话,也是不同的文档

3.4、数据类型

数据类型                描述                                     举例

null              表示空值或者未定义的对象                              {"x":null}

布尔值            真或者假:true或者false                               {"x":true}

32位整数            shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberInt类,比如:     {“x”:NumberInt(“3”)}

64位整数            shell不支持该类型,默认会转换成64位浮点数,也可以使用NumberLong类,比如:     {“x”:NumberLong(“3”)}

64位浮点数          shell中的数字就是这一种类型                             {"x":3.14,"y":3}

字符串            UTF-8字符串                                     {"foo":"bar"}

符号             shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串

对象id             文档的12字节的唯一id                               {"id": ObjectId()}

日期             从标准纪元开始的毫秒数                               {"date":new Date()}

正则表达式          文档中可以包含正则表达式,遵循JavaScript的语法                  {"foo":/foobar/i}

代码             文档中可以包含JavaScript代码                            {"x":function() {}}

未定义             undefined                                    {"x":undefined}

数组             值的集合或者列表                                 {"arr": ["a","b"]}

内嵌文档           文档可以作为文档中某个key的value                          {"x":{"foo":"bar"}}

本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1873355如需转载请自行联系原作者


我爱大金子

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
NoSQL 网络协议 Unix
第6期 MongoDB配置启动方式
第6期 MongoDB配置启动方式
283 0
|
1月前
|
NoSQL MongoDB Docker
docker安装MongoDB
docker安装MongoDB
21 0
|
1月前
|
存储 缓存 NoSQL
|
2月前
|
运维 NoSQL Linux
MongoDB详解(六)——MongoDB主从同步配置
MongoDB详解(六)——MongoDB主从同步配置
48 5
|
2月前
|
NoSQL 关系型数据库 MySQL
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
不同系统下进行MySQL安装、MongoDB安装、Redis安装【2月更文挑战第5天】
441 5
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
|
3月前
|
存储 JSON NoSQL
【MongoDB】<文档型数据库>Windows&Liunx安装MongoDB(无错完整)
【1月更文挑战第26天】【MongoDB】<文档型数据库>Windows&Liunx安装MongoDB(无错完整)
|
3月前
|
存储 NoSQL MongoDB
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 需要一个 MongoDB 驱动程序来访问 MongoDB 数据库。我将使用 MongoDB 驱动程序 PyMongo 建议您使用 PIP 来安装 PyMongo。PIP 很可能已经安装在您的 Python 环境中。将命令行导航到 PIP 的位置,然后键入以下内容:
93 1
|
3月前
|
监控 NoSQL MongoDB
第5期 MongoDB配置用户名密码认证登录
第5期 MongoDB配置用户名密码认证登录
518 0
|
3月前
|
NoSQL 安全 Linux
百度搜索:蓝易云【CentOS7安装MongoDB教程】
这些是在CentOS 7上安装MongoDB的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
132 0
|
4月前
|
NoSQL MongoDB 数据库
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
135 0