Supporto orizzontale split DB con FuelPHP

È K dell'ufficio di Sapporo.

Tradizionalmente, la creazione di un sistema server (ambiente LAMP) era focalizzata sullo sviluppo di un proprio framework, ma negli ultimi anni sono stati utilizzati sempre più framework open source.

La struttura interna non è male, ma se si tratta di un framework open source, penso che sarà facile subentrare dalle operazioni di un'altra azienda, o se lo si sta sviluppando in senso inverso e gestendo le operazioni su un'altra società.

Quindi, mi piacerebbe scrivere su FuelPHP che ho sentito che questa volta si sta diffondendo ampiamente nei giochi social e altri sviluppi, ti dirò i Suggerimenti del DB che non mi interessano.

* Per i dettagli sul tipo di coscia FuelPHP, fare riferimento al documento giapponese.

(Documento giapponese FuelPHP)http://fuelphp.jp/

 

■ Ambiente creato questa volta

Questa volta, abbiamo condotto la verifica nel seguente ambiente.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Carburante PHP 1.7.3

Sebbene sia chiamato ambiente di esame interno libero, la versione di PHP è un po 'vecchia, ma FuelPHP lo sta supportando.

A proposito, l'ultima versione di FuelPHP è 1.8, e supporta anche PHP 7!

Vorrei caricare anche eventuali rapporti.

 

Consigli!

■ Supporto per il partizionamento orizzontale della tabella DB

Il partizionamento orizzontale delle tabelle del database è un metodo efficace per il bilanciamento del carico nei giochi social.

Tuttavia, la divisione orizzontale corrispondente a FuelPHP inaspettatamente non ha informazioni e deve essere armata per farcela.

Sebbene FuelPHP abbia la funzione di separare il DB stesso in master e slave, l'elaborazione nel caso di dispersione orizzontale della tabella non viene presa in considerazione e non è possibile trovare buoni campioni.

 

Pertanto, abbiamo creato un modello che estende il modello ORM esistente e abbiamo deciso di selezionare una tabella in base alle condizioni.

Per ogni processo e classe di modello figlio, questo modello di estensione viene ereditato e utilizzato. (Questa è una procedura ordinaria ..)

 

In questo meccanismo, abbiamo fatto le seguenti cose.

· Crea una connessione che sovrascrive la classe di connessione,

Tra questi, la tabella viene selezionata in base alla regola di divisione.

· Preparare la classe per l'ereditarietà da non dividere per la tabella divisa,

Fai le impostazioni di divisione.

· Le singole classi di tabelle ereditano la classe ereditaria precedente e fanno varie cose.

 

Scrivendolo mi sento un po 'complicato, ma sarà quasi come segue.

fig001

Ad esempio, se lo trovi, in realtà significa che è un meccanismo per aggiornare la sua classe in Query :: forge, quindi va bene.

Quando la classe viene generata automaticamente con Scaffold, ecc., Deve essere riscritta.

 

Nella nostra azienda, prepariamo una tabella con destinazioni distribuite e accediamo da una tabella ottenuta da ciascun utente (in _ 0 ecc.). Penso che quest'area faccia parte del design.

 

■ roba vagabonda

La configurazione del file di configurazione di Fuel PHP è stata descritta come copiata dal nucleo e riscritta, quella dopo la riscrittura sarà adottata, ma

Sotto l'ambiente diverso da quello di sviluppo, abbiamo scoperto che la configurazione del core vivrà.

Pertanto, nel file di configurazione che ho copiato questa volta, mi sono configurato con mysqli, ma non appena ho cambiato l'ambiente in produzione, è un errore! !

Come risultato dell'esame, si è verificato un errore perché il valore predefinito di configurazione di core era pdo.

 

Dal momento che FuelPHP ha spesso riscritto il nucleo stesso, sembra necessario prestare attenzione.

 

■ impressioni

Ho sentito che FuelPHP è facile da usare e un ambiente rilassato, ma dal momento che richiede anche qualche capacità di lettura, ho pensato che sarebbe stato meglio personalizzarlo e usarlo bene.

In futuro, vorrei toccare varie cose e FuelPHP.