MongoDB自学笔记2---1.2 初识MongoDB
1.2.1MongoDB简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。其最新的版本的MongoDB2.4,添加了对地理位置的索引搜索、全文检索等功能。
同时MongoDB是一个面向集合的、模式自由的文档型数据库。
文档是mongodb中的最核心的概念,是其核心单元,我们可以将文档类比成关系型数据库中的每一行数据。多个键及其关联的值有序的放置在一起就是文档。
面向集合指的是MongoDB中没有表的概念。将关系型数据库中的表的概念在MongoDB中使用集合实现。集合就是一组文档的组合。
模式自由指的是MongoDB集合中的每个文档的模式是没有约束的,也就是说MongoDB一个集合中存储的文档的结构可以是不同的。例如下面的两个文档可以存储在同一个集合中。
{_id:1,name:”xiangyue”}
{_id:2,course:”math”,press:”hebei”}
1.2.2为什么选择MongoDB
丰富的数据模型
MongoDB放弃了关系型数据库中“行”的概念,将其转换为“文档”模型。利用文档模型我们可以实现文档的嵌套,这样我们可以使用一个文档来表示更加复杂、具有层次结构的数据。另外MongoDB中的文档是无模式的,所以这个对于我们以后为数据库中添加、删除字段等修改数据库模式的操作比较方便。
容易扩展
随着web2.0的兴起,数据量开始飞速的增长,原来一台服务器能够存储所有的数据,现在一台服务器已经不能满足要求了,这种情况下我们可以更换更大的硬盘或者更高配置的服务器,但是这样的成本比较高。所以很多人选择分布式存储,但是对于关系型数据库来说,实现分布式比较麻烦,而对于MongoDB来说实现分布式是比较容易的。MongoDB在设计之初就完全考虑到了分布式的应用,所以在MongoDB中可以使用主从复制、副本集很容易完成扩展。
功能强大且管理简单
MongoDB支持索引、javascript存储、聚合Map-Reduce、固定集合、文件存储等功能。MongoDB尽量让服务器自治来简化服务器的管理工作。比如在使用分布式的时候,主服务器挂了,会自动切换到备份服务器上。
最类似SQL数据库
MongoDB虽然抛弃了“行”的概念,但是“文档”的概念也可以类比为行,这样对于一些从关系型数据库转过来的人也比较容易理解。另外它提供了丰富的查询功能,可以简化我们很多的操作。
大公司的支持
对于我们使用一个产品,有时候就会担心是否有大公司的支持。对于有大公司支持的产品我们使用起来就比较放心,否则我们就会考虑许多问题,畏首畏尾。MongoDB是有10gen公司提供支持。
MongoDB自学笔记2---1.2 初识MongoDB的更多相关文章
- MongoDB学习笔记(1):MongoDB的安装和说明
MongoDB学习笔记(1):MongoDB的安装和说明 快速开始 下载地址 官网下载: https://www.mongodb.com/download-center?jmp=nav#communi ...
- MongoDB自学笔记1----1.1 NoSQL是什么?
第一章 走进MongoDB 1.1NoSQL是什么? 1.1.1NoSQL简介 对于不了解NoSQL的人都会认为NoSQL为No SQL,即不是SQL.但是这种理解是错误的, ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- 孤荷凌寒自学python第五十五天初识MongoDb数据库
孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
- 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1
孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...
- MongoDB【第一篇】MongodDB初识
NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...
- 初识MongoDB
1. 初识 接触MongoDB,是由于最近在工作中用到了MongoDB做数据存储.之前也听说过这个NoSQL数据库,但是一直没有尝试去使用它做开发.这次趁着这个机会,想好好学习下这个NoSQL数据库. ...
随机推荐
- C++中复制构造函数与重载赋值操作符
我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数.析构函数.复制构造函数和重载赋值操作:即使在你没有明确定义的情况下,编译器也会给你生成这样的四个函数.例如以下类: class CTe ...
- day04
1.divmod(x,y)获取一个整数x除以y的商和余数 ret = divmod(, ) print(ret) 2.获取随机验证码 import random l = [] , ): t = ran ...
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
通过CAShapeLayer和贝塞尔曲线搭配的方法,创建的简单的圆形进度条的教程先简单的介绍下CAShapeLayer1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性2 ...
- Android 解析JSON数组
1:服务端是使用PHP,从数据库中查询出一个二维数组,然后调用系统函数以json格式返回给客户端. 返回结果如下:http://192.168.0.116/server/selectTitle2jso ...
- 标签 Attribute
在一个类上面放一个标签,可以用来表示一些特定规则,比如某个对象的某个属性不想被json化,那么我们在它头上放个标签就行了,或是做ORM时指定某个Class对应的table名字等. 最后标签是通过反射来 ...
- 利用http实现文件的上传和下载
其他语言都比较方便,使用http上传.但是C++这样就差点,不过还好,Linux下有个curl的命令行工具,这是一个开源项目,底下有个子项目是libcurl,curl就是调用这个API实现的一系列ft ...
- Templates 模板:
Templates 模板: ########################温金 $template wj-flow01,"/data01/applog_backup/winfae_log/ ...
- asp.net 1.1网站开发配置出现”Visual Studio .NET 无法创建或打开应用程序”解决方法
可能的解决方案: 1.注册.net framework 1.1 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis /i 2,如果配置 ...
- HDU 2187 A sequence of numbers
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2817 题意: 给定三个数,判断是等差数列还是等比数列,然后输出第k项. 做法:直接判断即可 #inc ...
- 计算N!的质因数2的个数
容易得出N!质因数2的个数 = [N / 2] + [N / 4] + [N / 8] + .... 下面通过一个简单的例子来推导一下过程:N = 10101(二进制表示)现在我们跟踪最高位的1,不考 ...