Je vois que DynamoDB est essentiellement limité à trois types de données : String, Number et Binary. Cela semble laisser deux options pour stocker une date ou un horodatage:
J'aurai besoin de "trier" les résultats en utilisant cette date/horodatage comme clé de plage et en utilisant scanIndexForward. Est-il possible de dire quelle approche serait la plus efficace?
Je ne sais pas si c'est forcément plus efficace, mais nous avons réussi à utiliser un horodatage Unix comme clé d'intervalle. Cela a été rapide (latence inférieure à 20 ms, parfois moins de 10 ms) pour les requêtes et nous permet de trier "du plus tôt au plus récent" ou "le plus récent au plus ancien" en utilisant le drapeau scanIndexForward
.
L'inconvénient est que lorsqu'on regarde les tables brutes, il peut être difficile de comparer deux horodatages en un coup d'œil, mais il est assez facile de convertir un horodatage en un type de date dans la langue de votre choix.
Je viens de faire un DescribeTable sur l'une de mes tables DynamoDB et j'ai remarqué que DynamoDB stockait lui-même le CreationDateTime de la table sous forme de nombre à virgule flottante d'horodatage UNIX. Je suppose qu'ils l'ont fait pour une raison.