¿Qué es 'una gran base de datos'?

80

Ok, pregunta tonta, lo sé, pero veo el comentario nebuloso 'una base de datos grande', así como pequeña y mediana, y me pregunto qué significa eso. ¿Alguien puede definir qué es una base de datos pequeña, mediana y grande para nosotros los neófitos de SQL?

Randin
fuente
Lo siento, fallaste, no obtendrás +5 por una pregunta tonta ;-).
Toon Krijthe
Voy a marcar esto como subjetivo, avíseme si no está de acuerdo.
James McMahon
Interesante pregunta por cierto, estaba pensando en esto el otro día.
James McMahon
2
Sí, aprender SQL y diseñar bases de datos me ayudó a ponerlo en perspectiva.
Randin
Me engañé a mí mismo en una gran base de datos. Me gusta la respuesta de @dkretz que lo expresa en términos de rendimiento y consideraciones de codificación.
Milo LaMar

Respuestas:

106

No existe un umbral en el que una base de datos pequeña se convierta en mediana o una base de datos mediana se vuelva grande. Generalmente, cuando escucho estos términos, pienso en órdenes de magnitud particulares en términos de registros totales que se almacenan.

  • Pequeño: 10 5 registros o menos.
  • Medio: 10 5 a 10 7 registros.
  • Grande: 10 7 a 10 9 registros.
  • Muy grande: 10 9 o mayor número de registros.

Como sugirió poster dkretz , también podría pensar en términos de las propiedades que tiene cada tipo de base de datos. Categorizándolo de esta manera, diría:

  • Pequeño: el rendimiento no es un problema. Sus consultas funcionan bien sin realizar optimizaciones especiales. Solo ve una diferencia marginal en el rendimiento cuando usa mejoras de primera línea como índices.

  • Medio: Su base de datos probablemente tenga uno o más empleados asignados a tiempo parcial para su mantenimiento y cuidado. Estas personas prestan atención a la salud de la base de datos; su principal responsabilidad administrativa es prevenir problemas de rendimiento inaceptables y minimizar el tiempo de inactividad.

  • Grande: probablemente tenga miembros de personal dedicados cuyo trabajo sea trabajar en la base de datos y mejorar el rendimiento, así como asegurarse de que los cambios en la aplicación no causen roturas del esquema durante la vida útil de la base de datos. Las métricas sobre la salud y el estado de la base de datos se controlan de cerca. Se requiere una experiencia significativa para comprender y realizar optimizaciones.

  • Muy grande: la base de datos almacena una gran cantidad de información que debe ser fácilmente accesible. Las optimizaciones de rendimiento son absolutamente necesarias para extraer hasta la última gota de velocidad de cada consulta, y sin ella, la base de datos sería mucho menos utilizable o incluso imposible de usar. La base de datos puede estar utilizando técnicas de agrupación o replicación sofisticadas o innovadoras, ampliando los límites de la tecnología actual.

Tenga en cuenta que estos son completamente subjetivos y que alguien puede muy bien tener una definición alternativa perfectamente legítima de "grande".

John Feminella
fuente
Excelente respuesta, casi exactamente lo que hubiera dicho que es interesante considerando la subjetividad y los postes móviles.
Peter Wone
Excelente respuesta John. Muy conciso. Traté de explicar lo mismo pero
tomé una
Me gusta la segunda parte de la respuesta, pero creo que la primera parte, que relaciona el tamaño con el número de registros, es un poco engañosa. Podría tener una tabla realmente simple con toneladas de registros, o una pequeña cantidad de registros pero una organización de tablas muy complicada.
Programador fuera de la ley
En realidad, diría que cualquiera de sus dos ejemplos podría calificar como grande. ¿Está sugiriendo que un enorme diccionario de claves de propiedad que consta de una sola tabla con 50 millones de registros es en realidad una "pequeña base de datos"?
John Feminella
Yo diría que es legítimo considerar lo contrario también como algo pequeño. Por el contrario, considere una estructura de esquema enormemente compleja que consta de 10,000 tablas, pero que solo contiene 5 filas en total. ¿Es esta una "gran base de datos"?
John Feminella
27

Una forma de calcularlo es observando sus consultas de prueba.

Una base de datos pequeña es aquella en la que los índices no importan.

Una base de datos mediana es aquella en la que las consultas tardan más de un segundo si no se cuenta con un índice adecuado.

Una base de datos grande es aquella en la que las consultas suelen tardar horas en optimizarse, utilizando una combinación de diseño de consultas, modificación de índices y muchos ciclos de prueba.

dkretz
fuente
@le dorfier: Por cierto, creo que tenías razón sobre la actualización atómica con selección máxima (aunque todavía no lo haría de esa manera)
Mitch Wheat
4

Las bases de datos grandes son las que te obligan a dejar de usar bases de datos relacionales.

En otras palabras, una base de datos relacional normalizada donde todos los índices del mundo no pueden ayudarlo a cumplir con sus requisitos de tiempo de respuesta debido a los JOIN masivos.

Si alguna vez ha tenido que abandonar las bases de datos relacionales por otra cosa, o es un desarrollador de base de datos deficiente, no tiene un DBA experto o tiene una base de datos muy grande.

núcleo
fuente
3

"Gran base de datos" es un concepto nebuloso. Ya hay respuestas y opiniones muy diferentes publicadas en las respuestas a esta pregunta. Algunos enfoques para definir bases de datos “pequeñas”, “medianas” y “grandes” pueden tener más sentido que otros, PERO ENTONCES, en algún momento, considero que cada definición es correcta, verdadera y válida.

Algunas definiciones tienen más sentido que otras porque se enfocan en diferentes aspectos de importancia para el diseño, programación, uso, mantenimiento y administración de una Base de Datos y estos diferentes aspectos son los que realmente importan para una Base de Datos utilizable. Simplemente sucede que todos estos aspectos se ven afectados por el nebuloso concepto de "tamaño de la base de datos".

Entonces, ¿esto significa que no importa si puede definir si una base de datos en particular es grande o no?

Ciertamente no. Lo que significa es que aplicará el concepto de manera diferente mientras evalúa diferentes aspectos de diseño / operativos / administrativos de su base de datos. También significa que cada vez este concepto será nebuloso.

Por ejemplo: la estrategia del índice de la base de datos (un aspecto del diseño de la base de datos) se ve afectada por el recuento de registros de cada tabla (una medida del "tamaño"), por el tamaño del registro multiplicado por el recuento de registros (otra medida del "tamaño") y por las consultas vs. . Proporción de operaciones de creación / actualización / eliminación (un aspecto del uso de la base de datos).

Los tiempos de respuesta a las consultas son mejores si se utilizan índices para tablas con una gran cantidad de registros. Dependiendo de la naturaleza de sus cláusulas WHERE, ORDER BY y de agregación de registros, es posible que necesite varios índices para ciertas tablas.

Las operaciones de creación, actualización y eliminación se ven afectadas negativamente por el aumento del número de índices en las tablas afectadas. Más índices para una tabla afectada significan más cambios que el RDBMS debe realizar, gastando más tiempo y más recursos para aplicar esos cambios.

Además, si su RDBMS dedica más tiempo a aplicar esos cambios, los bloqueos también se mantienen durante más tiempo, lo que afecta los tiempos de respuesta y otras consultas que se envían al sistema al mismo tiempo.

Entonces, ¿cómo equilibra la cantidad y el diseño de sus índices? ¿Cómo saber si necesita un índice adicional y si al agregar ese índice no estará introduciendo un gran impacto negativo en los tiempos de respuesta de las consultas? Respuesta: Prueba y perfila su base de datos contra una carga objetivo según sus requisitos de carga / rendimiento y analiza los datos de perfilado para descubrir si se necesitan más optimizaciones / rediseños / índices.

Se requieren diferentes estrategias de índice para diferentes consultas vs. Ratios de operaciones de creación / actualización / eliminación. Si su base de datos tiene una gran cantidad de consultas pero rara vez se actualiza, el rendimiento de la aplicación en general será mejor si agrega todos los índices que mejoran los tiempos de respuesta de las consultas. Por otro lado, si su base de datos se actualiza constantemente pero no hay grandes operaciones de consulta, entonces el rendimiento será mejor si usa menos índices.

Por supuesto, hay otros aspectos: diseño de esquema de base de datos, estrategia de almacenamiento, diseño de red, estrategia de copia de seguridad, procedimientos almacenados / activadores / etc. programación, programación de aplicaciones (contra la base de datos), etc. Todos estos aspectos se ven afectados de manera diferente por distintos conceptos de “tamaño” (tamaño de registro, recuento de registros, tamaño de índice, recuento de índice, diseño de esquema, tamaño de almacenamiento, etc.).

Me gustaría tener más tiempo ya que este tema es fascinante. Espero que esta pequeña contribución le sirva de punto de partida en este fascinante mundo de SQL.

vmarquez
fuente
3

Debe tener en cuenta el avance del hardware para esta definición:

  1. Base de datos pequeña: el conjunto de trabajo se adapta a la RAM física de un solo servidor básico (aproximadamente 16 GB ahora)

  2. Base de datos mediana: cabe en uno o varios discos duros básicos (a través de RAID) en una sola máquina (hasta varios TB ahora)

  3. Gran base de datos: los datos deben distribuirse en varios servidores de productos básicos para que quepan (hasta varios PB ahora).

obecalp
fuente
2

Según el artículo de wikipedia sobre Very Large Database

Una base de datos muy grande, o VLDB, es una base de datos que contiene un número extremadamente alto de tuplas (filas de la base de datos) u ocupa un espacio de almacenamiento físico extremadamente grande en el sistema de archivos. La definición más común de VLDB es una base de datos que ocupa más de 1 terabyte o contiene varios miles de millones de filas, aunque naturalmente esta definición cambia con el tiempo.

karlcow
fuente
2

Si tiene una base de datos que es lo suficientemente grande como para que no pueda simplemente "hacer una copia de seguridad" para ponerla en una caja de desarrollo o prueba, es probable que tenga una "base de datos grande".

pearcewg
fuente
0

Creo que algo como wikipedia o los datos del censo de EE. UU. Es una base de datos "grande". Mis listas de direcciones personales o todos es una pequeña base de datos. Una base de datos de tamaño medio es algo intermedio.

Puede intentar definir los tamaños según la cantidad de servidores que necesite. Una base de datos pequeña es un componente de una aplicación que ejecuta en su escritorio, una base de datos de tamaño mediano sería un único servidor mysql (lo que sea) en algún lugar, y una base de datos grande requerirá varios servidores con algún tipo de soporte de replicación / conmutación por error.

Zoredache
fuente