MongoDB:

Is NoSQL(技术的实现,并非是一个特定的技术,与RMDS对立):Not only SQL

大数据问题:BigData,eg:同时访问几个页面,代码实现几个页面访问量的大小?

Four Systems:1、并行数据库:水平切分,分区查询

2、NoSQL数据库管理系统:非关系模型、分布式、不支持ACID数据库设计模式(ACID:指数据库事务正确执行的四个基本要素缩写,即 原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)

NoSQL特点:简单数据模型;元数据和数据分离;弱一致性;高吞吐量;高水平扩展能力和低端硬件集群

3.NewSQL数据库管理系统【include Nosql & ACID & SQL】

代理产品:Clustrix、GenieDB、ScalArc、ScaleDB、NimbusDB、Drizzle等

4.云数据管理

ACID

BASE

Strong consistency

Weak consistency

Isolation

Availability first

Focus on “commit”

Best effort

Nested transactions

Approximate answer

Availability

Aggressive(optimistic)

Conservative

Simpler

Difficult evolution(schema)

Faster 、 Easier evolution

大数据的分析处理:MapReduce

CAP[分布式领域CAP

(Consistency一致性、

Availability可用性、

Partition tolerance分区容错性)理论]

—注:任何分布式系统只可同时满足两点,没法三点兼顾。

(弱一致性/)最终一致性划分:因果一致性;(read your own wiriting)读 自己写一致性;会话一致性;单调(数学上单一方向)读一致性;时间轴一致性;

ACID:强一致性、隔离性、采用悲观保守的方法、难以变化;

BASE:弱一致性、可用性优先、采用乐观的方法、适应变化、更简单、更快

数据一致性的实现技术:NRW    2PC     Paxos    Vector Clock

数据存储模型:www.nosql.databases.org

列式存储模型Wide Column Store/Column Families

文档数据模型Document Store

镜像数据模型Key Value/Tuple Store(hash表)

图式数据模型Graph Databases

多维数据模型Multimodel Databases

列式模型:

应用场景:在分布式文件系统之上提供支持随机读写的分布式数据存储

典型产品:HBase、HyperTable、Cassandra

数据模型:以“列”为中心进行存储,将同一列数据存储在一起

优点:快速查询、高可扩展性、易于实现分布式扩展

文档模型:

应用场景:非强事务需求的web应用

典型产品:MongoDB、ElasticSearch、CouchDB、CouchBase Server

数据模型:键值模型、存储为文档

优点:数据模型无需事先定义

键值模型:

应用场景:内容缓存,用于大量并行数据访问高负载场景

典型产品:DynamoDB、Riak、Redis

数据模型:基于哈希表实现的key-value

优点:查询迅速

图式模型:

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

典型产品:Neo4j。Infinite Graph

数据模型:图式结构

优点:适用于图式计算场景

MongoDB:NoSQL、文档存储。Json

Database:支持多个database

常用命令:

Help

db.help();

db.stats()

db.serverStatus()数据库状态;mongodb数据库服务器状态

show dbs

show collections

db.getCollectionNames()

CRUD(数据库操作):

DDL,DML

JSON:JavaScript Object Notation

名称/值对象的集合

值的有序列表

find()的高级用法:

比较操作:

$gt,语法格式(filed:{$gt:VALUE})

$gte

$lt

$lte

$ne

$in,语法格式{filed:{[<value>]}}

$nin

组合条件:逻辑运算

$or:或运算,语法格式{$or:[{<expression1>},…]}

$and:与运算

$not:非运算

$nor:反运算,返回不符指定条件的所有文档

元素查询:根据文档中是否存在指定的字段进行的查询

db.mycoll.find().limit();

count()

skip()

$exists:语法格式{$filed:{exists:<boolean>}}

$mod:

$type:返回指定字段的值的类型为指定类型的文档,语法格式{filed:{$type:<BSON type>}}

1.Double,2.String,3.Object,Array,Binary data, Undefined, Boolean, Data, Null, Regular Expression, JavaScript, Timestamp

更新操作:

db.mycoll.update()

$set:修改字段的值为新指定的值;语法格式({field:value},{$set:{filed:new_value}})

$unset:删除指定字段:语法格式({filed:value},{$unset:{field1,field2,…}})

$rename:更新字段名:语法格式({$rename:{oldname:newname,oldname:newname}})

$inc

删除操作:

db.mycoll.remove(<cquery>,<justOne>)

删除collection:

db.mycoll.drop()

删除database

db.dropDatabase()

db.mycoll.drop()

php+mongodb:

php的mongodb扩展

索引:

类型:B+  Tree  hash  空间索引  全文索引

MongoDB索引类型:

单字段索引

组合索引(多字段索引)

多键索引

空间索引

文本索引

Hash索引

MongoDB与索引相关的方法:

db.mycoll.ensureIndex(field[,options])

name,unique,dropDups,sparse

db.mycoll.dropIndex(index_name)

db.mycoll.dropIndexes()

db.mycoll.getIndexes()

db.mycoll.reIndex()

Mongod的常用选项:

Fork=(true|false):mongod是否运行在后台

Bind_ip=IP:指定监听的地址

port=PORT:指定监听的端口

maxConns:并发最大连接数

MongoDB的复制功能:

两种类型:

master/slave

replice set:复制集、副本集

服务于同一数据集的多个mongodb实例

主节点将数据修改操作保存至oplog中

Arbiter:仲裁者

工作特性:至少三个,且应该为奇数个节点;可以使用arbiter来参与选举;

Heartbeat(2s),自动失效转移(通过选举方式实现)

复制集的中节点分类:

0优先级的节点:冷备节点,不会被选举成为主节点,但可以参与选举;

被隐藏从节点:首先是一个0优先 级的从节点,且对客户端不可见;

延迟复制的从节点:首先是一个0优先级的从节点,且复制时间落后于主节点一个固定时长;

Arbiter:

MongoDB的复制架构:

Oplog

Heartbeat

Oplog:大小固定的文件,存储在local数据库

初始同步(initial sync)

回滚后追赶(post-rollback catch-up)

切分块迁移(sharding chunk migration)

Local:存放了副本集的所有元数据和oplog;用于存储oplog的是一个名为oplog.rs的collection;

Oplog.rs的大小依赖于OS及文件系统;但可以自定义其大小oplogSize

Mongo的数据同步类型:

初始同步:节点没有任何数据时

节点丢失副本复制历史

复制

初始同步的步骤:

  1. 克隆所有数据库
  2. 应用数据集的所有改变;复制oplog并应用于本地
  3. 为所有collection构建索引

副本集的重新选举的影响条件:

心跳信息

优先级

Optime:

网络连接

网络分区

选举机制:

触发选举的事件

新副本集初始化时

从节点联系不到主从点时

主节点“下台“时

主节点收到stepDown()命令时

某从节点有更高的优先级且已经满足或主节点其他所有条件

主节点无法联系到副本集的“多数方

MongoDB的分片:CPU   Memory   IO

MySQL:Ginzard,HiveDB,MySQL Proxy + HSACLE,Hibernate Shard,Pyshards“

分片架构中成都角色:

Mongos:Router

Config server:元数据服务器

Shard:数据节点,也称mongod实例

Zookeeper

基于范围切片:range

基于列表切片:list

基于hash切片:hash

写离散,读集中

Db.enableSharding(“testdb”)

NoSQL&MongoDB的更多相关文章

  1. NOSQL -- Mongodb的简单操作与使用(win10)

    NOSQL -- Mongodb的简单操作与使用(wins) MongoDB 创建集合: db.createCollection(name, options) use huhu db.createCo ...

  2. NOSQL -- Mongodb的简单操作与使用(wins)

    NOSQL -- Mongodb的简单操作与使用(wins) 启动mongodb: 1.首先启动服务 dos命令下:net start Mongndb 也可以查询服务,手动开启服务: 完成后: 2.启 ...

  3. NOSQL -- mongoDB的了解与安装(Wins10)

    NOSQL -- mongoDB的了解与安装 首先看看什么是nosql: 我的理解:非关系型数据库,大多是以map形式存储,map<key,value>,适合存储,查询.redis也是no ...

  4. PCB NOSQL MongoDb MI流程指示数据存储结构

    一.MI流程指示结构 二.产品型号树结构(即盲埋孔板型号结构) 三.MI流程指示UI 小结:1.MI流程指示使用的表非常之多(30多张表),存储的数据分散到各个表中,而NOSQL 一个产品型号一条记录 ...

  5. NOSQL—MongoDB之外的新选择

    MongoDB之外的新选择 MongoDB拥有灵活的文档型数据结构和方便的操作语法,在新兴的互联网应用中得到了广泛的部署,但对于其底层的存储引擎一直未对外开放,虽说开源却有失完整.Mongo版本3中开 ...

  6. [你必须知道的NOSQL系列]专题一:MongoDB快速入门

    一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...

  7. NoSQL高级培训课程-HBase&&MongoDB(两天版)

    课程大纲 主题 时间 主题 列数据库 (第1天) 上午 HBase发展简史-Google BigTable的开源实现 HBase基础:安装部署.管理命令.运行监控和开发接口: HBase专题:服务组件 ...

  8. “NOSQL” 杂谈

    引言: nosql 的兴起和革命,在我看来已经开始逐渐影响到了传统的sql的地位,但是仅仅是影响而已,取代是不太可能的. 正文: 两年前,一个偶然的机会开始接触到 nosql ( mongodb ). ...

  9. MongoDB 存储引擎和数据模型设计

    标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...

随机推荐

  1. 21.jQuery

    简介 jQuery是一个快速.简洁的JavaScript框架,jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多的事情.它封装JavaSc ...

  2. 找出k个数相加得n的所有组合

    Find all possible combinations of k positive numbers that add up to a number n,each combination shou ...

  3. python格式化输出基础知识(2)

    ---恢复内容开始--- 一:请输入名片  (姓名,年龄,职业,爱好)设计名片 name=input('你的名字')age=input('你的年龄')job=input('你的工作')hobbie=i ...

  4. 免插件为WordPress文章中标签添加内链

    给文章标签添加内链,意思就是说,如果你文章中出现了和标签一样的文字,那么这个文字就会自动成为标签链接,你点击这个链接就会查看到所有含有该标签的文章,这个能方便用户浏览,据说还利于SEO.下面说说方法: ...

  5. 边框0.5px的实现方法

    原理: css3 的缩放   ---->    transform: scale() 完整代码如下: <!DOCTYPE html> <html lang="en&q ...

  6. MSIL实用指南-创建方法和定义参数

    本篇讲解实现创建方法.指定参数的名称.实现参数加out和ref修饰符.以及参数加默认值. 创建方法 创建方法用类TypeAttributes的 DefineMethod(string name, Me ...

  7. find命令总结

    find命令 2018-2-27日整理完成 1,结合-exec的用法 查当前目录下的所有普通文件,并在 -exec 选项中使用ls -l命令将它们列出# find . -type f -exec ls ...

  8. pt工具主从一致性检查并修复以及版本3.0.4的版本缺点

    pt-table-checksum和pt-table-sync分别检验master-slave的数据不一致并修复. 1.本次测试环境 [root@172-16-3-190 we_ops_admin]# ...

  9. 前端的UI设计与交互之数据展示篇

    合适的数据展示方式可以帮助用户快速地定位和浏览数据,以及更高效得协同工作.在设计时有以下几点需要注意:依据信息的重要等级.操作频率和关联程度来编排展示的顺序.注意极端情况下的引导.如数据信息过长,内容 ...

  10. npm包使用语义化版本号

    npm 采用语义版本管理软件包.所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号,c是补丁号. 一个软件发布的时候,默认就是1.0.0版.如果以后发布补丁,就增加最后一位数 ...