NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。

在现代的计算系统上每天网络上都会产生庞大的数据量。

这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。

通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。

NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

CAP定理(CAP theorem)

在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)

  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)

  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。

  • CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。

  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

    wKioL1cSbFrzHTU_AADZyzXdI0g456.jpg

NoSQL的优点/缺点

优点:

  • - 高可扩展性

  • - 分布式计算

  • - 低成本

  • - 架构的灵活性,半结构化数据

  • - 没有复杂的关系

缺点:

  • - 没有标准化

  • - 有限的查询功能(到目前为止)

  • - 最终一致是不直观的程序

==========================================================================================

mongodb yum源

[mongodb-org-3.2]

name=MongoDB 

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

(1)安装

# yum install mongodb-org

 # service mongod start

(2)常用命令

help

db.help()

db.mycoll.help()

db.stats()    //数据库状态

db.serverStatus()   //mongodb 数据库服务器状态

show dbs                

show collections

db.getCollectionNames()

wKiom1cTlomBYahnAAESzVjsrkg732.jpg


(3)查找命令

find() 命令:

    $gt    //大于等于             语法:{条件:{$gt : 值}}

     $get //大于等于

     $lt    //小于

     $lte // 小于等于

     $ne   // 不等于

     $in      // 在给定列表中,列表用中括号。

    $nin      //不在给定列表中

wKiom1cTmovh1zO-AAJNQTexBQc673.jpg

 组合条件

$or :或运算

$and: 与运算

$not: 非运算

$nor:反运算。返回不符合条件的所有文档

db.st.find({$or:[{age:{in:[20]}},{age:{$nin:[40]}}]})


元素查询:根据文档中是否存在指定的字段查询

$exists:

wKioL1cTodLimcqeAAJjrTHqZLw954.jpg

$mod:取模预算

$type : 返回指的字段的值的类型为指定的文档,语法{field:{$type:<BSON type>}}


4:更新操作:

db.mycoll.update()

   $set:修改字段的值为指定的值,db.st.update({name:"tom"},{$set: {age:40}})

   $ unset:删除指定字段的值,

   $ rename: 更改字段名

   $inc

5:删除操作:

db.st.remove({gender:"M"})