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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 MongoDB,通用型 2核4GB
日志服务 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数据库的安装、配置、服务的启动、数据的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
相关文章
|
6天前
|
SQL Java 数据库
使用Spring Boot和Flyway进行数据库迁移
使用Spring Boot和Flyway进行数据库迁移
|
7天前
|
缓存 监控 Java
优化Spring Boot应用的数据库访问性能
优化Spring Boot应用的数据库访问性能
|
6天前
|
SQL XML Java
解决Spring Boot项目中的数据库迁移问题
解决Spring Boot项目中的数据库迁移问题
|
6天前
|
缓存 NoSQL Java
使用Spring Boot和Couchbase实现NoSQL数据库
使用Spring Boot和Couchbase实现NoSQL数据库
|
7天前
|
缓存 监控 Java
优化Spring Boot应用的数据库访问性能
优化Spring Boot应用的数据库访问性能
|
7天前
|
监控 Java 数据库连接
解决Spring Boot中的数据库连接池问题
解决Spring Boot中的数据库连接池问题
|
7天前
|
Java 测试技术 数据库连接
Spring Boot中的嵌入式数据库使用
Spring Boot中的嵌入式数据库使用
|
10天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
|
4天前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
6 0
|
5天前
|
druid Java 数据库连接
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
12 0