Particionamento horizontal DB com FuelPHP

É o K do escritório de Sapporo.

Tradicionalmente, a criação de um sistema de servidor (ambiente LAMP) era focada no desenvolvimento de sua própria estrutura, mas nos últimos anos cada vez mais estruturas de código aberto estão sendo usadas.

A estrutura interna não é ruim, mas se for uma estrutura de código aberto, penso se será fácil substituir as operações de outra empresa ou se você a está desenvolvendo de forma inversa e lidando com operações com outra empresa.

Então, eu gostaria de escrever um Tips of DB que não é cuidadoso, embora seja necessário para o FuelPHP que eu saiba que desta vez ele está sendo amplamente usado em jogos sociais e outros desenvolvimentos.

* Para detalhes sobre o tipo de coxas FuelPHP, consulte o documento em japonês.

(Documento Japonês FuelPHP)http://fuelphp.jp/

 

■ Ambiente criado desta vez

Desta vez, realizamos a verificação no seguinte ambiente.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Combustível PHP 1.7.3

Embora seja chamado de ambiente de exame interno vago, a versão do PHP é um pouco antiga, mas o FuelPHP está dando suporte a isso.

A propósito, a versão mais recente do FuelPHP é a 1.8, e também suporta o PHP 7!

Gostaria de fazer upload de todos os relatórios também.

 

Dicas!

■ Suporte para particionamento horizontal da tabela DB

O particionamento horizontal de tabelas de banco de dados é um método eficaz para balanceamento de carga em jogos sociais.

No entanto, a divisão horizontal correspondente ao FuelPHP inesperadamente não tem informações, e é para ser confundido para fazê-lo.

Embora o FuelPHP tenha a função de separar o próprio DB em mestre e escravo, o processamento no caso de dispersão horizontal da tabela não é levado em consideração e boas amostras não podem ser encontradas.

 

Portanto, criamos um modelo que estende o modelo ORM existente e decidimos selecionar uma tabela de acordo com as condições.

Para cada classe de modelo de processo e filho, esse modelo de extensão é herdado e usado. (Este é um procedimento comum ..)

 

Nesse mecanismo, fizemos as seguintes coisas.

· Criar uma conexão que substitua a classe de conexão,

Entre eles, a tabela é selecionada com base na regra de divisão.

· Preparar classe para herança para não dividir por tabela dividida,

Faça o ajuste da divisão.

· Classes de tabelas individuais herdam a classe de herança acima e fazem várias coisas.

 

Escrevê-lo me faz sentir um pouco complicado, mas será sobre o seguinte mecanismo.

fig001

Por exemplo, se você encontrá-lo, na verdade significa que é um mecanismo para atualizar sua própria classe no Query :: forge, então está tudo bem.

Quando a classe é gerada automaticamente com o Scaffold, etc., ela precisa ser reescrita.

 

Em nossa empresa, preparamos uma tabela com destinos distribuídos e acessamos de uma tabela obtida por cada usuário (em 0 etc.). Eu acho que essa área faz parte do design.

 

■ coisas tramp

Configuração do arquivo de configuração do combustível PHP foi descrito como sendo copiado do núcleo e reescrito, o que depois de reescrever será adotado, mas

Sob o ambiente diferente do Development, descobrimos que a configuração sob o núcleo irá viver.

Portanto, no arquivo de configuração que copiei dessa vez, configurei com o mysqli, mas assim que mudei o ambiente para produção, é um erro! !

Como resultado do exame, foi um erro porque o padrão de configuração do núcleo era pdo.

 

Como o FuelPHP freqüentemente reescreveu o próprio núcleo, parece necessário ter cuidado.

 

Impressão

Eu senti que o FuelPHP é fácil de usar e um framework relaxado, mas como também requer alguma capacidade de leitura, achei que seria melhor personalizá-lo e usá-lo bem.

No futuro, gostaria de tocar várias coisas, assim como o FuelPHP.