MongoDB简介

本文深入探讨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)下的安装启动步骤

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)下的安装启动步骤

 

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值