Sakai supports storing Resources (files) in the file system (with metadata in the RDBMS) or entirely in the RDBMS.
This Sakaipedia page is intended for documenting this decision point for Sakai implementations and hopes to grow to discuss both the considerations for making this decision and the technical details on executing on the decision.
Storing resources in the file system
The University of Michigan has a procedure for addressing file deletion discussed here
.
Recovery
Recovery scenarios have been discussed on the Production DG list
.
Storing resources in the database
Advantages in ease of recovering consistent data in the files-in-database approach
It's much easier for your database and your file storage to get out of sync, thus complicating your restore process, if you store your files on the filesystem. If you store everything in the database, you don't have this issue; when you backup the database, you have all of your content and it's always going to be consistent.
Expected schema size
Two semesters of Sakai usage at the University of Windsor in an Oracle 10g database led to a 120 gigabyte database schema and reports no problems with this approach of storing files into the database (as of May 2008
).
Some schools have moved from using the RDBMS to store files to using the filesystem in order to reduce database schema size and thereby improve the speed with which the database can be backed up (reference
).
Problems with using MySQL
Foothill College reports
that MySQL performance on BLOB columns is poor and converted to using the file system to store resources to achieve better performance.
FAQs
What are the performance issues that arise when storing all of Sakai data on the back end?
Performance problems have been reported with MySQL. It's less clear whether these exist if one uses a properly tuned Oracle DB.
Are there any enterprise Sakai deployments that store data strictly in the backend?
University of Windsor
Valencia
Are there migration scripts that will transfer data from a front-end filesystem storage to blobs in the backend?
None currently exist.
Is it possible to move from filesystem storage to blob storage? If so what would be the best way to do it?
What are the data backup/restore SLAs that schools have in place for Sakai?
What procedures do schools use for delivering a robust data backup/restore SLA when data is persisted in the DB and in a filesystem?
Meta and acknowledgments
This Sakaipedia page was prompted by this Sakai-dev thread
. Replies in that thread have been merged into this Sakaipedia article. In particular, some of Ernie Souhrada's (rSmart) words
have been used verbatim.