Эквивалент семени идентификации Amazon SimpleDB - PullRequest
6 голосов
/ 10 апреля 2010

Есть ли эквивалент Simple Seed в SimpleDB?

Если ответ «нет», как вы справляетесь с созданием чего-то вроде номера клиента или номера заказа, что предотвратит создание дублирующих номеров?

Мой опыт в основном основан на SQL Server, в котором я бы либо создал первичный ключ с начальным числом идентификаторов, либо использовал транзакции в хранимой процедуре для увеличения числа.

Спасибо за вашу помощь!

Ответы [ 2 ]

6 голосов
/ 10 апреля 2010

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

Установите условия:

   Expected.1.Name=creation_date
   Expected.1.Exists=false

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

Производительность условной записи в большинстве случаев такая же, как и при обычной записи, но когда SimpleDB находится под большой нагрузкой или с большими задержками во внутренней сети, эти вызовы будут занимать больше времени, чем обычные записи. Во время сценариев редких сбоев внутри SimpleDB условная запись завершается сбоем в течение определенного периода времени.

Если вы не можете с этим смириться, вам придется написать какой-то альтернативный способ получения ваших уникальных ключей во время отключений. Другая область SimpleDB может использоваться только для генерации ключей, поскольку SimpleDB по-прежнему будет принимать обычные записи (безусловные PutAttributes) во время простоев.

3 голосов
/ 10 апреля 2010

Если у вас еще нет чего-то уникального, что будет работать, использование GUID для Предмета, вероятно, является типичным решением.

...