Як додати стовпець у DynamoDB


80

Чи є спосіб додати новий стовпець до існуючої таблиці в DynamoDB в AWS Amazon?

Google не допоміг,

Запит UpdateTable у http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-table.html?highlight=update%20table не містить жодної інформації щодо додавання нового стовпця.

Відповіді:


165

DynamoDB не вимагає визначення схеми, і тому поняття "стовпець" не існує. Ви можете просто додати новий елемент з новим атрибутом.


6
Отже, користувач може просто завантажити свою "інформацію про профіль" із додатковим полем, і динамо просто прийме її на льоту? Або я повинен увійти як адміністратор і додати його?
Коста,

12
@Costa, поки ваш код включає новий атрибут у свій виклик PutItem, DynamoDB просто прийме його. Неважливо, що жоден інший запис не має цього атрибута.
osullic

як видалити атрибут з усіх документів?
Прашант Тапасе,

2
Я не вважаю, що вам потрібно виконати ітерацію і зателефонувати за кожну
операцію

1
@HrushikeshDhumal, можливо, ви не бачите нового поля в інтерфейсі, оскільки ви не запитуєте його. Dynamodb буде зберігати дані з новими атрибутами в елементі - немає необхідності визначати атрибути, крім хеш-ключа (і ключа сортування, якщо він присутній).
bschandramohan

5

Ну, давайте не будемо затягуватися в семантичну дискусію про різницю між "полями" та "стовпцями". Слово "стовпець" насправді нагадує нам реляційні бази даних, якими dynamodb не є. По суті, це означає, що dynamodb не має зовнішніх ключів .

Dynamodb має "ключові розділи основного розділу" та "ключі розділу індексу" , як і у реляційних баз даних.

Вам потрібно поважати ці ключі під час додавання даних. Але крім цих вимог, вам не потрібно заздалегідь визначати свої поля (за винятком тих розділів, про які згадувалося раніше).

Якщо припустити, що ви новачок у цьому, є кілька додаткових практичних прикладів:

  • Додайте числове поле до кожного запису, щоб зберегти час створення в секундах . Dynamodb має додаткові функції очищення, які вимагають такого типу поля у ваших даних.
  • Ви не можете використовувати дати в dynamodb , тому вам доведеться зберігати їх як числові поля або як рядки. Враховуючи вищезазначене зауваження, ви можете віддати перевагу числовому типу для них.
  • Не зберігайте в ньому великі документи, оскільки максимальний розмір завантаження становить 16 МБ, а максимальний розмір запису - 400 КБ. На щастя, AWS також має DocumentDB.

1

Я встановив NoSQL Workbench, після чого підключився до існуючої таблиці DynamoDB і спробував оновити існуючий елемент, додавши новий атрибут. Я зрозумів, що ми можемо додати новий атрибут лише з одним із цих типів - "SS", "NS", "BS" (набір рядків, набір чисел, двійковий набір "). У Workbench ми можемо генерувати код для вибраного операції.

введіть тут опис зображення

Я відсканував свою таблицю dynamodb і для кожного елемента додав новий атрибут типу "SS", а потім відсканував і оновив нещодавно доданий новий атрибут типу - "S", щоб створити загальний вторинний індекс (GSI) з первинним ключем - "pk2NewAttr ".

Відео, пов’язане з NoSQL Workbench - https://www.youtube.com/watch?v=Xn12QSNa4RE&feature=youtu.be&t=3666

Приклад у Python "як сканувати всю таблицю dynamodb" - https://gist.github.com/pgolding


-1

Спосіб додати новий стовпець до існуючої таблиці в DynamoDB в Amazon AWS:

Ми можемо зберігати значення в DynamoDb двома способами, (i) У типі структури RDBMS для DynamoDB, ми можемо додати новий Coulmn, виконавши ту саму команду, зберігаючи запис "нова колонка", в межах якого Записи в існуючій таблиці було створено. ми можемо використовувати DynamoDb із записами / рядками, що мають значення для певних стовпців, тоді як інші стовпці не мають значень.

(ii) у структурі типу NoSQL; де ми зберігаємо рядок Json у стовпці, щоб зберегти всі атрибути відповідно до вимоги. Тут ми генеруємо рядок json, і нам потрібно додати новий атрибут у рядок json, який потім можна вставити в ту ж колонку, але з новим атрибутом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.