Я работаю над небольшим проектом, который постепенно расширяет список ссылок, а затем обрабатывает их через очередь. Существует вероятность того, что ссылка может быть введена в очередь дважды, и я хотел бы отслеживать свой прогресс, чтобы я мог пропустить все, что уже было обработано. Я оцениваю около 10 тыс. Уникальных ссылок в лучшем случае.Какова самая эффективная структура данных Ruby для отслеживания прогресса?
Для больших проектов я бы использовал базу данных, но это кажется излишним для количества данных, с которыми я работаю, и предпочел бы какое-то решение в памяти, которое потенциально может быть сериализовано, если я хочу сохранить прогресс во всех прогонах.
Какая структура данных наилучшим образом соответствует этой потребности?
Обновление: Я уже использую хэш для отслеживания тех ссылок, которые я завершил. Это самый эффективный способ сделать это?
def process_link(link)
return if @processed_links[link]
# ... processing logic
@processed_links[link] = Time.now # or other state
end
Используйте хэш или набор. У вас может быть только один экземпляр ключа в Hash. Набор построен на хэш-ключах, и вы получаете аналогичное поведение. –
Еще одна вещь, о которой стоит подумать, нужно ли отслеживать прогресс в отношении сбоев/сбоев/перезапусков? Если это так, вы не можете вообще использовать отслеживание в памяти и, вероятно, должны использовать базу данных. –