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. 在Rust中,cargo使用国内镜像源

    一个编程语言依赖包管理的普通问题. cargo解决得比较优雅. 一,新建$HOME/.cargo/config文件 [source.crates-io] registry = "https: ...

  2. 接口是用get还是post,如何选择?

    为了保证信息安全性,注册.登录等操作通常都会使用POST请求,GET请求一般用来获取信息 GET与POST的区别可以参考下方链接 https://www.cnblogs.com/hyddd/archi ...

  3. 经典损失函数:交叉熵(附tensorflow)

    每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...

  4. LeetCode 62. Unique Paths不同路径 (C++/Java)

    题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...

  5. wafer2的几个简单示例

    如何快速新建路由 服务端 Demo 采用 Koa.js 框架编写,腾讯云基于 Koa 对上层进行一个简单的封装,方便你快速的添加新建路由 只需要在 controllers 目录下新建一个文件,例如为  ...

  6. A1010 Radix (25 分)

    一.技术总结 首先得写一个进制转换函数convert(),函数输入参数是字符串str和需要转化的进制(使用long long数据类型).函数内部知识,使用函数迭代器,即auto it = n.rbeg ...

  7. 深入理解Linux内核 学习笔记(8)

    第八章 系统调用 API定义了一个给定的服务:系统调用是通过软中断向内核发出一个明确的请求. API可能不调用系统调用,也可能调用多个系统调用. Linux系统调用必须通过执行int 0x80,系统调 ...

  8. FileSystemResource 和 ClassPathResource 有何区别

    在FileSystemResource 中需要给出spring-config.xml文件在你项目中的相对路径或者绝对路径.在ClassPathResource中spring会在ClassPath中自动 ...

  9. 转载-Qualcomm MSM8953启动流程:PBL-SBL1-(bootloader)LK-Android

    文章转载链接: https://blog.csdn.net/RadianceBlau/article/details/73229005 对于嵌入式工程师了解芯片启动过程是十分有必要的,在分析.调试各种 ...

  10. 使用 jQuery.TypeAhead 让文本框自动完成 (一)(最简单的用法)

    项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...