Go教程

mongodb快速入门

本文主要是介绍mongodb快速入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.什么是候选择mongoodb? 什么是候不用?
2.orm
3.分片、存储、恢复

-----------------
mongodb是什么?
    not only sql
    在key,value的基础上,加上结构化的约束。
    mongodb是一个最像关系型数据库的非关系型数据库。

关系型数据库:
    事务
    表关联
    表结构约束

非关系型数据库:
    无事务,性能会大大提高。
    数据与数据之间没有关联,都是独立的。
    key-value,无结构约束。 为什么说像呢? 因为和关系型数据库非常类似。


Database       Database    数据库
Table          Collection  数据库表/集合
Row            Document    数据记录行
Column         Field       字段
Index          Index       索引
Table Joins    无        
PrimaryKey     Object ID   主键     

-----------mysql举例

Member(mysql)
id             name            addr               age
主键自增       非空,字符串    允许空,字符串     非空,数字

-----------mongodb举例

Member 不会预定义,增量分析

_id: ObjectID
name: "Tom"
add: "湖南长沙"

_id: ObjectID
name: "Mic"
add: "湖南衡阳"
age: 18

_id: ObjectID
name: "Mic"
add: "湖南衡阳"
age: 18
sex: "男"


所有字段中最大的‘并集’,只要出现一次,就会存在。 
Mongodb中的表,字段,不需要预定义。

bson,也就是二进制的json


-----------
cap:
    c: 一致性
    a:可用性
    p:分区容错性

    ca:
    cp:
    ap:

    mongodb默认:AP, 因此是最终一致性。

---------
Null: 空值               表示空值或者未定义的对象                            {"x": null}
Boolean: 布尔值          真或者假                                            {"x": true}
Integer: 整数            整形数值,用于存储数值. 根据你所采用 
                                 的服务器,可以分为32位或64位。


Double:浮点数            双精度浮点。                                       {"x": 3.14, "y": 3}
String: 字符串           utf8字符串                           
Symbol: 符号              基本上等于字符串类型。但是采用的是特殊符号类型语言。     
ObjectID: 对象ID         对象ID,用于创建文档的ID。                         {"id": ObjectId()}
Date: 日期               日期时间,用unix时间格式来存储当前日期或时间。    {"date"L new Date()}
Timestamp: 时间戳        从标准纪元开始的毫秒数。
Regular: 正则表达式      文档中可以包含正则表达式,遵循js语法。             {"foo": /foobar/i}
Code: 代码               可以包含js代码                                     {“x": function(){}}
Undefined: 未定义        已经废弃
Array: 数组              值得集合或者列表                                     {"arr": ["a", "b"]}
Binary Data: 二进制      用于存储二进制数据
Object:内嵌文档          文档可以作为文档中某个                            {"x": {"foo": "bar"}}

---------底层原理
Route Server: 路由服务--》Config Server:配置服务(根据配置分配到哪台机器)--》Mongod副本集(存在N台机器上)

仲裁节点: 副本与副本之间的心跳。 主机出问题后,切换到副本。
    从机是只同步。 仲裁只找老大。

分片(数据可以存储各个节点之上): 
    类似于hdfs里面的MapReduce:Map是分发,Reduce是归纳。

    去热点: 数据存储要均衡。

    分布式存储,易扩展,并保证均衡。

    块:就是hash槽。 有一定冗余,保证高可用。

----------应用场景
实时数据插入,更新,查询,适合数据的缓存。

数据会同步到内存,索引会动态生成。索引会存内存。

大尺寸,低价值的存储: 如网盘,电影。

用户信息,这种常用的。

适合数据集群。

--------不适合的场景
银行,会计等大量原子性复杂事务的应用程序。
    一个地方报错,另外一个地方不影响。

智能商业应用等高度BI使用规则。

复杂的sql查询才能算出来的。


 

这篇关于mongodb快速入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!