Soporte de división horizontal DB con FuelPHP

Es K de la oficina de Sapporo.

Tradicionalmente, la creación de un sistema de servidor (entorno LAMP) se centraba en el desarrollo de su propio marco, pero en los últimos años se utilizan cada vez más marcos de código abierto.

El marco interno no es malo, pero si se trata de un marco de código abierto, creo que será fácil reemplazar las operaciones de otra empresa, o si lo está desarrollando en reversa y manejando las operaciones a otra empresa.

Entonces, me gustaría escribir un Tips on DB que no soy cuidadoso acerca de FuelPHP que escuché que esta vez está siendo ampliamente usado en juegos sociales y otros desarrollos.

* Para detalles sobre qué tipo de muslos es FuelPHP, consulte el documento japonés.

(Documento japonés FuelPHP)http://fuelphp.jp/

 

■ Ambiente creado esta vez

Esta vez, realizamos la verificación en el siguiente entorno.

Apache 2.2.22

PHP 5.4.44

mysql 5.5.44,

Combustible PHP 1.7.3

Aunque se llama entorno de examen interno vacante, la versión de PHP es un poco antigua, pero FuelPHP la respalda.

Por cierto, la última versión de FuelPHP es 1.8, ¡y también es compatible con PHP 7!

Me gustaría subir cualquier informe allí también.

 

Consejos!

■ Soporte para la partición horizontal de la tabla DB

La división horizontal de las tablas de la base de datos es un método efectivo para equilibrar la carga en los juegos sociales.

Sin embargo, la división horizontal correspondiente a FuelPHP inesperadamente no tiene información, y se debe manipular para hacerlo.

Aunque FuelPHP tiene la función de separar el propio DB en maestro y esclavo, el procesamiento en el caso de la dispersión horizontal de la tabla no se toma en consideración y no se pueden encontrar buenas muestras.

 

Por lo tanto, creamos un modelo que amplía el modelo de ORM existente y decidimos seleccionar una tabla de acuerdo con las condiciones.

Para cada clase de proceso y modelo hijo, este modelo de extensión se hereda y se usa. (Este es un procedimiento ordinario ..)

 

En este mecanismo, hicimos las siguientes cosas.

· Crea una conexión que anula la clase de conexión,

Entre ellos, la tabla se selecciona según la regla de división.

· Prepare la clase para la herencia para no dividir para la tabla dividida,

Establecer división

· Las clases de tabla individuales heredan la clase de herencia anterior y hacen varias cosas.

 

Escribirlo me hace sentir un poco complicado, pero será casi como sigue.

fig001

Por ejemplo, si lo encuentras, en realidad significa que es un mecanismo para actualizar su propia clase en Query :: forge, por lo que está bien.

Cuando la clase se genera automáticamente con Scaffold, etc., necesita ser reescrita.

 

En nuestra empresa, preparamos una tabla con destinos distribuidos y accedemos desde una tabla obtenida por cada usuario (en _ 0 etc.). Creo que esta área es parte del diseño.

 

■ Cosas de vagabundo

La configuración del archivo de configuración de combustible PHP se describió como copiada del núcleo y reescrita, se adoptará la que está después de la reescritura, pero

En el entorno que no sea Desarrollo, encontramos que la configuración bajo el núcleo vivirá.

Por lo tanto, en el archivo de configuración que copié esta vez, configuré con mysqli, pero tan pronto como cambié el entorno a producción, ¡es un error! !

Como resultado del examen, fue un error porque el valor predeterminado de configuración del núcleo era pdo.

 

Como FuelPHP frecuentemente reescribió el núcleo en sí, parece necesario tener cuidado.

 

Impresion

Sentí que FuelPHP es fácil de usar y un marco relajado, pero como también requiere cierta capacidad de lectura, pensé que sería mejor personalizarlo y usarlo bien.

En el futuro, me gustaría tocar varias cosas, así como FuelPHP.