Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Armazenar arquivos de imagem no banco de dados Mongo, é uma boa ideia?


O problema não é tanto que o banco de dados fica grande, os bancos de dados podem lidar com isso (embora o MongoDB não seja tão bom quanto muitos outros nesse aspecto). O problema é que, para enviar os dados para o cliente, eles primeiro precisam ser movidos para a RAM pelo banco de dados, depois copiados para a memória do aplicativo e depois entregues ao kernel para serem enviados pelo soquete. Está desperdiçando muitos ciclos de RAM e CPU. A razão pela qual é melhor ter arquivos grandes no sistema de arquivos é que é mais fácil copiá-los, você pode pedir ao kernel para transmitir o arquivo do disco para o soquete diretamente.

A desvantagem de armazenar arquivos grandes no sistema de arquivos é que é muito mais difícil distribuir. Usar um banco de dados e algo como o GridFS do Mongo torna possível escalar horizontalmente. Você só precisa ter certeza de não copiar o arquivo inteiro na memória do aplicativo de uma vez, mas um pedaço de cada vez. A maioria das estruturas de aplicativos da Web tem algum suporte para enviar respostas HTTP em partes hoje em dia.