¿Cuáles son las desventajas del uso de una clase de base de datos PHP como singleton?¿Cuáles son las desventajas del uso de una clase de base de datos PHP como un producto único?
Respuesta
Si la clase DB está construido para conectarse únicamente a una sola base de datos, tendrá problemas cuando se tiene una secuencia de comandos que necesita para conectarse a 2 dos bases de datos separadas. Sin embargo, podría compilar la clase singleton para aceptar múltiples configuraciones de servidor y luego administrarlas dentro del singleton.
De lo contrario, el diseño de una clase de base de datos como un conjunto unitario es una práctica que tiene mucho sentido, ya que se puede mantener un estricto control sobre el número de conexiones de un guión está haciendo en un momento dado.
Las desventajas son las mismas que para cualquier clase que utiliza el patrón Singleton:
Esto hace que sea difícil de ejecutar pruebas unitarias en contra de ella y también hace que sea imposible tener múltiples conexiones de bases de datos. Como todos sabemos, las variables globales tienen muchos inconvenientes y los Singleton no son una excepción, solo que son una variable global más "amigable".
Encontré un muy buen article al respecto y un viejo SO question también.
Creo que te refieres a "conexiones de bases de datos múltiples" por página, ¿no? – greg0ire
Sí, eso es cierto. Si no estoy usando singleton, termino teniendo, con la aplicación que estoy desarrollando, al menos 4 conexiones de base de datos en cada punto de tiempo. Me preguntaba qué es menos problemático ... – Ricardo
@greg: Sí, al menos con un clásico 'getInstance()' Singleton. ¿Tal vez el póster está buscando algo así como un grupo de conexión de base de datos? –
No es posible utilizar dos conexiones de bases de datos. Usted quiere esto porque:
- que tienen dos bases de datos.
- que quieren hacer algo dentro de una transacción cuando otra transacción ya se está ejecutando en la conexión de base de datos 'actual'.
- desea utilizar varias instancias de base de simulacros en su equipo realiza un test
- 1. ¿Cuáles son las desventajas de Apache Wicket?
- 2. ¿Cuáles son las desventajas de H264?
- 3. Cuáles son las desventajas de Typed DataSets
- 4. ¿Cuáles son las ventajas y desventajas del Patrón de propiedades?
- 5. ¿Cuáles son las ventajas del uso de Node.js vs PHP
- 6. ¿Cuáles son las características del tipo de matriz de PHP como estructura de datos?
- 7. ¿Cuáles son las desventajas de los métodos estáticos?
- 8. Postgresql enum ¿Cuáles son las ventajas y desventajas?
- 9. ¿Cuáles son las ventajas y desventajas de las mejores prácticas para usar una única base de datos?
- 10. ¿Cuáles son las ventajas y desventajas del autohospedaje?
- 11. ¿Cuáles son las ventajas y desventajas de usar esquemas XML?
- 12. ¿Cuáles son las desventajas de usar SqlServer Views?
- 13. ¿Cuáles son algunas de las desventajas de usar una referencia en lugar de un puntero?
- 14. Enlazando directamente a un SWF, ¿cuáles son las desventajas?
- 15. ¿Cuáles son las ventajas y desventajas de almacenar datos de sesión en el archivo frente a la base de datos?
- 16. ¿Cuáles son las implicaciones de portabilidad del uso del NDK?
- 17. Desventajas del uso de Basic4Android?
- 18. ¿Cuáles son las desventajas de tener muchos índices?
- 19. ¿Cuáles son las alternativas de idioma y producto a Akka?
- 20. ¿Cuáles son las ventajas/desventajas de usar Maven?
- 21. ¿Cuáles son las ventajas y desventajas de usar OpenID?
- 22. Desventajas del uso de SQL Server Compact frente a la base de datos SQL Server dedicada
- 23. ¿Cuáles son las desventajas de las colas de mensajes de Linux?
- 24. Desventajas de PDO (objetos de datos PHP)
- 25. ¿Cuáles son las ventajas y desventajas de usar boost :: iterator_facade?
- 26. ¿Cuáles son las ventajas y desventajas de usar el GAC?
- 27. ¿Cuáles son las desventajas de utilizar ClickOnce Deployment en .Net?
- 28. ¿Cuáles son las ventajas y desventajas de usar una red de entrega de contenido (CDN)?
- 29. ¿Cuáles son las mejores prácticas para almacenar datos de sesión de PHP en una base de datos?
- 30. ¿Cuáles son las "consecuencias prácticas" del uso de referencias suaves?
Cuando se tiene que tratar con múltiples bases de datos, a continuación, utilizar el patrón de diseño "Registro" (que se parece a una matriz asociativa Singleton), y utilizar el conexión DSN como clave de registro. – greg0ire
El patrón de registro es una solución horrible. Solo use un multitón y proporcione pares de clave/valor (donde la clave es el nombre de la conexión, por ejemplo, "conexión_1" y el valor es la información de conexión (nombre de usuario/contraseña, host, nombre de la base de datos, etc.) y tenga todos sus objetos de conexión almacenados dentro del multitón. Los objetos de registro realmente no tienen cabida en ninguna parte, ya que son poco más que variables globales glorificadas. – Adrian
@Adrian, estoy totalmente de acuerdo. El objetivo de utilizar un patrón singleton/multiton es evitar, a toda costa, crear una segunda conexión db dentro del mismo script. El patrón del Registro simplemente no parece resolver ninguno de los problemas aquí presentados. –