Я создаю приложение, и у меня возникают проблемы с выбором наилучшего способа многократного доступа к статическим данным в приложении django. Мой опыт работы в этой области близок к нулю, поэтому я мог бы использовать некоторую помощь.
Приложение в основном состоит из перетаскивания продуктов. Когда вы перетаскиваете еду в определенное место (например, на завтрак), обновляются различные значения: общее количество калорий на завтрак, общее количество питательных веществ в день (микро / макро), общее количество калорий за день, ... Вот почему я думаю, как я храню и получаю доступ к Данные это очень важная производительность, говоря.
Это фрагмент файла json, который я сейчас использую:
foods.json
{
"112": {
"type": "Vegetables",
"description": "Mushrooms",
"nutrients": {
"Niacin": {
"unit": "mg",
"group": "Vitamins",
"value": 3.79
},
"Lysine": {
"units": "g",
"group": "Amino Acids",
"value": 0.123
},
... (+40 nutrients)
"amount": 1,
"unit": "cup whole",
"grams": 87.0 }
}
Я думал о разных вариантах:
1) JSON (тот, который я сейчас использую):
Каждый раз, когда я перетаскиваю еду в «выбрасываемое» место, я вызываю функцию getJSON для доступа к данным еды и затем обновляю соответствующие значения. Этот файл имеет размер 2 Мб, но он наверняка увеличится, когда я добавлю в него больше продуктов. Я использую эту опцию, потому что это было самое быстрое начало создания приложения, но я не думаю, что это хороший выбор для живого приложения.
2) СУБД с нормализованными полями:
Я мог бы создать две модели: Пищевая и Пищевая, в каждой пище содержится более 40 питательных веществ, связанных с ФК. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда делается запрос данных о еде, приложение много раз нажимает на базу данных, чтобы получить его.
3) СУБД с огурцом:
Это вариант, который я на самом деле рассматриваю. Я мог бы создать модели продуктов питания и поместить питательные вещества в огурчик.
4) Что-то с системой Redis / Django Cache:
Я углублюсь в эту опцию. Я читал о них кое-что, но я не знаю точно, есть ли способ использовать их для решения моей проблемы.
Спасибо заранее,
Мариано.