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. [转]Nginx基本功能极速入门

    原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 ...

  2. redis学习系列——redis持久化

    1.写操作的流程 2.RDB快照-redis的第一个持久化策略 第一种是以快照的形式持久化到本地磁盘(RDB文件). 持久化策略是: 1.配置(save N M)在N秒内,redis至少发生M次修改, ...

  3. Unity3D相机震动效果

    在一些格斗.射击以及动作类游戏中 相机震动效果是十分重要的 一个平凡的镜头 在关键时刻加入相机震动后 便可以展现出碰撞.危险.打斗以及激动人心的效果 相机震动的实现方式有很多 但都会涉及摄像机位置的变 ...

  4. Effective Java 第三版——37. 使用EnumMap替代序数索引

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. Python 中的登陆获取数据跳转页面(不含数据库)

    简单表单和模板: import os.path import tornado.httpserver import tornado.ioloop import tornado.options impor ...

  6. freeMark的入门教程

    1.FreeMarker支持如下转义字符: \";双引号(u0022) \';单引号(u0027) \\;反斜杠(u005C) \n;换行(u000A) \r;回车(u000D) \t;Ta ...

  7. 利用国外服务器搭建ss

    wget --no-check-certificate  https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/s ...

  8. 设计模式 --> (9)代理模式

    代理模式 为其他对象提供一种代理以控制对这个对象的访问. 主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上.在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大 ...

  9. Post Office

    Post Office poj-1160 题目大意:给你在数轴上的n个村庄,建立m个邮局,使得每一个村庄距离它最近的邮局的距离和最小,求距离最小和. 注释:n<=300,m<=min(n, ...

  10. HashMap的底层原理

    简单说: 底层原理就是采用数组加链表: 两张图片很清晰地表明存储结构: 既然是线性数组,为什么能随机存取?这里HashMap用了一个小算法,大致是这样实现: // 存储时: int hash = ke ...