DB horizontale Split-Unterstützung mit FuelPHP

Es ist K des Sapporo-Büros.

Herkömmlicherweise konzentrierte sich die Entwicklung eines Serversystems (LAMP-Umgebung) auf die Entwicklung eines eigenen Frameworks, aber in den letzten Jahren werden immer mehr Open-Source-Frameworks verwendet.

Inhouse-Framework ist nicht schlecht, aber wenn es ein Open-Source-Framework ist, denke ich, ob es leicht ist, die Operationen von einem anderen Unternehmen zu übernehmen, oder wenn Sie es umgekehrt entwickeln und Operationen an ein anderes Unternehmen abwickeln.

Also möchte ich über das FuelPHP schreiben, das ich gehört habe, dass dieses Mal es in sozialen Spielen und anderen Entwicklungen weit verbreitet ist, ich werde dir die Tipps der DB erzählen, die mir egal sind.

* Näheres zu den FuelPHP-Oberschenkeln finden Sie im japanischen Dokument.

(FuelPHP japanisches Dokument)http://fuelphp.jp/

 

■ Dieses Mal wurde eine Umgebung erstellt

Dieses Mal haben wir die Überprüfung in der folgenden Umgebung durchgeführt.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Treibstoff PHP 1.7.3

Obwohl es als vakante interne Prüfungsumgebung bezeichnet wird, ist die PHP Version etwas alt, aber FuelPHP unterstützt sie.

Die neueste Release-Version von FuelPHP ist übrigens 1,8 und unterstützt auch PHP 7!

Ich würde gerne auch dort Berichte hochladen.

 

Tipps!

■ Unterstützung für die horizontale Partitionierung der DB-Tabelle

Die horizontale Partitionierung von Datenbanktabellen ist eine effektive Methode zum Lastenausgleich in sozialen Spielen.

Die der FuelPHP entsprechende horizontale Division hat jedoch keine Informationen und es ist zu fummeln, sie zu machen.

Obwohl FuelPHP die Funktion hat, den DB selbst in Master und Slave zu unterteilen, wird die Verarbeitung bei horizontaler Dispergierung der Tabelle nicht berücksichtigt und es können keine guten Samples gefunden werden.

 

Daher haben wir ein Modell erstellt, das das vorhandene ORM-Modell erweitert und entschieden hat, eine Tabelle nach Bedingungen auszuwählen.

Für jedes Prozess- und Kindmodell wird dieses Erweiterungsmodell geerbt und verwendet. (Dies ist eine gewöhnliche Prozedur ..)

 

In diesem Mechanismus haben wir die folgenden Dinge getan.

· Erstellen Sie eine Verbindung, die die Verbindungsklasse überschreibt,

Unter diesen wird die Tabelle basierend auf der Teilungsregel ausgewählt.

· Bereiten Sie die Klasse für die Vererbung vor, um die geteilte Tabelle nicht zu teilen.

Stellen Sie die Teilung ein.

· Einzelne Tabellenklassen erben die obige Vererbungsklasse und führen verschiedene Dinge aus.

 

Wenn ich es schreibe, fühle ich mich etwas kompliziert, aber es wird fast wie folgt aussehen.

fig001

Zum Beispiel, wenn Sie es finden, bedeutet es tatsächlich, dass es ein Mechanismus ist, um seine eigene Klasse in Query :: forge zu aktualisieren, also ist das in Ordnung.

Wenn die Klasse automatisch mit Scaffold usw. generiert wird, muss sie neu geschrieben werden.

 

In unserer Firma bereiten wir eine Tabelle mit verteilten Zielen vor und greifen auf eine Tabelle zu, die jeder Benutzer erhält (in _ 0 usw.). Ich denke, dass dieser Bereich Teil des Designs ist.

 

■ Tramp-Zeug

Fuel PHP Konfigurationsdatei config wurde beschrieben als kopiert von Core und neu geschrieben, die nach dem Umschreiben wird übernommen, aber

In der Umgebung außer der Entwicklung haben wir festgestellt, dass die Config unter dem Kern leben wird.

Daher habe ich in der Konfigurationsdatei, die ich dieses Mal kopiert habe, mit mysqli eingerichtet, aber sobald ich die Umgebung in Produktion ändere, ist es ein Fehler! !

Als Ergebnis der Untersuchung war es ein Fehler, weil die Standardkonfiguration des Kerns pdo war.

 

Da FuelPHP häufig den Kern selbst neu geschrieben hat, scheint es notwendig, vorsichtig zu sein.

 

Eindruck

Ich fand, dass FuelPHP einfach zu bedienen ist und einen entspannten Rahmen bietet, aber da es auch etwas Lesefähigkeit erfordert, dachte ich, es wäre besser, es anzupassen und gut zu nutzen.

In der Zukunft möchte ich verschiedene Dinge sowie FuelPHP berühren.