MongoDB命名规范

  • 不能是空字符串
  • 不能含有.、''、*、/、\、<、>、:、?、$、\0。建议只使用ASCII码中字母和数字
  • 数据库名区分大小写
  • 数据库名长度最多为64字节
  • 集合名不能包含\0字符,这个字符表示集合名的结束
  • 集合名不能是空字符串""
  • 集合名不能使用系统集合的保留前缀"system."
  • 集名名中不建议包含字符'$',虽然很多驱动程序可以支持包含此字符的集合名

MongoDB集合数量

默认情况下,MongoDB 的每个数据库的命名空间保存在一个 16MB 的 .ns 文件中,平均每个命名占用约 628 字节,也即整个数据库的命名空间的上限约为 24000。
每一个集合、索引都将占用一个命名空间。所以,如果每个集合有一个索引(比如默认的 _id 索引),那么最多可以创建 12000 个集合。如果索引数更多,则可创建的集合数就更少了。同时,如果集合数太多,一些操作也会变慢。甚至使得MongoDB集群无法服务的情况发生!

MongoDB保留库名

  • admin
  • local
  • config

MongoDB连接池

connectionsPerHost:每个主机答应的连接数(每个主机的连接池大小),当连接池被用光时,会被阻塞住,默认值为100
threadsAllowedToBlockForConnectionMultiplier:线程队列数,它和上面connectionsPerHost值相乘的结果就是线程队列最大值。如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误,默认值为5,则最多有500个线程可以等待获取连接
maxWaitTime: 被阻塞线程从连接池获取连接的最长等待时间(ms)。默认值为120,000
connectTimeout:在建立(打开)套接字连接时的超时时间(ms)。默认值为10,000
socketTimeout:套接字超时时间(ms)。默认值为0,无限制(infinite)
autoConnectRetry:这个控制是否在连接时,会自动重试,2.13驱动已经【废弃】,请使用connectTimeout代替它

Replica set读写分类
set.ReadPreference = new ReadPreference(ReadPreferenceMode.PrimaryPreferred);

状态说明:

primary 主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。

primaryPreferred 首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。

secondary 从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。

secondaryPreferred 首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。

nearest 最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点