当前位置:首页 » 数据仓库 » mongodb数据库介绍
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mongodb数据库介绍

发布时间: 2022-11-28 06:34:40

‘壹’ MongoDB挑战传统数据库:非结构化数据库的迭新不容小觑

相比甲骨文中国在中国市场的裁员风波,同为数据库服务的MongoDB显得更为乐观。“MongoDB是中国开发者最喜欢用的一个数据库。”MongoDB全球渠道及亚太区销售高级副总裁Alan Chhabra带着一点自信和骄傲在媒体面前宣称。

中国企业的数字化转型正进入关键期,在打造开放、高效、灵活、共享的云计算基础设施的同时,数据库的更新换代也被提上了日程。

日前,非结构化数据库平台提供商MongoDB在上海举办用户大会,MongoDB全球渠道及亚太区销售高级副总裁Alan Chhabra接受了亿欧企业服务频道的采访, 并针对去年修改开源协议,在SSPL的不同许可机制下授权服务器软件的争议以及其他疑问作出回应。

数据库的本质是解决数据的存储和管理问题。 Alan Chhabra表示,对企业发展具有战略意义的数据库正在催生巨大的市场。

在这些潜力颇大的数据库中,市场上目前存在着的是关系型的传统数据库和以Mongo DB为代表的非关联式新型数据库。传统数据库比较典型的是甲骨文旗下的Oracle数据库、IBM推出的大数据平台Hadoop和Stream Computing、微软的sql Server、SAP以及EMC Greenplum。 他们的主要差别在于数据库的结构化和非结构化。

结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据,存储和排列很有规律,这对查询和修改等操作很有帮助,但扩展性和灵活性欠佳。 非结构化数据库就是各种文档、图片、视频/音频等没有固定结构的数据,一般直接整体进行存储为二进制的数据格式。 目前涵盖分布式数据库、图数据库、流数据库、时空数据库和众包数据库等多个领域。

MongoDB是文档型的非结构化新型数据库,Alan Chhabra表示, 与传统数据库相比,更能满足用户数据存储量大、计算灵活的需求。“在某些客户某些案例上,我们已经取代了传统数据库,比如甲骨文。”

当前, 软件对于商业模式的改变、开发人员地位的提高,以及企业向云端迁移的趋势 都让数据服务公司的发展得到了助力。但从毕马威会计事务所对首席信息官的调查结果来看, 88%的首席信息官认为他们未能从数字化战略中充分获益;82%的首席信息官认为其所在机构在利用技术推动业务发展方面并非“卓有成效”。 也就是说, 大多数公司的数字化战略是以失败告终的。

在此背景下,更加灵活、性能更加强大的新型数据库在一些领域获得了试验田丰收,并且可以看到,随着客户数据需求的繁杂程度的日益增加,传统数据库也在自我革新,以迎头赶上数据浪潮的大变革。

MongoDB成立于2007年,2017年在纳斯达克上市。最初,MongoDB是一项面向技术爱好者的技术,如今已成为一项企业级的业务关键技术。通过不断开发数据库即服务(Database-as-a-Service)产品,积极拥抱云计算,MongoDB在过去十年里,为开发人员提供了处理数据的方法。正因如此,它也成了企业数字化转型战略的一个关键部分。

MongoDB提供的产品主要包括MongoDB云服务MongoDB Atlas、MongoDB Mobile、MongoDB企业版和MongoDB Stitch等十余个相关产品。Alan Chhabra表示,产品包括了 开源版、付费版和云版。

2018 年 10 月,MongoDB宣布其开源许可证将从GNU AGPLv3切换到SSPL,新许可证将适用于新版本的MongoDB Community Server以及打过补丁的旧版本,这一举动引发了行业热议。基于GNU AGPLv3协议,企业可以将MongoDB作为公共服务但这需要企业开源自己的软件或是获得MongoDB的商业授权,事实却是MongoDB发现许多企业正在违反协议“疯狂试探”甚至已经违反协议。 SSPL( Server Side Public License)顾名思义,要求使用者必须得到服务器端公共许可证,这一协议会进一步约束商业公司使用MongoDB服务。

Alan Chhabra向亿欧解释, SSPL 针对的是提供MongoDB托管服务的云服务厂商。 也就是说,如果不是云服务厂商,没有公然售卖MongoDB产品,而只是作为应用后台数据库来使用的话,那么无论你是电商、物联网、金融、社交、 游戏 、移动应用等等,一概都不会有任何影响。 “MongoDB的宗旨还是为了始终支持并保护创新开放。”

但此开源协议的修改明显带来了市场用户的“掉粉”,比如Linux 社区的接连“弃用”,以及AWS 、IBM、微软推出了兼容MongoDB的相关产品来服务用户。

数据库开源的商业变现与创新形成的矛盾,目前似乎还尚未找到解决方案。

Alan Chhabra在大会上也透露了MongoDB的未来计划, 即将基于智能运营数据平台和下一代基础架构、文化、方法论和安全,推动原有系统的现代化、数据即服务、云数据策略、业务敏捷性,进而帮助客户实现以数据驱动的数字化转型。

针对MongoDB在中国的发展情况, Alan Chhabra表示,公司将以创新立足,持续引领数据库技术发展潮流,与合作伙伴携手助力中国企业的数字化转型。

MongoDB北亚区副总裁苏玉龙认为:“中国是数据大国,而数据就是未来的石油。如何利用好数据,让数据石油助力中国企业腾飞是MongoDB希望在中国达成的事情。随着中国企业数字化转型逐渐走向深入,MongoDB数据库的价值得到不断释放。”

本文作者龚晨霞,微信Gcx847076575,欢迎关注企业服务和产业互联网的朋友加微信交流。

‘贰’ mongodb使用场景是什么

使用场景:

(1)网站数据:MongoDB适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

(2)缓存:由于性能很高,MongoDB也适合作为信息基础设施的缓存层。在系统重启之后,由MongoDB搭建的持久化缓存层可以避免下层的数据源过载。

(3)大尺寸,低价值的数据。

(4)高伸缩性的场景:MongoDB适合由数十或数百台服务器组成的数据库。

(5)用于对象及JSON数据的存储:MongoDB的BSON数据格式适合文档化格式的存储及查询。

mongodb设计特点:

(1)面向集合存储,容易存储对象类型的数据。在MongoDB 中数据被分组存储在集合中,集合类似RDBMS 中的表,一个集合中可以存储无限多的文档。

(2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。

(3)支持完全索引,可以在任意属性上建立索引,包含内部对象。MongoDB的索引和RDBMS 的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。

(4)支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。

(5)强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapRece 完成复杂的聚合任务。

‘叁’ Mongodb和mysql的区别

Mongodb和mysql的区别

1.Mongodb简介及优缺点分析

Mongodb是非关系型数据库(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

存储方式:虚拟内存+持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:事件的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优点:

快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!


缺点:

① mongodb不支持事务操作。

② mongodb占用空间过大。

③ 开发文档不是很完全,完善。


2.MySQL优缺点分析

优点:

在不同的引擎上有不同 的存储方式。

查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

开源数据库的份额在不断增加,mysql的份额页在持续增长。

缺点:

在海量数据处理的时候效率会显着变慢。

3.Mongodb和MySQL数据库的对比

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。


4.MongoDB常用语句

# 连接Mongo数据库,并设置数据存储地址

mongod.exe --dbpath "d:softwareMongoDBServer3.0data"

#-----------------------#1# 数据库

# 查看所有的数据库

show dbs

# 删除当前使用的数据库

db.dropDatabase()

# 使用这个数据库(只有插入数据后完成创建数据库)

use dbt

# 查看当前使用的数据库

db

db.getName()

# 查看当前数据库状态

db.stats()

# 修复当前数据库

db.repairDatabase()

# 从一个数据库复制到另一个数据库

db.Database("mydb", "temp", "127.0.0.1");

#-----------------------#2# 集合

# 查看当前数据库下所有的集合

show collections

show tables

# 创建名称为coll集合

db.createCollection('coll')

db.createCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可选参数

# 查看当前集合状态

db.coll.stats()

# 删除名称为coll集合

db.coll.drop()

#-----------------------#3# 集合数据

# 插入空数据并且直接创建名称为coll集合

db.coll.insert({})

# 插入一个或多个数据

db.coll.insert({name:'tom', age:22})

db.coll.insert([{name:'adam', age:10},{name:'john', age:23}])

# 添加数据(save方法可以修改相同id的数据)

db.coll.save({name:'allen'})

# 删除一个或所有的数据

db.coll.remove({name:'tom'})

db.coll.remove({})

# 删除符合条件的数据中的第一条

db.coll.remove({name:'tom'}, 1)

# 更改数据

db.coll.update({name:'tom', age:22}, {$set:{name:'tom', age:222}})

# 查看数据

db.coll.find()

# 查看一条数据

db.coll.findOne()

db.coll.find({}, {name:1, '_id':0}) # 1表示显示,0表示不显示(find默认显示_id)

# 格式化显示数据,使数据更加清晰明了

db.coll.find().pretty()

# 使用and,or查看数据

db.coll.find({name:'tom', age:22}) # 等同and使用

db.coll.find({$or:[{name:'tom'}, {age:21}]}) # or使用

# 操作符大于,小于,等于,不等于,大于不等于,小于不等于

db.coll.find({age: {$gt: 22}}) # 大于

db.coll.find({age: {$lt: 22}}) # 大于

db.coll.find({age: 22}) # 等于

db.coll.find({age: {$ne: 22}}) # 不等于

db.coll.find({age: {$gte: 22}}) # 大于等于

db.coll.find({age: {$lte: 22}}) # 小于等于

# 显示从skip之后limit个

db.coll.find().limit(2).skip(1)

#-----------------------# # 用户

# 3.x之后版本添加用户

use admin

db.createUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})

# 用户认证

db.auth("nu", "nu");

# 显示当前所有用户

show users;

db.system.users.find()

3.x版本删除用户

db.removeUser('nu') # 不推荐使用,已经废弃

db.dropUser("nu");

# 当前db版本

db.version();

# 当前db的链接机器地址和端口

db.getMongo();

# 备份到备份目录

mongomp

# 从备份目录恢复备份语句。

mongorestore


咱们下期见。

‘肆’ 使用mongodb数据库有哪些优势

下面是一个瑭锦TANJURD总结 MongoDB 优缺点的列表,希望对打算使用 MongoDB 的同学,能有一些作用:x0dx0a 优势:x0dx0a 快速!(当然,这和具体的应用方式有关,通常来说,它比一般的关系型数据库快5位左右。)x0dx0a 很高的可扩展性 _ 轻轻松松就可实现PB级的存储(但是可能我们并不需要PB级的存储,10TB可能就够了)x0dx0a 他有一个很好的 replication 模式 (replica sets)x0dx0a 有很完善的Java APIx0dx0a 他的存储格式是Json的,这对Java来说非常好处理,对javascirpt亦然。x0dx0a 运维起来非常方便,你不用专门为它安排一个管理员。x0dx0a 它有一个非常活跃的社区(我提出的一个bug在20分钟内就能得到修复。多谢Elliot)x0dx0a 他的版本控制非常清楚。x0dx0a MongoDB 背后的公司(10gen)已经准备好了明天在 MongoDB 上面的投入的资金了。x0dx0a 劣势x0dx0a 应用经验缺乏,我们都没有相关NoSQL 产品的使用经验。x0dx0a 项目相对来说还比较新。x0dx0a 和以往的存储相比,数据的关系性操作不再存在。

‘伍’ mongodb是什么类型的数据库

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

‘陆’ 《MongoDB实战》epub下载在线阅读,求百度网盘云资源

《MongoDB实战》([美] Kyle Banker)电子书网盘下载免费在线阅读

资源链接:

链接:https://pan..com/s/18MtkrdI1I-IoGav-0XC31Q

提取码:9utn

书名:MongoDB实战

作者:[美] Kyle Banker

译者:丁雪丰

豆瓣评分:8.1

出版社:人民邮电出版社

出版年份:2012-10

页数:244

内容简介:

内容简介:

MongoDB是为处理大数据而生的一款面向文档的数据库,由10gen公司开发和维护。本书作者Kyle Banker曾在该公司负责MongoDB驱动程序的维护,对各方面技术细节都了如指掌,本书也是在大量第一手资料的基础上形成的,其权威性毋庸置疑。

本书基于MongoDB 2.0+,全面系统地讲解了设计、实现、安装和维护MongoDB的各方面内容。全书分三部分,第一部分从基于文档的数据与传统关系型数据库的差别讲起,介绍了MongoDB的基本概念及安装使用。第二部分是一个实战式教程,结合示例讲解了MongoDB的CRUD操作,以及实现系统安全、灵活和高效的设计原则及模式。第三部分侧重数据库的维护和管理,深入到MongoDB背后的技术细节,给出了对管理员和开发者都极有价值的建议。

本书篇幅适中,内容深浅得当,文字通俗易懂,再配以直观形象的插图和贴近实战的代码示例,非常适合MongoDB学习者、开发人员及管理员学习参考。

本书内容:

MongoDB介绍及其优劣势

MongoDB的Shell界面

使用MongoDB的简单应用

如何通过以文档为中心的方式看待数据

编写查询,以MapRece方式聚合数据

更新和删除数据及相关性能考量

寻找和改进慢查询

MongoDB的复制与分片

MongoDB的监控、备份及恢复

作者简介:

作者介绍:

Kyle Banker 软件工程师,曾工作于10gen公司,负责维护Ruby及C语言的官方MongoDB驱动、领导MongoDB文档项目并开发培训课程,且为客户提供咨询、商业支持和培训;现任职于Snapjoy(为用户提供默认私有的在线照片备份和自动管理服务)。个人网站http://kylebanker.com/blog。

译者介绍:

丁雪丰 一线“攻城师”一枚,InfoQ中文站小编,满江红翻译组核心成员,常年混迹于各种社区,业余时间写作、翻译、汉化软件,《RESTful Web Services Cookbook中文版》、《Spring攻略》等多部书的译者。

‘柒’ mongodb数据库有哪些优势

1. 文档存储
数据存储以BSON/JSON文档,这对于Web应用程序有很大的意义。开发者API喜欢以JSON形式传输,这使得整个项目的数据表示可采用统一的模型。所有这一切都无需任何前期架构设计。

2. 可扩展性
MongoDB被用在一些规模庞大的环境中,FourSquare/Craiglist都在使用它。通过分片数据缩放处理理论上可实现更高的吞吐量。

3. 简单的复制
就像分片技术一样,MongoDB范围内复制过程同样简单好用,在副本机器上还有大量的复制选项。灵活的功能可满足用户应用的需求。

4. 易于查询
MongoDB以文档的形式存储数据,不支持事务和表连接。因此查询的编写、理解和优化都容易得多。简单查询设计思路不同于SQL模式,嵌入文档在特定的环境下可得到更好的查询,然而这需要先加入集合。如果需要执行多个请求到数据库则需要加入其到客户端。在MongoDB时ODM工具(如Doctrine2)将发挥自身的优势。

5. 安全性
由于MongoDB客户端生成的查询为BSON对象,而不是可以被解析的字符串,所以可降低受到SQL注入的攻击的危险。最常见的攻击类型为针对Web应用程序的攻击,在MongoDB上使用Doctrine2 ODMs 查询语言可减轻攻击风险。

6. 支持
用户在选择数据库时总是喜欢积极和充满活力的,这点非常重要。MongoDB在业界有非常大的影响力,用户也会定期的组织活动。MongoDB的标签在StackOverFlow是非常活跃的。你永远不会陷入困境,因为总有人与你讨论并解决问题。

7. 价格
MongoDB是免费的!

当然远不止这些优势,但是也有很多劣势。

‘捌’ mongodb和redis区别是什么

就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。这也是有道有理有根据的,

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,这一点在面试的时候很受用。《linux 就该这么学》

Mongodb与Redis应用指标对比

MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于
二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis
更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。