MongoDB基本介绍与安装(1)
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
1 什么是NoSQL
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
2 关系型数据库 PK 非关系型数据库
| 关系型数据库 | NoSQL数据库 |
|---|---|
| 高度组织化结构化数据 | 代表着不仅仅是SQL |
| 结构化查询语言(SQL) | 没有声明性查询语言 |
| 数据和关系都存储在单独的表中 | 没有预定义的模式 |
| 数据操作语言,数据定义语言 | 键-值对存储,列存储,文档存储,图形数据库 |
| 严格的一致性 | 最终一致性,而非ACID属性 |
| 基础事务 | 非结构化和不可预知的数据 |
| CAP定理 | |
| 高性能,高可用性和可伸缩性 |
3 NoSQL数据库分类
| 类型 | 典型代表 | 特点 |
|---|---|---|
| 列存储 | Hbase Cassandra Hypertable |
顾名思义,是按照列存储数据的。最大的特点是方便存储结构化和半结构化的数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势 |
| 文档存储 | MongoDB CounchDB |
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。 |
| Key-value存储 | Tokyo Cabinet/Tyrant Berkelery DB Memcache Redis |
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
| 图存储 | Neo4J FlockDB |
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
| 对象存储 | Db4o Versant |
通过类似面向对象语言的语法操作数据库,通过对象的方式存储数据。 |
| XML数据库 | Berkeley DB XML BaseX |
高效的存储XML数据,并存储XML的内部查询语法,比如XQuery,Xpath。 |
4 CAP理论
在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
1、一致性(Consistency) (所有节点在同一时间具有相同的数据)
2、可用性(Availability) (保证每个请求不管成功或者失败都有响应)
3、分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不影响系统的继续运行)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容错性的系统,通常性能不是特别高。
AP - 满足可用性,分区容错性的系统,通常可能对一致性要求低一些。
5 MongoDB的数据结构与关系型数据库数据结构对比
| 关系型数据库术语/概念 | MongoDB术语/概念 | 解释/说明 |
|---|---|---|
| Database | Database | 数据库 |
| Table | Collection | 数据库表/集合 |
| Row | Document | 数据记录行/文档 |
| Column | Field | 数据列/数据字段 |
| Index | Index | 索引 |
| Table joins | 表关联/MongoDB不支持 | |
| Primary Key | Object ID | 主键 / MongoDB自动将 _ id 设置为主键 |
6 MongoDB中的数据类型
| 数据类型 | 说明 | 解释 | 举例 |
|---|---|---|---|
| Null | 空值 | 表示空值或者未定义的对象 | {“x”:null} |
| Boolean | 布尔值 | 真或者假:true或者false | {“x”:true} |
| Integer | 整数 | 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。 | |
| Double | 浮点数 | 双精度浮点值。 | {“x”:3.14,”y”:3} |
| String | 字符串 | UTF-8字符串 | |
| Symbol | 符号 | 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。 | |
| ObjectID | 对象ID | 对象 ID。用于创建文档的 ID。 | {“id”: ObjectId()} |
| Date | 日期 | 日期时间。用 UNIX 时间格式来存储当前日期或时间。 | {“date”:new Date()} |
| Timestamp | 时间戳 从标准纪元开始的毫秒数 | ||
| Regular | 正则表达式 | 文档中可以包含正则表达式,遵循JavaScript的语法 | {“foo”:/testdb/i} |
| Code | 代码 | 可以包含JavaScript代码 | {“x”:function() {}} |
| Undefined | 未定义 | 已废弃 | |
| Array | 数组 | 值的集合或者列表 | {“arr”: [“a”,”b”]} |
| Binary | Data | 二进制 | 用于存储二进制数据。 |
| Object | 内嵌文档 | 文档可以作为文档中某个key的value | {“x”:{“foo”:”bar”}} |
| Min/Max keys | 最小/大值 | 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。 |
7 MongoDB的应用场景和不适用场景
7.1 适用场景
对于MongoDB实际应用来讲,是否使用MongoDB需要根据项目的特定特点进行一一甄别,这就要求我们对MongoDB适用和不适用的场景有一定的了解。
根据MongoDB官网的说明,MongoDB的适用场景如下:
1)网站实时数据:MongoDB非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2)数据缓存:由于性能很高,MongoDB也适合作为信息基础设施的缓存层。在系统重启之后,由MongoDB搭建的持久化缓存层可以避免下层的数据源过载。
3)大尺寸、低价值数据存储:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
4)高伸缩性场景:MongoDB非常适合由数十或数百台服务器组成的数据库。MongoDB的路线图中已经包含对MapReduce引擎的内置支持。
5)对象或JSON数据存储:MongoDB的BSON数据格式非常适合文档化格式的存储及查询。
7.2 不适用场景
了解了MongoDB适用场景之后,还需要了解哪些场景下不适合使用MongoDB,具体如下:
1)高度事务性系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
2)传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
3)需要复杂SQL查询的问题。
相信通过上面的说明,你已经大致了解了MongoDB的使用规则,需要说明一点的是,MongoDB不仅仅是数据库,更多的使用是将MongoDB作为一个数据库中间件在实际应用中合理划分使用细节,这一点对于MongoDB应用来讲至关重要!
8 安装MongoDB数据库(Windows和Linux环境)
下载:https://www.mongodb.com/download-center?jmp=nav#community

8.1 安装与启动
1.在D盘创建安装目录,D:\MongoDB,将解压后的文件拷入新建的文件。
2.在D盘创建一个目录,D:\MongoDB\Data,用于存放MongoDB的数据。
3.执行安装,使用命令行,进入MongDb的安装目录,执行安装命令,并指明存放MongoDB的路径。

注意,如果这是你的目录中有空格,会报Invalid command错误,将dbpath后面的值加上双引号即可mongod.exe -dbpath=”D:\MongoDB\Data”。
最后一行显示我们的MongoDB已经连接到27017,它是默认的数据库的端口;它建立完数据库之后,会在我们的MongoDbData文件夹下,生成一些文件夹和文件:在journal文件夹中会存储相应的数据文件,NoSQL的MongoDB,它以文件的形式,也就是说被二进制码转换过的json形式来存储所有的数据模型。
8.2 环境变量配置


8.3 启动数据库

启动MongoDB数据库,需要根据自己配置mongodb.bat文件,在D:\MongoDB\Server\3.4\bin中创建一个mongodb.bat文件,然后我们来编写这个可执行文件如下:
mongod --dbpath=D:\MongoDB\Data
运行mongodb.bat文件,MongoDB便启动成功!
9 安装Studio3T客户端


本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
原创不易,坚持很酷,都看到这里了,小伙伴记得点赞、收藏、在看,一键三连加关注!如果你觉得内容太干,可以分享转发给朋友滋润滋润!
MongoDB基本介绍与安装(1)的更多相关文章
- 二十三、MongoDb 数据库介绍、安装、启动和连接(非关系型数据库)
1.数据库和文件的主要区别 1. 数据库有数据库表.行和列的概念,让我们存储操作数据更方便2. 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功 ...
- MongoDB入门(介绍、安装、增删改查)
文章作者公众号bigsai,已收录在回车课堂,如有帮助还请不吝啬点个赞赞支持一下! 课程导学 大家好我是bigsai,我们都学过数据库,但你可能更熟悉关系(型)数据库例如MySQL,SQL SERVE ...
- MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用
1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...
- mongoDB简单介绍及安装
近期一段时间对mongoDB进行了简单的学习,从它是什么?干什么?怎么用?优缺点?这一系列的疑问到如今可以简单运用.我想须要对其进行简单的总结和概述.那么这一篇就从最基础的開始,对其主要的概念和安装来 ...
- MongoDB的介绍安装与基本使用
MongoDB的介绍安装 关于MongoDB的介绍于安装可参考:https://www.cnblogs.com/DragonFire/p/9135630.html 除了官网下载,可以下载他人下载好分享 ...
- windows下mongodb基础玩法系列一介绍与安装
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- mongodb 3.0下载安装、配置及mongodb最新特性、基本命令教程详细介绍
mongoDB简介(本文由www.169it.com搜集整理) MongoDB是一个高性能,开源,无模式的文档型数据库,是目前在IT行业非常流行的一种非关系型数据库(NoSql).它在许多场景下可用于 ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)
上一篇: MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(i) 有段时间没跟大家去分享和探讨过一些问题,分享过一些经验了(失败过的,痛苦过的才最有看点啊,不知道各位同仁们怎么去看这个 ...
随机推荐
- Scala(四)【集合基础入门】
目录 一.Array 二. List 三.Set 四.Tuple 五.Map 一.Array package com.bigdata.scala.day01 /** * @description: 不 ...
- 【php安全】 register_argc_argv 造成的漏洞分析
对register_argc_argv的分析 简介 使用 cli模式下,不论是否开始register_argc_argv,都可以获取命令行或者说外部参数 web模式下,只有开启了register_ar ...
- windows下的_vimrc
折腾了一天 在https://keelii.github.io/2016/06/13/awsome-window-vimrc/的基础上进行了一些改动 " ------------------ ...
- Oracle之DBMS_LOCK包用法详解
概述与背景 某些并发程序,在高并发的情况下,必须控制好并发请求的运行时间和次序,来保证处理数据的正确性和完整性.对于并发请求的并发控制,EBS系统可以通过Concurrent Program定义界面的 ...
- Java事务与JTA
一.什么是JAVA事务 通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令.更简答的说就是:要么 ...
- Linux学习 - 流程控制
一.if语句 1 单分支if条件语句 (1) if [ 条件判断式 ];then 程序 fi (2) if [ 条件判断式 ] then 程序 fi 例:检测根分区的使用量 2 双分支if条件语 ...
- 石墨文档Websocket百万长连接技术实践
引言 在石墨文档的部分业务中,例如文档分享.评论.幻灯片演示和文档表格跟随等场景,涉及到多客户端数据同步和服务端批量数据推送的需求,一般的 HTTP 协议无法满足服务端主动 Push 数据的场景,因此 ...
- IIS 发布 WebService 连接DB2数据库报错如下图
环境描述: 系统环境: Windows Server 2012 R2 IIS版本:IIS 6.2 C#环境:.NET Framework 4 DB2版本:9.7.500.702 ...
- HTTPS及流程简析
[序] 在我们在浏览某些网站的时候,有时候浏览器提示需要安装根证书,可是为什么浏览器会提示呢?估计一部分人想也没想就直接安装了,不求甚解不好吗? 那么什么是根证书呢?在大概的囫囵吞枣式的百度之后知道了 ...
- 腾讯新闻基于 Flink PipeLine 模式的实践
摘要 :随着社会消费模式以及经济形态的发展变化,将催生新的商业模式.腾讯新闻作为一款集游戏.教育.电商等一体的新闻资讯平台.服务亿万用户,业务应用多.数据量大.加之业务增长.场景更加复杂,业务对实时 ...