MongoDB学习笔记(一、MongoDB入门)
目录:
- 为什么要使用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入门)的更多相关文章
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习笔记(一) MongoDB介绍及安装(摘)
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...
- Mongodb学习笔记二(Mongodb基本命令)
第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...
- MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用
1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...
- MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...
- MongoDB学习笔记—02 MongoDB入门
Mongodb的基本概念 文档:是MongoDB中数据的基本单元,类似于关系型数据库中的行. 集合:多个文档组成一个集合,类似于关系型数据库中的表. 数据库:MongoDB的当个实例可以容纳多个独立的 ...
- MongoDB学习笔记一:入门
文档:多个键及其关联的值『有序』地放置在一起. {"greeting" : "Hello, world!", "foo" : 3}集合:一组 ...
- MongoDB学习笔记01:入门
MongoDB简介 MongoDB是一个开源.高性能.无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. ...
- MongoDB学习笔记(一) MongoDB介绍及安装
转自:http://database.51cto.com/art/201103/247882.htm http://baike.baidu.com/link?url=b6B3dVSCnQauCX-Ep ...
- MongoDB学习笔记-认识MongoDB
学习参考地址 http://www.runoob.com/mongodb NoSql 流行的数据库Oracle,SqlServer,MySql为关系性数据库,相对的,也有非关系性数据库,统称为NoSq ...
随机推荐
- LeetCode 二叉树的锯齿形层次遍历
第103题 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7] ...
- Java 多线程应知应会
请简单说说 synchronized 关键字的底层原理 java 说到多线程绝对绕不开 synchronized,很多 java 工程师对 synchronized 是又爱又恨.为什么呢?主要原因包括 ...
- Linux创建Jenkins启动脚本以及开机启动服务
1.jenkins.sh #!/bin/bash ###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限 JAVA_HOME=/usr/lib/jdk1.8.0 ...
- delphi使用Chilkat 组件和库从SFTP下载文件
官网地址:https://www.example-code.com/delphiDll/default.asp 实例代码:(不包括全局解锁) 密码生成器:https://www.cnblogs.co ...
- 【iOS】Swipe与Pan区别分析
By definition, a swipe gesture is necessarily also a pan gesture -- both involve translational movem ...
- 极客必备 Chrome 浏览器插件
本文微信公众号「AndroidTraveler」首发. 自己平时使用的最多的就是 Chrome 浏览器,因此本文主要分享自己添加的一些扩展程序. 介绍扩展程序的时候也是以我本人的实际使用为主,有些功能 ...
- RSA加解密&RSA加验签详解
RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一.RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已 ...
- tensorflow 神经网络模型概览;熟悉Eager 模式;
典型神经网络模型:(图片来源:https://github.com/madalinabuzau/tensorflow-eager-tutorials) 保持更新,更多内容请关注 cnblogs.com ...
- leetcode题解:整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出 ...
- 【2期】JVM必知必会
JVM之内存结构图文详解 Java8 JVM内存结构变了,永久代到元空间 Java GC垃圾回收机制 不要再问我“Java 垃圾收集器”了 Java虚拟机类加载机制 Java虚拟机类加载器及双亲委派机 ...