详解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行
,小于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数据库的更多相关文章
- mongo 3.4分片集群系列之六:详解配置数据库
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- [转帖]详解oracle数据库唯一主键SYS_GUID()
详解oracle数据库唯一主键SYS_GUID() https://www.toutiao.com/i6728736163407856139/ 其实 需要注意 这里满不能截取 因为截取了 就不一定唯一 ...
- 详解MariaDB数据库的事务
1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...
- 详解MariaDB数据库的触发器
1.什么是触发器 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行 它比数据库本身标准的功能有更精细和更复杂的数据控制能力 2.触发器的作用: 2.1 安全性 可以基于数据库的 ...
- 详解MariaDB数据库的存储过程
1.什么是存储过程 很多时候,SQL语句都是针对一个或多个表的单条语句.但是也有时候有的查询语句需要进行多次联表查询才能完成,此时就需要用到存储过程了. 存储过程(Stored Procedure)是 ...
- 详解MariaDB数据库的外键约束
1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
- 详解MariaDB数据库的索引
1.什么是索引 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 更通俗的说,数据库索引好比是一本书前面的目录,在查找内容之前可以先在 ...
- 新手详解JAVA+数据库+JSP完成简单页面
本篇以数据库添加为例(本例中数据库名为“xinxi”表单名字为“stud”) 准备---实体层: package entity; public class Student { private Stri ...
- MySQL Replication 详解MySQL数据库设置主从同步的方法
MySQL同步的流程大致如下: 1.主服务器(master)将变更事件(更新.删除.表结构改变等等)写入二进制日志(master log). 2.从服务器(slave)的IO线程从主服务器(binl ...
随机推荐
- 毕业设计代做,各种系统微服务项目ssm项目,员工管理系统,微信小程序,购物商城,二手商城系统,销售系统,等等
毕业设计代做,各种系统,微服务项目,ssm项目 小程序,商城等,期末作业等都可以,价格好说,长期接单, 有项目说明书,软件介绍相关文档,答辩的时候包过,知识点对接好,给你讲解等, 毕业设计代做,各种系 ...
- Python 基础排序算法
冒泡排序(bubble sort) 思路 以升序为例: 从第一个数开始向后两两对比,将大的数一直向后移动,直至最大的数移到最后,再找第二大的数 最好情况:O(n) 一般情况:O(n^2) 最坏情况:O ...
- jdbc工具类是多例的
一直以为他 是单例的, 以为创建个工具类就是为了单例, 节省效率 , 其实 是为了封装代码, 简洁 ! 还有重要一点 : 所欲工具类里面不要抛异常 要捕捉异常 !
- ESP8266 AT指令开发(基于STC89C52单片机): 测试下诱人的程序(51单片机,8266,MQTT远程通信控制)
前言 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, 简而言之: 51单片机+ESP8266用AT指令实现实现MQTT,(连接的本 ...
- [LOJ 6435][PKUSC 2018]星际穿越
[LOJ 6435][PKUSC 2018]星际穿越 题意 给定 \(n\) 个点, 每个点与 \([l_i,i-1]\) 之间的点建立有单位距离的双向边. \(q\) 组询问从 \(x\) 走到 \ ...
- mysql不是内部或外部命令--windows环境下报错的解决
安装Mysql后,当我们在cmd中敲入mysql时会出现‘Mysql’不是内部或外部命令,也不是可运行的程序或其处理文件. 处理: 我的电脑右键属性>高级系统设置>高级>环境变量&g ...
- Java 基础系列:不变性
1.1 定义 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修改其内容. ...
- ES6中有关数组的一些新操作
1.Array.isArray() 用于确定传递的值是否是一个 Array. Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); ...
- python threading ThreadPoolExecutor
线程池,为什么要使用线程池:1. 线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值2. 当一个线程完成的时候我们主线程能立即知道3. futures可以让多线程和多进程编码接口一致 获取 ...
- 云原生生态周报 Vol. 12 | K8s 1.16 API 重大变更
本文作者:源三.临石.张磊.莫源 业界要闻 1. K8s 1.16 将废弃一系列旧的 API 版本 影响面涉及 NetworkPolicy.PodSecurityPolicy.DaemonSet, D ...