Самый эффективный тип даты DynamoDB
Я вижу, что DynamoDB по существу ограничен тремя типами данных: String, Number и Binary. Кажется, это оставляет два варианта хранения даты или метки времени:
- Строка формата даты и времени 8601 или отметки времени Unix
- Число временной метки Unix
Мне нужно будет "сортировать" результаты, используя эту дату/временную метку в качестве ключа диапазона и используя scanIndexForward. Можно ли сказать, какой подход будет более эффективным?
Ответы
Ответ 1
Я не знаю, что это обязательно более эффективно, но у нас был хороший успех, используя временную метку Unix в качестве ключей диапазона. Это было быстро (до 20 мс, иногда менее 10 мс) для запросов и позволяет нам сортировать "от раннего к последнему" или "от самого раннего к раннему" с использованием флага scanIndexForward
.
Недостатком является то, что при просмотре необработанных таблиц может быть сложно сравнить две временные метки с первого взгляда, но достаточно легко преобразовать временную метку в тип даты на выбранном вами языке.
Ответ 2
Я только что сделал DescribeTable на одной из моих таблиц DynamoDB и заметил, что DynamoDB сам хранит CreationDateTime таблицы в качестве числа с плавающей запятой UNIX. Думаю, они это сделали по какой-то причине.