【MongoDB】有了mysql和redis,为啥还用MongoDB 您所在的位置:网站首页 蚊帐的安装视频 【MongoDB】有了mysql和redis,为啥还用MongoDB

【MongoDB】有了mysql和redis,为啥还用MongoDB

2023-08-16 11:35| 来源: 网络整理| 查看: 265

介绍 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。模式自由。支持动态查询。支持完全索引,包含内部对象。支持查询。支持复制和故障恢复。使用高效的二进制数据存储,包括大型对象(如视频等)。自动处理碎片,以支持云计算层次的扩展性。支持RUBY,PYTHON,JAVA,C ,PHP,C#等多种语言。文件存储格式为BSON(一种JSON的扩展)。可通过网络访问。 适用场景

从目前阿里云 MongoDB 云数据库上的用户看,MongoDB 的应用已经渗透到各个领域,比如游戏、物流、电商、内容管理、社交、物联网、视频直播等,以下是几个实际的应用案例。

游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析视频直播,使用 MongoDB 存储用户信息、礼物信息等… 如果还在犹豫是否使用MongoDB,可以参考下图,如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择MongoDB绝不会后悔。 在这里插入图片描述 不适场景 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。需要SQL 的问题。 与mysql、redis的异同 与mysql

在这里插入图片描述

与redis

在这里插入图片描述

springboot整合 在pom.xml中添加相关依赖 org.springframework.boot spring-boot-starter-data-mongodb 修改SpringBoot配置文件

修改application.yml文件,在spring:data节点下添加Mongodb相关配置。

mongodb: host: localhost # mongodb的连接地址 port: 27017 # mongodb的连接端口号 database: mall-port # mongodb的连接的数据库 添加会员浏览记录文档对象MemberReadHistory

文档对象的ID域添加@Id注解,需要检索的字段添加@Indexed注解。

package com.macro.mall.tiny.nosql.mongodb.document; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; /** * 用户商品浏览历史记录 * Created by macro on 2018/8/3. */ @Document public class MemberReadHistory { @Id private String id; @Indexed private Long memberId; private String memberNickname; private String memberIcon; @Indexed private Long productId; private String productName; private String productPic; private String productSubTitle; private String productPrice; private Date createTime; //省略了所有getter和setter方法 } 添加MemberReadHistoryRepository接口用于操作Mongodb

继承MongoRepository接口,这样就拥有了一些基本的Mongodb数据操作方法,同时定义了一个衍生查询方法。

package com.macro.mall.tiny.nosql.mongodb.repository; import com.macro.mall.tiny.nosql.mongodb.document.MemberReadHistory; import org.springframework.data.mongodb.repository.MongoRepository; import java.util.List; /** * 会员商品浏览历史Repository * Created by macro on 2018/8/3. */ public interface MemberReadHistoryRepository extends MongoRepository { /** * 根据会员id按时间倒序获取浏览记录 * @param memberId 会员id */ List findByMemberIdOrderByCreateTimeDesc(Long memberId); } 添加MemberReadHistoryService接口 package com.macro.mall.tiny.service; import com.macro.mall.tiny.nosql.mongodb.document.MemberReadHistory; import java.util.List; /** * 会员浏览记录管理Service * Created by macro on 2018/8/3. */ public interface MemberReadHistoryService { /** * 生成浏览记录 */ int create(MemberReadHistory memberReadHistory); /** * 批量删除浏览记录 */ int delete(List ids); /** * 获取用户浏览历史记录 */ List list(Long memberId); } 添加MemberReadHistoryService接口实现类MemberReadHistoryServiceImpl package com.macro.mall.tiny.service.impl; import com.macro.mall.tiny.nosql.mongodb.document.MemberReadHistory; import com.macro.mall.tiny.nosql.mongodb.repository.MemberReadHistoryRepository; import com.macro.mall.tiny.service.MemberReadHistoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 会员浏览记录管理Service实现类 * Created by macro on 2018/8/3. */ @Service public class MemberReadHistoryServiceImpl implements MemberReadHistoryService { @Autowired private MemberReadHistoryRepository memberReadHistoryRepository; @Override public int create(MemberReadHistory memberReadHistory) { memberReadHistory.setId(null); memberReadHistory.setCreateTime(new Date()); memberReadHistoryRepository.save(memberReadHistory); return 1; } @Override public int delete(List ids) { List deleteList = new ArrayList(); for(String id:ids){ MemberReadHistory memberReadHistory = new MemberReadHistory(); memberReadHistory.setId(id); deleteList.add(memberReadHistory); } memberReadHistoryRepository.deleteAll(deleteList); return ids.size(); } @Override public List list(Long memberId) { return memberReadHistoryRepository.findByMemberIdOrderByCreateTimeDesc(memberId); } } 添加MemberReadHistoryController定义接口 package com.macro.mall.tiny.controller; import com.macro.mall.tiny.common.api.CommonResult; import com.macro.mall.tiny.nosql.mongodb.document.MemberReadHistory; import com.macro.mall.tiny.service.MemberReadHistoryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 会员商品浏览记录管理Controller * Created by macro on 2018/8/3. */ @Controller @Api(tags = "MemberReadHistoryController", description = "会员商品浏览记录管理") @RequestMapping("/member/readHistory") public class MemberReadHistoryController { @Autowired private MemberReadHistoryService memberReadHistoryService; @ApiOperation("创建浏览记录") @RequestMapping(value = "/create", method = RequestMethod.POST) @ResponseBody public CommonResult create(@RequestBody MemberReadHistory memberReadHistory) { int count = memberReadHistoryService.create(memberReadHistory); if (count > 0) { return CommonResult.success(count); } else { return CommonResult.failed(); } } @ApiOperation("删除浏览记录") @RequestMapping(value = "/delete", method = RequestMethod.POST) @ResponseBody public CommonResult delete(@RequestParam("ids") List ids) { int count = memberReadHistoryService.delete(ids); if (count > 0) { return CommonResult.success(count); } else { return CommonResult.failed(); } } @ApiOperation("展示浏览记录") @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public CommonResult list(Long memberId) { List memberReadHistoryList = memberReadHistoryService.list(memberId); return CommonResult.success(memberReadHistoryList); } } 测试 添加商品浏览记录到Mongodb

在这里插入图片描述 在这里插入图片描述

查询Mongodb中的商品浏览记录

在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有