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查询才能算出来的。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 MongoDB入门,你可以按照以下步骤进行学习: 1. 下载并安装 MongoDB:在 MongoDB 的官方网站上下载适合你操作系统的安装程序,并按照提示进行安装。 2. 启动 MongoDB 服务:安装完成后,启动 MongoDB 服务。在 Windows 上,你可以通过运行 `mongod` 命令启动服务。在 macOS 或 Linux 上,可以打开终端并运行 `mongod` 命令。默认情况下,MongoDB 会在本地的 27017 端口上启动。 3. 连接到 MongoDB:在另一个终端窗口或命令提示符中,使用 `mongo` 命令连接到 MongoDB。默认情况下,它会连接到本地的 MongoDB 服务器。 4. 创建数据库:在 `mongo` shell 中,可以使用 `use <database_name>` 命令创建一个新数据库,例如 `use mydb`。 5. 创建集合(表):集合类似于关系数据库中的表。你可以使用 `db.createCollection("<collection_name>")` 命令创建一个新集合,例如 `db.createCollection("mycollection")`。 6. 插入数据:使用 `db.<collection_name>.insertOne(<document>)` 命令将数据插入到集合中。例如,`db.mycollection.insertOne({ name: "John", age: 30 })`。 7. 查询数据:使用 `db.<collection_name>.find()` 命令查询集合中的所有数据。例如,`db.mycollection.find()`。 8. 更新数据:使用 `db.<collection_name>.updateOne(<filter>, <update>)` 命令更新集合中的数据。例如,`db.mycollection.updateOne({ name: "John" }, { $set: { age: 35 } })`。 9. 删除数据:使用 `db.<collection_name>.deleteOne(<filter>)` 命令删除集合中的数据。例如,`db.mycollection.deleteOne({ name: "John" })`。 这是一个 MongoDB 入门的基本流程。你可以根据需要进一步学习和探索 MongoDB 的更多功能和用法。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值