阅读材料:
unique key
https://en.wikipedia.org/wiki/Unique_key#Defining_primary_keys
增删改查
https://en.wikipedia.org/wiki/Create,_read,_update_and_delete
如何存储密码
http://zhuoqiang.me/password-storage-and-python-example.html
https://www.zhihu.com/question/20479856
session
http://fred-zone.blogspot.com/2014/01/web-session.html
http://machinesaredigging.com/2013/10/29/how-does-a-web-session-work/
http://blog.csdn.net/fangaoxin/article/details/6952954
继承
http://c.biancheng.net/cpp/biancheng/view/90.html
https://www.go4expert.com/articles/inheritance-cpp-vs-java-t22245/
https://www.codeproject.com/articles/772238/diving-in-oop-polymorphism-and-inheritance-part
事务
http://karenten10-blog.logdown.com/posts/192629-database-transaction-1-acid
http://coolshell.cn/articles/10910.html
https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
ACID
http://in355hz.iteye.com/blog/2029963
http://blog.csdn.net/duxingxia356/article/details/43992015
设计一个用户系统
- 场景
- 注册/修改/删除账号
- 登陆登出
- session过期:
- session标记用户和服务器的会话
- 用户使用多个连接时有多个session
- 客户端保持session id
- 有服务就有session,不一定要登录
- 记住登录7天->session过期
- 删除检查:lazy策略
- session过期:
- 余额/VIP
- 约束
- 总用户:100000000
- 日活:1000000
- 预测三个月后日活:1000000*2
- 注册率:1%
- 注册人数:20000
- 登录频率:15%
- 平均登录次数:1.2
- 日登陆次数:1000000*15%*1.2 = 360000
- 平均登录时间频率:360000/86400=4.2/s
- 正常登录频率:8.4/s
- 峰值登录频率:8.4*5=42/s
- 应用
- 代理
- 账户服务
- 数据
- uid //unique
- name
- pwd //密文,防拖库。SHA1 MD5 单向不可逆
- 伪删除标志位
- session list //分离成为单独的表
- 索引
- hash:不支持range查询
- B+树:支持range,磁盘友好,b叉树
- 增删改查操作
- 用户状态机
- 定长:数据对齐,空间浪费
支付系统
- 数据
- uid
- money
- vip expire time
- 充值
- 买东西
- 问题1:崩溃导致不一致->事务transaction
- 问题2:重复用户、影子用户->外键/检查器
- 问题3:并发导致数据不一致->读写锁(事务?)
- 问题4:蓝屏问题:复制、热备份
- 逻辑视图与物理视图:多机备份
ACID
- 原子性
- 一致性
- 隔离性
- 持久性
作业:http://www.jiuzhang.com/qa/88/