NoSQLmysql
若杀死进程应使用pkillweb
数据设计模式:分布式、非关系型、不提供ACIDredis
特性:简单数据模型、源数据和应用数据分离、弱一致性算法
优点:sql
避免没必要要的复杂性mongodb
高吞吐量,数据库
高 水平扩展能力和低端硬件集群编程
不使用对象-关系映射设计模式
缺点:浏览器
不支持ACID
功能过于简单
没有统一的数据查询模型
特色:
处理差大量的数据
运行再便宜的pc服务器集群上
击碎了性能瓶颈
使用场景:
一、对数据并发读写
二、对海量数据的高效率存储与访问
三、对数据的高可扩展性和高可用性(分布式)
NOSQL的数据存储模型
键值模型
数据模型:key-value存储
查找速度快
缺点:数据无结构,一般被当作字符串或二进制数据
应用场景:内容缓存
实例:redis、Dynmo
列式模型
数据模型:数据按列存储,将一列数据存在一块儿
优势:查找迅速,可扩展性强、易于实现分布式
缺点:功能相对于SQL有限
应用场景:分布式文件系统或分布式存储
实例:Bigtables、Cassandra、HBase、Hypertable
文档模型
数据模型:与键值模型类似,value指向结构化数据;
优势:数据格式不严格,无需定义事先定义结构
缺点:查新性能不高,缺少统一查询语法
应用场景:web应用,
实例:MongoDB、CouchDB
图式模型
数据模型:图结构模型
优势:利用图结构相关算法提升性能,并是特殊场景应用需求
缺点:难以实现分布式、功能有限
应用场景:社交网站、推荐系统、关系图谱
实例:Neo4J
MongoDB
管理端口:28017 服务端口:27017
特性
一、基于文档数据库系统(JSON、BSON半结构化数据/)
二、保证其性能
C++研发
支持各类索引
不支持事务,
操做是在内存中进行(延迟写操做)
三、支持扩展性
支持复制
四、支持基于文档的查询
五、支持使用数据的分组集合操做
六、支持网格文件系统(GridFS)
七、支持地理位置空间索引
八、支持动态查询,查询的性能剖析
九、基于复制进行故障转移,经过选举协议选举。自动故障转移
适用场景
一、web网站
二、缓存
三、海量存储
四、高可扩展性
五、应用程序编程环境中
数据库模型
面向collection(集合)的数据库
使用数据库:但数据库无需建立
每个文档至关于一个mysql的行,多个文档组合起来至关于一个集合,至关于mysql的集合
集合无需事先定义
基于C/S架构:服务器端mongod,客户端mongo
安装
一、在官网上能够下载MongoDB rpm包的yum源:www.mongodb.com
yum安装: yum install -y mongodb-org
二、建立用户:mongod,而且建立存放数据文件的文件夹mkdir/mongodb/data,并给这个文件夹更改属主属组。
2.一、更改配置文件中的数据文件存放位置(/etc/mongod.conf):dbpath=/mongodb/data
2.二、开启httpinterface=true这一项,使mongodb开启28017端口,这是一个管理端口,能够经过浏览器进行访问。
三、启动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:返回指定字段的值类型为指定类型的文档