Dynamodb поддерживает операции обновления, такие как реляционные дБ

StackOverflow https://stackoverflow.com//questions/22084023

  •  24-12-2019
  •  | 
  •  

Вопрос

Я знаю, что мы можем сделать обновление по двум операциям, сначала получите первичный ключ, запросивая БД, а затем обновить его, поставьте операцию.Но обновление поддержки DynamOdb одним операцией как реляционная БД (например, MySQL)?Поскольку две операции будут стоить больше времени в передаче сети.

Моя ситуация как: У меня есть таблица a с полями ID, имя, местоположение, значение .

и имя + местоположение может однозначно определять строку. Так что теперь я хочу обновить поле «Значение», когда имя и местоположение удовлетворено некоторыми условиями, но я не знаю удостоверение личности.Поэтому, если я использую MySQL, то я могу обновить его с помощью «Обновить заданное значение= xxx, где name=" ABC "и местоположение=" 123 "". Но когда я использую dynamodb, я должен сначала получить идентификатор основного ключа. Затем используйте ключ, чтобы обновить элемент.Таким образом, мой вопрос в том, что Dynamodb также поддерживает аналогичную операцию обновления, так как MySQL делает. Спасибо!

Это было полезно?

Решение

Чен ударил его на нос. Джои, ситуация, которую вы описали (последующие поставленные), эквивалентно 2 функциям MySQL

   SELECT * 
   FROM TABLE
   WHERE key = x

   UPDATE TABLE 
   SET var = param
   WHERE key = x
.

Видите ли вы, как выбрать / putitem не являются частью процесса обновления? Пока у вас есть ключи, вам не нужно выполнять запрос. Я предполагаю, что вы выполняете GetItem до запроса PutITEM, потому что PutiteM заменяет весь товар / строк (I.E. Удаляет все атрибуты, не указанные в запросе поставки).

Так что, если оригинальный элемент выглядел как:

и вы выполняете путицем:

Конечный элемент выглядит как:

Если вы выполняете UpdateItem вместо PutiteM, вы вместо этого получаете:

Вот ссылка для использования updateItem с java. Там также примеры с использованием .NET и PHP

updateItem для java

Другие советы

Исправьте меня, если я ошибаюсь, но обновление товара будет потреблять 1 операцию, только она получит значение HASH Key и обновить его, если существует еще создаст новый элемент (элемент до 1 кБ)

Вот ссылка для справки: http:// docs.aws.amazon.com / Amazondynamodb / Neighle / Leveloperguide / WorkingWithTables.html # Объекты ОбъединениеCalculations

Надеюсь, что помогает

You don't need to get the primary key first. If you know the primary key, you don't need to get anything and you can simply use the UpdateItem API call to update your item.

If that still isn't clear, please edit your question and add some code samples of what you are trying to do.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top