Friday, December 5, 2014

Our strategy for archiving student data in moodle courses

This is important as it comes up from time to time in the form of a request from my customer like this "so and so from school district x had a student take a course a while back, can we see the grades?".

In our system, we like to *reset courses at least once a year.  Students who took courses in 13-14 should be moved out of the system for 14-15.  Often, we have new course content anyway, so we are deploying new courses.

What to do with the student progress or record in the moodle course? - That is the question.

How to archive student grades from a course - That is the same question.


1 - I keep one copy of the entire moodle DB for each month - forever.  I have a folder on a Windows network drive where like this

My solutions

1 - Backup the entire DB - the bazooka approach

2012
   studentBackup1_30_12.sql
   studentBackup2_27_12.sql
   studentBackup3_30_12.sql 
   .
   .
2013
   studentBackup1_30_13.sql
   studentBackup2_27_13.sql
   studentBackup3_30_13.sql

This is a safe and smart way to keep a snapshot of the entire system - which, I can restore any of the backup DBs to a test moodle instance and see all the student data.

2 - Backup the individual courses - the rifle approach

This is a more precise way to archive the student grade data.  We start each fall with courses 1 - 20
   course1
   course2
   course3
   .
   .
During the school year students a,b,c are enrolled in course1 and have grades and progress and submissions etc.  Student a,b,c either complete or drop the course.  Either way, we want to keep a copy of their performance/grades/submissions/posts etc for perpetuity.  My customer used to remove the enrollment from the course and create a single backup file for that student.  This was because the teachers wanted student who were no longer active removed from the course.  I appeased this request by creating a enrollment status bit, where the student enrollment could be identified as completed or dropped.  Now, we simply leave the enrollment in the course until the end of the school year and make a single course backup with student data.  After the backup file is created, we move it onto the same Windows share drive like this.

2012StudentCourseBackups
   course1.mbz
   course2.mbz
   course3.mbz
2013StudentCourseBackups
   course1.mbz
   course2.mbz
   course3.mbz
   course4.mbz
   course5.mbz
   course6.mbz
2014StudentCourseBackups
   course1.mbz
   course2.mbz
   course3.mbz
   course4.mbz
   course5.mbz

You get the idea.

Now - when our customer says "we need to see the grades for student x" - I can say "what course and what year" - and should be able to find the data necessary.  I would try first restoring a course to my temp moodle instance.  If we cannot find the student in a specific course, perhaps they have the wrong course - then I could try restoring the entire DB for a particular month to the test instance and I can search for their name in the accounts and find their course that way.

The end.


No comments:

Post a Comment