对速度的改进:
如何提高响应速度?首先想一下 有哪些地方可以加速 我们是提高读的速度还是写的速度?
如果是提高读的速度的话 那么很简单 加缓存就可以了
当然 还可以优化服务器的访问速度(通过DNS就近原则) 以及优化数据结构的访问速度(适用centralized MySQL和distributed memcached)
比如说下图:
the scale step of design Tiny Url System_数据

当请求过多 一台服务器搞不定了 怎么办呢?
那就搞多台,比如说,解决存不下的问题,解决QPS的问题
但是多台服务器也有个问题要解决 如何分割数据,是vertical sharding 还是horizontal sharding?
是horizontal 因为vertical(将多张数据表分配给多台机器)并不适用 只能用horizontal sharding 那么这样的话 是用什么作为sharding Key呢?
可以用LongURL做 或者用ID做sharding key.
the scale step of design Tiny Url System_自增_02

还记得之前如果选用算法3 即进制转换方法,只能用SQL 那么在N台服务器中全局共享一个自增ID是个问题。有两种解决方法:
the scale step of design Tiny Url System_自定义_03

还有其他什么可以优化的吗?
the scale step of design Tiny Url System_自增_04

如何提供个性化定制的URL?
个性化的话我们不妨自定义意昂表来储存这些自定义的URL。
the scale step of design Tiny Url System_自定义_05
错误的想法是:
在URL table里面加一个column是不行的 不然大部分数据这一项都会是空