我听说亚马逊使用键值数据存储 – 它不使用传统的关系规范数据库.作为一个只使用传统方法的人,这是如何工作的?你不需要做以下操作吗?
从book_id = n中选择*
或者:
从书中选择*,其中author_id = y
如何构建一个具有如此多的数据和如此多的关系的站点/应用程序?
Amazon.com架构非常有趣.他们转移到面向服务的架构,如果您查看其网站上的所有不同内容区域,则每个服务都由不同的服务提供服务.所以有一个’愿望清单’服务和一个’相关的项目你看过的’服务,和畅销产品服务,购物车服务等.
每个服务都有自己的要求和功能.这些要求包括响应时间和可用性.内部每个服务都是使用最适合需求的数据库实现的.关键的价值商店对于购物车是有好处的,因为您不需要做:
select * from book where book_id = n
在购物车上.
其中一个重要的事情就是在亚马逊的规模上可以发挥巨大的作用.考虑到亚马逊2008年收入为191.66亿美元.亚马逊网站的零售总收入在白天可能超过每秒1000美元(可能是高峰时段知道的这个数字的两倍),可能是高峰假期购物的5倍.如果购物车服务在使用高峰期间下降3分钟,请考虑成本.很明显,放弃购物车的损失将是一个巨大的美元价值.
使用键值存储并不意味着猖獗的数据重复,这意味着重新设计应用程序,所以必要的数据不需要坐在一个单一数据库中.
亚马逊真的比其他任何一个应用程序都更为平台.这是一个video of Amazon’s CTO谈论这个.