Storing binary data in database or file system

Storing binary data in database or file system

  
Hi, I'm designing a database for a system that requires access to binary objects such as documents, images, videos or sound. These binaries are part of the application data e.g an invoice created by the system or a voice log recording as proof of customers consent. These objects must be accessible from a customer portal and a retention of at least five years is required. With 100.000 customers there will be at least 6.000.000 invoices. We are in search for the best practice to avoid performance and other platform issues? We are using version 9 in the cloud.
What is the best option storing de binaries in the database or in a filesystem like AWS-S3?

Regards,
Paul

ps: I just found this article: https://success.outsystems.com/Evaluation/Deploying_OutSystems-Cloud_On-Premises_or_Hybrid/03_OutSystems_Public_Cloud_Services_Overview#File_storage
Hi Paul,

First you should put the binary data in a separate table. You can have a regular timer that moves the information to an archive table (preferably on a different database) and create special screens or Union queries that can be less efficient due to the rare access to old data.

There is another doc that maybe can helps you with this: https://www.outsystems.com/home/downloadsdetail/24/202/.
André Siébra wrote:
Hi Paul,

First you should put the binary data in a separate table. You can have a regular timer that moves the information to an archive table (preferably on a different database) and create special screens or Union queries that can be less efficient due to the rare access to old data.

There is another doc that maybe can helps you with this: https://www.outsystems.com/home/downloadsdetail/24/202/.
 As a way to avoid perfomance problems when storing binaries in the database this looks ok. What I search is an "objective" way to determine wether to store these objects in the database or not.