Запрос на установку значения для всех элементов в Amazon SimpleDB

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

В основном для всех моих вещей,

УСТАНОВИТЕ ValueA равным 100, если ValueB равно 0

Но я не понимаю, как этого добиться. До сих пор я устанавливал значение для отдельных элементов, просто используя PutRequest, например:

ArrayList<ReplaceableAttribute> newAttributes = new ArrayList<ReplaceableAttribute>();
newAttributes.add(new ReplaceableAttribute("ValueA",Integer.toString(100), true));
PutAttributesRequest newRequest = new PutAttributesRequest();
newRequest.setDomainName(usersDomain);
newRequest.setItemName(userID);
newRequest.setAttributes(newAttributes);
sdb.putAttributes(newRequest);

Это работает для отдельного элемента и требует, чтобы я сначала получил имя элемента (идентификатор пользователя). Означает ли это, что я должен «перечислить» все свои предметы и сделать это 1 к 1? Я полагаю, что, поскольку у меня есть около 19000+ предметов, мне также придется использовать токен, чтобы получить следующий набор после лимита 2000, верно?

Нет более эффективного способа? Возможно, сейчас это не так уж и сложно, но я ожидаю, что в конечном итоге у нас будет более 100 тысяч предметов.

PD: Я использую AWS Java SDK для Eclipse.


person Pochi    schedule 02.08.2013    source источник


Ответы (1)


Если вы говорите о том, как сделать это грамматически, написав свой собственный код, тогда да. Сначала вы должны знать все названия элементов, то есть в вашем случае UserID, а затем вам нужно установить значение одно за другим. В этом случае вы можете использовать BatchPUTAttribute. Используя Batch PUT, вы можете обновить 25 элементов за один запрос. Вы можете выполнять от 5 до 20 запросов BatchPutAttribute в параллельных потоках. Узнайте больше, чтобы настроить производительность.

Если вам нужно сделать это как-то непросто, вы можете использовать SDBExplorer. Помните, что для всех элементов будет установлено значение 100, потому что SDBExplorer не поддерживает условный PUT. Если вы все равно хотите установить его, выполните следующие действия:

  1. Загрузите zip-версию SDBExplorer со страницы загрузки.
  2. Распакуйте его и запустите исполняемый файл.
  3. Скачать 30-дневную пробную лицензию.
  4. После загрузки лицензии откроется основной интерфейс.
  5. Предоставьте действующий ключ доступа и секретные ключи и нажмите кнопку «GO».
  6. Вы увидите список доменов в левом дереве.
  7. Щелкните правой кнопкой мыши домен, в котором вы хотите установить значение для всех элементов.
  8. Выберите вариант «Экспорт в CSV».
  9. Экспортируйте содержимое домена в CSV. http://www.sdbexplorer.com/documentation/simpledb--how-to-export-domain-in-csv-using-sdbexplorer.html
  10. Перейдите по пути, по которому был экспортирован ваш домен.
  11. Откройте файл CSV.
  12. Ваш первый столбец - это название предмета.
  13. Удалите все столбцы, кроме имени элемента и столбца «ValueA».
  14. Установите 100 для всех имен элементов в столбце «ValueA».
  15. Сохраните CSV.
  16. Перейдите в основной пользовательский интерфейс SDBExplorer.
  17. Выберите тот же домен.
  18. Нажмите на опцию «Импорт» на панели инструментов.
  19. Откроется панель.
  20. Теперь импортируйте данные в домен. http://www.sdbexplorer.com/documentation/simpledb--how-to-upload-csv-file-data-and-specifying-column-as-amazon-simple-db-item-name.html
  21. После завершения импорта исследуйте домен, и вы найдете значение 100, установленное для всех элементов столбца ValueA.

Сначала попробуйте выполнить эти действия на любом фиктивном домене.

Что именно я пытаюсь вам предложить?

Чтобы узнать все имена элементов в вашем домене, я предлагаю вам экспортировать все содержимое вашего домена в файл CSV в локальной файловой системе. Как только вы получите все названия элементов в CSV, оставьте только один столбец «ValueA». Установите «100» для всех элементов в CSV-файле и загрузите / импортируйте контент обратно в домен.

Разглашающий: Я один из разработчиков SDBExplorer.

person Ashish Pancholi    schedule 02.08.2013
comment
О, спасибо за ответ, я действительно купил SDB Explorer и использую его для установки атрибутов вручную. Но меня немного беспокоит, что что-то случится с моей базой данных, потому что я сообщил об ошибке, при которой при сохранении в CSV полностью игнорировались многозначные атрибуты. Но в этом случае, я думаю, все было бы хорошо, но другие атрибуты не будут удалены, верно? только заменить строку атрибута ValueA? - person Pochi; 02.08.2013
comment
@Chiquis Да. Он NOT удалит другие атрибуты и ONLY заменит VauleA строку атрибутов. Я предлагаю, пожалуйста, попробуйте его на фиктивном домене, если данные в вашем домене очень важны. К сведению: SDBExplorer всегда спрашивает перед загрузкой два варианта, то есть Add или Replace. Если вы выберете Add, оно добавит новое значение к атрибуту без замены старого значения, а если вы выберете Replace, оно заменит старые значения на новые. Новая версия SDBExplorer скоро будет выпущена с исправлениями многозначного атрибута. Спасибо. - person Ashish Pancholi; 02.08.2013