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 容器帮助完成工作。

相关文章
|
5天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
1月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
419 3
|
14天前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
Spring Boot 3.x 微服务架构实战指南
|
2月前
|
人工智能 监控 安全
如何快速上手【Spring AOP】?核心应用实战(上篇)
哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
|
4月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
516 2
|
4月前
|
Cloud Native Java 微服务
Spring Boot 3.x 现代化应用开发实战技巧与最佳实践
本指南基于Spring Boot 3.x,融合微服务、云原生与响应式编程等前沿技术,打造现代化应用开发实践。通过构建智能电商平台案例,涵盖商品、订单、用户等核心服务,展示Spring WebFlux、OAuth 2.0认证、Spring Cloud Gateway路由、GraalVM原生编译等技术实现。同时提供Docker/Kubernetes部署方案及性能优化策略,助您掌握从开发到生产的全流程。代码示例详实,适合进阶开发者参考。
407 2
|
消息中间件 JSON Dubbo
谈谈几个 Spring Cloud 常见面试题及答案
谈谈几个 Spring Cloud 常见面试题及答案
340 0
谈谈几个 Spring Cloud 常见面试题及答案
|
JavaScript 算法 Java
11月7日云栖精选夜读 | 69 个经典 Spring 面试题和答案
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
3285 0

推荐镜像

更多