2016-10-23 4 views
1

Je suis nouveau à Python. J'essaye d'implémenter le contrôle de deux ventilateurs, pour refroidir un espace clos, dans un Raspberry Pi fonctionnant sous Python 2.7 et MySQLdb. Je veux stocker 21 colonnes de données à 1 ligne toutes les 5 minutes pendant 48 heures. Après les 48 heures, à chaque fois qu'une nouvelle ligne est ajoutée, la ligne la plus ancienne sera supprimée en plaçant une limite finie sur la taille de la base de données. Le but de la base de données est de pouvoir observer les performances du système au cours des deux derniers jours et d'utiliser les données pour la surveillance et l'optimisation du système. Comme, j'espère que ce système fonctionnera pendant des années, je suis préoccupé par le fait que le stockage de carte SD non volatile du Raspberry Pi va commencer à échouer à partir du nombre élevé de réécritures. Je ne suis pas préoccupé par la sécurité des données. Je cherche une solution où la table de données est stockée dans RAM pour empêcher la défaillance prématurée de carte SD et parce que si les données sont perdues faire quelque chose comme une panne de courant quand le système est redémarré la base de données serait rechargée avec de nouvelles données deux jours. J'espère que quelqu'un peut me diriger dans la bonne direction pour écrire une base de données avec la table stockée dans le RAM.stockage de base de données mysqldb dans ram

+0

Bienvenue dans Stackoverflow. Vous recevrez plus de réponses si vous nous montrez ce que vous avez déjà fait jusqu'à présent. Plus vos questions sont spécifiques, mieux c'est. –

Répondre

1

Plutôt que MySQL, vous devez utiliser sqlite, fourni avec Python, et avoir la possibilité de créer un in-memory database. Ou, si ce n'est que des paires clé-valeur que vous stockez, Redis serait un meilleur ajustement. Généralement cependant, si vous êtes inquiet de l'échec de la carte SD, pourquoi ne pas acheter un petit HD externe et le connecter au pi?

0

Si vous voulez vraiment utiliser des tables de mémoire avec MySQL, vous devriez regarder How do I make a MySQL database run completely in memory?

Une autre solution serait de créer un système de fichiers en mémoire. Je l'ai trouvé an article you could study. En substance, il recommande d'utiliser tmpfs puis de localiser la table dessus.

Y a-t-il une raison particulière pour laquelle vous voulez aller sur la route difficile, au lieu d'utiliser une structure Python ou une base de données en mémoire SQLite, comme Daniel l'a suggéré?