web-dev-qa-db-fra.com

Evolutivité de la base de données WordPress du point de vue du code

J'ai lu plusieurs questions ici sur StackExchange qui concernent la mise à l'échelle de WordPress et l'opinion commune est que WordPress est extrêmement évolutif, à condition que vous disposiez de l'infrastructure pour le prendre en charge. Cependant, toutes les opinions parlent de la mise à l'échelle de la base de données.

Cependant, je dois demander par curiosité à quel point le code WordPress est évolutif. Je trouve de nombreux endroits dans le code où les ID d’utilisateur ou les ID de publication sont convertis en entiers. Maintenant, PHP limite la plage d'entiers à -2147483648 to 2147483647 (signé) pour 32 bits et 9223372036854775807 pour 64 bits. Limitant ainsi le code pour fonctionner dans cette plage. Donc, si vous avez un identifiant de poste ou un identifiant d'utilisateur de 100000000000000, il doit être converti en 2147483647 sur les systèmes 32 bits. Et un semblable sur 64 bits. Effectivement, limiter le système.

Ainsi, bien que la base de données permette une mise à l'échelle, le code limite la même chose. Je me trompe peut-être totalement dans mes hypothèses, si donc j'aimerais bien être éduqué de la même manière. Et si autrement, comment pouvons-nous redimensionner le code? Ou bien les revendications d'évolutivité de WordPress sont-elles fausses? Aussi, quelles sont les autres possibilités où le code pourrait limiter l’évolutivité?

6
John

Si INT est défini sur UNSIGNED, n'autorisant que les entiers non négatifs, votre plage de valeurs va de 0 à 4294967295.

C'est...

4,294,967,295 (4 billion +).

... pour la table donnée. Juste pour mettre les choses en perspective.

Seules une mauvaise gestion et une incrémentation inutile permettraient d’épuiser cette plage, par exemple pour votre table posts.

Cela dit, si vous avez une exigence unique qui utilise toute cette plage pour une table, créez-en simplement une autre. WordPress le permet.

Il est également possible que plusieurs bases de données ( http://codex.wordpress.org/HyperDB ) en soient un exemple.

Si vous repoussez les limites supérieures d'une clé primaire de table standard, vous devriez déjà mettre à l'échelle votre application au-delà de la table unique traditionnelle. schéma pour gérer de telles quantités de contenu.

Remarquez comment j'ai dit application et non blog? À ce stade, il est probable que votre site ne ressemble à rien du blog ordinaire et constitue plutôt une application, un système de gestion de données.

7
userabuser

Aussi cool que soit l'évolutivité infinie, il n'est pas vraiment nécessaire de coder dans la plupart des projets.

Cette limite de 100000000000000 est suffisamment élevée pour que vous puissiez gérer un seul réseau WordPress pour tous les habitants situés dans un anneau de 1 000 km de large sur l'orbite terrestre avec la densité de population actuelle, afin d'avoir encore 7 comptes chacun. Ou d’une autre manière, cela représente environ 15 000 publications par personne si tout le monde sur Terre utilise votre site.

Je pense que le noyau de WordPress et la plupart des autres logiciels auront un travail important à réaliser avant de pouvoir partager un seul serveur sur plusieurs mondes de colonies.

6
Alex