用户在连接到文档数据库服务副本集实例后,可以看到 local, config, admin 3 个系统库。在连接到文档数据库服务集群版实例后,能看到 config, admin 2 个系统库。
不建议用户直接在系统库下建表,下面说明原因。
- local 库不参与主从复制。副本集中每个节点的 local 库是相互独立的,对主节点 local 库的修改不会通过 oplog 复制到从节点。因此,如果用户在 local 库下建表写数据,会存在数据安全风险,也不能利用文档数据库服务读写分离的特性。
- admin 库的写性能受限。由于一些特殊原因,admin 库下的所有表在执行写入操作时,需要先获取 DB 的写锁(非意向写锁)。这样导致 admin 库下的写入操作都是串行执行的,而且和读操作互斥,因此性能低下,不适合存储业务数据。
- 不利于用户权限分配。如果使用系统库存储数据,可能会在给普通用户分配权限时将系统表暴露出去,带来额外的系统风险。
- 删表删库等操作存在严重风险。在使用 dropCollection 或者 dropDatabase 删除库表时,会增加误操作的风险。