详解MongDB数据库

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行

逻辑运算

逻辑运算一般用于连接多个选择条件,

$or:或运算,格式:{$or:[{条件1},{条件2}]}

$and:与运算

$not:非运算

$nor:反运算

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

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

元素运算

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

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

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

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

原文地址:https://www.cnblogs.com/linux-s/p/11290169.html

时间: 2024-10-16 08:04:45

详解MongDB数据库的相关文章

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

这个系列大致想跟大家分享以下篇章(我会持续更新的(^ω^)): 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4.mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域 5.mongo 3.4分片集群系列之五:详解平衡器 6.mongo 3.4分片集群系列之六:详解配置数据库 7.mongo 3.4分片集群系列之七:配置数

一篇文章详解NOsql数据库Redis

一图详解DB的分支产品osql数据库介绍 是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能. 专注于key-value查询的redis.memcached.ttserver 解决以下问题: 1)对数据库的高并发读写需求2)大数据的高效存储和访问需求3)高可扩展性和高可用性的需求Nosql数据库的应用环境 1)数据模型比较简单2)需要灵活性更强的IT系统3)对数据库的性能要求较高4)不需要高度数据

详解MariaDB数据库的事务

1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句中已经执行的语句会回滚到这组SQL语句执行之前的状态. 事务处理,可以确保非事务性单元的多个操作都能成功完成,否则不会更新数据资源. 数据库默认事务是自动提交的, 也就是发一条 sql 它就执行一条.如果想多条 sql 放在一个事务中执行,则需要使用事务进行处理. 当我们开启一个事务,并且没有提交,

[数据库事务与锁]详解四: 数据库的锁机制

注明: 本文转载自http://www.hollischuang.com/archives/898 数据库的读现象浅析中介绍过,在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念. 并发控制 在计算机科学,特别是程序设计.操作系统.多处理机和数据库等领域,并发控制(Concurrency control)是确保及时纠正由并发操作导致的错误的一种机制. 数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存

[数据库事务与锁]详解二: 数据库的读现象浅析

注明: 本文转载自http://www.hollischuang.com/archives/900 “读现象”是多个事务并发执行时,在读取数据方面可能碰到的状况.先了解它们有助于理解各隔离级别的含义.其中包括脏读.不可重复读和幻读. 脏读 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的. 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交(commit)到

详解NoSQL数据库使用实例

一.NoSQL基础知识 1.关于NoSQL 在"NoSQL"一词,实际上是一个叫Racker的同事创造的,当约翰埃文斯埃里克要组织一次活动来讨论开源的分布式数据库.这个名称和概念都由此而来. 有些人反对NoSQL术语,因为它听起来像我们定义自己是什么.在一定程度,但长期仍然是有价值的,因为当一个关系数据库是唯一的工具,你知道,每一个问题,看起来像一个大拇指. NoSQL是让人们知道有其他选择哪里.但我们并不反对关系数据库,因为当这确实是工作的最佳工具. 一个与NoSQL名称真正关注的是

5 详解MySQL数据库之更新语句

用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的 SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之 意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE.在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句. 一.INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据.这两条语句的语法类似.它们的主要区别是如何处理重复的数据

【转】详解:oracle10G 数据库名、实例名、ORACLE_SID

[转载] 数据库名.实例名.数据库域名.全局数据库名.服务名 ,这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样.他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名.在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中.格式如下:DB_NAME=myorcl...在创建数据库时就应考虑好数据库名

【自考】数据库系统原理(二)——详解(数据库设计和ER模型)

万事万物都有一个生存周期,当然数据库系统也不例外! 数据库设计和ER模型这一章主要是依据数据库系统生存周期,对其中的设计阶段展开来进行讲解的. 我们先来看看数据库系统的生存周期: 如图所示,数据库系统生存周期划分为五个阶段:规划,需求分析,设计,实现,运行维护.其中设计阶段包括,概念,逻辑,物理三个方面的设计. 后面两节的内容主要是针对设计阶段的概念设计和逻辑设计以及从概念设计到逻辑设计的转换来展开的. 一.概念设计(ER模型)    第一章里讲过了数据抽象的四个模型:概念数据模型,逻辑数据模型