Support de split horizontal DB avec FuelPHP

C'est K du bureau de Sapporo.

Traditionnellement, la création d'un système serveur (environnement LAMP) était axée sur le développement de son propre framework, mais ces dernières années de plus en plus de frameworks open source ont été utilisés.

Le framework interne n'est pas mauvais, mais s'il s'agit d'un framework open source, je pense qu'il sera facile de prendre le relais des opérations d'une autre société, ou si vous développez des opérations de reverse et de handling vers une autre société.

Donc, j'aimerais écrire sur le FuelPHP que j'ai entendu dire que cette fois, il est de plus en plus utilisé dans les jeux sociaux et autres développements, je vais vous dire les conseils de la DB que je n'aime pas.

* Pour plus de détails sur le type de cuisses FuelPHP, reportez-vous au document japonais.

(Document japonais de FuelPHP)http://fuelphp.jp/

 

■ Environnement créé cette fois

Cette fois, nous avons effectué la vérification dans l'environnement suivant.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Carburant PHP 1.7.3

Bien qu'il soit appelé environnement d'examen interne vacant, la version de PHP est un peu ancienne, mais FuelPHP le supporte.

A propos, la dernière version de FuelPHP est 1.8, et supporte aussi PHP 7!

Je voudrais télécharger tous les rapports là aussi.

 

Conseils!

■ Prise en charge du partitionnement horizontal de la table DB

Le partitionnement horizontal des tables de base de données est une méthode efficace pour équilibrer la charge dans les jeux sociaux.

Cependant, la division horizontale correspondant à FuelPHP n'a, de façon inattendue, aucune information, et il doit être fouillé pour le faire.

Bien que FuelPHP ait la fonction de séparer le DB lui-même en maître et esclave, le traitement dans le cas de la dispersion horizontale de la table n'est pas pris en compte et de bons échantillons ne peuvent pas être trouvés.

 

Par conséquent, nous avons créé un modèle qui étend le modèle ORM existant, et décidé de sélectionner une table en fonction des conditions.

Pour chaque processus et classe de modèle enfant, ce modèle d'extension est hérité et utilisé. (Ceci est une procédure ordinaire ..)

 

Dans ce mécanisme, nous avons fait les choses suivantes.

· Créer une connexion qui remplace la classe de connexion,

Parmi eux, la table est sélectionnée en fonction de la règle de division.

· Préparer la classe pour l'héritage de ne pas diviser pour la table divisée,

Définissez le paramètre de division.

· Les classes de tables individuelles héritent de la classe d'héritage ci-dessus et effectuent diverses opérations.

 

L'écriture me fait me sentir un peu compliqué, mais ce sera presque comme suit.

fig001

Par exemple, si vous le trouvez, cela signifie en fait que c'est un mécanisme pour mettre à jour sa propre classe dans Query :: forge, donc c'est bien.

Lorsque la classe est générée automatiquement avec Scaffold etc., elle doit être réécrite.

 

Dans notre société, nous préparons une table avec des destinations distribuées et y accédons à partir d'une table obtenue par chaque utilisateur (en _ 0 etc.). Je pense que cette zone fait partie de la conception.

 

■ Tramp stuff

La configuration du fichier de configuration du combustible PHP a été décrite comme étant copiée à partir du noyau et réécrite, celle qui a été réécrite sera adoptée, mais

Sous l'environnement autre que le développement, nous avons constaté que la config sous le noyau vivra.

Par conséquent, dans le fichier de configuration que j'ai copié cette fois, j'ai mis en place avec mysqli, mais dès que j'ai changé l'environnement en production, c'est une erreur! !

À la suite de l'examen, il s'agissait d'une erreur car le défaut de configuration de base était pdo.

 

Puisque FuelPHP réécrit fréquemment le noyau lui-même, il semble nécessaire d'être prudent.

 

Impression

Je sentais que FuelPHP est facile à utiliser et un cadre détendu, mais comme il nécessite aussi une certaine capacité de lecture, j'ai pensé qu'il serait préférable de le personnaliser et de l'utiliser correctement.

À l'avenir, j'aimerais aborder différentes choses ainsi que FuelPHP.