Храните данные в Ruby on Rails без Базы данных

У меня есть несколько значений данных, которые я должен сохранить на своем приложении для направляющих и требуемый, чтобы знать, существуют ли какие-либо альтернативы созданию таблицы базы данных только, чтобы сделать эту простую задачу.

Фон: я пишу некоторую аналитику и инструменты панели инструментов для моего рубина на приложении для направляющих, и я надеюсь ускорить панель инструментов путем кэширования результатов, которые никогда не будут изменяться. Прямо сейчас я вытягиваю всех пользователей в течение прошлых 30 дней и перестраиваю их так, я вижу число новых пользователей в день. Это работает отлично, но занимает довольно долгое время, в действительности я должен только должен быть вычислить новый день и просто сохранить остальную часть массива где-то в другом месте.

Где лучший способ состоит в том, чтобы сохранить этот массив?

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

Если кто-либо сделал что-нибудь как это, прежде чем сообщено мне, что Вы сделали и как это сложилось.

5
задан Brian Tompsett - 汤莱恩 29 December 2015 в 15:48
поделиться

3 ответа

Ruby имеет встроенное хранилище значений ключей на основе Hash под названием PStore. Оно обеспечивает простую транзакционную персистентность на основе файлов.

11
ответ дан 18 December 2019 в 14:43
поделиться

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

Тем не менее, тип отчета, который вы пытаетесь создать, на самом деле можно сделать в режиме реального времени только на очень больших наборах данных. Главное - иметь индексы, которые описывают точную операцию группировки, которую вы пытаетесь выполнить. Например, если вы группируете по календарной дате, вы можете создать поле "дата" и синхронизировать его со временем "created_at" по мере необходимости. Индекс на этом поле даты позволит быстро выполнить GROUP BY created_date:

SELECT created_date AS on_date, COUNT(id) AS new_users FROM users GROUP BY created_date
1
ответ дан 18 December 2019 в 14:43
поделиться

Использование легкой базы данных, такой как sqlite, не должно быть излишним. В качестве альтернативы вы можете использовать решения для хранения ключей, такие как шкаф tokyo, или даже вручную сохранить массив в плоском файле, но я действительно не вижу каких-либо излишеств в использовании sqlite.

1
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: