MongoDB 是比较像 关系型数据库的非关系数据库
MongoDB 的数据结构与关系型数据库数据结构对比
关系型数据库 概念 | 非关系数据库 概念 | 解释说明 |
Database | Database | 库 |
Table | Collection | 数据库表/集合 |
Row | Document | 行/文档 |
Column | Field | 数据列/数据字段 |
index | index | 索引 |
Table_joins | 表关联/MongoDB 不支持 | |
primary_Key | Object ID | 主键 /mongoDB 自动将_id设置为主键 |
关系型数据库 需预定义出 表的各个字段和约束
非关系型数据库 MongoDB 不会预定义 最终 database是增量分析的结果,如 最终的document 是所有document 取最大呢并集的字段结果
可以简单的把document,理解为一个BSON(二进制的json)对象;
NOSQL数据库的分类
列存储:Hbase, Cassandra, Hypertable
文档存储:MongoDB,CounchDB
key-value 存储:Redis , Memcache;
由于mongoDB的非事务机制(事务就是强一致性的体现),其在CAP理论中仅仅支持 AP(可用性和分区容错型)
如上图mongodb 是支持副本机智的,对于副本集,又有主从两个角色,写数据和读数据也是不同的,写数据的过程是只写到主节点中,由主节点以异步方式同步到从节点中:
对于读数据,可以从任一节点读取,具体读那一节点是可以指定的, MongoDB的数据是分片存储,所以读的时候会读不同的副本
对于MongoDB的分片,假设我们以某一索引键(ID)为键片,id的区间为50,划分为5个chunk,分别存储在3个片服务器中,如图所示:
上图有误 依次为 chunk 12345.
MongoDB 对 MapReduce 引擎的内置支持.。
mongoDB支持的数据类型