管理数据库

最近更新时间:2020-09-16 17:31:31

设置权限

您可以在云开发 CloudBase 控制台针对每个集合设置对应的权限。

权限设置 - 腾讯云云开发控制台

数据库权限详情参考权限控制

索引管理

在集合中为查询条件的字段建立索引,是保证数据库性能、提升用户体验的重要手段。

操作步骤

  1. 进入 云开发 CloudBase 控制台
  2. 切换到【数据库】标签页,并选择需要导入数据的集合,进入索引管理 tab 页。
  3. 删除 or 新建索引。

权限设置 - 云开发 CloudBase 控制台

单字段索引

您可以为查询条件对应的字段创建单字段索引,如果该字段是嵌套字段,可以使用 "点表示法" 。例如对如下格式的记录中的 color 字段进行索引时,可以用 style.color 表示。

{
  "_id": "",
  "style": {
    "color": ""
  }
}

在设置单字段索引时,可任意指定索引的排序为升序或降序,数据库总能在对索引字段的排序查询中,进行正确的排序。

组合索引

组合索引即一个索引包含多个字段。当查询条件使用的字段包含在索引定义的所有字段或前缀字段里时,会命中索引,优化查询性能。

说明:

索引前缀即组合索引的字段中定义的前 1 到多个字段,例如对集合 studentsname, age, score 三个字段按顺序定义了组合索引,那么该索引的前缀包含

  • name
  • name, age

能命中索引的查询字段组合包含

  • name
  • name, age
  • name, age, score
{
  "_id": "1",
  "name": "luke",
  "age": 26,
  "score": 80
}

组合索引具有以下特点:

  1. 字段顺序决定组合索引效果

    例如定义组合索引分别为 name, ageage, name 是不同的。当组合索引为 name, age 时,其索引前缀为 name, 对字段 name 的查询可以命中 name, age 索引, 而对字段 age 的查询无法命中该索引,因为 age 不属于 name, age 的前缀(反之字段 age 能命中 age, name 索引)。

  2. 查询字段排序影响命中索引

组合索引为 age: 升序, score: 降序,字段排序对索引命中效果如下:

age: 升序, score: 降序 age: 降序, score: 升序 age: 升序, score: 升序 age: 降序, score: 降序 score: 升序/降序, age: 升序/降序
命中 命中 未命中 未命中 未命中

组合索引为 age: 升序, score: 升序,字段排序对索引命中效果如下:

age: 升序, score: 升序 age: 降序, score: 降序 age: 升序, score: 降序 age: 降序, score: 升序 score: 升序/降序, age: 升序/降序
命中 命中 未命中 未命中 未命中

地理位置索引

云开发目前支持建立平面几何的地理位置索引,使用地理位置查询功能时,必须为地理位置数据的字段建立地理位置索引。

例如对含地理位置字段 point 的集合建立地理位置索引:

{
  "_id": "",
  "point": new db.Geo.Point(50, 50)
}

索引使用注意事项

唯一性限制

创建索引时,索引属性选择唯一,即可添加唯一性限制。此限制会要求集合中索引字段对应的值不能重复

例如,某个集合内建立了索引字段 foo,且属性为“唯一”,那么在这个集合内,要求不能存在 foo 字段相同的文档。

说明:

需特别注意的是,假如记录中不存在某个字段,则对索引字段来说其值默认为 null。如果索引有唯一性限制,则不允许存在两个或以上的该字段为空 / 不存在该字段的记录。

大小限制

  • 索引的字段大小限制不能超过 1024 字节
  • 添加索引时,如果集合中已有文档索引字段超过 1024 字节,添加索引时将报错。
  • 已设置索引的字段,如果插入一个文档,文档中该字段超过 1024 字节将会报错。
说明:

每个英文字母(不分大小写)占一字节的空间,每个中文汉字占两字节的空间。

正则表达式

正则查询无法使用索引提升性能。

导入数据

云开发支持在云开发 CloudBase 控制台进行数据导入。

操作步骤

  1. 进入 云开发 CloudBase 控制台
  2. 切换到【数据库】标签页,并选择需要导入数据的集合,单击【导入】。
  3. 选择要导入文件的格式以及冲突处理模式,单击【导入】,即可开始导入的过程。

说明:

目前提供了 Insert、Upsert 两种冲突处理模式。

  • Insert 模式会在导入时总是插入新记录。
  • Upsert 模式会判断有无该条记录,如果有则更新记录,否则就插入一条新记录。

JSON、CSV 文件必须是 UTF-8 的编码格式,且其内容类似 MongoDB 的导出格式,示例代码如下:
JSON 示例:

{
    "_id": "xxxxxx",
    "age": 45
}
{
    "_id": "yyyyyy",
    "age": 21
}

CSV 示例:

_id, age
xxxxxx, 45
yyyyyy, 21
说明:

  • JSON 数据不是数组,而是类似 JSON Lines,即各个记录对象之间使用 \n 分隔,而非逗号。
  • JSON 数据每个键值对的键名首尾不能是 . ,例如 ".a""abc.",且不能包含多个连续的 . ,例如 "a..b"
  • 键名不能重复,且不能有歧义,例如 {"a": 1, "a": 2}{"a": {"b": 1}, "a.b": 2}
  • 时间格式须为 ISODate 格式,例如 "date": { "$date" : "2018-08-31T17:30:00.882Z" }
  • 当使用 Insert 冲突处理模式时,同一文件不能存在重复的 _id 字段,或与数据库已有记录相同的 _id 字段。
  • CSV 格式的数据默认以第一行作为导入后的所有键名,余下的每一行则是与首行键名一一对应的键值记录。

导入完成后,您可以在提示信息中看到本次导入记录的情况。

导出数据

云开发支持在云开发 CloudBase 控制台导出集合已有的数据(目前仅支持导出 CSV、JSON 格式的文件数据)

操作步骤

  1. 进入云开发 CloudBase 控制台

  2. 切换到【数据库】标签页,并选择需要导出数据的集合,单击【导出】。

  3. 选择要导出的格式、保存的位置、以及字段,单击【导出】,即可开始导出的过程。

  4. 当选择导出格式为 JSON 时,若不填写字段项,则默认导出所有数据。

  5. 当选择导出格式为 CSV 时,则字段为必填项。字段之间使用英文逗号隔开。
    字段示例代码如下所示:

    _id, name, age, gender;

目录