目录:

  • 为什么要使用nosql
  • mongo的简介
  • 应用场景
  • 入门demo

为什么要使用nosql:

随着互联网的发展,用户数量激增,访问量的上涨,传统的关系型数据库的性能趋于瓶颈

关系型数据库难以克服的问题:

1、高并发读写:为什么关系型数据库难以支持高并发的读写呢,因为它基于IO操作磁盘,而nosql一般直接操作内存。

2、海量数据高效存储与访问

3、高扩展性、高可用性

。。。。。。

关系型数据库的拘束:

1、事务一致性的约束;支撑高并发已经很困难了,还需要满足数据的一致性。

2、读写实时性需求

。。。。。。

nosql是什么,它的特点:

nosql(Not Only SQL),本质上也是一种数据存储技术,但相对与传统的sql来说它不会遵循一些约束。

1、特点:

  • 支持海量数据存储
  • 打破性能瓶颈
  • 操作简单
  • 支持开源
  • 对服务器性能要求低

2、缺点:

  • 不支持事务
  • 复杂的sql难以实现(似于多表关联)
  • 等等

mongo的简介:

mongo的特性:

1、面向集合文档的存储:存储bson形式(json的扩展)的数据

2、存储格式自由:数据格式不固定,修改数据结构不影响服务运行

3、强大的查询语句,媲美sql

4、完整的索引、查询计划支持

5、支持数据的复制和故障转移

6、支持二进制数据及大对象文件的高效存储

7、使用分片集群提升系统性能

8、使用内存映射存储引擎,把磁盘的IO操作转化为内存操作

。。。。。。

mongo概念与rdms对比:

如果有一个存储用户和邮箱的关系的需求:

1、在sql中一般需要用两个表来实现,且邮箱表需要有一个字段关联用户;user(用户表)、email(邮箱表,一对多)

2、但在mongo中你只需要将email那一字段设计成数组类型就可以了

{
_id: 0001
username: 'zd'
email: [
'test1@qq.com',
'test2@qq.com'
]
}

应用场景:

项目中只要包含以上两个特征,选择mongo绝对不会错!!!

入门demo:

1、增加mongodb-drive依赖

 <dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.4.3</version>
</dependency>

2、获取一条document数据

 public class Test {

     public static void main(String[] args) {
MongoClient client = new MongoClient("192.168.233.128", 27017);
MongoDatabase db = client.getDatabase("local");
MongoCollection<Document> user = db.getCollection("user");
for (Document next : user.find()) {
Object name = next.get("name");
Object age = next.get("age");
System.out.println(MessageFormat.format("name={0}, age={1}", name.toString(), age.toString()));
}
}
}

MongoDB学习笔记(一、MongoDB入门)的更多相关文章

  1. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  2. MongoDB学习笔记(一) MongoDB介绍及安装(摘)

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...

  3. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  4. MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用

    1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...

  5. MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...

  6. MongoDB学习笔记—02 MongoDB入门

    Mongodb的基本概念 文档:是MongoDB中数据的基本单元,类似于关系型数据库中的行. 集合:多个文档组成一个集合,类似于关系型数据库中的表. 数据库:MongoDB的当个实例可以容纳多个独立的 ...

  7. MongoDB学习笔记一:入门

    文档:多个键及其关联的值『有序』地放置在一起. {"greeting" : "Hello, world!", "foo" : 3}集合:一组 ...

  8. MongoDB学习笔记01:入门

    MongoDB简介 MongoDB是一个开源.高性能.无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. ...

  9. MongoDB学习笔记(一) MongoDB介绍及安装

    转自:http://database.51cto.com/art/201103/247882.htm http://baike.baidu.com/link?url=b6B3dVSCnQauCX-Ep ...

  10. MongoDB学习笔记-认识MongoDB

    学习参考地址 http://www.runoob.com/mongodb NoSql 流行的数据库Oracle,SqlServer,MySql为关系性数据库,相对的,也有非关系性数据库,统称为NoSq ...

随机推荐

  1. Java编程思想——第17章 容器深入研究(一)

    这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.Coll ...

  2. MongoDB(三):数据库操作、集合操作

    1. 数据库操作 看完前面的文章,大家应该把环境搭建好了,下面我们就开始学习MongoDB的一些基本操作了. 首先我们要了解的一些要点: MongoDB将数据存储为一个文档,数据结构由键值对(key= ...

  3. c#实现两个窗体相互传值

    本文转自:https://mp.csdn.net/postedit/100058721 1.功能展示 有时需要将子界面的内容传递到父界面,方法有好几种.经常用的是通过委托实现.具体的效果如下: ​   ...

  4. 速查 objc中可变集合和不可变集合的遍历性能

    次数 : 5,000,000 NSMutableArray //0.131999/0.116085/0.112128 NSArray //0.116842/0.111675/0.108623 NSMu ...

  5. subprocess 的 Popen用法

    使用Popen方法时,需要获取输出内容时可以按如下方法获取: # -*- coding:utf-8 -*- import subprocess cmd = r"ping www.baidu. ...

  6. pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告

    pytest是什么 pytest是python的一款测试框架,拥有unittest的功能并比它更丰富. allure是什么 有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例 ...

  7. java基础 - 形参和实参,值传递和引用传递

    形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...

  8. Laravel 即时应用的一种实现方式

    即时交互的应用 在现代的 Web 应用中很多场景都需要运用到即时通讯,比如说最常见的支付回调,与三方登录.这些业务场景都基本需要遵循以下流程: 客户端触发相关业务,并产生第三方应用的操作(比如支付) ...

  9. IDEA生成可执行的jar文件

    场景 用IDEA开发一个Java控制台程序,项目完成后,打包给客户使用. 做法 首先用IDEA打开要生成jar的项目,打开后选择File->Project Structure... 选择Arti ...

  10. 了解angularjs中的生命周期钩子函数$onInit,$onChange,$onDestory,$postLink

     壹 ❀ 引 我在前面花了三篇文章用于介绍angularjs的指令directive,组件component,并专门花了一篇文章介绍directive与component的不同,其中提到在compon ...