Spring Boot 2.0实战 MongoDB 数据库与面试题|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 Spring Boot 2.0实战 MongoDB 数据库与面试题。

开发者学堂课程【Spring Boot 2.5.x 开发实战Spring Boot 2.0实战 MongoDB 数据库与面试题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/853/detail/14070


Spring Boot 2.0实战 MongoDB 数据库与面试题

 

内容介绍:

一.《阿里巴巴 MongoDB4.0高级实战》

二.NoSQL 排名第一 MongoDB

三.Spring Data 实战 MongoDB 数据库

四.本节课高级面试题

 

MongoDB 涵盖入门到各种高级主题、索引、存储引擎及各种对接包括日志加密、安全身份验证、高可用集群,分片集群等。

 

一.《阿里巴巴 MongoDB4.0高级实战》

1. MongoDB数据库入门:MongoDB 概览、4.0新特性、下载安装、Shell 连接及基本操作等  

2. MongoDB数据库数据查询与分析:MongoDB 查询命令、分析、聚合等  

3. MongoDB数据库核心知识:MongoDB 数据库操作、集合、存储引擎、数据模型等  

4. MongoDB数据库管理:MongoDB 数据相关操作、数据备份与恢复等  

5. MongoDB数据库性能分析与调优:MongoDB 索引、算法、查询计划等  

6. MongoDB与Java开发实战:基于 Java Spring Boot 和云数据库 MongoDB 开发 HTML5博客应用  

7. MongoDB 数据库排错日志分析: MongoDB 日志收集、经典问题解析、常用问题排查工具等

8. MongoDB 数据库安全机制:MongoDB 身份验证、加密、典型机制等

9. MongoDB 数据库 HA 高可用集群架构:主从复制、读写分离、自动化故障转移、HA 集群,阿里云数据库集 群等 10. MongoDB 数据库运维:数据库维护、升级,云数据库 MongoDB 版运维、监控工具,数据库容灾方案等  

11. MongoDB 优化实战案例:讲解 MongoDB 的索引原理,以及常见的优化手段,并分析一些具体的优化案例

12. MongoDB Sharding 集 群原理与架构优化:讲解 Sharding 集群原理、架构设计方法,以及常见的架构优化 手段 13. 官方网站:

https://edu.aliyun.com/workshop/3/course/1044

 

二、NoSQL 排名第一 MongoDB

移动互联网架构

image.png

一)MongoDB 简介 

MongoDB 是文档型数据库,较灵活,容易做集群搭建,在互联网公司运用广泛。

1. NoSQL 排名第一,BAT 互联网公司必备;

2. 分布式数据库;

3. 由C++语言编写,特点是高性能、易部署、易使用、存储数据非常方便;

4. 旨在为 Web 应用提供可扩展的高性能数据存储解决方案;

5. MongoDB 由10gen 团队所开发,于2009年2月首度推出.

6. MongoDB 开源、跨平台,

7. 支持 Windows、Linux、OS X 和 Solaris 系统  

8. MongoDB 最新版本为4.0,支持跨文档事务

二)MongoDB 优点

1. 灵活的数据模型

2. 便于横向拓展

3. 自动分片存储

4. 支持分布式查询

5. 集成内存缓存

6. 高性能高并发

(三)MongoDB 的典型行业案例

image.png

四)MongoDB 版本特性

image.png

推荐大家用3.0以后的版本,因为3.0以后默认 Wiredtiger,性能、稳定性更强大,4.0以后基本上也支持分布式事务Transaction,包括分片集群、复制集群事务,其他并行异步复制等,提升了针对大容量数据库迁移的优化比非关系型数据库强大,安全机制严格对标传统的关系型数据库。

五)安装 MongoDB 数据库

下载 MongoDB4.4

官方下载,windows 可以直接下,Linux 直接用命令,安装后启动 MongoDB 服务。

可视化管理工具

• Robomongo

• Robo 3T

• Compass

MongoDB操作命令

• > show dbs  

• admin   0.000GB  

• config  0.000GB • local   0.000GB  

• > show users  

• > show collections  

• > use Alibaba

• switched to db alibaba  

• > db.users.insert({"name":"Java"})  

• WriteResult({ "nInserted" : 1 })  

• > db.users.insert({"name":"mongo","age":18})  

• WriteResult({ "nInserted" : 1 })  

• > db.users.find()

• { "_id" :ObjectId("604ca8c13bfab2e14d4927d4"), "name" : "Java" }  

• { "_id" : ObjectId("604ca8e33bfab2e14d4927d5"), "name" : "mongo", "age" : 18 }  

·> db.users.insert({"name":"frank","password":"1234","age":18})  

• WriteResult({ "nInserted" : 1 })

• > db.users.find()  

• { "_id" : ObjectId("604ca8c13bfab2e14d4927d4"), "name" : "Java" }

• { "_id" : ObjectId("604ca8e33bfab2e14d4927d5"), "name" : "mongo", "age" : 18 }

• { "_id" : ObjectId("604ca9623bfab2e14d4927d6"), "name" : "frank", "password" : "1234", "age" : 18 }

使用 Win10下载,直接通过命令行启动。

 

三、Spring Data 实战 MongoDB 数据库

一)Spring Data 2.5 MongoDB 新特性

1. 简化 Java 的 MongoDB 数据库开发 API  

2. 提供一致的基于 Spring 的编程模型  

3. Spring configuration 支持@Configuration classes or an XML namespace  

4. 方便编写 Repository 仓储模式的DAO层代码  

5. 自动实现 Repository interface 的 CRUD 常用操作  

6. 自动进行 POJO 和 MongoDB 文档数据的映射转换, Spring’s Conversion Service  

7. 可以自定义扩展方法  

8. MongoTemplate helper class 提升 MongoDB 开发效率  

9. Low-level mapping using MongoReader/MongoWriter abstractions  

10. Java based Query, Criteria, and Update DSLs  

11. Log4j log appender  

12. GeoSpatial 集成  

13. Map-Reduce 集成  

14. JMX administration and monitoring  

15. CDI support for repositories  

16. GridFS 支持

Spring Data 针对多种数据语言,MongoDB 是其中一种,希望Spring Boot 能够集成它。仓储模式扩展接口,然后支持各种自定义操作,默认操作 Spring Data 已经统一生成了。映射工作对象将数据库映射,直接集成了。

MongoDB 有地理位置的索引,存储的数据类型不仅是字符串或者整数类型,现在功能比较强大,有云端版本。基本增删改查都有,特定的特殊字段查询删除和多条语句查询等需要自己开发。

(二)Repository 仓储层代码

public interface BlogRepository extends MongoRepository <Blog, objectId> {

public Blog findById(objectId id);

public void delete (objectId id);

public List<Blog> findAll();

}  

Repository 仓储层代码,实际大大的简化了整个数据库编程,但是底层基础还是需要大家去使用,作为应用开发人员,使用接口越方便越简单效率越高,但是底层实现需要我们花时间去研究学习。

image.png

看一下代码,先启动MongoDB,通过命令,可以直接安装系统服务。注意参数一定是两根横线,一根横线容易出错,port 27017指定端口参数,dbpath就是数据文件位置, logpath日志文件的路径。可以直接安装启动也可以命令行方式启动。

可以加 host 指定主机名。目录新建了一个文件夹,将 MongoDB 目录放入。注意,在MongoDB4.0以后bin目录很多工具没有了。测试回车启动的是服务端里面会生成日志文件、data文件。MongoDB 中有集合的概念,无表达的概念,对应关系型数据库中的表。另一个窗口作为客户端,不用加扩展exe,可以用show dbs查看数据库

MongoDB 不需要提前设计数据库和表,插入数据时会自动创建数据库。切换数据库,但数据库并不存在,因为未保存数据,可以通过程序保存数据。

Spring Boot 的项中重要的有 MongoDB 对应的扩展的依赖,Spring Data 针对 MongoDB 的依赖需要加进去,其他几个通用依赖不用管。仓储层的接口定义了针对用户的表,比如客户作业自己设计一个叫 Order 的仓储接口,根据用户名、密码用户 ID 查询的策略可以自己设定。扩展是 MongoDB report 的接口。Spring 的容器需要创建仓储对象,在业务逻辑层操作,处理完业务逻辑层封装之后提供给 API 调用。

举例但不提倡直接调用数据网络层,其中定义了一个私有的成员,Spring 框架自动会创建实例注入进来,然后调用增删改查,删除所有,查询所有,这里面是根据 ID 查询某一个人,新增先做一个删除操作然后插入一条数据。

地址是 Users 下的 addUsers,配置文件端口是8081,端口是27017,数据库指定的是 alibaba,但 alibaba 目前不存在,保存数据以后就会生成。

启动 Spring Boot 项目,然后打开浏览器,搜索 localhost:8081/Users/addUsers,返回100证明插入成功。如何查看插入成功,命令行输入 show dbs 查看是否多了一个阿里巴巴数据库,存在阿里巴巴数据库但显示为0GB,再输入命令show tables 查表,再输入命令db.Users. find()查找所有数据。打开浏览器测试 localhost:8081/ Users/getAll也可以查看所有数据,完全是 Jackson 数据代码的形式返回给客户端。重点是在仓储,依赖和配置不要搞错,需要配置 MongoDB 的地址。注意这里面还未考虑 MongoDB 的链接池,分层也可以做的更细,比如业务逻辑层可以再往上传一层。注意不要引错依赖。

 

四、本节课高级面试题

一)高级面试题

1. Spring Data for MongoDB映射机制  

2. 官方驱动是什么  

3. MongoDB 存储什么数据?NoSQL,面向文档 JSON可以存用户数据、用户行为数据

4. MongoDB 优缺点  

5. MongoDB 几大存储引擎  

6. 数据复制的过程  

7. 索引类型  

8. 性能优化  

9. 性能监控  

10. GEO 索引算法

很重要的仓储模式,底层做了封装,利用仓储模式,创建数据访问对象,Spring 容器帮助完成工作。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
28 2
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
131 6
|
19天前
|
存储 NoSQL MongoDB
MongoDB面试专题33道解析
大家好,我是 V 哥。今天为大家整理了 MongoDB 面试题,涵盖 NoSQL 数据库基础、MongoDB 的核心概念、集群与分片、备份恢复、性能优化等内容。这些题目和解答不仅适合面试准备,也是日常工作中深入理解 MongoDB 的宝贵资料。希望对大家有所帮助!
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
71 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
422 37
|
1月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
1月前
|
设计模式 缓存 Java
面试题:谈谈Spring用到了哪些设计模式?
面试题:谈谈Spring用到了哪些设计模式?
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
Java 程序员 Spring
Spring事务的1道面试题
每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。
Spring事务的1道面试题
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
123 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习