MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是 类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语 言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
基本术语
Document -> collections -> dbs
Collection 切分 chunk -> shard.
Shard 意义:scalabilityand load balance.
MongoDB按shard key,把collection切割成若干chunks。每个 chunk 的数据结构,是一个三元组,{collection,minKey,maxKey}
Replica Set -> availability
Config servers用于存储MongoDB集群的元数据metadata,这些元数据包括如下两个部分,每一个shardserver包括哪些chunks,每个chunk存储了哪些collections 的哪些 documents
Shards &&replica 命令集锦
$ mongod --shardsvr --replSet shard-a --dbpath data/rs-a-1 --port 30000 --logpath data/rs-a-1.log --fork –nojournal
$ mongod --configsvr --dbpath data/config-3 --port 27021--logpath data/config-3.log --fork –nojournal
$ mongos --configdb ubuntu:27019,ubuntu:27020,ubuntu:27021--logpath data/mongos.log --fork --port 40000
$ mongo Ubuntu:30000
>rs.initiate()
>rs.add(“Ubuntu:30000”)
>rs.add(“Ubuntu:30001”, {arbiterOnly: true})
>rs.conf()
>rs.status()
Configuration the cluster
>sh.addShard(“shard-a/Ubuntu:30000,Ubuntu:30001”)
>sh.