формат для хранения JSON в DynamodB - PullRequest
0 голосов
/ 22 мая 2018

У меня есть файл JSON, который выглядит следующим образом

{
  "alliance":{
    "name_part_1":[
      "Ab",
      "Aen",
      "Zancl"
    ],
    "name_part_2":[
      "aca",
      "acia",
      "ythrae",
      "ytos"
    ],
    "name_part_3":[
      "Alliance",
      "Bond"
    ]
  }
}

Я хочу сохранить его в dynamoDB.Дело в том, что мне нужен генератор, который бы брал случайные элементы из таких полей, как name_part_1, name_part_2 и другие (число name_parts_x не ограничено, а количество комбинезонов в каждой части может составлять несколько сотен) и присоединять их ксоздать полное слово.Например,

name_part_1[1] + name_part_2[10] + name_part[3]

Мой вопрос заключается в том, какой формат я должен использовать, чтобы сделать это эффективно?Или NoSQL не должен использоваться для этого?Должен ли я рефакторинг JSON для чего-то вроде

{
    "name": "alliance",
    "parts": [ "name_part_1", "name_part_2", "name_part_3" ],
    "values": [
        { "name_part_1" : [ "Ab ... ] }, { "name_part_2": [ "aca" ... ] }  
    ]
}

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете просто поместить весь документ как он есть в DynamoDB и затем использовать путь к документу для доступа к нужным элементам.

Пути к документам

В выражении вы используете путь к документу, чтобы указать DynamoDB, где найти атрибут.Для атрибута верхнего уровня путь документа - это просто имя атрибута.Для вложенного атрибута вы создаете путь к документу, используя операторы разыменования.

Ниже приведены некоторые примеры путей к документам.(См. Элемент, показанный в разделе «Определение атрибутов элемента».)

Скалярный атрибут верхнего уровня: ProductDescription Атрибут списка верхнего уровня.(Это вернет весь список, а не только некоторые элементы.) RelatedItems Третий элемент из списка RelatedItems.(Помните, что элементы списка начинаются с нуля.) RelatedItems [2] Изображение продукта спереди.Pictures.FrontView Все пятизвездочные обзоры.ProductReviews.FiveStar Первый из пятизвездочных обзоров.ProductReviews.FiveStar [0] Примечание. Максимальная глубина пути документа составляет 32. Поэтому число операторов разыменования в пути не может превышать этот предел.

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

0 голосов
/ 22 мая 2018

Это идеальный вариант использования для DynamoDB.

Вы можете структурировать так:

NameParts (Table)
    namepart (partition key)
    range (hash key)

namepart: name_part_1 диапазон: 0 значение: "Ab"

Таким образом, каждая name_part будет иметь свой собственный диапазон и масштабироваться.Вы можете расширить его до тысяч или даже миллионов.

Вы можете создать пакетный getitem из sdk по вашему выбору и присоединить эти значения.

Справочник по REST API: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...