MongoDB-数据库即服务/springboot+mongo

本文探讨了SQL与NoSQL的区别,重点介绍了MongoDB,包括其选择原因、优点、缺点、Windows下的安装步骤、数据存储格式、常用命令以及如何在SpringBoot中集成MongoDB。MongoDB以其灵活的数据模型、强大的查询语言和良好的扩展性成为NoSQL数据库的热门选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql与nosql区别

—“NoSQL是对不同于传统的关系数据库的数据库管理系统的统称。两者存在许多显著的不同点,NoSQL不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,经常会避免使用SQL的JOIN操作,有水平可扩展性特征。”
Not Only SQL 意即“不仅仅是SQL
关系型数据库
1 . 事务处理—保持数据的一致性;
2. 由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处);
3. 可以进行Join等复杂查询。

1 . 扩展困难:由于存在类似Join这样多表查询机制,使得数据库在扩展方面很艰难;
2. 读写慢:这种情况主要发生在数据量达到一定规模时由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等的并发问题,所以导致其读写速度下滑非常严重;
3. 成本高:企业级数据库的License价格很惊人,并且随着系统的规模,而不断上升;
4. 有限的支撑容量:现有关系型解决方案还无法支撑Google这样海量的数据存储;有限的支撑容量:现有关系型解决方案还无法支撑Google这样海量的数据存储;

Nosql
1.简单的扩展:典型例子是Cassandra,由于其架构是类似于经典的P2P,所以能通过轻松地添加新的节点来扩展这个集群;
2.快速的读写:主要例子有Redis,由于其逻辑简单,而且纯内存操作,使得其性能非常出色,单节点每秒可以处理超过10万次读写操作;
3.低廉的成本:这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的License成本;
1 . 不提供对SQL的支持:如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本;
2. 支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数NoSQL数据库都不支持事务,也不像MS SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等;
3. 现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语;

MongoDB

为什么选择MongoDB
  1. 没有表结构限制
  2. 完全的索引支持
    redis是key-value
    HBASE是单索引,二级索引需要自己构建
  3. 复制集保证安全,分片扩展数据规模
  4. 支持松散的bson格式
  5. 可以做集群,分布式
  6. c++编写

它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

缺点

不支持外键,不支持事务,不支持数据类型约定
不支持sql查询

win下安装

在这里插入图片描述
cmd不能切换目录
安装流程
启动命令:mongod --config "f:\mongoDB\mongodb.conf"

数据及存储格式

MongoDB 支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型

一个数据库包含多个集合(collection),类似于 MySQL 中一个数据库包含多个表;
一个集合包含多个文档,类似于 MySQL 中一个表包含多条数据。

mongoDB常用命令

  • _id主键
  • 支持GEO索引

显示数据库show databases;
admin是用于管理的数据库
新建database=================use demodb
显示当前数据库===============db
创建collection=================db.createCollection("devices")
显示collection=================show collections
删除==========db.device.drop()
向collection中插入=======db.devices.insert()/db.devices.insertOne()/db.devices.insertMany()

//默认会添加_id主键
db.devices.insert({"divceId":90001,"deiveStatus":0})

查找所有db.devices.find()
条件查询db.devices.find({"status":0})

修改数据db.devices.update({"deviceId":90001},{$set:{"deviceStatus":9}})

删除数据db.devices.deleteOne({"deviceId":90001})/db.devices.deleteMany()

开启mongodb安全认证机制

添加超级用户use admin
添加超级用户db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]})
配置文件添加auth=true
重启服务
重新连接,使用adminuse admin
授权db.auth("admin","admin")

use hhtptc
添加普通用户db.createUser({user:"zhaojianyu",pwd:"123456",roles:["readWrite"]})
重新登陆use hhtptc
登陆db.auth("zhaojianyu","123456")

springboot+mongodb

<!--mongodb 依赖zhaojianyu-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

配置文件

#mongodb zjy
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=hhtptc
spring.data.mongodb.username=zhaojianyu
spring.data.mongodb.password=123456

看:
https://www.cnblogs.com/tuyile006/p/6382062.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值