Ответ 1
Архитектура Amazon.com очень интересна. Они перешли на сервис-ориентированную архитектуру, если вы посмотрите на все области контента на своем сайте, каждый из них обслуживается другой службой. Таким образом, есть услуга "Список пожеланий" и услуга "Связанные с вами предметы", а также служба "Бестселлеры", Служба корзины покупок и т.д.
Каждая из услуг имеет свой собственный набор требований и функций. Эти требования включают такие моменты, как время отклика и доступность. Внутренне каждая услуга реализуется с использованием любой базы данных, которая наилучшим образом соответствует потребностям. Хранилище ключевых значений полезно для корзины покупок, потому что вам никогда не нужно делать:
select * from book where book_id = n
в корзине покупок.
Одна из важных вещей, которую нужно реализовать, - это огромная роль, которую играет доступность в масштабе Амазонки. Считайте, что доход Amazon 2008 составил 19,166 миллиарда долларов. Общий розничный доход с сайта Amazon.com может составлять более 1000 долларов США в секунду в день (это может быть вдвое больше, чем я знаю, в часы пик. Это может быть в 5 раз больше, чем во время пиковых праздничных покупок). Подумайте о стоимости, если служба корзины покупок снизится на 3 минуты при максимальном использовании. Понятно, что потеря будет большой долларовой стоимостью в откатных тележках.
Использование хранилища значений ключей не означает охват разрозненного дублирования данных, это означает перепроектирование приложений, чтобы необходимые данные не нуждались в синтаксисе в одной монолитной базе данных.
Amazon - это скорее платформа для приложений, чем что-либо еще. Вот видео видео Amazon CTO, говорящее только об этом.