Récemment, moi et mes collègues, nous discutons de la construction de systèmes de stockage énormes pouvant stocker des milliards d'images pouvant rechercher et télécharger rapidement. P>
Quelque chose comme un Fickr, mais pas pour une galerie en ligne. Ce qui signifie que la plupart de ces images ne seront jamais téléchargées. P>
Mes collègues suggèrent que nous devions enregistrer tous ces fichiers dans la base de données directement. Je pense vraiment que ce n'est pas une bonne idée et je pense que la base de données n'est pas désinvoyue pour restaurer un grand nombre de fichiers binaires. Mais j'ai une raison très forte pour la raison pour laquelle ce n'est pas une bonne idée. P>
qu'en pensez-vous? P>
4 Réponses :
Lorsque vous traitez avec des objets binaires, suivez une approche centrée sur l'architecture et ne stockez pas de documents tels que PDF et images de la base de données, vous devrez éventuellement le refroidir lorsque vous commencez à voir toutes sortes de problèmes de performances avec votre base de données. Il suffit de stocker le fichier sur le système de fichiers et d'avoir le chemin dans une table de votre base de données. Il existe également une limitation physique de la taille du type de données que vous utiliserez pour la sérialiser et l'enregistrer dans la base de données. Il suffit de le stocker sur le système de fichiers et d'y accéder. P>
Fait intéressant, SQL Server 2008 Cela vous convient-il avec l'option de stockage FileStream- MSDN.MicRosoft. com / fr-nous / bibliothèque / cc949109.aspx
Bien que je suis d'accord avec cela, la SharePoint ne stocke pas presque tout dans la base de données? Si tel est le cas, je pense que les personnes SharePoint pourraient ne pas penser que c'est une mauvaise idée de stocker des fichiers dans la base de données. Je crois que c'est bénéfique à certains égards (comme interrogé), mais ces moyens ne contrecolent probablement pas complètement les choses que vous avez mentionnées ici.
@Richardod, j'ai lu le papier et cela parle principalement des mêmes défis de stocker le contenu structuré vs. contenu non structuré et recommande NTFS. "FileStream est une nouvelle fonctionnalité de la version SQL Server 2008. Il permet de stocker des données structurées dans la base de données et des données associées non structurées (BLOB) à stocker directement dans le système de fichiers NTFS. Vous pouvez ensuite accéder aux données BLOB via Les API en streaming Win32® haute performance, plutôt que de devoir payer la pénalité de performance d'accéder à des données BLOB via SQL Server. "
Ce n'est pas une bonne idée. Le point d'une base de données est que vous pouvez résoudre rapidement des requêtes complexes pour récupérer des données textuelles. Bien que les données binaires puissent être stockées dans une base de données, il peut ralentir des transactions. Ceci est particulièrement vrai lorsque la base de données est sur un serveur distinct de l'application en cours d'exécution. Dans la base de données, stockez Meta-Data et l'emplacement / le nom de fichier des images. Les images elles-mêmes doivent être sur des serveurs statiques. P>
Si vous parlez vraiment de milliards d'images, je les stockerais dans le système de fichiers car la récupération sera plus rapide que la sérialisation et la désérialisation des images p>
Oui, je parle vraiment de milliards d'images. Les miracles se produisent tous les jours.
Les réponses ci-dessus semblent assumer que la base de données em> est une SGBDM. Si votre base de données est une base de données orientée de documents avec prise en charge des documents binaires de la taille que vous attendez, il peut être parfaitement sage de les stocker dans la base de données. P>
Pourriez-vous nommer quelques telles bases de données?
Marklogic ( développeur.marklogic.com ) prend en charge le stockage des documents XML, JSON, Texte et Binary. Il y a une API de repos pour vous aider à aller rapidement à Github.com/markLogic/corona ainsi que Langue de requête native (XQuery).
Cela a déjà été discuté à la mort: Stackoverflow.com/questions/3748/... Stackoverflow.com/questions/815626/... Stackoverflow.com/questions/805519/save-image-in-database