10
votes

Enregistrer la parcelle R sur Web Server

J'essaie de créer une procédure qui extrait des données d'un serveur MySQL (à l'aide du package Rodbc), effectue des routines statistiques sur ces données dans R, puis enregistre les parcelles générées sur le serveur de telle sorte qu'elles puissent être récupérées dans un navigateur Web via un peu de magie PHP et Web.

Mon plan consiste à enregistrer l'intrigue dans un champ de blob MySQL en utilisant le package Rodbc pour exécuter une instruction SQL dans une instruction. Je pense que je peux insérer les données directement sous forme de chaîne. Le problème est que comment puis-je obtenir la chaîne de données et cela fonctionnera-t-il même? Ma meilleure pensée consiste à utiliser la fonction de sauvegarde pour enregistrer un fichier Temp, puis la lire en quelque sorte.

Quelqu'un a essayé ceci avant ou avoir des suggestions sur la manière de vous approcher?


6 commentaires

Bien que jamais d'avoir utilisé R, je suis presque certain qu'il y aura une sorte de fonctionnalité de sérialisation ...


Merci, je regarde maintenant la fonction Serialize () comme solution possible.


Êtes-vous sûr de vouloir des blobages dans la base de données? Je ne pense pas que ce soit une bonne idée, comme Blobs en général - pourquoi pas des images comme des fichiers et des noms de fichiers dans dB?


Blob sonne comme une idée terrible. Pourquoi ne pas télécharger l'intrigue sur un serveur et écrire le nom de fichier dans la base de données? Vous pouvez ensuite utiliser php pour afficher ces parcelles.


Vous l'avez déjà eu. Enregistrer la parcelle dans un fichier temporaire, d'où l'affichage ... Vous pouvez utiliser RABAche et Brew PAYS ... Jeroen Ooms 'GGPLot2 Web Application Web a été effectuée dans ce manoir.


Oui, cochez "StockPlot", probablement l'un des meilleurs exemples pour un tel scénario.


3 Réponses :


0
votes

stocker des images dans des bases de données est souvent fronçée. Pour créer un fichier de mémoire dans R, vous pouvez utiliser un TextConnection comme connexion. Cela vous donnera la chaîne. Cela fonctionnera si vous n'oubliez pas de définir le type MIME approprié et d'ouvrir la connexion comme binaire.


0 commentaires

3
votes

Peu importe si vous pensez que c'est une idée terrible, voici une réponse de travail que j'avais pu choisir de cette POST

## open connection
library(RODBC)
channel <- odbcConnect("")

## generate a plot and save it to a temp file
x <- rnorm(100,0,1)
hist(x, col="light blue")
savePlot("temp.jpg", type="jpeg")

## read back in the temp file as binary
plot_binary <- paste(readBin("temp.jpg", what="raw", n=1e6), collapse="")

## insert it into a table
sqlQuery(channel, paste("insert into test values (1, x'",plot_binary,"')", sep=""))

## close connection
odbcClose(channel)


4 commentaires

Vous encourez ici des frais d'E / S terribles ici. Si le serveur MySQL est sur la même machine que le serveur Web, votre sauvegarder () L'appel doit simplement écrire le fichier quelque part sur lequel le serveur Web peut voir. Dans Apache-Parle, cela signifie l'écrire quelque part sous la documentation, ou dans un répertoire distinct mappé dans l'arborescence de document avec une directive de répertoire. Si les deux machines sont séparées, le script R doit fonctionner sur le serveur Web afin qu'il puisse écrire le fichier localement, en suivant les mêmes règles. De toute façon, la page servant l'image fait référence au fichier en tant que contenu statique, très efficace.


La machine effectuant l'analyse statistique se connecte au serveur à distance afin d'accéder et de stocker des données dans la base de données MySQL. C'est un serveur Web partagé, donc je ne pense pas qu'ils se penchent sur gentiment lors de la course de la course de longues routines statistiques sur leur serveur (il s'agit d'une opération de budget faible sans budget)


D'accord, donc au lieu de stocker l'image dans la base de données, avec toutes les inefficacités connues qui créent, téléchargez le fichier JPEG rendu sur le serveur Web: Système ("SCP Temp.jpg My.Server.com:/var/www/ HTML / Images / My-Analysis.jpg ") Oh, et accessoirement, vous devez probablement utiliser PNG pour des graphiques statistiques, pas JPEG.


Bonne commande! Devrait être utile si je passe à la route "Système de fichiers".



0
votes

Enregistrez l'intrigue sur un serveur et écrivez le nom de fichier dans la base de données fonctionnera. Mais il y a cette chose appelée Radache peut aider. De plus, Jeroen Ooms possède des Demo , y compris une interface Web pour le célèbre r célèbre r Wickham Paquet graphique GGPLOT2.


0 commentaires