MongoDB简介

MongoDB是由C++语言编写的,是一个基于分布式文件存储的数据库。旨在为 WEB 应用提供可扩展的高性能 数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 中功能最丰富,最像关系数据库的。
nosql会把数据写在内存里,但又不是唯一的一个途径,还会写入文件,只不过会优先写入内存再写入文件,如果内存写爆了,一定是mongodb出了问题。而关系型数据库会先写入文件中,在写入内存。
其实,mysql也可以作为内存型数据库使用,但是性能会非常低。nosql数据库不是基于查询语言的,而是基于各自的api的。

一。数据类型

1.null,空值或者未定义的 对象
2.boolean,true 或者 false
3.Integer,整型数值。用于存储数 值。根据你所采用的服务 器,可分为 32 位或 64 位。
4.double,双精度浮点值。
5.String,UTF-8 字符串
6.Symbol,符号。该数据类型基本上 等同于字符串类型,但不 同的是,它一般用于采用 特殊符号类型的语言。
7.objectId,对象 ID。用于创建文档 的 ID。
8.Date,日期时间。用 UNIX 时 间格式来存储当前日期 或时间。
9.timestamp,从标准纪元开始的毫秒 数
10.Regular,文档中可以包含正则表 达式,遵循 JavaScript 的语法
11.code,可 以 包 含 JavaScript 代码
12.undefined,已废弃
13.Array,值的集合或者列表
14.Binary date,用于存储二进制数据。
15.object,文档可以作为文档中某 个 key 的 value
16.min/max keys,将一个值与 BSON(二进 制的 JSON)元素的最低 值和最高值相对比。

二,MongoDB应用场景

适用范围
1)网站实时数据: :MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及 高度伸缩性。 例如:日志、Timeline
2)数据缓存:由于性能很高, MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载。 缓存的数据,它一定是临时的 (关系型数据有一份已经持久化)
3)大尺寸、低价值数据存储: 使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很 多时候程序员往往会选择传统的文件进行存储。 搜索引擎的图片文件、视频文件(结构化), 一份存磁盘、一份存Mongo
4)高伸缩性场景::MongoDB 非常适合由数十或数百台服务器组成的数据库。MongoDB 的路线图中已经包 含对 MapReduce 引擎的内置支持。 机器可以任意的增减
5)对象或JSON数据存储::MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询。 也完全可以选择用Redis

不适用范围
1)高度事务性系统: 。传统的关系型数据库目前还是更适用于需要大量原子性复杂 事务的应用程序。例如:金融系统的核心数据 ,高机密的用户数据(只能选择传统关系型数据库)
2)传统的商业智能应用:针对特定问题的 BI 数据库会对产生高度优化的查询方式。对于此类应用, 数据仓库可能是更合适的选择。 结构化查询要求非常高,经常做关联查询统计。再比如用户手机注册验证码存取不建议用MOngoDB,建议用session或者用redis过时时间。
3.需要复杂 SQL 查询的问题。
MongoDB 不仅仅 是数据库,更多的使用是将 MongoDB 作为一个数据库中间件在实际生产中使用。
4.MongoDB数据量大的时候迁移会遇到一些问题,在生产上一般数据量超过200亿的时候,MongoDB就会出现性能瓶颈,经常会使用Hbase去代替MongoDB,所以MongoDB用着并不爽,不是力推使用的。

三。新版本的变化

官网:www.mongodb.com
Mongodb 以前没有事务,从4.0开始引入了事务,这也是分布式事务的一种解决方案

四。对比

1,MongoDB与elasticsearch
elasticsearch是纯粹的json字符串,mongo有BSON(简单),GridFS(复杂的文件存储系统);
2,MongoDB存储日志信息,这 也是在实际生产中最常用的场景。
不规则日志:用elk,log4j,pattern(用正则去解析字符串,不止一个正则,每一种日志格式都要编写一个正则去匹配,这种做法很麻烦,但是如果系统已经平稳运行多年了,就可以用elk存储日志)
规则日志:MongoDB,结构化的整理,如存储用户行为日志,调用链路,持续增量
3.Redis
不适合Reids:数据需要持久性的而且有一定的依赖性
适合Redis:数据会设置时效
分布式锁
用户登录token
数据库缓存中间件
4.MongoDB(GridFS)、Hadoop、HBase对于数据存储的使用场景选择
MongoDB,顶多算是一个日志数据库,文件存储系统为一个结构化的缓存,由于设计原理不同,数据量是一定的瓶颈的。
HBase ,基于列簇扩展性,高可用程度会更加灵活,数量级和MongoDB也是有很大差异的, 通常会跟大数据联系在一起
5,Mongo怎么持久化的?
持久化都是用文件的形式存储,其实任何数据库都是用文件实现持久化的 ,只是实现的方式,策略不同而已。

上一篇:nosql与sql
下一篇:MongoDB在Linux(centOS)下的安装启动步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值