检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
访问数据库 具体访问数据库前,引入如下相关类。 import com.mongodb.client.MongoClients; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection;
连接数据库 通过Python连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。 DDS新实例默认关闭SSL数据加密,开启SSL请参考开启SSL。 前提条件 连接数据库的弹性云服务器必须和DDS实例之间网络互
更多教程 更多开发教程请参见官方文档。 父主题: 应用程序开发教程
驱动侧通用参数配置 连接DDS常见配置项和推荐值 connectTimeoutMS连接超时时间确保驱动程序不会在连接阶段无限期等待。推荐配置: connectTimeoutMS = 10000ms socketTimeoutMS防止TCP通信进入无限等待。推荐配置: 时间为业务最长时间的2-3倍,最低不要小于10s。
常用操作 常用CRUD操作
系统集合 表1 4.0版本系统集合 系统集合 说明 admin.system.roles 存储创建并分配给用户的自定义角色,以提供对特定资源的访问权限。 admin.system.users 存储用户的身份验证凭据以及分配给该用户的所有角色。 admin.system.version
数据库使用 连接数据库 创建和管理数据库 创建和管理集合 创建和管理索引
管理数据库权限 默认权限机制 角色管理 用户管理
数据库使用规范 基础命令规范 开发规范 设计规范
常用CRUD操作 选择对应的数据库版本后,您可以了解MongoDB常用的CRUD操作。详情请参见官方文档。 父主题: 常用操作
用户管理 DDS上用户的权限都是基于角色管理,通过给用户赋予不同的角色来进行差异化的权限控制。 为了给文档数据库实例提供管理服务,您在创建数据库实例时,文档数据库服务会自动为实例创建admin、monitor和backup账户。如果试图删掉、重命名、修改这些账户的密码和权限,会导致出错。
默认权限机制 DDS与社区原生的版本相比,对安全进行一系列的增强,以应对越来越严峻的安全挑战。社区原生版本支持不鉴权的方式连接使用数据库的,而DDS采取默认安全策略,连接数据库必须通过鉴权,否则,无法使用数据库。 数据库实例创建后,系统会创建默认的管理员用户rwuser,但是需要需要客户指定,并满足密码复杂度要求。
设计规范 命名规范 数据库对象(库名、表名、字段名、索引名)命名建议全部使用小写字母开头,后面跟字母或者数字,数据库对象(库名、表名、字段名、索引名)名字长度建议都不要大于32字节。 数据库名称不能使用特殊字符("",.,$,\,/,*,?,~,#,:,|")和空字符\0,数据库
角色管理 DDS通过基于角色的管理来控制用户对数据访问的权限,角色共分为两类:预置角色和自定义角色。 预置角色 自定义角色 创建并管理角色 父主题: 管理数据库权限
创建和管理集合 写入/更新和删除命令的规范请参见写入/更新命令和删除命令。 创建集合 执行db.createCollection(name, options)创建集合。 db.createCollection(<name>, { capped: <boolean>,
创建和管理索引 DDS支持利用索引实现高效查询。如果没有索引,DDS必须执行集合扫描,即扫描集合中的每个文档,以选择那些与查询语句匹配的文档。如果一个查询存在适当的索引,DDS可以使用该索引来限制它必须检查的文档数量。 创建索引的规范及建议请参见索引设计规范。 写入/更新和删除命
基础命令规范 查询命令 写入/更新命令 删除命令 父主题: 数据库使用规范
预置角色 预置角色是系统自动生成的角色信息,客户端可用的预置角色名称有read,readWrite。 mongodb使用角色来管理数据库的,所以创建一个用户时就需要赋予一个角色。角色除了内置之外,也可以自定义角色。 表1 常见内置角色 角色 权限描述 包含的操作命令 read r
连接数据库 文档数据库服务常用的连接方式如下表。 表1 连接方式 连接方式 IP地址 使用场景 说明 内网连接(推荐) 内网IP地址 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与文档数据库实例处于同一区域、可用区、虚拟私有云子网内,建议单独使用内网IP通过弹性云服务器连接文档数据库实例。
创建和管理数据库 写入/更新和删除命令的规范请参见写入/更新命令和删除命令。 操作步骤 创建info数据库。 use info 输入“db”当结果显示为如下信息,则表示当前已在这个数据库中。 info 为数据库插入一条数据。 db.user.insert({"name": "joe"})