Quel est le meilleur moyen stocker binaire forte> ou images strong>? p>
Souhaitez-vous s'il vous plaît
5 Réponses :
J'aime stocker des images dans une base de données
Je ne stocke personnellement jamais des images dans la base de données à des fins de performance. Dans tous mes sites, j'ai un dossier "/ fichiers" où je peux mettre des sous-dossiers en fonction du type d'images que je vais stocker. Ensuite, je les nomme sur la convention. P>
Par exemple, si je stocke une image de profil, je le stockerai dans "/ Fichiers / Profile /" Comme profile_2.jpg (si 2 est l'ID du compte). Je fais toujours une règle de redimensionner l'image sur le serveur à la plus grande taille dont je vais aura besoin, puis les plus petits si j'en ai besoin. Donc je sauverais "profil_2_thumb.jpg" et "profil_2_full.jpg". P>
En créant des règles pour vous-même, vous pouvez simplement dans le code Call IMG SRC = "/ Fichiers / Profile__thumb.jpg" P>
thats comment je le fais quand même! p>
Avantages de stocker des fichiers binaires dans un DB: p>
inconvénient de stocker des fichiers binaires dans un DB: p>
Avantages de stocker des fichiers binaires dans le système de fichiers: p>
inconvénients de stocker des fichiers binaires dans le système de fichiers: p>
En équilibre, j'utiliserais le système de fichiers. Dans le passé, en utilisant SQL Server 2005, je stocke simplement un "pointeur" dans des tables db au fichier binaire. Le pointeur serait généralement un guid. p>
Voici la bonne nouvelle si vous utilisez SQL Server 2008 (et peut-être d'autres - je ne sais pas): Il est intégré à une solution hybride avec le nouveau type de données varbinary (max) filtream. Celles-ci se comportent logiquement comme des colonnes varbinary (max) mais dans les coulisses, SQL Sever 2008 stockera les données du système de fichiers. P>
Quand j'ai commencé à taper, il n'y avait pas encore de réponses. Donc, devenir un quiz montre où la dactylographie la plus rapide gagne! :)
Je pense que vous m'avez battu en une minute ou deux.
Il n'y a pas de meilleur moyen. P>
Quoi? Vous avez besoin de plus d'informations? P>
Il y a trois façons que je connaisse ... une, comme des tableaux d'octets dans la base de données. Deux, en tant que fichier avec le chemin stocké dans la base de données. Trois, en tant que hybride (uniquement si DB permet, par exemple avec le filtream a> type). p>
Le premier est assez cool parce que vous pouvez interroger et obtenir vos données dans la même étape. Ce qui est toujours gentil. Mais que se passe-t-il lorsque vous avez beaucoup de fichiers? Votre base de données obtient grand. Vous devez maintenant traiter de gros problèmes de maintenance de base de données, tels que les essais de la sauvegarde des bases de données sur un téraoctet. Et que se passe-t-il si vous avez besoin d'un accès extérieur aux fichiers? Tels que les conversions de type, la manipulation de masse (redimensionnez toutes les images, des filigranes d'appy, etc.)? C'est beaucoup plus difficile à faire que lorsque vous avez des fichiers. P>
La seconde est idéale pour un nombre un peu important de fichiers. Vous pouvez les stocker sur des périphériques NAS, les soutenir progressivement, maintenez votre base de données petit, etc., etc., etc. Mais lorsque vous avez beaucoup de fichiers, vous commencez à fonctionner dans le système de fichiers. Et si vous les répandez sur le réseau, vous obtenez des problèmes de latence, des problèmes de droits des utilisateurs, etc. Je prends également de la pitié sur vous si votre réseau est réarrangé. Maintenant, vous devez exécuter des mises à jour massives sur la base de données pour modifier vos emplacements de fichiers, et je vous plains si quelque chose est visible. P>
alors il y a l'option hybride. C'est presque parfait - vous pouvez obtenir vos fichiers via votre requête, mais votre base de données n'est pas massive. Cela résoudra-t-il tous vos problèmes? Probablement pas. Votre base de données n'est plus portable; Vous êtes enfermé sur un SGBD en particulier. Et ce genre de choses n'est pas encore mature, vous pouvez donc profiter du processus de dentition. Et qui dit que cela résout tous les problèmes différents? P>
Le fait est qu'il n'y a pas de "meilleur". Il vous suffit de déterminer vos exigences, de faire le meilleur choix selon eux, puis de le sucer lorsque vous comprenez que vous avez fait la mauvaise chose. P>
Merci, je cherchais à utiliser filtream mais votre réponse m'a fait repenser en raison des problèmes que vous soulevez!
Il n'y a pas de véritable meilleur moyen, juste un tas de commerces. p>
Base de données PROS STROND>: Base de données forte>: Fichier Provers STRUT>: Ce qui précède dit, SQL 2008 a une chose appelée filtream qui combine les deux mondes. Vous téléchargez sur la base de données et il stocke transparence les fichiers d'un répertoire sur disque. Lorsque vous récupérez, vous pouvez tirer de la base de données; Ou vous pouvez aller directement à l'endroit où il vit sur le système de fichiers. p>
1. Beaucoup plus facile à traiter dans un environnement de clustering.
2. Pas de recours à des ressources supplémentaires comme un serveur de fichiers.
3. Pas besoin de configurer des opérations "Sync" dans l'environnement équilibré de la charge.
4. Les sauvegardes incluent automatiquement les fichiers. p>
1. Taille / croissance de la base de données.
2. Selon le serveur DB et votre langue, il pourrait être difficile de mettre et de récupérer.
3. Vitesse / performance.
4. Selon le serveur DB, vous devez numériser les fichiers au moment du téléchargement et de l'exportation. P>
1. Pour les installations de serveur Web simples / Single DB, c'est rapide.
2. Bien compris la capacité de manipuler des fichiers. En d'autres termes, il est facile de déplacer les fichiers à un emplacement différent si vous manquez d'espace disque.
3. Le virus peut-il numériser lorsque les fichiers sont "au repos". Cela vous permet de tirer parti des mises à jour du scanner. P>
1. Dans les environnements de serveurs Web multiples nécessite une part accessible. Qui devrait également être regroupé pour le basculement.
2. Exigences de sécurité supplémentaires pour gérer l'accès des fichiers. Vous devez faire attention à ce que le serveur Web et / ou la part n'autorise pas l'exécution du fichier.
3. Les sauvegardes transactionnelles doivent prendre en compte le système de fichiers. p>
Veuillez fournir un certain contexte pour cette question. La réponse pourrait être très différente pour un utilisateur à domicile, une boutique en ligne, Google Maps et un environnement d'entreprise paranoïaque.
S'il y avait une façon droite i>, je doute qu'il y aurait 2 possibilités disponibles! Cela dépend de ce que vous faites. J'ai eu des applications qui commencent à une manière et finissent par faire un autre parce que les choses changent. Quoi que vous fassiez, vous devez abstraire suffisamment de temps pour que vous puissiez le changer sans changer tout votre code partout.
@Wim Hollebrandse: Désolé de dire cela, votre commentaire est inattendu. Je pose des problèmes ici pour obtenir une solution, pas pour obtenir le rang. J'ai besoin de solution et quand je l'ai je me sens heureux. Merci à Stackoverflow.com pour leurs services de ces services.
@SAulveillance: Ce n'est pas à propos de votre grade, il s'agit des utilisateurs qui prennent du temps pour répondre correctement à votre question et être récompensés sous forme de réputation. De même, il fournira à d'autres utilisateurs (avec le même problème) avec quelle réponse a permis de «résoudre» votre problème. C'est une chose communautaire, vous savez.
Dupliqué possible: Stackoverflow.com/ Questions / 3748 / ...