Pregunta

He estado pensando en implementar este sistema, pero no puedo evitar sentir que hay un problema en alguna parte. Uno de los puntos de usar GUID sobre el incremento de int es que, en el futuro, si combinara bases de datos juntas, no tendría ningún conflicto sobre la clave principal / identificador. Sin embargo, mi enfoque es establecer el tamaño del incremento en X, donde X es la cantidad de servidores que probablemente tenga en el futuro. Luego, en cada servidor, haga que la semilla sea un incremento sobre el número de semilla en el servidor anterior. De esa manera, durante la fusión, no habría choques con la clave primaria. ¿Es este un método seguro y normal o me he vuelto mental :)? Gracias

¿Fue útil?

Solución

En la replicación de SQL maestro múltiple, normalmente tiene claves primarias definidas como:

  • GUIDs
  • int con un tamaño de incremento > número de instalaciones
  • int con un desplazamiento fijo

La desventaja de los GUID es que pueden ser más difíciles de leer y ocupan un poco más de espacio. Sin embargo, le permite escalar a n instancias.

Los enteros son un poco más fáciles de tratar. También tienen la ventaja de poder decir fácilmente qué servidor creó un registro. La desventaja es que debe predecir el número máximo de bases de datos que podrían fusionarse, o adivinar el número máximo de filas que una sola instancia podría insertar.

Un ejemplo de un desplazamiento fijo es: el sitio A comienza en 0, el sitio B comienza en 1,000,000 y el sitio C comienza en 2,000,000. Este esquema funciona bien hasta que un sitio inserta un millón de filas. Este esquema podría funcionar bien para los automóviles en los concesionarios de automóviles, donde es poco probable que algún concesionario venda más de 1,000,000 de automóviles, y es posible que tenga cientos de concesionarios durante la vida útil de la aplicación.

Otros consejos

Lo que me asusta aquí es su uso de " muy probablemente " ;. Usted está asumiendo el futuro aquí, y por lo general no es una buena cosa hacer con cosas como esta. ¿Por qué no usar un GUID?

¿Qué sucede si agrega un servidor adicional a lo que pensó que tendría? Podía ver que las cosas se complicaban realmente rápido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top