multiple1902
2012-12-30 01:50:36 +08:00
短域名(短网址)服务,优化的关键点就是「快」。从这个角度说,使用 Django 这样的「重」框架可能不是最好的选择。
短网址的模型相对简单,非常接近一个 K-V 的存储,因此你可以考虑 NoSQL 的 K-V 数据库。具体来说,你必须存储的信息包括缩短后的网址本身,以及对应的原网址。你可能还会想要存储这条短网址的点击次数、添加日期、过期日期。但是,在用户点击一条短网址、你的网站给出转向的过程中,添加日期这些字段并不会被用到。所以这些字段(元信息)也可以放在另一个表里面。
从性能优化角度分析,「缩短后的网址」在数据库里应该以主键的形式出现,至少也应当做索引。但是,以字符串作为主键的性能可能不如以自增的整数来得高。想一想,是不是可以设计一个「字符串」(例如 SxAm6)到 auto increment 字段(如 123456)的双射函数?
短网址关键字如何选取?首先要看什么样的字符可以出现在 URL 里面。0-9a-zA-Z 以及一大把特殊符号都是可以出现的,但考虑到短网址也要方便用户用键盘输入,所以建议只使用字母和数字,字母区分大小写。
链接总有热的和冷的。当服务的规模扩大,缓存和分片就会成为你要考虑的问题。这既可以在数据库本身的层面上处理,也可以在网站程序上处理。