• 暂时停更一段时间!
  • 近期网站将陆续进行前端页面改造!
  • 招募网站编辑,联系站长!

文档数据库一MongoDB

文章目录[隐藏]

文档数据库

文档数据库总体形式上也是键值对的形式 ,但是值又可以有各种数据结构:数组、键值对、字符串等,可以认为是 JSON 格式的数据存储,因此能够对任意字段建立索引,实现关系型数据库的某些功能 。

MongoDB 是一个分布式文件存储的数据库,是非关系型数据库中最像关系型数据库的 。其具有以下特点 。

  • 灵活模式: 数据以 JSON 格式存储。
  • 高可用性: 复制集保证高可用 。
  • 可扩展性: 通过 Sharded cluster 保证可扩展性 。

关键概念

1 )数据库( Database )

对应于 MySQL 的 Database 。

2 )集合( Collection )

对应于 MySQL 的 Table ,存在于数据库中,没有固定的结构,可以插入不同格式和类型的数据 。

3 )文档( Document )

对应于 MySQL 的 Row,是一组键值对( BSON ) 。 不需要设置相同的字段,并且相同的字段不需要相同的数据类型 。 集合由文档构成。

4 )域( Field )

对应于 MySQL 的 Column 。

5 ) 主键( Primary Key )

和 MySQL 相同, MongoDB 会自动将_id 字段设置为主键。

6 ) 复制集( Replica Set )

MongoDB 复制集由 一 组 mongod 实例(进程)组成,包含 一个 Primary 节点 、多个 Secondary 节点以及可选择的 Arbiter 节点(用于仲裁) 。

MongoDB Driver (客户端)的所有数据都写入 Primary, Secondary 从 Primary 同 步写人的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用 。 这类似于 MySQL 中的一主多从配置 。

复制集保证了 MongoDB 的高可用性 。

7 )分片集( Sharded cluster )

即 MongoDB 的分布式特性,通过分片来构成分布式集群 。 由如下 3 个组件构成。

shard: 数据节点,每一个数据节点存储一部分分片数据, 每个 shard 都可以做复制集 。

mongos :路由节点,作为客户端和分片集群间的查询路由 。

config server :配置节点,存储了集群的元数据和配置信息 。

目前主要支持如下两种数据分布策略。

1、范围分片( Range based sharding ):能很好地满足范围查询的需求,但如果 shardkey 有明显递增(或者递减)趋势, 则新插入的文档多会分布到同 一个 Chunk ,无法扩展写的能力 。

2、Hash 分片( Hash based sharding ):根据用户的 shard key 计算 hash 值 ( 64 位整型数据),根据 hash 值按照范围分片的策略将文档分布到不同的 Chunk。 其与范围分片互补,能将文档随机地分散到各个 Chunk,充分扩展写的能力,弥补了范围分片的不足,但其不能高效地服务范围查询,所有的范围查询都要分发到后端所有的 Shard 才能找出满足条件的文挡 。

Sharded cluster 保证了 MongoDB 的可扩展性 。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:文档数据库一 MongoDB
喜欢 (0)
[247507792@qq.com]
分享 (0)
多啦H梦
关于作者:
热爱开源,热爱分享,谢谢大家的资瓷!

邀请您免费 注册账号 登录 即可参与讨论!