Mysql
 sql >> Base de données >  >> RDS >> Mysql

Stocker des fichiers images dans la base de données Mongo, est-ce une bonne idée ?

Le problème n'est pas tant que la base de données devient volumineuse, les bases de données peuvent gérer cela (bien que MongoDB ne soit pas aussi bon que beaucoup d'autres à cet égard). Le problème est que pour envoyer les données au client, elles doivent d'abord être déplacées dans la RAM par la base de données, puis copiées dans la mémoire de l'application, puis transmises au noyau pour être envoyées via le socket. Cela gaspille beaucoup de RAM et de cycles CPU. La raison pour laquelle il est préférable d'avoir des fichiers volumineux dans le système de fichiers est qu'il est plus facile de contourner la copie, vous pouvez demander au noyau de diffuser directement le fichier du disque vers le socket.

L'inconvénient du stockage de fichiers volumineux dans le système de fichiers est qu'il est beaucoup plus difficile à distribuer. L'utilisation d'une base de données et de quelque chose comme GridFS de Mongo permet d'évoluer. Vous devez juste vous assurer de ne pas copier le fichier entier dans la mémoire de l'application en une seule fois, mais un morceau à la fois. De nos jours, la plupart des frameworks d'applications Web prennent en charge l'envoi de réponses HTTP fragmentées.