基本概念
MongoDB 是一个基于分布式文件存储的数据库
c++编写
sql与nosql区别
关系型数据库
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
1.没有表结构限制
2.完全的索引支持
redis是key-value
HBASE是单索引,二级索引需要自己构建
3.复制集保证安全,分片扩展数据规模
4.支持松散的bson格式
5.可以做集群,分布式
win下安装的困难
cmd不能切换目录
安装流程
启动命令:mongod --config "f:\mongoDB\mongodb.conf"
mongoDB常用命令
- collection 集(表)
- bson
- 不支持sql查询
- _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