mongodb - 模型里包含需要不断增加的数据应该怎么设计?
黄舟
黄舟 2017-04-22 08:56:19
0
1
639

需要设计的数据模型是一个投票帖子,用户投票后需要记录下来,以免重复投票。 现在的设计是把投过票的用户id保存为在投票贴里的一个数组。

mongodb在文档中嵌入不断增加的数据会对性能有损害,怎么设计能更好一些?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
洪涛

Avant de concevoir, veuillez confirmer la taille de vos données :

  1. 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);
  2. 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
  3. 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
  4.  ;
  5. 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 ;
  6. 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.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!