требования высокого уровня:Удалить первые несколько записей из списка dynamoDB типа данных
- Там могут быть миллионы пользователей
- Любой пользователь может любимец нуждается другой пользователь
- данные отслеживания местоположения пользователя будет храниться. Необходимо сохранить максимум 100 последних точек данных.
Я думаю об использовании базы данных Dynamo для ее достижения путем хранения данных в следующем формате (мотивация использования NOSQL - это быстрый поиск, так как за один прием я получу все данные):
{
"userID" : 2323423,
"favs" : [
userIDA,
userIDB,
...
],
"lt" : [
{"timestamp1" : "coordinate1"},
{"timestamp2" : "coordinate2"},
...
]
}
ID пользователя является основным ключом.
требования запроса являются
- Добавление удаление избранных должно быть возможным.
- Буква новой отметки времени < => Могут появиться пары местоположений GPS, которые мне нужно передать в данные этого «lt» пользователя. Поскольку существует предел в 100 пунктов данных LT, мне нужно также удалить самые старые.
Я уверен, что (1) прямолинейно используется с помощью API добавления/удаления в виде списка. Как решить запрос (2)? Было бы лучше, если бы сам запрос UPDATE каким-то образом мог перебирать все объекты и удалять старые. Я читал, что индексы в списке, понимаемые в базе данных Dynamo DB, находятся в целочисленном формате, так что мы можем каким-то образом использовать это? Являются ли элементы в списке всегда индексированными от 0 до N? Если это так, я могу удалить соответствующее количество элементов из начала массива. Есть ли способ сделать это?
Я открыт для использования другой схемы данных, но, пожалуйста, дайте мне знать все рассуждения и как это можно решить.
Благодаря @notionquest. Еще один запрос: можно ли удалить старые записи из списка «lt», если каждая из записей внутри него - это карта с ключом пара значений временной метки и координат? { «метка»: 23423432434, «коорд»: «2,34435, 0,3342343» } Таким образом, путем сканирования таблицы, удаление этих записей списка внутри «ЛТ», где метка старше некоторого значения? – Ouroboros
это определенно помогает. Не могли бы вы сообщить мне, возможно ли добавлять элементы в список без условного выражения и удалять устаревшие записи внутри, используя список условных выражений за один раз? Я не боюсь, просто хотел подтвердить. Я не хочу писать пиктограмму cron, которая выполняет сканирование и удаляет записи, которые являются устаревшими (это не слишком много). Я в порядке, сохраняя 100 точек данных или около того для отслеживания местоположения. Надеюсь, ты сможешь помочь. – Ouroboros
просто для добавления в мой предыдущий комментарий, я могу запустить запрос, чтобы добавить другую запись координат в список отслеживания местоположений «lt». Есть ли способ, с помощью которого я могу удалить все записи в списке, соответствующем условному выражению? Это нормально, если я должен запустить этот запрос отдельно. Моя мотивация заключается в удалении устаревших записей списка «lt», чья временная метка устарела (более двух дней) или что-то в этом роде. – Ouroboros