2016-03-25 2 views
2

мне интересно, если есть лучший способ сделать это:DynamoDB Карта Создание или обновление (PHP)

Я в настоящее время установки ключевых значений + в карте в DynamoDB для уникальных объектов. То, как я делаю это следующим образом:

  1. ConditionalUpdate - Если attribute_not_exists(MAP_NAME) создать новую карту, населенную значение ключа +. (Это в Try/улова на ConditionalCheckFailedException, возвращение ложным, если произошло это исключение.)
  2. Если мы не создавали карту (без исключения), карта обновления с ключевым значением +: set MAP_NAME.KEY = :value

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

Спасибо!

+0

Вам удалось найти другое решение для этого? Я просто столкнулся с той же проблемой. Прямо сейчас, решение, которое я рассматриваю, меняет атрибуты на карте на атрибуты верхнего уровня, но я бы предпочел сохранить схему как есть. – Nadine

ответ

0

было бы интересно увидеть ваш конкретный пример, но попытался ли вы позвонить «получить», чтобы узнать, существует ли элемент?

Редактировать: Это действительно зависит от того, что вы пытаетесь сделать, может быть множество различных решений. DynamoDB не так гибко в этом, как говорят MongoDB, а иногда требует творческих решений для простых задач.

+0

Я этого не делаю. Частично мне нравится использовать UpdateItem, потому что он устанавливает элемент, если он не существует. Получение определенно предотвратит исключение, возможно, за счет звонка? Обычно вы используете шаблон get + set для своих обновлений? – AllenTsai

+0

Не настоящий поклонник этого решения, может привести к гонке. – Nadine

Смежные вопросы