Multimedia files tend to be very large—even with clever codecs, which shrink audio, video, and image data enormously. Every database serves its purpose. Relational databases (such as PostgresSQL or MySQL) are good for tabular-structured data with many relations. Object databases (such as the ZODB) are especially good at mapping complex data structures. The advantage of NOSQL databases (such as CouchDB or MongoDB) is their scalability and their concurrency model. The best storage for files or BLOBs (Binary Large Objects) is still the filesystem.
In this chapter, we will see how Plone stores files and images. The default way is to put them into the ZODB like everything else. This is good because everything is handled in one place: the data storage, the transaction machinery, and the global permission system. Unfortunately, the ZODB is not very efficient for file storage. In this chapter we try to find more efficient storage techniques.
Generally speaking, there are...