1.数据库分为关系型和非关系型数据库

关系型数据库特点:

  1. 管理方便
  2. 易于实现复杂查询
  3. 存储容量相对较少

非关系型数据库特点

  1. 性能较高
  2. 易于水平拓展

2.mysql如何存储海量数据,实现高性能、高可用

以分布式主从同步为例:mysq把DML操作存储在binlog存贮在主库,然后通过网络传输把binlog的数据内容发送到从库的relaylog,从库通过解析relaylog内容对主数据进行一个备份操作。

如何解决主从同步中也可能因为网络异常从而造成从库备份延迟或者失败?

主从同步需要及时定时对数据进行物理存储,或者存储在云端。

如何解决写操作引起的高并发?

海量的数据进行读写操作的时候容易发生高并发。当然读的时候不会产生高并发,只有写操作频繁的时候。
1.读写分离
几乎所有的情形都是读多写相对少。使用从库进行大量的读操作,让主库承担写操作。
2.分库分表
分库分表就是把数据映射成一对多。使用mycat中间组件来处理分库分表的算法。
这种数据水平拆分。
类似也有微服务使用不用应用存入不同的数据库这种垂直拆分。当然也可以使用水平拆分和垂直拆分的方式。

数据库优化可以从哪些方面?
  1. 字段类型选取
  2. 数据库缓存
  3. 关闭无用服务
  4. 数据库参数优化
  5. 选取合适的存储引擎
  6. sql语句编写
  7. 索引处理
如何找到慢sql?
  1. 使用explain查看sql执行计划
  2. 批量的sql使用慢查询日志或者mysqldumpslow找到查询性能较低的sql进行优化
使用mycat中间件如何注意单节点挂掉造成的故障问题?
  1. mycat使用去中心化的集群,使用ip选取策略做分发。选取一个临时master,使用心跳机制连接另外一个mycat。如果另外一个mycat获取不到心跳马上动态更改这个为master。
  2. zookeeper/HAproxy/keepalived等组件来实现选举、心跳机制。
如何把海量请求拦截在请求之前?

海量请求使用关系型数据库可使用限流、削峰填谷、缓存等将海量请求拦截在请求数据库之前。针对PB级、日处理上亿的考虑使用非关系型数据库。