Je suis en train de développer une application web où les utilisateurs téléchargeront un grand nombre de documents sur le système et différents types d'opérations seront effectuées sur les documents, y compris l'agrégation. Cependant, le nombre de documents téléchargés par chaque utilisateur varie considérablement - certains pourraient télécharger une douzaine de documents, et certains pourraient télécharger un million de documents.Clé sharding (MongoDB) pour les documents de grand nombre
documents ressemblent à ceci:
doc{
_id: <self generated UUID>,
uid: <id of user who uploaded the document>,
ctime: <creation timestamp>,
....
<other attributes, etc>
....
}
Maintenant, voici le problème dans le choix de la touche tesson:
1. Si je choisis l'UUID comme la clé de tesson, documents téléchargés par le même utilisateur est peu probable se retrouver dans la même partition et les opérations d'agrégation seront coûteuses.
2. Si j'utilise uid comme clé de partition, les données stockées dans les partitions ne seront pas paires.
Quelqu'un peut-il suggérer quel est le meilleur moyen d'y parvenir?
Je suis très novice dans le domaine du partitionnement et du sharding, et mes recherches sur google ainsi que sur le stack-overflow n'ont rien donné. Je peux changer le schéma des documents si nécessaire puisque le projet est encore en phase de conception.
Comment voulez-vous interroger les données? –