NoSql数据库MongoDB系列(1)——MongoDB简介

1、NoSQL简介

    NoSQL(Not Only SQL ),意即“不只仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势愈加高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一律念无疑是一种全新的思惟的注入。 

  关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都同样,即便不是每条记录都须要全部的字段,但数据库会为每条数据分配全部的字段。而非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录能够有不同的键,每条记录能够根据须要增长一些本身的键值对,这样就不会局限于固定的结构,能够减小一些时间和空间的开销。javascript

(一)常见的NoSql(非关系型数据库)数据库java

CouchDB
Redis
MongoDB
Neo4j
HBase
BigTable
这里写图片描述sql

(二)NoSql数据库优缺点mongodb

一、优点方面:shell

简单的扩展
快速的读写
低廉的成本
灵活的数据模型数据库

二、不足方面:
不提供对SQL的支持
支持的特性不够丰富
现有的产品不够成熟编程

2、MongoDB和关系数据库的对比

3、MongoDB基本概念

(一)文档服务器

         文档是MongoDB的核心、基本数据单元,相似于JS中的JSON对象,由多个key-value构成,可是支持更多的数据类型。多个键以及相关的值有序的放置在一块儿即是文档。在大多数编程语言中都是使用多个key-value的形式,java中是map,Python中是字典,JavaScript中是对象。nosql

(二)集合编程语言

       集合就是一组文档,若是说文档相似于关系数据库中的行,那么集合就是表

       集合是无模式的(模式的概念参见模式的意义)。一个集合中的文档能够是任意类型的,也就是说文档是能够任意组合的。

问题:集合存在的意义

  • 虽然集合中能够保存任意类型的文档组合,可是若是不妥善的组织、分类文档的保存,那么不利于数据的分类管理。
  • 在一个存放多种不一样类型的集合里面查询特定类型的文档在速度上不划算,最好是每种类型文档分别存在不一样的集合中,加快查询速度。
  • 把同类数据放在同一个集合,保证数据聚合性。
  • 同时,同类的文档放在同一集合中能够提升索引的有效性。

一、集合的命名

  • 和key同样不能有空字符串
  • 不能以"system."开头,不能含有"$"
  • 一个集合的彻底限定名:数据库名.集合(子集合)名称,例如cms.blog.posts

二、子集合

在MangoDB中最经常使用的组织集合的方式就是子集合,也就是使用:命名空间名.集合名 来定义集合名称,这样作的目的只是为组织结构更好。

三、集合的访问

访问集合咱们通常使用db.集合名的方式,可是当集合的名称刚好是数据库属性名时,这种方式就没法获得集合,只能使用:db.getCollection('集合名')的方式获得集合。同时,因为JS中,x.y等价于x['y'],因此能够用后边一种方式访问数据。

(三)数据库

MangoDB中最基本的存储单元是文档,文档组成集合,集合组成数据库。一个MangoDB实例能够承载多个数据库,数据库之间彻底独立。通常状况下,一个应用对应一个数据库,相似于关系数据库中的外模式。

一、命名

数据库的名称最终会变成系统的文件名称。

  • 不能是空字符串
  • 不得含有空格、点、斜杠与反斜杠以及空字符串。
  • 应该所有小写
  • 最多64字节2

二、系统默认数据库

MangoDB系统中和传统的关系数据库同样都会有一些初始化的数据库保存数据库系统运行信息。

  • Admin

root库。一些特定的服务器端命令只能从这个库运行。

  • Local

local库中的集合永远都不会被复制,用于存储不许备分布式保存的、只保存在本地(单服务器)的集合。

  • Config

当MangoDB用于分片设置时,config库在内部使用,用于保存分片相关的配置信息。

4、MongoDB数据类型

5、MongoShell

mongoShell是用于与mongodb交互的工具,相似于navicat、sql/plus等数据库交互工具。因此mongoShell在启动前必须先启动mongodb(使用mongodbHome/bin/mongod启动mongodb实例)。而mongoshell其实就一个强大的javascript解释器(使用mongodbHome/bin/mongo启动mongoshell解释器)。能够再MongoShell中声明函数、调用JS标准库函数、声明变量等,进行JS开发。

(一)MongoShell中操做的简单说明

建立--insert

语法:数据库.集合.insert(文档)

说明:insert是将某些数据、文档插入到mongodb中,通常是以JS对象或者JS中的表示法来描述对象。

读取--find

语法:数据库.集合.find()/数据库.集合.findOne()

说明:find是将文档从数据库、集合中查找出来,能够接受查询文档形式的限定条件。

更新--update

语法:数据库.集合.update(目标更新文档的限定条件,新的文档)

说明:update用于将mongodb中的某个文档内容更新,接受两个参数,第一个是文档限定对象,第二个是新对象

删除--remove

语法:数据库.集合.remove([文档限定对象])

说明:remove用于删除文档,当remove没有参数的时候删除集合中全部的文档,若是有参数,那么删除参数限定的文档对象。

参考资料:《MongoDB权威指南》

相关文章
相关标签/搜索