2016-08-24 15 views
0

Наше требование очень простое, мы хотим сохранить местоположение GPS для датчиков, которые не должны быть старше пары дней. Общая гранулярность данных будет максимальной около минуты или около того.Время жить для SimpleDB или DynamoDB

Поскольку общее число датчиков может превышать миллиард, SimpleDB не является вариантом, если я сам не пишу логику секционирования. SimpleDB, хотя и индексирует каждый атрибут, что позволяет запускать один раз в секунду периодические скрипты очистки, которые удаляют записи старше 2 дней.

DynamoDB выглядит намного лучше, так как он не имеет ограничений на количество данных, я могу использовать первичный ключ разделенного + диапазона на методе sensorID + timestamp. Однако для удаления старых данных потребуется запрос сканирования, если у меня также нет глобального вторичного индекса в поле timestamp. Примените этот вторичный глобальный индекс, запрос потенциально может быть быстрее.

Является ли это только тем, кто считает, что там может быть лучший выход? Использование DynamoDB/SimpleDB лучше, так как все развертывание находится в среде AWS, и мы не хотим вкладывать средства в ops. Я знаю, что другие NOSQL DB, такие как Mongo DB, поддерживают их.

+0

Я действительно не вижу, как местоположения GPS, которые ** все имеют одинаковый формат **, будут лучше сохранены в базе данных NOSQL. Это действительно само определение данных, которое лучше всего хранить, индексировать, извлекать и анализировать в таблицах. –

+0

Потому что у меня будет миллиарды записей. Я хотел бы, чтобы система автоматически делилась/разбивалась на разделы и не беспокоилась об этом. Это почти похоже на то, что любой, кто использует NOSQL без гибкой схемы, делает ошибку, это не так. – Ouroboros

+0

«Миллиарды идентично сформированных записей» ** - это именно то, почему вы должны использовать реляционные базы данных, а не схемы NOSQL. Когда у вас есть миллиарды идентичных точек данных, но вы храните их в виде пар ключ-значение, да, вы ошибаетесь, не понимая, что делает база данных, и почему разделение хранилищ ключевых значений намного сложнее, чем разделение сортируемых/индексируемых таблиц. –

ответ

1

Вы можете сохранять записи в таблицах с датами по x дням.

GPS_LOCATIONS_09052016 
GPS_LOCATIONS_09072016 
... 

Затем вы можете оставить старые таблицы каждый x день (s).

Сколько мест GPS на датчике? Если у вас есть, например, 500 миллионов уникальных датчиков, то разбиение на идентификатор датчика не очень эффективно.

Если дата на основе таблицы не работает для вас, то вы можете создать GSI на timestampHash хэш-ключ и ключ в timestamp диапазоне, где timestampHash представляет собой число от 1 до y, y в зависимости от объема данных. Затем вы можете сделать запрос диапазона с этим GSI для каждого timestampHash и где timestamp меньше, чем сейчас, или как вы можете установить параметры очистки. timestampHash поможет вам разделить ваши данные, чтобы помочь с пропускной способностью.

1

Добавлена ​​новая функция в DynamoDB. Пожалуйста, проверьте TTL

Это удалит элемент после того, как TTL конкретного предмета истёк.

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

  • Нет связанных вопросов^_^