Sharding-jdbc divide tablas por mes
Usted mismo debe implementar la tabla sharding-jdbc mensual. Debe implementar dos interfaces, PreciseShardingAlgorithm y RangeShardingAlgorithm, y agregar la ruta de implementación en el archivo de configuración
de la siguiente manera: com.simianBook.conf.TimeShardingTableAlgorithm
Luego busque un solo mes en yml. p> Entonces la ruta de configuración en yml es la siguiente:
Debido a que SimpleDateFormat no es seguro para subprocesos, debe cambiarse a DateTimeFormatter
A continuación, debe escribir una tabla que divide la tabla en un solo mes Método
Utilizo el algoritmo de copo de nieve que viene con sharding-jdbc para generar la clave principal. Lógica de implementación del algoritmo Snowflake
Entonces, cuando obtengo la clave de fragmento, invierto la clave de fragmento para obtener la marca de tiempo de la clave de fragmento. Luego, según la marca de tiempo, podemos obtener el año y el mes en que se crearon los datos y encontrar la ubicación (o nombre de la tabla) de la tabla
DefaultKeyGenerator.EPOCH+(Long.valueOf(shardingKey+"")> >22)
DefaultKeyGenerator.EPOCH representa la hora de inicio. En el algoritmo de copo de nieve, la marca de tiempo generada debe restarse de la hora de inicio y desplazarse 22 bits hacia la izquierda en la operación OR
La implementación del copo de nieve de sharding-jdbc es la siguiente Versión 3.0 Esta versión tiene un error , Es decir, cuando la cantidad de concurrencia es baja, la clave de fragmento generada siempre es un número par
Esto se resolvió en la versión 3.1.0. Puedes ver la diferencia por ti mismo
user_201907