database design - tutorial - ¿Cómo puedo calcular los costos de almacenamiento de la base de datos de diseño?
sql vs nosql (2)
RDBMS utiliza un enfoque completamente diferente para el almacenamiento de datos que las bases de datos de objetos o valores clave.
El modelo relacional asume que usted no sabe qué datos se necesitarán en el futuro, o cómo se accederá a los datos en el futuro. Esto ha demostrado ser una suposición bastante confiable en mi experiencia.
Esa es una de las razones por las que un dbms de SQL le permitirá agregar índices a medida que se necesiten, y le permitirá eliminar índices que han resultado inútiles. Le permitirá agregar restricciones a medida que se conozcan (restricciones que a veces requieren agregar más tablas) y eliminar restricciones a medida que cambian los requisitos. Le permitirá agregar columnas a medida que descubra más cosas que sería bueno saber. Le permitirá reemplazar tablas con vistas y reemplazar vistas con tablas. Algunos dbms le permitirán crear vistas materializadas: su impacto en la velocidad de consulta puede ser dramático y su impacto en el uso del disco puede ser devastador.
Bases de datos útiles amplían su alcance. Una base de datos SQL, diseñada de acuerdo con el modelo relacional, hace que sea relativamente fácil agregar funciones que nadie soñó durante el diseño inicial y sin aplastar otras partes del sistema . Por eso, a menudo se les pide que hagan cosas que sus diseñadores iniciales no imaginaron.
Todas estas cosas
- añadiendo y soltando índices a lo largo del tiempo,
- añadiendo y eliminando restricciones a lo largo del tiempo,
- añadiendo y soltando columnas a lo largo del tiempo,
- añadiendo y soltando tablas con el tiempo,
Haga que cualquier estimación del uso del disco parezca una pérdida de tiempo. Cualquiera de ellos solo puede cambiar drásticamente el espacio en disco requerido para una base de datos.
Puede calcular el espacio requerido por una fila y una página con bastante precisión. (Pruebe Google para "Diseño de fila de YourDBMSname" y "Diseño de página de YourDBMSname".) Pero cuando intenta multiplicar por el número de filas requeridas, debe estimar el número de filas. Eso lo pone en el gran final de lo que Steve McConnell llama "el cono de la incertidumbre ".
Si no ha medido el uso del disco en varios proyectos a lo largo del tiempo en su propia empresa, estimar el impacto de los puntos anteriores es solo una suposición.
La última compañía de Fortune 100 para la que trabajé tenía una base de datos operativa que había estado en producción desde la década de 1970. Cientos de aplicaciones, escritas en más de 25 lenguajes de programación en el transcurso de 40 años, llegan a esa cosa todos los días. (Creo que originalmente se construyó sobre el IMS de IBM; hoy se ejecuta en Oracle).
Incluso hace unos pocos años, nadie se imaginaba que su base de datos se utilizaría para traducir dibujos de ingeniería y listas de materiales al chino, y también para producir los documentos de aduanas que necesitarían para obtener productos terminados fuera de China. La implementación de las nuevas funciones requirió el almacenamiento de datos adicionales sobre cada parte y sobre cada documento de diseño en su inventario en vivo. Al principio de ese proyecto, nuestras estimaciones estaban bastante lejos. Ese es el gran extremo del cono. (Estimamos varias cosas, pero no el uso del disco. Se nos exigió que tuviéramos éxito, por lo que, independientemente del diseño que se me ocurriera, se requeriría que alguien proporcionara el espacio en disco necesario). Pero cuando salimos a la luz, sabíamos el valor exacto para cada estimación, porque ya habíamos hecho el trabajo. (Ese es el extremo estrecho del cono.)
Entonces, ¿cómo mitiga el riesgo de conjeturas en un entorno de diseño e implementación de bases de datos? Toma una lección de 1972.
Construye un prototipo, y mídelo.
Los ingenieros químicos aprendieron hace mucho tiempo que un proceso que funciona en el laboratorio no se puede implementar en una fábrica en un solo paso. Un paso intermedio llamado la planta piloto es necesario para dar experiencia en la ampliación de cantidades y en la operación en entornos sin protección. . . .
. . . Proyecto tras proyecto diseña un conjunto de algoritmos y luego se sumerge en la construcción de software entregable por el cliente en un calendario que exige la entrega de lo primero que se construyó. . . .
La cuestión de la administración, por lo tanto, no es si construir un sistema piloto y desecharlo. Usted hará eso. La única pregunta es si planear por adelantado para construir un desechable, o prometer entregar el desperdicio a los clientes.
Fred Brooks, Jr., en The Mythical Man-Month , p 116.
A menudo tengo en mente un esquema diferente al iniciar un proyecto. Después de hacer conjeturas aproximadas, me doy cuenta de que algunas están menos optimizadas para el crecimiento o el espacio de almacenamiento que otras. Obviamente, el tamaño del valor de la columna es lo principal. Pero los metadatos de tabla, los índices y los encabezados de fila también juegan un papel importante.
Además, RDBMS utiliza un enfoque completamente diferente para el almacenamiento de datos que las bases de datos de objetos o valores-clave.
¿Cuáles son algunos buenos recursos para tratar de averiguar el costo (o el espacio necesario) para el almacenamiento de la base de datos?
Tenga en cuenta que mi pregunta tiene poco que ver con la elección de la base de datos, pero más bien saber cómo hacer un uso correcto del diseño de cada base de datos de la manera más eficiente . Las bases de datos como PostgreSQL, MySQL, CouchDB, tienen diferentes casos de uso de destino y múltiples formas de resolver el mismo problema. Por lo tanto, conocer el costo de almacenamiento de cada solución ayudará a agregar a la elección de la mejor solución para el esquema.
Aquí hay un artículo de AskTom que encontré útil. Sin embargo, es específico de Oracle.
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:266215435203