设为首页 收藏本站
查看: 960|回复: 0

[经验分享] 分布式文件存储的数据库——Mongodb

[复制链接]

尚未签到

发表于 2015-7-6 07:43:33 | 显示全部楼层 |阅读模式
什么是mongodb
  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。   
  MongoDB是一个介于关系数据库和 非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
mongodb的几大优势
  MongoDB是面向文档的数据库,不是关系型数据库。
  1、MongoDB有丰富的数据模型,基本的思路就是将原来“行”的概念换成更加灵活的“文档”模型。一条记录可以表示非常复杂的层次关系。
  2、非常容易扩展。面对数据量的不断上涨,通常有两种方案,一种是购买更好的硬件,别一种是分散数据,进行分布式的扩展,前者有着非常大的缺点,因为硬件通常是有物理极限的,当达到极限以后,处理能力就不可能再进行扩展了。所以建议的方式是使用集群进行扩展。MongoDB所采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据。它还可以平衡集群的数据和负载,自动重排文档。
  3、丰富的功能。包括索引、存储JavaScript、聚合、固定集合、文件存储等。
  4、卓越的性能。
  5、方便的管理,除了启动数据库服务器之外,几乎没有什么必要的管理操作。管理集群只需要知道有新增加的节点,就会自动集成和配置新节点。
mongodb的几个基本概念
  文档
  文档是MongoDB中数据的基本单元,非常类似于关系数据库管理系统中的行。
  文档是MongoDB的核心概念。多个键及其关联的值有序地放置在一起便是文档。
  MongoDB以类JSON的格式来表示文档,例如:
  {"greeting":"hello mongodb!"}
  以键值形式存储,值可以是不同的类型,比如字符串,整型等。
  集合

  集合就是一组文档。类似于关系型数据库中的表。
  我们可以使用任意的UTF-8字符串来命名集合。
  为了使组织结构更好些,我们可以使用子集合。组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合。
  数据库

  MongoDB中多个文档组成集合,同样多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。
  数据库名可以是任意UTF-8字符串。
  除了一些规则外,有一些数据库名是保留的,不能作为数据库名,包括“admin”、“local”、"config"。
32位win7下用虚机安装64位ubuntu
  如果是32位的ubuntu安装起来很顺利没什么问题,但是到了安装64位ubuntu的时候出问题了。
  报错如下:
  This kernel requires an x86-64 CPU, but only detected an i686 CPU.
Unable to boot - please use a kernel appropriate for your CPU.
  解决办法:
  先下载一个cpu-z,我下载的地址是
  http://www.xiazaiba.com/html/160.html
  打开并且查看一下

  如果显示支持64位那么就应该是bios里边没有进行设置的原因了,重启电脑进入bios
  找到 CPU ==> Intel(R) Virtualization Technology ==> 设置为 Enabled
  注意:这之后要冷启动才能生效。
  然后进行系统重新安装,一切正常。
启动mongodb
  首先是下载和安装,下载就到mongodb的官方网站上,在baidu或者google输一下,基本上第一个就是,我的下载地址是:
  http://www.mongodb.org/downloads
  因为使用的是64位的ubuntu,所以下载了64-bit的mongodb,下载后解压缩。
  到解压后的bin目录里执行./mongod

  提示路径不存在,需要创建路径,执行mkdir -p /data/db,并授予权限。
  然后重新执行./mongod,正常启动。
  在浏览器中输入
  http://localhost:28017
  可以获得数据库的管理信息。

shell中的CRUD
  当上面的启动完成之后可以就可以使用shell了,运行./mongo,出现如下界面

  输入db可以看到,默认连到test库上

  mongodb自带了一个JavaScript Shell,可以通过命令行与mongodb实例进行交互。

  可以直接利用javascript进行交互,也可以利用javascript中的函数和标准库。
  增加

  假设插入一条博客的信息有标题、文章内容和日期。

  也就是说插入了一个post文件到blog集合中。
  查看一下是否插入成功

  可以看到查询的记录,其中_id是自动加入的记录。
  读取

  可以使用findOne()查看其中的一个文档。
上面说到的find()是查询所有记录的意思。find和findOne都可以接受文档形式的查询条件。

  更新

  更新操作其实就是update函数。
  新增加备注

  执行更新,需要加上条件

  查看结果

  删除

  删除就是指remove函数。

  删除完文档post之后,查看blog集合已经没有相应的post文档了。
操作的明细信息
  关于mongodb的明细操作在[中文版] MongoDB权威指南中都已经有了非常详细的说明,有需要的,可以到地址:
  http://code.google.com/p/mycloub/downloads/list
  进行下载并且深入研究。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83541-1-1.html 上篇帖子: MongoDB聚合管道 下篇帖子: MongoDB 分片
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表