Avant de concevoir, veuillez confirmer la taille de vos données :
Si vos données sont très petites et que seulement quelques personnes votent (moins de 1 000 personnes), il n'y a pas lieu de s'inquiéter. Même si elles vont croître, vous pouvez simplement les mettre dans un tableau (Faites attention à la taille. d'un document dans mongodb Limitations);
Si le nombre d'électeurs dépasse 1K, et à mesure qu'il continue de croître, atteignant une échelle de W (dix mille), devenez indépendant plus tôt et créez une autre collection pour stocker les enregistrements de vote du poste
Si le nombre d'électeurs atteint W et que la fréquence de vote est relativement fréquente (ou s'il y a une manipulation malveillante des votes), vous devriez peut-être envisager d'utiliser le cache pour enregistrer les identifiants de tous les électeurs dans un cache centralisé, via Cache ( redis prend en charge nativement la structure Set) pour confirmer s'il faut voter à plusieurs reprises, puis synchroniser régulièrement avec mongodb en arrière-plan
;
Si le nombre d'électeurs atteint des millions et que la fréquence de vote est également objective, vous devez utiliser le cache, et c'est aussi un cluster de cache distribué, et calculer les identifiants de tous les électeurs (vous pouvez simplement faire une opération de mod) est mappé sur un certain serveur de cache, puis la méthode de traitement est similaire à 3 ;
Un processus similaire à 4 : transférez l'ID utilisateur via Apache ou nginx sur le front-end du serveur et transférez-le vers un autre serveur d'applications pour traitement. Le serveur d'applications effectue également une expansion horizontale distribuée ;
PS : Ce que vous décrivez n'est qu'un très petit aspect du scénario commercial. Que vous utilisiez NoSQL ou SQL, à mesure que l'échelle des données augmente, une seule machine ne pourra inévitablement pas les contenir, et une expansion distribuée est inévitable. il convient de noter que la complexité augmente également avec le temps, vous devez donc choisir un plan raisonnablement basé sur la taille de vos données et vos conditions techniques.
Avant de concevoir, veuillez confirmer la taille de vos données :