Я использую следующее: dynamodb2, boto, python. У меня есть следующий код для создания таблицы:
table = Table.create('mySecondTable',
schema=[HashKey('ID')],
RangeKey('advertiser'),
throughput={'read':5,'write':2},
global_indexes=[GlobalAllIndex('otherDataIndex',parts=[
HashKey('date',data_type=NUMBER),
RangeKey('publisher', date_type=str),
],throughput={'read':5,'write':3})],
connection=conn)
Я хотел бы иметь следующие данные, которые я могу запросить по: ID, рекламодателю, дате, издателю, размеру и цвету
Это означает, что мне нужна другая схема. Когда я добавляю дополнительные точки, он не запрашивает, если имя столбца не указано в схеме.
Однако проблема заключается в том, что сейчас я могу запросить только Id, рекламодателя, дату и издателя. Как добавить дополнительные столбцы, которые я могу запросить?
Я прочитал это, что, по-видимому, говорит, что это возможно: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html
Однако здесь нет примера: http://boto.readthedocs.org/en/latest/dynamodb2_tut.html
Я попытался добавить дополнительный ключ диапазона, однако он не работает (не может быть дубликатов)
Я бы хотел, чтобы это было так:
table = Table.create('mySecondTable',
schema=[
RangeKey('advertiser'),
otherKey('date')
fourthKey('publisher') ... etc
throughput={'read':5,'write':2},
connection=conn)
Благодарю!
Если вы хотите добавить дополнительные ключи диапазона, вам нужно использовать локальный вторичный индекс.
Вы можете запросить LSI так же, как вы запрашиваете базовую таблицу. Вам нужно предоставить точное значение для hashkey и предиката сравнения для ключа диапазона.