[pyar] [OT][django] Acceso multiple a datos estaticos

fisa fisadev en gmail.com
Sab Dic 3 13:02:34 ART 2011


On Dec 3, 2011 8:50 AM, "mf" <mf2286 en gmail.com> wrote:
>
> Hola, estoy desarrollando una aplicación con python y django, y estoy
> viendo
> cual es la forma más conveniente de acceder a los datos estáticos. No
> tengo
> mucha experiencia en el tema así que me serviría un poco de ayuda.
> Pido disculpas
> si el tema es totalmente inadecuado para la lista, lo pongo como OT
> por las dudas.
>
> La aplicación básicamente consiste en un drag & drop de comidas.
> Cuando "dropeas"
> una comida en un area "dropeable"(por ejemplo desayuno del lunes), se
> accede a los datos
>  de la comida y se actualizan varios valores: calorias del desayuno,
> calorias del dia,
>  nutrientes del dia... Por eso me parece importante determinar ahora
> una forma
> correcta(no creo que haya una unica) de acceder a los datos.
>
> Este es un cachito del archivo .json que estoy usando actualmente:
>
> 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 }
>  }
>
> Estas son las opciones que pasan por mi cabeza:
>
> 1) JSON(la que estoy usando ahora):
> Cada vez que dropeo una comida se llama a una funcion getJSON
> para acceder a la data de la comida. Este archivo pesa alrededor de
> dos megas y seguramente crezca cuando le agregue mas comidas.
>
> Estoy usando esta forma para probar cosas y desarrollar localmente,
> pero no creo que sea una opcion a considerar para cuando ponga el
> sitio en produccion.
>
> 2) Base de datos relacional normalizada:
>
> Por lo menos debería crear dos modelos(Comida y Nutriente), asi que
> para acceder a la data de una comida deberia acceder a varias tablas
> de la base.
>
> 3) Base de datos relacional con picklefield:
>
> Parecido a la anterior solo que pondría los nutrientes dentro del
> modelo
> Comida con un picklefield.
>
> 4) Algo con Redis o con el sistema de Cache de Django:
>
> En estos días voy a ponerme a investigar estas cosas más a fondo,
> quizá se puedan utilizar para resolver el problema que estoy teniendo.
>
> Bueno, no los molesto más y les agradezco la ayuda por adelantado.
>
> Mariano Falcón.

Yo te recomendaría que pongas los datos en la base relacional. Porque en
realidad no son "estáticos", son datos que cambian. Cambian pocas veces,
pero cambian.
Si usases por ejemplo un json, cada vez que quisieran actualizar las
comidas o sus propiedades te tendrían que llamar a vos para que actualices
el código de la aplicación. Eso estaría bastante feo.

Después usando la cache podes hacer que no accedan a la base de datos cada
vez que se muestra algo, sino que solo se acceda una vez cada tanto, los
datos queden en ram, y las demás veces los datos sean tomados de la ram.
Así resolvés (si es que tenés) un problema de performance en esas consultas.

--
fisa - Juan Pedro Fisanotti - desde Android
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111203/1c868aa0/attachment.html>


More information about the pyar mailing list