¿Es un administrador de base de datos un trabajo independiente?

Aquí en SurveyMonkey, The DB Team se divide en varios grupos distintos.

Tenemos ingenieros de bases de datos integrados con varios grupos de desarrollo. Son responsables de diseñar el esquema de la base de datos, trabajar en cualquier corrección de datos, mejoras de rendimiento, ajuste de consultas, etc. Básicamente, todo lo relacionado con la base de datos que necesitan sus contrapartes de desarrollo, en los equipos a los que dan soporte.

También contamos con el equipo de BI Infra que son responsables de la gestión de la infraestructura utilizada por nuestro departamento de BI. Esto puede incluir el desarrollo y mantenimiento de ETL, clústeres de Hadoop, almacenamiento de datos, informes, etc.

El equipo DBOps, en el que estoy formado, está formado por nuestros DBA. Nos enfocamos en mantener nuestra infraestructura de SQL Server. Gestionamos nuestro propio hardware separado de la infraestructura de TI. Hacemos nuestra propia administración del servidor, etc. También nos preocupan las copias de seguridad, la planificación de la capacidad, la resolución de problemas de rendimiento, la aplicación de parches, la administración de SAN, las revisiones de código, la creación de perfiles de procesos, la alta disponibilidad, la recuperación ante desastres, etc.

También tenemos un equipo de DB de código abierto que es similar a DBOps pero para otras plataformas fuera de SQL Server.

¿Podríamos ser tan efectivos con más generalistas de bases de datos, probablemente no? Nuestros ingenieros tampoco tienen el mismo conocimiento profundo de SQL que nosotros. Al igual que nosotros en el equipo de DB, no tenemos el mismo conocimiento sobre la pila de aplicaciones que ellos. DBA es un rol híbrido entre desarrollador y administrador de sistemas, por lo que poner a un desarrollador en un rol de DBA significa que tendrán mucho que aprender antes de que sean efectivos.

Al ejecutar nuestras aplicaciones basadas en el almacén de datos en todo el mundo en un trabajo mío anterior, trabajamos con DBA, a veces incluso con DBA de sistema y DBA de aplicación separados. Los DBA del sistema se preocupaban, por ejemplo, por el respaldo, la administración de parches / versiones, la administración del espacio de almacenamiento; los DBA de la aplicación sobre las tablas, vistas, índices, vistas materializadas, particiones, etc. necesarios para la aplicación, con un enfoque en el rendimiento. También observaron consultas de ejecución lenta en la aplicación propiamente dicha. El modelo de datos lógico estaba en el alcance de los diseñadores / desarrolladores de aplicaciones. Los DBA de la aplicación participaron en las reuniones semanales de desarrollo / mantenimiento. De hecho, la comunicación es crucial y, a la vez, eliminamos la separación entre los DBA del sistema y de la aplicación, porque ambas partes se sintieron descontentas con dos capitanes en un barco.

Cuando llegue a un cierto tamaño, necesita que alguien mantenga su base de datos. Cuando trabajas f.ex. para un operador de telefonía o pasarela de pago con tarjeta de crédito y no solo obtiene millones de nuevas filas de datos todos los días, sino que ocurren aproximadamente a la misma hora del día, después de las compras laborales, las compras de fin de semana, etc.

Necesita que alguien exprima la última onza de ciclo de CPU de esa base de datos. Por lo general, ejecuta Oracle o DB2 para tales operaciones, MySQL no lo haría de ninguna manera. Usted paga grandes cantidades en la licencia de la CPU, cada núcleo, cada mhz, cada memoria de GB. Un índice fantástico podría ahorrarle más dinero del que gana esa persona en un año.

Cuando llegue a estos tamaños, tiene tipos de DBA que no hacen nada más que crear nuevos índices, quejarse por el diseño de su aplicación y volver a indexar sus datos, fragmentar sus datos, etc.

Para casi el 99% de todos los sitios web, quizás tenga un desarrollador cuyo trabajo sería el 60-70% de trabajo de base de datos, desarrollo de descanso, y una vez que lo inicie, tendrá un 10-20% de dba, para hacer copias de seguridad. Cuando alcanza gigabytes en tamaños, cientos de transacciones cada hora, no puede confiar en un script de copia de seguridad que solo realiza el volcado de mysql, lleva mucho tiempo escribir gigabytes de datos, debe asegurarse de que sus datos estén actualizados.

Entonces, en resumen. Sí. para los más complicados y para grandes bases de datos.

More Interesting

¿Por qué eBay no realiza subastas de segundo precio de oferta cerrada?

Servidores: ¿Hay algún buen VPS por debajo de 50 $ anuales?

He estado investigando sobre la actividad de atención al cliente en foros populares de consumidores indios. Necesito estadísticas como las visitas únicas mensuales de los últimos 6 meses. ¿Cuál es la mejor herramienta / método para recopilar las estadísticas?

¿Qué elegirías para estudiar en estos días para el desarrollo web y de aplicaciones: Ruby on Rails o Java? ¿Por qué?

Para aplicaciones web a gran escala, ¿son los marcos web y WordPress / Drupal las dos únicas opciones eficientes?

En las aplicaciones web basadas en Python, ¿para qué ha usado las 'señales'?

¿Cómo alguien con poca o ninguna experiencia en creación de sitios web podría crear un sitio que sea similar a WikiAnswers?

¿Cuál es una buena aplicación para iPhone para rastrear el tiempo dedicado a varias aplicaciones en dispositivos móviles?

¿Cuáles son las similitudes y diferencias entre la informática científica de alto rendimiento y las aplicaciones web altamente escaladas?

Cómo implementar una aplicación web HTML5 en internet

¿Cómo deberíamos nombrar una aplicación web de anime que te permita calificar animes y escribir reseñas sobre ellos?

¿Necesito instalar PHP, MySQL y algo como XAMP, si ya tengo un IDE, un webhost y un cliente FTP?

¿Cómo resuelven las startups web el problema del huevo y la gallina de tener contenido inicial antes de un lanzamiento público, si la aplicación web se basa completamente en contenido generado por el usuario?

¿Por qué no puedo reproducir una canción en Pandora? O si puedo, ¿cómo lo hago?

¿Puedo obtener experiencia en desarrollo web solo a través de Java?