Red de conocimiento informático - Problemas con los teléfonos móviles - Sharding-jdbc divide tablas por mes

Sharding-jdbc divide tablas por mes

Actualización: agregue búsqueda de rango, como cinco meses de datos de 201901 a 201605. Anteriormente, solo había datos para un solo 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