mongoDB 概念mysql
http://www.javashuo.com/article/p-kfnzqnvk-no.html程序员
window版下载spring
http://www.javashuo.com/article/p-mwwaubdk-kz.htmlsql
idea 下载mongodb插件mongodb
http://www.javashuo.com/article/p-tqweqptq-ks.htmlshell
mongodb 经常使用命令数据库
https://blog.csdn.net/piaocoder/article/details/52384756缓存
springboot 整合mongodbspringboot
https://blog.csdn.net/yuanhenglizhen110/article/details/78586626服务器
NoSQL(Not Only SQL ),意即“不只仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势愈加高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一律念无疑是一种全新的思惟的注入。
关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都同样,即便不是每条记录都须要全部的字段,但数据库会为每条数据分配全部的字段。而非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录能够有不同的键,每条记录能够根据须要增长一些本身的键值对,这样就不会局限于固定的结构,能够减小一些时间和空间的开销。
CouchDB
Redis
MongoDB
Neo4j
HBase
BigTable
简单的扩展
快速的读写
低廉的成本
灵活的数据模型
在不足方面主要有下面几点:
不提供对SQL的支持
支持的特性不够丰富
现有的产品不够成熟
MongoDB是用C++语言编写的非关系型数据库。特色是高性能、易部署、易使用,存储数据十分方便,主要特性有:
面向集合存储,易于存储对象类型的数据
模式自由
支持动态查询
支持彻底索引,包含内部对象
支持复制和故障恢复
使用高效的二进制数据存储,包括大型对象
文件存储格式为BSON(一种JSON的扩展)
mongodb与mysql不一样,mysql的每一次更新操做都会直接写入硬盘,可是mongo不会,作为内存型数据库,数据操做会先写入内存,而后再会持久化到硬盘中去,那么mongo是如何持久化的呢
mongodb在启动时,专门初始化一个线程不断循环(除非应用crash掉),用于在必定时间周期内来从defer队列中获取要持久化的数据并写入到磁盘的journal(日志)和mongofile(数据)处,固然由于它不是在用户添加记录时就写到磁盘上,因此按mongodb开发者说,它不会形成性能上的损耗,由于看过代码发现,当进行CUD操做时,记录(Record类型)都被放入到defer队列中以供延时批量(groupcommit)提交写入,但相信其中时间周期参数是个要认真考量的参数,系统为90毫秒,若是该值更低的话,可能会形成频繁磁盘操做,太高又会形成系统宕机时数据丢失过
文档(document)是MongoDB中数据的基本单元,很是相似于关系型数据库系统中的行(可是比行要复杂的多)。
集合(collection)就是一组文档,若是说MongoDB中的文档相似于关系型数据库中的行,那么集合就如同表。
MongoDB的单个计算机能够容纳多个独立的数据库,每个数据库都有本身的集合和权限。
MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操做数据做用很是大。
每个文档都有一个特殊的键”_id”,它在文档所处的集合中是惟一的,至关于关系数据库中的表的主键
更多数据类型见https://blog.csdn.net/zh_ang_lei/article/details/73327495
mongodb怎样使用内存
mongodb使用内存映射存储引擎,
它会把数据文件映射到内存中,若是是读操做,内存中的数据起到缓存的做用,若是是写操做,内存还能够把随机的写操做转换成顺序的写操做,总之能够大幅度提高性能。MongoDB并不干涉内存管理工做,而是把这些工做留给操做系统的虚拟内存管理器去处理,这样作的好处是简化了MongoDB的工做,但坏处是你没有方法很方便的控制MongoDB占多大内存,幸运的是虚拟内存管理器的存在让咱们多数时候并不须要关心这个问题。
MongoDB的内存使用机制让它在缓存重建方面更有优点,简而言之:若是重启进程,那么缓存依然有效,若是重启系统,那么能够经过拷贝数据文件到/dev/null的方式来重建缓存
mongo使用场合
mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集二者的优点于一身。mongo适用于如下场景:
a.网站数据:mongo很是适合实时的插入,更新与查询,并具有网站实时数据存储所需的复制及高度伸缩性。
b.缓存:因为性能很高,mongo也适合做为信息基础设施的缓存层。在系统重启以后,由mongo搭建的持久化缓存能够避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此以前,不少程序员每每会选择传统的文件进行存储。
d.高伸缩性的场景:mongo很是适合由数十或者数百台服务器组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式很是适合文档格式化的存储及查询。
不适合的场景:
a.高度事物性的系统:例如银行或会计系统。传统的关系型数据库目前仍是更适用于须要大量原子性复琐事务的应用程序。
b.传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库多是更合适的选择。
c.须要SQL的问题。
springboot 整合mongodb
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
链接mogodb只须要一个配置
spring.data.mongodb.uri=mongodb://localhost:27017/test
1.注入mongodb提供的工具类操做数据库
@Autowired
private MongoTemplate mongoTemplate;
mongoTemplate.save(user);
mongoTemplate.findAll(User.class);
mongoTemplate.remove(user);
2.集成MongoRepository操做数据库
@Autowired
private IUserDao userDao;
userDao.findUserById(user.getId());
public interface IUserDao extends MongoRepository<User,String> {
User findUserById(String id);
}