2017-05-24 2 views
0

J'ai besoin de stocker de gros fichiers (environ 1Go) sur mon entrepôt de données. Pour expliquer simplement le contexte global: l'utilisateur sélectionne certaines options dans un webview et les envoie au middleware. Le middleware utilise ces informations et en envoie de nouvelles à une usine. L'usine crée le fichier 1Go. Maintenant, je dois le stocker sur l'entrepôt de données afin d'être téléchargé plus tard par l'utilisateur.Champ BLOB dans la base de données ou directement dans le fichier systeme pour les fichiers 1Go?

J'utilise le framework django pour le middleware et l'usine est programmée en python. Donc, ma question est la suivante: pour cette taille de fichiers, est-il préférable de la stocker sur un champ blob dans une base de données? Ou est-il préférable de le stocker directement sur le système de fichiers?

+0

Cette [question] (https://stackoverflow.com/questions/11438486/database-blobs-vs-disk-stored-files) inclut certains des avantages et des inconvénients du système de fichiers par rapport aux blobs. –

+0

Reproduction possible de [Lenteur trouvée lorsque l'image de base 64 sélectionne et code à partir de la base de données] (https://stackoverflow.com/questions/41228496/slowness-found-when-base-64-image-select-and-encode-from- base de données) – e4c5

Répondre

0

Le stockage d'objets blob dans une base de données en utilisant un BinaryField nuira aux performances de votre application car vos jeux de requête devront gérer beaucoup plus de données. La meilleure pratique consiste à stocker des objets blob dans des fichiers distincts et à stocker uniquement le chemin d'accès au fichier (en utilisant le champ models.FilePathField()) dans votre base de données et à diffuser l'image réelle sous forme de fichier statique. Voir this pour plus de détails.

+0

Merci beaucoup. Je vais voir ta solution tout droit. Je vais valider votre réponse demain afin de voir si je peux avoir d'autres opinions. Mais merci :) – neli