2008-11-12 22 views
9

Estoy viendo un sitio existente y están usando bases de datos separadas. Las bases de datos parecen ser configurado de la siguiente manera:Múltiples bases de datos frente a una sola base de datos

  • tipos generales (user_type, idioma, edad, etc.)
  • datos de los miembros (información de registro & de inicio de sesión)
  • de configuración del sitio

Personalmente, pondría todo en 1 base de datos. Para mí esto lo haría más fácil que casi siempre tener que poner el nombre de la base de datos en frente de cada mesa.

Veo desde una perspectiva de seguridad que las personas no pueden acceder a los datos incorrectos por accidente, pero en este sitio habrá administradores (aproximadamente el 10% de los usuarios en el sitio) que necesitarán acceder a todos bases de datos, haciendo búsquedas de bases de datos cruzadas.

¿Cuáles podrían ser las razones para hacer bases de datos separadas? (El sitio está en PHP & MySQL.)

Editar: Los nombres de la db son:

  • sitename (el nombre del sitio real) (tipos generales)
  • member (datos miembro)
  • siteconfig (configuración de sitio)
+1

Sí, esto es un loco de bajo nivel. Más trabajo para los programadores, pero la recompensa es más trabajo para los programadores. – MusiGenesis

+0

LOL @MusiGenesis –

Respuesta

11

pura especulación en lo que era en el mi nds de los creadores:

¿Quizás una diferencia en la volitidad de los datos, por lo que podría haber una estrategia de copia de seguridad/replicación diferente para los diferentes dbs físicos?

Tal vez una idea que diga "tipos generales" podría compartirse en varias aplicaciones, pero la "configuración del sitio", por ejemplo, sería específica para una sola aplicación.

Tal vez una idea de que las diferentes bases de datos podrían colocarse en diferentes piezas de hardware que tienen diferentes características de rendimiento, como su configuración RAID. Datos que se leen mucho pero no se actualizan en comparación con los datos que se actualizan mucho.

Una vez más, pura especulación ...

@Darryl - mi respuesta es más que la tecnología de la arqueología. No digo que compre nada de eso. Estoy tratando de entrar en la mentalidad de los antepasados ​​...

+5

El 99% de la arqueología está escudriñando los montones de basura que los seres humanos dejan atrás, por lo que su analogía es excelente. – MusiGenesis

+1

¡Aquí! Qué buen nombre/título para aquellos que tienen que mantener el software (especialmente uno mal documentado): ¡Arqueólogo de software! ¡Me gusta! Y me gusta la respuesta, por supuesto! – Yarik

0

@Corey Trager: Buena idea, pero por supuesto puede especificar qué tablas respaldar y también, ¿cuánta diferencia haría seleccionar solo desde algunos mientras siempre actualizando otras tablas?

1

También pura especulación: Tal vez fue una decisión arquitectónica para apoyar la separación de las preocupaciones.

+0

No está en la terminología ... ¿puede explicar las preocupaciones? –

+0

Corrígeme si me equivoco aquí, pero en general significa que separa el diseño y el trabajo, y se lo pasa a un desarrollador diferente, para encontrar la mejor solución para ese problema en lugar de una solución genérica para todo. –

1

No puedo pensar en un motivo para crear múltiples bases de datos para la información que enumeró, especialmente si esos datos deben estar entrecruzados. Suena más como si alguien no supiera cómo usar los permisos, así que en lugar de otorgar acceso a las tablas, simplemente crearon nuevas bases de datos.Solo una opinión, pero reducir las cosas a una sola base de datos probablemente sea una mejora.

+1

Es sorprendente lo que la ignorancia puede producir. Trabajo con una base de datos que no tiene claves principales, una situación que se produjo porque los desarrolladores originales no sabían cómo crear vistas. – MusiGenesis

+0

@MusiGenesis Me perdí esto. :(¿Cuál es la correlación entre no tener claves principales y crear vistas? – Kulingar

0

Si hubiera una buena razón para dividir una base de datos en varias más pequeñas como esta, las bases de datos probablemente tendrían nombres como "hadronsupercolliderrawdata" y "googlebackup_2008". Nombres como "generaltypes" y "memberdata" sugieren que fueron abrumados por la estupidez.

+1

¿Hay alguna razón por la que siente la necesidad de insultar la inteligencia de alguien en función del diseño de su aplicación? Tal vez fueron (y probablemente) programadores novatos al inicio de un proyecto/empresa Decir que alguien es "estúpido" debido a un diseño deficiente tiende a hacerte mirar de esa manera. – JM4

+1

@ JM4: decir que soy estúpido porque llamé a alguien estúpido es una especie de, bueno, estúpido, si no te importa mi Diciéndolo, decir que soy un idiota porque llamé estúpido a otra persona sería completamente exacto, y tampoco estúpido. En cuanto a la carne de tu comentario, por supuesto, eran programadores novatos al comienzo de un proyecto, ahí es donde el código más malo viene de. – MusiGenesis

+0

@MusiGenesis De hecho aprendí mucho de este intercambio, aunque hubiera reemplazado la estupidez por "ignorancia". – Kulingar

Cuestiones relacionadas