五、MongoDB的局限性是什么?
以下列举了一些MongoDB的限制。
1.最大的文件不能超过16MB
2.最大文件嵌套层级为100(指文件嵌套文件再嵌套文件)
3.索引区不能超过1024字节。
4.每个集合最多为64个索引。
5.创建一个复合索引最多使用31个字段。
6.全文本搜索和地理位置索引是互斥的。
7.在32位机器上,一个固定集合(capped collection)中的文件数量大小是有限制的。但64位机器上则对文件数量大小没有限制。
8.在Windows系统上,MongoDB不能存储超过4TB的数据(去除日志后为8TB)
9.在单个复制集中最多可有12个节点。
10.在单个复制集中最多可有7个投票节点。
11.如要回滚超过300MB的数据,需要进行人工干预。
12.在分片集群(sharded cluster)中无法使用组命令。
13.在分片集群中无法使用 $isolated, $snapshot, geoSearch。
14.你无法在 $where中涉及到数据库对象。
15.为了分片一个集合,它必须小于256GB。
16.在分片集群中对单条记录(非多条)的更新/移出必须包含分片密钥。同样命令针对多条记录执行时则可以不包含分片密钥。
17.分片密钥最大值为512字节。
18.一旦分片完成,一个集合的分片密钥值将无法改变。
除了这些限制以外,在关系型数据库系统中用约束来防止数据被意外删除的功能在MongoDB或其他NoSQL数据库系统中无法实现。 也可能有其它问题,例如像下面列示的这个,为了存储多层数据而违反了标准范式。
一个用户有许多朋友,并可能其中之一就是他自己。人们可能反复对自身进行点赞、评论或两者皆有的行为动作。这种类型的反复模式使得它更难将一个活动流反规范化(de-normalize)为一份独立的文档
MongoDB也像其它科技一般,非常公平的共享了它的局限性和缺陷,并且随着版本更新,它们将很有希望被解决。