C++自制Redis数据库(二)部分设计前置问题

本文探讨了单机及多机环境下数据库设计的重要考量因素,包括数据结构设计、内存管理、持久化策略、网络编程及故障恢复等方面的问题。

单机设计前置问题

1.各种数据结构如何设计,以适应所有功能。

2.服务器如何保存数据库。

3。服务器如何保存具体的数据,多少在内存。

4.如何对待依靠时间戳来判定数据的可靠性。

5.接着是如何应用时间来清除老的键值对。

6.如何设计内存管理模块

7.过期的键如何删除

8.日志如何处理会更高效

9.AOF RDB持久化如何实现

10.如何从文件中恢复数据到内存

11.事务极多的情况下,是否需要队列

12. 文件事件与事件事件的调度

13.网络编程设计,消息的数据结构,分包发送消息

14.服务器接受到消息后,如何读取命令然后做哪些预备工作开始执行命令

简单多机设计前置问题

1.设计存储系统的时候需要考虑如何通过读取持久化介质中的数据来恢复内存信息,从而恢复到宕机前的某个一致性状态。包括从core dump 中恢复信息。

2.进程重启后从core dump 文件中恢复内存信息。

3.网络永远是不可靠的,只有接受到对方回复的信息才能确定消息发送成功。

4.系统设计的时候必须考虑网络出现异常并采取相应的处理措施

5.磁盘故障需要考虑多台服务器,当一个服务器磁盘故障后,我们需要从另一个服务器读取文件,恢复数据。

6.副本是多机存储系统容错的唯一手段。

7.设计之初就需要进行性能估计,不然会出现重大设计失误。

8.如何处理超时问题,服务器处理了请求但是客户端没有接受,如何处理

9.一致性问题如何解决。

10.如何衡量其性能。

11.数据如何均衡散列数据到多台服务器,保证大作业用户的效率。

12.如何实现简单负载均衡功能,心跳包是如何实现的。

13.复制数据的时候如何同步副本,必须数据备份好之后才能提供写完成操作。

14.强同步方式,与异步同步方式。

15.容错问题如何解决,故障检测(心跳,租约)

16.多个节点之间如何同步,迁移数据

 

 

查看原文:http://zmrlinux.com/2016/02/05/c%e8%87%aa%e5%88%b6redis%e6%95%b0%e6%8d%ae%e5%ba%93%ef%bc%88%e4%ba%8c%ef%bc%89%e9%83%a8%e5%88%86%e8%ae%be%e8%ae%a1%e5%89%8d%e7%bd%ae%e9%97%ae%e9%a2%98/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值