数据库基础知识

       1.文件存储系统与关系数据库在设计难度、数据冗余程度、数据架构、应用扩展性方面的差异?

1. 设计难度:文件系统针对特定应用系统设计,难度较小;关系数据库数据结构需要符合关系模式,设计难度较大
2. 冗余程度:文件系统数据冗余较大,可能在多个文件中复制相同的数据属性;关系数据库遵循数据库范式,数据冗余较少
3. 数据架构:文件系统以应用系统要求为中心组织和管理数据;关系数据库以数据库为中心组织和管理数据。
4. 应用扩展性:文件系统符合特定应用系统要求的文件数据很在不同应用系统之间共享数据。关系数据库数据独立于应用系统,很容易在不同的应用系统之间共享数据。

       2.内存数据库与关系型数据库在数据模型、读写性能、存储容量、可靠性方面的差异?

1. 数据模型:内存数据库使用Key-Value键值对模式;关系数据库使用关系模式
2. 读写性能:内存数据库直接读写内存性能较高;关系数据库读写外存性能较低
3. 存储容量:内存数据库基于内存存储容量受限;关系数据库基于磁盘存储容量大
4. 可靠性:  内存数据库恢复机制复杂可靠性低;关系数据库内建恢复机制,可靠性高

        3.关系型数据库开发的阶段包括哪些?其中逻辑数据模型设计包含哪些任务?什么是超类实体?什么是派生属性?


数据库开发包括:需求分析,概念设计,逻辑设计,物理设计,实施阶段,运行维护。
其中逻辑设计阶段包括:
1. 确定数据模型。
2. 将ER图转换成表,将ER模型转换成关系模型。
3. 确定完整性约束。
4. 确定用户视图。

超类实体:将一些子实体所共有的属性抽象为一个单独的新实体,这个新的实体就是超类实体。
派生属性:根据其他属性计算得出的属性就是派生属性。如快递包裹费用中的总计就是派生属性。

        4.什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式?


SQL注入攻击就是把SQL命令插入到web表单,输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意攻击的目的。
抵御SQL注入攻击方式:
1. 使用正则表达式;
2. 使用参数化过滤性语句;
3. 检查用户输入合法性;
4. 用户相关数据加密处理;
5. 使用专业的漏洞扫描工具;

          5.数据库引入主从复制机制,能带来哪些好处?


1. 可扩展性更优。采用单台数据库服务器,随着访问量增加,必然会产生访问瓶颈,而主从结构大大方便服务器扩容,不影响系统使用。
2. 性能大大提升。商务平台用户量大,并发访问高,主从方式采用一主多从,满足不同用户可以从不同数据库读取数据,提高访问速度。
3. 负载均衡功能。一主多从相当于分担了主机任务,做了负载均衡。
4. 保证数据安全。主从方式实现了数据冗余,不会因为某台机器硬件故障而引起数据丢失。

          6.关系数据库中实体完整性、参照完整性、用户定义完整性是什么?

 
实体完整性:保证关系中的每个元组都是可识别和唯一的。指关系数据库中所有表都必须有主键,不允许表中存在无主键值的记录,不允许存在主键值相同的记录。
参照完整性:是指多个实体或关系之间的关联关系,就是定义外键与被参照的主键之间的引用规则。外键一般要求为空或者等于其所参照的关系中的某个元组的主键值。
用户定义完整性:指关系中属性的取值范围,防止属性的值与应用语义矛盾。

             7.什么是数据持久层?使用数据持久层能为项目开发带来哪些好处?


数据持久层是一组软件服务,将应用程序与该程序使用的数据源分离,为整个项目提供一个统一、安全、并发的数据持久机制。
使用数据持久层好处有:
1. 程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写代码。
2. 业务逻辑代码可读性强,在代码中不会有大量的SQL语句,提高程序的可读性。
3. 持久化技术可以自动优化,以减少对数据库的访问量,提高程序的运行效率。
4. 简化开发工作,让开发人员更关注于业务逻辑的开发。
5. 通过ORM对象关系映射向业务逻辑提供面向对象的数据访问。


              8.什么是ORM?请用300以内文字说明数据库程序访问方式与采用ORM方式的优缺点?

 ORM即对象关系映射Object-Relational Mapping,它在关系型数据库和对象之间建立一个映射,这样我们在操作数据库的时候,就不需再和复杂的SQL语句打交道,只要像平时操作对象一样即可。
1. 程序访问方式:
优点:性能比直接使用SQL好;可以处理复杂查询语句。
缺点:要求程序员懂SQL语句;修改与维护相对困难。
2. ORM方式:
优点:程序员不用再写SQL来进行数据库操作,大大降低学习和开发成本;减少代码量,降低由于SQL代码质量差而带来的影响。
缺点:性能比直接使用SQL差;不太容易处理复杂查询语句。

                9.什么是Redis?什么是MemCache?它们两者之间的差异是什么?


Redis是一个开源的使用C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value型数据库,并提供多种语言的API。
MemCache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它在内存中维护一个巨大的Hash表,能够存储各种格式数据,包括图片,视频,文件等。
Redis和MemCache的差异:
1. Redis和Memcache都是内存数据库,都支持Key-Value数据类型。MemCache可以缓存其它东西,如图片,视频等。Redis支持string、list、set、zset、hash等数据结构的存储。
2. Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启时可以再次加载进行使用。而MemCache挂掉后数据会丢失。
3. 灾难恢复方面,MemCache挂掉后数据不可恢复。Redis数据丢失后可以恢复。
4. Redis并不是所有数据都一直存储在内存中,当物理内存快用完时,会将一些很久未使用的value值交换到磁盘。这是和MemCache相比一个最大的区别。
5. Redis在很多方面支持数据库的特性,可以说它就是一个数据库系统。而MemCache只是简单的Key-Value缓存。

               10.解决Redis和MySQL数据实时同步的常见方案有哪些?


     1. 实时同步方案。读时先查缓存,查不到再从DB查询,并保存到缓存;写时先写数据库,成功后,再更新或失效掉缓存。
    2. 异步队列方式同步,可采用kafka等消息中间件处理。
    3. 通过数据库插件,基于binlog来完成数据同步。
    4. 利用触发器进行缓存同步。

                11.什么是数据库建模中的反规范化技术,指出采用反规范化技术能获得哪些益处,可能带来哪些问题?


规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种规范化设计的回退方法就叫做反规范化技术。 
优点:降低了连接操作的需求,降低了外码和索引的数目,还可能减少关系表的数目,提高查询的效率。
缺点:数据重复存储,浪费了存储空间,可能出现数据库完整性的问题。为了保障数据库的一致性,增加了数据维护的复杂性,会降低修改的速度。

              12.常见的反规范化设计方法?


1.增加冗余列;  2.增加派生列;  3.重新组表;  4.水平分割表;  5.垂直分割表;
 

             13.在反规范化设计中,解决数据不一致性问题的三种常见方法?


1.触发器数据同步;  2.应用程序数据同步;  3.物化视图;  4.批处理维护;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值