gaussdb笔记
1.权限管理模型RBAC和ABAC的区别:
RBAC:基于角色的访问控制,角色是指具有某些共同特征的一组人,例如部门、级别、资历等,在系统初始化时admin根据业务需要创建多个拥有不同权限组合的角色,当需要赋予某个用户权限的时候,把用户归属到相应角色里即可。对于规模小的企业,管理较为方便,对于规模大的企业,角色之间可能相互依赖,管理复杂度增加。
ABAC:基于属性的访问控制,属性一般有用户属性(如角色、组织等)、环境属性(如访问时间、数据位置等)、资源属性(创建时间、资源所有者等),ABAC建模难度大,但是如果企业规模较大,管理可以更灵活,新增用户比较方便。
两者主要区别在于授予权限的方式不一样。RBAC基于角色授予访问权限,ABAC可以根据用户特征、对象特征、操作类型等属性确定访问权限。
2.数据库加密方式有哪些,至少3种:
gaussdb支持函数加密、透明加密和全密态,常见算法有md5、aes、des、sha256、sm4。(可以补充定义)
3.存储过程的优点:
灵活性强:通过循环和条件判断等能力,极大提高sql的灵活性,可以完成复杂的运算。
安全性高:代码逻辑存储在数据库内,不易被非法窃取。
性能好:存储过程在数据库内先编译好了,在调用时极大改善了sql的行能。
降低网络通信量:客户端调用时只需要传输存储过程名和相关参数,与传输sql语句相比少很多通信量。
一定程度的应用解耦:应用不作修改,修改存储过程就可以改变特定逻辑。
4.存储过程和函数的区别:
含义不同:存储过程是sql语句和控制流程语句的预编译集合。函数是有一个或者多个sql语句组成的子程序。
使用条件不同:
存储过程:可以在单个存储过程中执行一系列sql语句,也可以在存储过程内引入其他存储过程,简化一系列复杂的语句。
函数:自定义函数有较多限制,有许多语句不能使用如临时表。
执行方式不同:
存储过程:可以返回参数,声明时不需要返回类型。
函数:只能返回值或者表对象,声明时需要描述返回类型,且函数中必须包含一个有效return语句。
5.存储过程和匿名块的区别:
存储过程时经过预编译并存储在数据库中的,可以重复使用;而匿名块时为存储在数据库中,从应用程序缓冲区擦除后,除非应用重新输入代码,否则无法重新执行;
存储过程必须声明名字,匿名块无需命名。
6.全量备份、差分备份和增量备份的区别
全量备份:对所有目标数据进行备份,自身可恢复出完整的数据库。
差分备份:对上一次全量备份后发生变化的数据进行备份,需和全量备份数据一起才能恢复出完整数据库。
增量备份:对上一次备份后发生变化的数据进行备份,需和上一次全量备份以及到上一次全量备份之间的所有增量备份一起恢复出完整的数据库。
备份集大小关系:全量备份>增量备份>差分备份。
7.数据库恢复到指定时间点使用什么技术实现,与物理文件备份相比,这种技术依赖哪个关键文件:
使用PITR技术,依赖用户指定恢复时间到最后一次增量备份之间的增量归档日志。
8.数据库的事务是什么。
事务是数据库一系列操作要么全执行,要么全部不执行。需要满足ACID四个特性,即原子性、一致性、隔离性、持久性。其中原子性要求事务里的一组操作要么全部执行,要么全部不执行。一致性要求事务必须从一个一致性状态到另一个一致性状态。隔离性要求对数据库的修改的并发事务都是彼此隔离的。持久性要求事务完成后对事务的修改必须是永久保存的。
9.gaussdb的事务实现有哪些机制
分布式事务全局管理器GTM,为了实现分布式事务,gaussdb设计了一个全局的事务管理器,提供全局事务所需的信息;
两阶段提交保证分布式事务的原子性,为了保证分布式事务一致性,引入了协调者的角色,由协调者发起事务,参与者将操作成功失败结果通知协调者,再由协调者根据所有参与者反馈的结果决定各参与者是否要提交操作还是中止操作。
副本之间的一致性通过共识算法等保证。
mvcc机制保证隔离性,事务提交的时候会获取一个csn,事务发起的时候也会获取一个csn,比事务发起的读快照的csn小的事务,对于本次事务可见,比读快照的csn大的事务对于该事务不可见。
10.gaussdb支持的事务隔离级别
read committed:读已提交隔离级别,事务只能读到已提交的数据,而不会读到未提交的事务的数据。select查询查看到在查询开始运行的瞬间该数据库的一个快照,在同个事务里两个相邻的select命令可能会查看到不同的快照,因为其他事务会在第一个select执行期间提交。
read uncommitted:读未提交隔离级别,不推荐使用。事务能读到其他事务未提交的数据,可能产生数据不一致的现象。在协调节点故障无法恢复时或应急时可考虑使用,越过GTM与CN/DN不一致时的阻塞,但建议写事务不要使用,以免产生数据不一致,读事务可应急使用。
repeatable read:可重复读隔离级别,事务只能读到事务开始之前已提交的数据,不能读到未提交的数据以及事务执行期间其他并发事务提交的修改,但是查询能查看到自身所在事务中先前更新的执行结果,即使先前更新尚未提交。
serializable:可串行化隔离级别,gaussdb目前功能上不支持此隔离级别。
11.输出命令,启动事务,事务隔离级别为读已提交,只读模式
开启事务:start transaction;
设置隔离级别:set local transaction isolation level read committed readonly;
结束事务:commit;
- 点赞
- 收藏
- 关注作者
评论(0)