DynamoDB - хороший выбор для хранения большого количества данных, которые вы не знаете, как их хранить. но не оптимально, когда мы говорим о действительно больших таблицах, отношения которых как в реляционных базах данных.
Первый вопрос, который вы должны задать себе, знаете ли вы все возможные свойства? или может быть как 10+ уникальных свойств на устройство?
Вы можете сделать две таблицы:
устройств: с идентификатором (номером) первичного ключа раздела и атрибутом (не являющимся частью предварительно определенной схемы), представляющим собой список строк, представляющий все свойства устройства. , каждый запрос должен начинаться с запроса этой таблицы, но результаты должны быть получены очень быстро, и цена хранения и возможность пропустить запросы сканирования должны быть достаточными.
значения: с первичным ключом раздела, который является объединением идентификатора устройства и свойства. и сортировка ключа метки времени. значение должно быть атрибутом.
вы также можете сделать это объединение числовым, а затем вы можете запросить с помощью оператора between
, если вы хотите ускорить процесс и сэкономить на хранении.
Это решение может быть намного дешевле, чем ответ Мэтью, но гораздо менее читабельно для человека и, возможно, сложнее для отладки и реализации. Поэтому я рекомендую вам рассмотреть оба варианта с умом.
Кроме того, недавно Amazon выпустила свою DocumentDB. У меня нет опыта работы с этим продуктом, но из моего опыта работы с документно-ориентированными базами данных, это может быть хорошим вариантом, который вы должны проверить. Общая идея должна быть с ключом для каждого устройства, которое содержит вложенные коллекции (я думаю, это называется встроенные или вложенные документы) свойств. чем если вам нужны все свойства, вы можете запросить все вложенные коллекции ключа, и если вам нужно определенное свойство, вы можете запросить вложенную коллекцию. но опять же, у меня нет опыта работы с DocumentDB. Но опять же, это новый продукт, и у меня нет особого опыта, я просто указываю, что он существует.