DB horizontale Split-Unterstützung mit FuelPHP

Es ist K des Sapporo-Büros.

Traditionell konzentrierte sich die Schaffung eines Serversystems (LAMP-Umgebung) auf die Entwicklung eines eigenen Frameworks, in den letzten Jahren werden jedoch immer mehr Open Source-Frameworks verwendet.

Das interne Framework ist nicht schlecht, aber wenn es sich um ein Open Source-Framework handelt, denke ich, ob es einfach ist, die Übernahme zu übernehmen, wenn Vorgänge von einem anderen Unternehmen übernommen werden, oder wenn Sie im Rückwärtsgang und im Abwicklungsgeschäft für ein anderes Unternehmen entwickeln.

Also, ich möchte über das FuelPHP schreiben, von dem ich gehört habe, dass es diesmal bei Social Games und anderen Entwicklungen weit verbreitet ist. Ich werde Ihnen die Tipps der DB erzählen, die mich nicht interessieren.

* Einzelheiten zu den Oberschenkeln von FuelPHP finden Sie im japanischen Dokument.

(Japanisches FuelPHP-Dokument)http://fuelphp.jp/

 

■ Umgebung wurde diesmal 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 sich um eine freie interne Untersuchungsumgebung handelt, ist die PHP-Version ein wenig alt, aber FuelPHP unterstützt es.

Die neueste Version von FuelPHP ist übrigens 1.8 und unterstützt auch PHP 7!

Ich möchte dort auch 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 horizontale Aufteilung, die FuelPHP entspricht, enthält jedoch unerwartet keine Informationen, und es muss gefummelt werden, um sie zu erstellen.

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

 

Daher haben wir ein Modell erstellt, das das vorhandene ORM-Modell erweitert, und beschlossen, eine Tabelle gemäß den Bedingungen auszuwählen.

Dieses Erweiterungsmodell wird für jeden Prozess und jede untergeordnete Modellklasse vererbt und verwendet. (Dies ist ein gewöhnlicher Vorgang ..)

 

In diesem Mechanismus haben wir die folgenden Dinge getan.

· Eine Verbindung erstellen, die die Verbindungsklasse überschreibt

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

· Klasse auf Vererbung vorbereiten, um nicht für geteilte Tabellen zu teilen

Teilungseinstellung vornehmen.

· Einzelne Tabellenklassen erben die oben genannte Vererbungsklasse und führen verschiedene Aufgaben aus.

 

Beim Schreiben fühle ich mich etwas kompliziert, aber es wird fast wie folgt sein.

fig001

Wenn Sie es beispielsweise finden, handelt es sich tatsächlich um einen Mechanismus zum Aktualisieren Ihrer Klasse in Query :: forge.

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

 

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

 

■ Trampelzeug

Brennstoff-PHP-Konfigurationsdatei config wurde als vom Kern kopiert und umgeschrieben beschrieben, die nach dem Überschreiben wird jedoch übernommen

In einer anderen Umgebung als der Entwicklung haben wir festgestellt, dass die Konfiguration unter dem Kern leben wird.

Deshalb habe ich in der Konfigurationsdatei, die ich dieses Mal kopiert habe, mit mysqli eingerichtet, aber sobald ich die Umgebung auf Produktion umgestellt habe, ist dies ein Fehler! !

Als Ergebnis der Untersuchung war es ein Fehler, da der Konfigurationsstandard von core pdo war.

 

Da FuelPHP den Kern selbst häufig umschrieb, scheint es wichtig, vorsichtig zu sein.

 

Eindruck

Ich war der Meinung, dass FuelPHP einfach zu bedienen und ein entspanntes Framework ist, aber da es auch etwas Lesefähigkeit erfordert, dachte ich, dass es besser wäre, es gut anzupassen und zu verwenden.

In Zukunft möchte ich verschiedene Dinge sowie FuelPHP ansprechen.