Lleno de información útil: implementación de fuentes de datos dinámicas basadas en ShardingSphere
En las empresas de Internet o en los sistemas de aplicaciones a gran escala, nosotros, como desarrolladores, normalmente tenemos que enfrentarnos a cantidades masivas de datos, que suelen ser millones o decenas de millones de datos. Y estas enormes cantidades de datos son cruciales tanto para las empresas como para los usuarios. Frente a una cantidad tan masiva de datos, debemos garantizar la seguridad y confiabilidad de los datos al guardarlos, los datos no se pueden perder y al consultar los datos, debemos garantizar una respuesta oportuna a los datos.
Entonces, ¿cómo garantizar la seguridad, confiabilidad y consulta en tiempo real de estos datos masivos?
Por supuesto, ciertamente hay muchas soluciones aquí. En la era actual del big data, han surgido muchas soluciones y marcos amigables para resolver este problema. Por ejemplo: Elasticsearch, Hadoop, etc. son marcos populares ahora.
En la actualidad, los datos en la mayoría de los sistemas de aplicaciones empresariales deben estar estructurados, es decir, estos datos masivos se almacenan en bases de datos relacionales, como Mysql, Oracle, etc. Además, la base de datos relacional Mysql es generalmente la primera opción para las nuevas empresas o las pequeñas y medianas empresas. Entonces, ¿cómo transporta Mysql millones o decenas de millones de datos? De acuerdo con las pautas de desarrollo de Alibaba, se recomienda que la capacidad de la tabla de datos MySQL no exceda los 5 millones de registros de datos, lo que significa que se recomienda dividir la tabla una vez que haya 5 millones de registros de datos. Ya existen muchas soluciones y marcos maduros de código abierto para las subbases de datos y tablas de Mysql, como Mycat, ShardingSphere, etc.
Sin embargo, en la mayoría de los escenarios comerciales, una biblioteca Mysql tendrá muchas tablas con una gran cantidad de datos. Es posible que solo haya unas pocas tablas de datos que deban responder a las consultas de manera oportuna, por ejemplo: la tabla de pedidos tiene una cantidad relativamente grande de datos, y el volumen de datos de la tabla de configuración es relativamente pequeño. Necesitamos realizar operaciones de fragmentación de tablas y bases de datos en la tabla de pedidos con un volumen de datos relativamente grande, y la tabla de configuración no es necesaria. para ser fragmentado en bases de datos y tablas. Es decir, necesitamos dividir algunas tablas en bases de datos y tablas, y algunas tablas no necesitan dividirse en bases de datos y tablas. Luego, podemos considerar el uso de la fuente de datos dinámica de ShardingSphere. Para los datos que deben dividirse en bases de datos y tablas, podemos enrutar la fuente de datos correcta a la base de datos correcta y enrutar las tablas que no necesitan dividirse en bases de datos y tablas a la base de datos correcta. base de datos predeterminada.
Tomemos SpringBoot como ejemplo para registrar el proceso de práctica detallado para referencia futura.
Presentación de la dependencia maven de ShardingSphere, usando la versión 4.0.0
Configuración de múltiples fuentes de datos
Las instrucciones son las siguientes:
Múltiples datos Clase de configuración de origen
La descripción es la siguiente:
La siguiente es la fuente de datos de SpringBoot
La descripción es la siguiente:
El siguiente es nuestro algoritmo de fragmentación personalizado, clase CustomShardingAlgorithm
La descripción es la siguiente:
A través de la configuración anterior y el algoritmo de fragmentación personalizado, con la ayuda del marco ShardingSphere, hemos implementado enrutamiento dinámico de datos mediante la adición, eliminación, modificación y consulta de declaraciones SQL que contienen la clave de fragmentación. Si la declaración SQL que requiere fragmentar la base de datos y la tabla no contiene la clave de fragmentación, ShardingSphere informará un error y verá el mensaje de error correspondiente en la información del registro.
Por supuesto, además de que ShardingSphere puede implementar fuentes de datos dinámicas, también se pueden implementar otros marcos o métodos, como aspectos Spring AOP, y también se pueden implementar interceptores. Entonces el benevolente ve benevolencia y el sabio ve sabiduría.
Materiales de referencia: