Dynamodb поддерживает операции обновления, такие как реляционные дБ
-
24-12-2019 - |
Вопрос
Я знаю, что мы можем сделать обновление по двум операциям, сначала получите первичный ключ, запросивая БД, а затем обновить его, поставьте операцию.Но обновление поддержки DynamOdb одним операцией как реляционная БД (например, MySQL)?Поскольку две операции будут стоить больше времени в передаче сети.
Моя ситуация как:
У меня есть таблица a с полями
и имя + местоположение может однозначно определять строку. Так что теперь я хочу обновить поле «Значение», когда имя и местоположение удовлетворено некоторыми условиями, но я не знаю удостоверение личности.Поэтому, если я использую 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
Другие советы
Исправьте меня, если я ошибаюсь, но обновление товара будет потреблять 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.