MongDB使用与原理看这篇就够了
Posted JavaEdge.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongDB使用与原理看这篇就够了相关的知识,希望对你有一定的参考价值。
什么是MongoDB
memory 内存引擎,NoSQL最大的特点:
1、默认支持分布式(内置分布式解决方案)
2、高性能,高可用性和可伸缩性
在NoSQL界,MongoDB是一个最像关系型数据库的非关系型数据库
MongoDB应用场景
适用范围
1)网站实时数据。例如:日志、Timeline、用户行为(代替方案:用日志)
2)数据缓存:缓存的数据,它一定是临时的 (关系型数据有一份已经持久化)
3)大尺寸、低价值数据存储: 搜索引擎的图片文件、视频文件(结构化),一份存磁盘、一份存Mongo
4)高伸缩性场景:机器可以任意的增减
5)对象或JSON数据存储: 完全可以选择用Redis
不适用范围
1)高度事务性系统: 例如:金融系统的核心数据,高机密的用户数据(只能选择传统关系型数据库)
2)传统的商业智能应用:结构化查询要求非常高,经常做关联查询统计(如果都是单表查询,用Java程序来实现关联)
Map,List (id_az_a)
MongoDB 4.0 支持事务操作(分布式事务的一种解决方案)。
微观的维度(你看不到的一个维度)
chunk(块)–>shard(片) --> Replica Set(副本) --> Data(数据)
宏观的维度(你能看到的)
Field(字段) --> Document(文档) --> Collection(集合) --> DataBase(数据库)。
MongoDB服务器环境基本配置
MongoDB命令怎么学?
记住用help。有些人,自认为很聪明,他就回去猜(就会按自己的习惯去猜)
直接drop(),就这样没有了,不靠谱。
1、有事没事,看第一手文档,官方文档
2、当你走投无路的时候记得用help(救命)
3、让认为自己聪明,锻炼猜的能力,猜出个80%左右
- 用户手机注册验证码存取适合用mongo吗?还是redis?
建议用Seesion,用Redis过时时间,不推荐用MongoDB
MongoDB应用场景
系统操作日志 可以的
那什么情况下适合mongo:
不规则日志:ELK, Log4J INFO,ERROR,WARN,DEBUG(字符串?)
Pattern,用正则去解析字符串,不止一个正则,
每一种日志格式都要编写一个正则去匹配
既然用正则麻烦,为什么还用ELK存储日志
你的系统已经平稳运行N年了(.Net,php、Java)
适合mongoDB:
规则日志:MongoDB,结构化的整理,
用户行为日志 operationTime creator type target
Timline,调用链路 invoker Time targetMethod args returnVal throws
持续增量(id + UpdateTime)
文件存储:GirdFS(文件存储系统)
不适合Reids:数据需要持久性的而且有一定的依赖性
适合Redis:数据会设置时效
分布式锁
用户登录token
数据库缓存中间件
MongoDB(GridFS)、Hadoop、HBase对于数据存储得使用场景选择吗?
定位:
MongoDB,为一个结构化的缓存,由于设计原理不同,数据量是一定的瓶颈的。
HBase ,基于列簇扩展性,高可用程度会更加灵活,数量级和MongoDB也是有很大差异的。
HBase 通常会跟大数据联系在一起
MongoDB 顶多算是一个日志数据库,文件存储系统
Mongo怎么持久化的?
持久化都是用文件的形式存储,其实任何数据库都是用文件实现持久化的。
为什么要手写?
1、结合业务场景,需要手写,解放 双手。
2、我今天在课堂手写,告诉大家实现思想及原理。
(以便于大家以后装B成功)
3、更好地监控、统一管理和维护(可控性更强)。
以上是关于MongDB使用与原理看这篇就够了的主要内容,如果未能解决你的问题,请参考以下文章