185 votos

¿Lo que debe saber acerca de bases de datos de cada Desarrollador?

Nos guste o no, muchos si no la mayoría de nosotros, los desarrolladores, ya sea trabajen habitualmente con bases de datos o tener que trabajar con uno algún día. Y teniendo en cuenta la cantidad de uso indebido y abuso en la naturaleza, y el volumen de base de datos relacionados con las preguntas que surgen cada día, es justo decir que hay ciertos conceptos que los desarrolladores deben saber - aunque no de diseño o trabajar con bases de datos de hoy en día. Así:



¿Cuáles son los conceptos importantes que los desarrolladores y los profesionales del software debe saber acerca de las bases de datos?


Directrices para las Respuestas:


Mantenga su lista corta.
Un concepto por respuesta es mejor.

Sea específico.
"Modelado de datos" puede ser una importante habilidad, pero ¿qué significa eso exactamente?

Explique su razonamiento.
¿Por qué es su concepto importante? No diga simplemente "el uso de índices." No caer en las "mejores prácticas". Convencer a su público de aprender más.

Upvote respuestas que estamos de acuerdo.
Lectura de las respuestas de las personas en primer lugar. Uno de alto rango de respuesta es más efectiva la declaración de dos bajos que los clasificados. Si usted tiene más que añadir, agregar un comentario, o hacer referencia a la original.

No downvote algo simplemente porque no se aplican a usted personalmente.
Todos trabajamos en diferentes dominios. Aquí, el objetivo es proporcionar orientación para la base de datos de novicios para obtener un bien fundada y completa comprensión de diseño de base de datos y base de datos impulsada por el desarrollo, no para competir por el título de la más importante.

89voto

Walter Mitty Puntos 8726

La primera cosa que los desarrolladores deben saber acerca de las bases de datos es esta: ¿qué son las bases de datos? No se cómo funcionan, ni de cómo se construye uno, ni siquiera ¿cómo escribir código para recuperar o actualizar los datos en una base de datos. Pero ¿para qué son?

Por desgracia, la respuesta a esta pregunta es un objetivo en movimiento. En el heydey de bases de datos, en la década de 1970 hasta la década de 1990, con bases de datos para el intercambio de datos. Si se utiliza una base de datos, que usted no compartir datos fueron involucrados en un proyecto académico o que fueron el desperdicio de recursos, incluido usted mismo. Configuración de una base de datos y domando un DBMS eran tales tareas monumentales que la recuperación de la inversión, en términos de datos explotado varias veces, tuvo que ser enorme para que coincida con el de la inversión.

Durante los últimos 15 años, las bases de datos han llegado a ser usado para almacenar datos persistentes asociados con sólo una aplicación. La construcción de una base de datos para MySQLo Accesso de SQL Server se ha vuelto tan rutinario que las bases de datos se han convertido en casi una rutina parte de una aplicación normal. A veces, esa primera misión limitada es empujado hacia arriba por la ampliación de la misión, como el valor real de los datos se hace evidente. Por desgracia, las bases de datos que fueron diseñados con un único propósito en mente fallan a menudo de manera espectacular cuando se comienzan a ser empujado en un papel que es para toda la empresa y de misión crítica.

La segunda cosa que los desarrolladores necesitan para aprender acerca de las bases de datos es el conjunto de datos centrada en la visión del mundo. Los datos centrada en la visión del mundo es más diferente de los procesos centrados en la visión del mundo que cualquier cosa que la mayoría de desarrolladores que han aprendido. En comparación con esta brecha, la brecha entre la programación estructurada y la programación orientada a objetos es relativamente pequeño.

La tercera cosa que los desarrolladores necesitan para aprender, al menos en una visión de conjunto, es el modelado de datos, incluyendo conceptual, modelado de datos, lógica de modelado de datos, física y modelado de datos.

Conceptual modelado de datos es realmente análisis de los requisitos de datos centrada en el punto de vista.

Lógica de modelado de datos es generalmente la aplicación de un determinado modelo de datos para los requisitos descubierto conceptual en el modelado de datos. El modelo relacional se usa mucho más que cualquier otro modelo específico, y que los desarrolladores necesitan para aprender el modelo relacional seguro. El diseño de un poderoso y relevante modelo relacional para un trivial requisito no es una tarea trivial. No se puede construir una buena tablas SQL si no se comprende el modelo relacional.

Física de modelado de datos es generalmente DBMS específico, y no necesita ser aprendido en mucho detalle, a menos que el desarrollador es también la base de datos del generador o de la DBA. Lo que los desarrolladores tienen que entender es en qué medida el físico de la base de datos de diseño puede ser separado de la lógica de diseño de base de datos, y la medida en que la producción de alta velocidad de la base de datos se puede lograr simplemente por medio de modificaciones en el diseño físico.

La siguiente cosa que los desarrolladores necesitan para aprender es que mientras la velocidad (rendimiento) es importante, para otras medidas de diseño de la bondad, son aún más importantes, tales como la capacidad de modificar y ampliar el ámbito de aplicación de la base de datos por el camino, o la simplicidad de la programación.

Por último, cualquier persona que se mete con bases de datos debe comprender que el valor de los datos a menudo outlasts el sistema de que fuera capturado.

¡Uf!

64voto

Randy Minder Puntos 19262

Buena pregunta. Los siguientes son algunos de los pensamientos en ningún orden en particular:

  1. La normalización, por lo menos en la segunda forma normal, es esencial.

  2. La integridad referencial es también esencial, con la adecuada eliminación en cascada y actualización de consideraciones.

  3. Buen y correcto uso de las restricciones check. Vamos a la base de datos hacer tanto trabajo como sea posible.

  4. No propagues la lógica de negocio en la base de datos y de nivel medio de código. Escoger una o la otra, preferiblemente en el nivel medio de código.

  5. Decidir sobre un enfoque coherente para las claves principales y claves de clúster.

  6. No por encima del índice. Elige tu índices sabiamente.

  7. Coherente de la tabla y de la columna de denominación. Elige una estándar y se adhieren a ella.

  8. Limitar el número de columnas en la base de datos que será de aceptar valores null.

  9. No se entusiasme con los desencadenadores. Ellos tienen su uso, pero puede complicar las cosas a toda prisa.

  10. Tenga cuidado con Udf. Ellos son grandes, pero puede causar problemas de rendimiento cuando no eres consciente de cómo a menudo se puede obtener llama en una consulta.

  11. Obtener Celko del libro sobre diseño de base de datos. El hombre es arrogante, pero sabe sus cosas.

19voto

David Thornley Puntos 39051

En primer lugar, los desarrolladores necesitan para entender que hay algo que saber sobre las bases de datos. Ellos no son artilugios de magia en la que pones en el SQL y salir conjuntos de resultados, sino muy complicadas piezas de software con su propia lógica y peculiaridades.

Segundo, que hay diferentes base de datos de configuraciones para diferentes propósitos. Usted no quiere que un desarrollador históricos informes a partir de una base de datos transaccional si hay un almacén de datos de disponibles.

Tercero, que los desarrolladores necesitan para entender básicas de SQL, incluyendo combinaciones.

Más allá de esto, depende de cómo de cerca los desarrolladores están involucrados. He trabajado en puestos de trabajo donde yo estaba desarrollador y de facto de la DBA, donde los Administradores de bases de datos fueron solo por el pasillo, y donde los Administradores de bases de datos son en su propia área. (No me gusta la tercera.) Suponiendo que los desarrolladores están involucrados en el diseño de base de datos:

Ellos necesitan entender básica de normalización, al menos las tres primeras formas normales. Nada más allá de eso, obtener un DBA. Para aquellos con alguna experiencia con NOSOTROS de las salas de audiencia (y al azar de los programas de televisión se cuentan aquí), hay el mnemónico "Dependen de la clave, la clave, y nada sino la clave para ayudar a Codd."

Que necesitan para tener una idea acerca de los índices, por lo cual quiero significar que debería tener alguna idea de lo que los índices que necesitan y cómo pueden afectar a su rendimiento. Esto significa no tener inútil índices, pero el no tener miedo a agregar para que asistan a las consultas. Nada más (como el balance) debe ser dejado para el DBA.

Ellos necesitan entender la necesidad de la integridad de los datos, y ser capaz de señalar a donde se va a comprobar los datos y qué van a hacer si se encuentran con problemas. Esto no tiene que estar en la base de datos (donde será difícil para emitir un significativo mensaje de error para el usuario), pero tiene que estar en alguna parte.

Deben tener un conocimiento básico de cómo obtener un plan, y cómo leer en general (al menos lo suficiente como para saber si los algoritmos son eficientes o no).

Ellos deben saber vagamente lo que es un desencadenante, lo que es un punto de vista es, y que es posible dividir piezas de bases de datos. No es necesario ningún tipo de detalles, pero tienen que saber para pedir la DBA acerca de estas cosas.

Se debe, por supuesto, saben que no hay que meterse con los datos de producción, o código de la producción, ni nada de eso, y ellos deben saber que todo el código fuente, va a un MUNDIAL.

He olvidado, sin duda, algo, pero el desarrollador promedio no necesita ser un DBA, siempre que haya un real DBA en la mano.

17voto

Aaronaught Puntos 73049

Básicos De Indexación

Siempre estoy sorprendido al ver a una tabla o una base de datos completa con índices, o arbitraria/inútil índices. Incluso si usted no es el diseño de la base de datos y sólo tiene que escribir algunas consultas, siendo de vital importancia comprender, como mínimo:

  • Lo que se ha indexado en su base de datos y lo que no:
  • La diferencia entre los tipos de análisis, cómo son elegidos, y cómo la manera de escribir una consulta puede influir en la elección;
  • El concepto de cobertura (por qué no puede simplemente escribir SELECT *);
  • La diferencia entre un agrupados y no agrupados índice;
  • ¿Por mayor/grandes índices no son necesariamente mejor;
  • ¿Por qué usted debe tratar de evitar la envoltura de filtro de columnas en funciones.

Los diseñadores también deben ser conscientes de índice común anti-patrones, por ejemplo:

  • El Acceso a anti-patrón (la indización de cada columna, uno por uno)
  • El Catch-All anti-patrón (un enorme índice de todas o la mayoría de las columnas, al parecer, creado bajo la errónea impresión de que se iba a acelerar todo tipo de consulta que involucre a cualquiera de las columnas).

La calidad de una base de datos de indexación - y si o no usted tome ventaja de que con las consultas para la escritura representa , por mucho, la mayor parte significativa de rendimiento. 9 fuera de 10 preguntas publicadas y otros foros a quejarse de mal desempeño invariablemente resultan ser debido a una mala indexación o no sargable expresión.

16voto

Aaronaught Puntos 73049

Normalización

Siempre me presiona para ver a alguien luchando para escribir un excesivamente complicado consulta que habría sido totalmente sencillo con un diseño normalizado ("muéstrame las ventas totales por región.").

Si usted entiende esto desde el principio y diseñar en consecuencia, usted ahorrará un montón de dolor más adelante. Es fácil denormalize para el rendimiento después de que usted haya normalizado; no es tan fácil para normalizar una base de datos que no estaba diseñado de esa manera desde el principio.

Como mínimo, usted debe saber lo que 3NF, y cómo llegar allí. Con la mayoría de bases de datos transaccionales, este es un muy buen equilibrio entre hacer las consultas fácil de escribir y mantener un buen rendimiento.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X