Actuellement, j'ai des images (max. 6MB) stockées dans des BLOB dans une table InnoDB. Comme la taille des données est en croissance, la nuit de sauvegarde est en croissance de plus en plus lent entravant le fonctionnement normal.
Ainsi, les données binaires besoin d'aller dans le système de fichiers. (pointeurs vers les fichiers seront conservés dans la base de données.)
Les données a un arbre comme la relation:
- main site
- user_0
- album_0
- album_1
- album_n
- user_1
- user_n
etc...
Maintenant, je veux que les données soient répartis uniformément à travers la structure de répertoire. Comment dois-je accomplir?
Je suppose que je pourrais essayer, MD5('userId, albumId, imageId');
et tranchez la chaîne résultante à obtenir mon chemin d'accès au répertoire:
/var/imageStorage/f/347e/013b/c042/51cf/985f7ad0daa987d.jpeg
Cela me permettrait de cartographier le premier caractère d'un serveur et de distribuer uniformément la structure de répertoire sur de multiples serveurs.
Ce ne serait cependant pas à garder des images organisé par l'utilisateur, susceptibles de propager les images pour 1 album sur de multiples serveurs.
Ma question est:
Quelle est la meilleure façon de stocker les données d'image dans le système de fichiers d'une manière équilibrée, tout en gardant l'utilisateur/l'album de données ?
Suis-je la pensée dans la bonne direction? ou est-ce de la mauvaise façon de faire les choses tout à fait?
Mise à jour:
Je vais aller pour l' md5(user_id)
chaîne de découpage pour l'séparés au plus haut niveau.
Et puis mettre toutes les données de l'utilisateur dans le même seau. Cela permettra d'assurer une répartition homogène des données, tout en conservant les données de l'utilisateur stockées à proximité.
/var - imageStorage - f/347e/013b - f347e013bc04251cf985f7ad0daa987d - 0 - album1_10 - picture_1.jpeg - 1 - album1_1 - picture_2.jpeg - picture_3.jpeg - album1_11 - picture_n.jpeg - n - album1_n
Je pense que je vais utiliser albumId coupée en deux par derrière (j'aime cette idée!) pour garder le nombre d'albums par répertoire petits (même si il ne sera pas nécessaire pour la plupart des utilisateurs).
Merci!