Поддерживает ли DynamoDB использование одного из заданных типов данных в первичном ключе таблицы? - PullRequest
5 голосов
/ 19 января 2012

Я большой поклонник CouchDB и полностью влюблен в функции карты, которые генерируются более одного раза за документ. Мне интересно, можно ли достичь чего-то немного похожего в DynamoDB, используя строковый или числовой набор в качестве части первичного ключа хеш-диапазона, в качестве атрибута hash или range, чтобы можно было запрашивать тот же элемент в несколько способов.

Спасибо!

1 Ответ

7 голосов
/ 19 января 2012

Интересный вопрос - боюсь, проверка кода и / или тестирование будут в порядке, но я сомневаюсь в этом:

В то время как Типы данных Amazon DynamoDB поддерживают Строковые и числовые наборы и API для CreateTable также позволяют передавать типы наборов для AttributeType конечно (это всего лишь строковый параметр в конце концов), об этом нигде нет, ни один из их примеров не делает этого, и пользовательский интерфейс CreateTable в Консоли управления AWS явно ограничивает тип либо String, либо Number для обоих хэшей и атрибуты диапазона ключей (см. первое изображение в Amazon DynamoDB - интернет-хранилище данных по NoSQL Way ).

Я думаю, кто-то упомянул в веб-трансляции объявления, что он начинает с перечисленными понятиями Первичный ключ , но может рассмотреть возможность его расширения в будущем (не На 100% положительно, если вспомнить это правильно).


Обновление: результаты проверки / теста

Заданные типы данных не поддерживаются в качестве первичного ключа в настоящее время действительно, см. Документы API для class KeySchemaElement:

/**
 * Sets the value of the AttributeType property for this object.
 * <p>
 * <b>Constraints:</b><br/>
 * <b>Allowed Values: </b>S, N
 *
 * @param attributeType The new value for the AttributeType property for this object.
 *
 * @see ScalarAttributeType
 */
public void setAttributeType(String attributeType) {
    this.attributeType = attributeType;
}

Изменение примера таблицы дает ожидаемое исключение соответственно:

INFO: Получен ответ об ошибке: Код состояния: 400, Сервис AWS: AmazonDynamoDB, идентификатор запроса AWS: XXXXXXXX, код ошибки AWS: ValidationException, сообщение об ошибке AWS: обнаружена 1 ошибка проверки: Значение 'SS' в 'keySchema.hashKeyElement.attributeType' не удалось выполнить ограничение: элемент должен удовлетворять заданному значению перечисления: [N, S] Failed создать таблицу TestTable

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