专栏首页cloudskyme分布式文件存储的数据库——Mongodb

分布式文件存储的数据库——Mongodb

什么是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

进行下载并且深入研究。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关联规则挖掘综述

    本文介绍了关联规则挖掘的研究情况,提出了关联规则的分类方法,对一些典型算法进行了分析和评价,指出传统关联规则衡量标准的不足,归纳出关联规则的价值衡量方法,展望了...

    机器学习AI算法工程
  • 数据挖掘工程师笔试及答案

    2013百度校园招聘数据挖掘工程师 一、简答题(30分) 1、简述数据库操作的步骤(10分) 步骤:建立数据库连接、打开数据库连接、建立数据库命令、运行数据库命...

    机器学习AI算法工程
  • 数据库

    1.SQL执行的顺序 ? 2.NULL “空值” 和”NULL”的概念: 1:空值(‘’)是不占用空间的,判断空字符用 = ‘’ 或者 <> ‘’ 来进行处...

    Zephery
  • mvc 权限控制续——使用存储过程判断

    以前的随笔没有给出数据库,这里给出具体的数据库以及怎么使用存储过程来判断  下面是数据库: /****** Object: Table [dbo].[Reso...

    用户1177380
  • Mongodb 定时释放内存

    对于主要是写入的数据库,mongodb内存占满之后写入效率会变得不稳定 这个时候,你需要释放内存(可试用db.runCommand({closeAllDatab...

    用户1177380
  • Java中数据库连接池原理机制详解【面试+提高】

    Java中数据库连接池原理机制详解 【面试+提高】 连接池的基本工作原理 1、基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低...

    奋斗蒙
  • Entity Framework Core 2.0 入门

    LearnEf.Console依赖LearnEf.Domains和LearnEf.Data:

    solenovex
  • 开发 | 2017数据库大趋势:PostgreSQL最受关注

    AI科技评论消息,近日,国外知名 IT 技术媒体 Jaxenter 进行了数据库观点调查,对开发者眼中数据库领域最热门的话题、最热门的数据存储以及处理工具进行统...

    AI科技评论
  • 关于海量数据处理分析的经验总结

    笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面: 一、数据量过大,数据中什么情况都可能存在。如果说有10...

    机器学习AI算法工程
  • Java漫谈12

    上周聊完了Java中的String这种类型,这周我想聊聊Java中的集装箱——集合。当然,这篇也是Java基础漫谈系列的最后一篇文章。不过可能你会说不对啊,Ja...

    用户1335799

扫码关注云+社区

领取腾讯云代金券