NoSQL

若杀死进程应使用pkill

数据设计模式:分布式、非关系型、不提供ACID

特性:简单数据模型、源数据和应用数据分离、弱一致性

优势:

避免不必要的复杂性

高吞吐量,

高 水平扩展能力和低端硬件集群

不使用对象-关系映射

缺点:

不支持ACID

功能过于简单

没有统一的数据查询模型

特点:

处理差大量的数据

运行再便宜的pc服务器集群上

击碎了性能瓶颈

使用场景:

1、对数据并发读写

2、对海量数据的高效率存储与访问

3、对数据的高可扩展性和高可用性(分布式)

NOSQL的数据存储模型

键值模型

数据模型:key-value存储

查找速度快

缺点:数据无结构,通常被当做字符串或二进制数据

应用场景:内容缓存

实例:redis、Dynmo

列式模型

数据模型:数据按列存储,将一列数据存在一起

优点:查找迅速,可扩展性强、易于实现分布式

缺点:功能相对于SQL有限

应用场景:分布式文件系统或分布式存储

实例:Bigtables、Cassandra、HBase、Hypertable

文档模型

数据模型:与键值模型相似,value指向结构化数据;

优点:数据格式不严格,无需定义事先定义结构

缺点:查新性能不高,缺乏统一查询语法

应用场景:web应用,

实例:MongoDB、CouchDB

图式模型

数据模型:图结构模型

优点:利用图结构相关算法提高性能,并是特殊场景应用需求

缺点:难以实现分布式、功能有限

应用场景:社交网站、推荐系统、关系图谱

实例:Neo4J

MongoDB

管理端口:28017    服务端口:27017

特性

1、基于文档数据库系统(JSON、BSON半结构化数据/)

2、保证其性能

C++研发

支持各种索引

不支持事务,

操作是在内存中进行(延迟写操作)

3、支持扩展性

支持复制

4、支持基于文档的查询

5、支持使用数据的分组集合操作

6、支持网格文件系统(GridFS)

7、支持地理位置空间索引

8、支持动态查询,查询的性能剖析

9、基于复制进行故障转移,通过选举协议选举。自动故障转移

适用场景

1、web网站

2、缓存

3、海量存储

4、高可扩展性

5、应用程序编程环境中

数据库模型

面向collection(集合)的数据库

使用数据库:但数据库无需创建

每一个文档相当于一个mysql的行,多个文档组合起来相当于一个集合,相当于mysql的集合

集合无需事先定义

基于C/S架构:服务器端mongod,客户端mongo

安装

1、在官网上可以下载MongoDB rpm包的yum源:www.mongodb.com

yum安装: yum  install  -y  mongodb-org

2、创建用户:mongod,并且创建存放数据文件的文件夹mkdir/mongodb/data,并给这个文件夹更改属主属组。

2.1、更改配置文件中的数据文件存放位置(/etc/mongod.conf):dbpath=/mongodb/data

2.2、开启httpinterface=true这一项,使mongodb开启28017端口,这是一个管理端口,可以通过浏览器进行访问。

3、启动mongod:service   mongod  start

客户端命令

mongo      选项      数据库地址             //登录数据库

--host     //指定主机

-u/-p      //指定账号密码

提示:大多是mongodb默认不认证,所以直接输入命令:mongo可以直接连上本地数据库。

默认打开数据库为test

show dbs    //查看当前数据库

show  users   //显示用户

show   profile   //显示性能剖析

show    logs   //显示日志文件

show     log   日志名   // 显示日志的内容

use      数据库名     // 设置默认数据库,mongoDB不用创建数据库,在不往数据库中插入数据之前是不会创建数据库的

show   collections   //查看集合

db.collection名称 .insert ({name : "hhj"})   //插入数据

db.collection名称.find().limit(3)    //查看collection中的数据 ,并只显示前三行

db.collection名称.stats()      //查看collection状态

db. collection名称.drop()      //删除collection

db.sun.count()    //统计文档个数

基本操作

查询:

db.coll名.find (

{age: { $gt: 18} },       -->查询标准

{ name:1,  address:1}   -->显示字段

).limit(5)      -->只显示前5个符合条件的

插入:

db.coll名.insert (

name: "sue",

age: 26,

status: "A",

groups : [ "sd" , "wd" ]

修改:

db.coll名.update(

{ age: {$ gt:15 } },    -->查询条件,字段加值

{ $set: { status: "A"} },    -->要改的字段及其值

{multi: true }        -->默认只改变第一个符合条件的行。设为true,则改变所有符合条件的行。

删除:

db.coll名.remove (

{  status: "D "}   -->删除标准

)

高级操作

定义循环添加内容:

for (i=1;i<=100;i++)        db.sun.insert ( { name :"User"+i,age:i,Gender:"M" } )

定义变量i,从1到100     插入数据            +i是字符引用变量i。

find用法

比较运算

$gt:挑选指定字段大于指定值的文档,格式:{字段:($gt:值}}

$gte:大于等于

$in:等于

$lt:小于

$lte:小于等于

$ne:不等于

$nin:不存在

例: db.sun.find({age: {$lte: 30}},{name:1,age:1})  //显示年龄小于等于30,只显示name与age行

,小于80

例:db.sun.find({$and:[{age:{$gt:61}},{age:{$lt:80}}]},{name:1})  //只显示name行,大于61,小于80

元素运算

根据文档中是否存在某字段等条件来挑选文档,语法格式:{$exists:  boo},boo为true为返回存在指定字段的文档,为false则返回不存在指定字段的文档。

$exists:根据指定字段的存在性挑选文档

$mod:将指定字段的值进行取膜运算

$type:返回指定字段的值类型为指定类型的文档

详解MongDB数据库的更多相关文章

  1. mongo 3.4分片集群系列之六:详解配置数据库

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  2. [转帖]详解oracle数据库唯一主键SYS_GUID()

    详解oracle数据库唯一主键SYS_GUID() https://www.toutiao.com/i6728736163407856139/ 其实 需要注意 这里满不能截取 因为截取了 就不一定唯一 ...

  3. 详解MariaDB数据库的事务

    1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...

  4. 详解MariaDB数据库的触发器

    1.什么是触发器 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行 它比数据库本身标准的功能有更精细和更复杂的数据控制能力 2.触发器的作用: 2.1 安全性 可以基于数据库的 ...

  5. 详解MariaDB数据库的存储过程

    1.什么是存储过程 很多时候,SQL语句都是针对一个或多个表的单条语句.但是也有时候有的查询语句需要进行多次联表查询才能完成,此时就需要用到存储过程了. 存储过程(Stored Procedure)是 ...

  6. 详解MariaDB数据库的外键约束

    1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...

  7. 详解MariaDB数据库的索引

    1.什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 更通俗的说,数据库索引好比是一本书前面的目录,在查找内容之前可以先在 ...

  8. 新手详解JAVA+数据库+JSP完成简单页面

    本篇以数据库添加为例(本例中数据库名为“xinxi”表单名字为“stud”) 准备---实体层: package entity; public class Student { private Stri ...

  9. MySQL Replication 详解MySQL数据库设置主从同步的方法

    MySQL同步的流程大致如下:  1.主服务器(master)将变更事件(更新.删除.表结构改变等等)写入二进制日志(master log). 2.从服务器(slave)的IO线程从主服务器(binl ...

随机推荐

  1. logistic 回归(线性和非线性)

    一:线性logistic 回归 代码如下: import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  2. 自己整理的模拟爬虫的user-agent

    自己经常用的一些爬虫用的user-agent头部 This XML file does not appear to have any style information associated with ...

  3. 《滴滴自研分布式 NoSQL 数据库 Fusion 的演进之路》

    SSD:采用闪存: 读的速度很快:写入数据时,因为需要通过加压的方式对存储单元进行电子填充,所以速度略慢:擦除速度最慢,擦除块的时间在ms级.在使用SSD的时,需要考虑到SSD的读写不平衡的特性. 滴 ...

  4. linux 下安装 python ngix 项目发布流程

    1.安装python #1.安装python3.7所需要的依赖包yum -y groupinstall "Development tools"yum -y install zlib ...

  5. JeeSite | 数据权限应用

    中午吃饭时看了一下陆毅版的<三国>,刚好看的是蜀军缺粮,诸葛亮让王平去劫司马懿的粮.司马懿看蜀军用木牛流马运量很方便,就抢了蜀军的木牛流马仿制了一批,结果司马懿用它运粮时,被王平冒充司马懿 ...

  6. vue项目打包之后样式错乱问题,如何处理

    最近公司做的这个项目,要大量修改element里面的css样式,所以项目打包之后 会出现样式和本地开发的时候样式有很多不一样,原因可能是css加载顺序有问题,样式被覆改了. 所以在mian.js里面这 ...

  7. 我在生产项目里是如何使用Redis发布订阅的?(一)使用场景

    转载请注明出处! 导语 Redis是我们很常用的一款nosql数据库产品,我们通常会用Redis来配合关系型数据库一起使用,弥补关系型数据库的不足. 其中,Redis的发布订阅功能也是它的一大亮点.虽 ...

  8. 面试官:说说Mysql数据库分库分表,并且会有哪些问题?

    之前一篇文章已经谈到了数据库集群之主从集群也就是读写分离,也提到了读写分离其实只是分担了访问的压力,但是存储的压力没有解决. 存储的压力说白了就是随着系统的演化,需求的增加,可能表的数量会逐渐增多,比 ...

  9. Nginx自建SSL证书部署HTTPS网站

    一.创建SSL相关证书 1.安装Nginx(这里为了测试使用yum安装,实际看具体情况) [root@localhost ~]# yum install nginx -y #默认yum安装已经支持SS ...

  10. Zabbix 监控阿里云RDS

    简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ...