zoukankan      html  css  js  c++  java
  • 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依赖

    1 <dependency>
    2     <groupId>org.mongodb</groupId>
    3     <artifactId>mongodb-driver</artifactId>
    4     <version>3.4.3</version>
    5 </dependency>

    2、获取一条document数据

     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4         MongoClient client = new MongoClient("192.168.233.128", 27017);
     5         MongoDatabase db = client.getDatabase("local");
     6         MongoCollection<Document> user = db.getCollection("user");
     7         for (Document next : user.find()) {
     8             Object name = next.get("name");
     9             Object age = next.get("age");
    10             System.out.println(MessageFormat.format("name={0}, age={1}", name.toString(), age.toString()));
    11         }
    12     }
    13 }
  • 相关阅读:
    KMP
    1. Android Studio阅读源码
    疑难杂症
    队列
    方法和数组
    基本语法
    MySQL数据库创建
    MySQL安装
    Python--爬虫之(斗图啦网站)图片爬取
    Linux网络编程之基础概念
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/11924464.html
Copyright © 2011-2022 走看看