File Storage
The best-known method for storing data must be files. It’s the way that we use data on the devices that we use daily, such as personal computers and mobile devices. In a file-based storage system, pieces of information as stored as files, which are hierarchically arranged within (nested) directories on a filesystem1.
File access can be implemented in different ways2. There are several filesystems (such as Ext4, NTFS and ZFS) that can be used to format local drives or block volumes stored on a network. In addition, there are network file protocols (such as NFS, SMB and GlusterFS) that allow for accessing files on another server (or a cluster of servers) over the network. In the end, however, most of these differences are abstracted away by the operating system, and files accross them can be accessed using the same interface from the application.
Overview
Comparison
Each of the requirements is scored on a scale from 1 (very poor) to 5 (very good).
Total size
Score: 4. For most physical setups, a few terabytes of data can be easily provided by harddrives. In virtual (hosted) situations, it may be more difficult to expand to such sizes.
Item size
Score: 5. Modern filesystems support sizes far beyond the size of images and videos.
Performance
Score: 5. Depending on the underlying filesystem, file access can be very performant. Even in networked file situations, the data tends to be close to the server, which makes access quicker.
Accessing data
Score: 3. Direct access to the files is not possible, but files can easily be served directly by the back-end of the application.
JavaScript support
Score: 5. Node.js has native methods for managing files and directories.
Scalability
Score: 3. Although it is possible to add several drives to a system to increase capacity, this cannot be done repeatedly. There exist distributed filesystems, however, which can mitigate this issue.
Portability
Score: 3. Depending on the exact type of network storage, data could by used by several machines at the same time, or moved to another machine on the same network. Beyond that, transferring data is necessary, which should not be difficult.