2015-09-16 2 views
1

Как настроить индекс таблицы DynamoDB для сравнения дат? например, у меня есть столбец в моей таблице под названием synchronizedAt, я хочу, чтобы мой запрос извлекал все строки, которые никогда не синхронизировались (т.е. 0), или не были синхронизированы за последние 2 недели, т. е. (новая дата(). getTime ()) - (1000 * 60 * 60 * 24 * 7 * 4)Настройка индексов для сравнения дат в DynamoDB

+1

Я считаю, что лучший способ достичь такого запроса - выполнить параллельное сканирование и добавить выражение фильтра, которое проверяет синхронизированное значение, в допустимом диапазоне: zero = synchronized OR synchronized>: twoweeks –

ответ

1

Это зависит от других атрибутов вашей таблицы.

Вы можете использовать Хэш и Диапазон Основной ключ, если набор значений хеша относительно небольшой и стабильный; в этом случае вы можете отфильтровать даты, помещая их в диапазон, но в любом случае запросы будут выполняться путем указания индекса также, и из-за этого может быть или не быть целесообразным предварительно запросить все значения индекса чтобы выполнить цикл, в котором запрашивается интересный диапазон (внутри цикла для каждого значения индекса).

Альтернативой может быть Хэш и диапазон GSI. В этом случае вы можете поместить фиксированное немое значение в качестве индекса, чтобы сразу запрашивать диапазон всех элементов.

И, наконец, менее эффективное сканирование, но с большими таблицами это будет проблемой (чем больше таблица, тем больше времени потребуется для завершения сканирования).

Смежные вопросы