Как работает Amazon.com с хранилищем данных с ключевыми значениями?

Я слышал, что Amazon использует хранилище данных с ключом - что он не использует традиционную реляционную нормированную db. Говоря как кто-то, кто использовал традиционный подход, как это работает? Вам не нужно делать следующее?

select * from book where book_id = n

Или a:

select * from book where author_id = y

Как вы можете создать сайт/приложение с таким количеством данных и так много отношений без нормализованного db?

Ответ 1

Архитектура Amazon.com очень интересна. Они перешли на сервис-ориентированную архитектуру, если вы посмотрите на все области контента на своем сайте, каждый из них обслуживается другой службой. Таким образом, есть услуга "Список пожеланий" и услуга "Связанные с вами предметы", а также служба "Бестселлеры", Служба корзины покупок и т.д.

Каждая из услуг имеет свой собственный набор требований и функций. Эти требования включают такие моменты, как время отклика и доступность. Внутренне каждая услуга реализуется с использованием любой базы данных, которая наилучшим образом соответствует потребностям. Хранилище ключевых значений полезно для корзины покупок, потому что вам никогда не нужно делать:

select * from book where book_id = n

в корзине покупок.

Одна из важных вещей, которую нужно реализовать, - это огромная роль, которую играет доступность в масштабе Амазонки. Считайте, что доход Amazon 2008 составил 19,166 миллиарда долларов. Общий розничный доход с сайта Amazon.com может составлять более 1000 долларов США в секунду в день (это может быть вдвое больше, чем я знаю, в часы пик. Это может быть в 5 раз больше, чем во время пиковых праздничных покупок). Подумайте о стоимости, если служба корзины покупок снизится на 3 минуты при максимальном использовании. Понятно, что потеря будет большой долларовой стоимостью в откатных тележках.

Использование хранилища значений ключей не означает охват разрозненного дублирования данных, это означает перепроектирование приложений, чтобы необходимые данные не нуждались в синтаксисе в одной монолитной базе данных.

Amazon - это скорее платформа для приложений, чем что-либо еще. Вот видео видео Amazon CTO, говорящее только об этом.

Ответ 2

Вы можете начать свое исследование, просмотрев эти статьи:

Хранилище данных Amazon предлагается публике как SimpleDB, который является частью Amazon Web Services.

Также обратите внимание, что Google предлагает аналогичную "разреженную распределенную многомерную сортированную карту "хранилище данных для Google App Engine.

Ответ 3

Он использует свой ключ Dynamo для своей корзины покупок и выбирает другие приложения.