J'utilise mongodb et je veux stocker des vignettes sur mon serveur. Quel est le meilleur? En utilisant des gridfs ou convertir ces images en base64 et les stocker directement dans un document. P>
3 Réponses :
Je vous suggère d'utiliser gridfs . Avec gridfs , vous pouvez profiter de API de repos de MongoDB . Donc, il n'y aura pas de surchauffe pour récupérer des documents à l'aide de l'API de Mongodb. L'API de repos fera tout le travail acharné et vous fera gagner du temps. P>
Cela dépend vraiment de votre technologie latérale du serveur et de votre préférence personnelle. 10Gen suggère que vous utilisiez des documents sauf si vous stockez des fichiers plus grands que la limite de document (16 Mo). Je suggérerais que vous faites tout ce qui est plus facile, étant donné la langue avec laquelle vous travaillez. Si vous avez d'autres documents pour modéliser après le suivi du document, donnez autrement un coup de gridfs. P>
Comme toujours, il y a des avantages (dis): p>
neutre: strong> p>
contre: strong> p>
Si le lot de vos documents partage la même image, vous devez utiliser des gridfs et simplement fournir des liens vers ces fichiers, car 1. strong> Les données de partage sont plus efficaces et Si vos clients auront toujours besoin de la vignette, vous devriez peut-être envisager d'intégrer les fichiers comme base64 dans la réponse. Ceci est particulièrement agréable, si base64 Bien sûr signifie plus de trafic sur le fil, car il a besoin de 8 bits pour transférer 6 bits. I.E. Efficacité de 75%. Cela n'affecte bien sûr que la communication client-serveur, car dans MongoDB, vous pouvez toujours stocker vos données comme champ binaire. P> LI>
Préférez-vous plus de demandes de base de données (= à l'aide de gridfs)? Ou taille de données / documents plus grande sur le fil (= incorporé)? P> LI>
ul>
Nous utilisons des vignettes incorporées, même si nous avons potentiellement des images en double. Après avoir activé la compression GZIP sur le serveur, la taille du transfert du client-serveur n'a plus d'importance. Mais comme dit auparavant, c'est un compromis: nous avons maintenant moins de demandes de clients et moins de demandes de base de données, mais parce que l'emboîtement facilite la mise en cache des images impossible, nous avons maintenant plus de données sur le fil. P>
Il n'y a pas de taille unique pour toutes les solutions. p>
Pouvez-vous donner un exemple sur la manière dont vous obtenez le lien / URL / chemin de votre fichier après le téléchargement sur Gridfs (cela pourrait vous aider beaucoup)?
Lorsque vous téléchargez un fichier sur Gridfs, MongoDB générera un objet, tout comme pour tout autre document que vous stockez. Les gridfs ne sont pas vraiment une fonctionnalité de MongoDB, il fait généralement partie de votre bibliothèque client de MongoDB. Par exemple: Mongodb.github.io/mongo-java- Driver / 3.5 / Driver / Tutoriels / Gri DFS
Quelle est la taille finale en k? Les gridfs ne se divisent pas avant que le fichier soit supérieur à 256k. Allez-vous utiliser le fichier final comme binaire ou base64?