¿Cómo se escala el tiempo de la consulta de la base de datos con el tamaño de la base de datos?

StackOverflow https://stackoverflow.com/questions/4973855

  •  12-11-2019
  •  | 
  •  

Pregunta

Recientemente, recientemente, en la enciclopedia en línea (enciclopedia en línea de las secuencias enteras), tratando de buscar una secuencia en particular que tuve en tu.

Ahora, esta base de datos es bastante grande.El sitio web afirma que si se imprimieron la edición de 2006 (! 5 años), ocuparía 750 volúmenes de texto.

Estoy seguro de que este es el mismo tipo de problema que Google tiene que manejar también.Pero, también tienen un sistema distribuido donde se aprovechan del equilibrio de carga.

Sin embargo, descuidando el equilibrio de carga, ¿cuánto tiempo se tarda en hacer una consulta en comparación con el tamaño de la base de datos?

O en otras palabras, ¿cuál es la complejidad del tiempo de una consulta con respecto al tamaño DB?

Editar: Para hacer las cosas más específicas, suponga que la consulta de entrada simplemente está buscando una cadena de números, como:

1, 4, 9, 16, 25, 36, 49

¿Fue útil?

Solución

Depende enérgicamente de la consulta, la estructura de la base de datos, la contención, etc. Pero, en general, la mayoría de las bases de datos encontrarán una manera de usar un índice, y ese índice será algún tipo de estructura de árbol (consulte http://en.wikipedia.org/wiki/b-tree para una opción) en cuyo caso el tiempo de acceso es proporcional para registrar (n), o bien un hash en el que el tiempo de acceso es Proporcional a O (1) en promedio (consulte http://en.wikipedia.org/wiki/hash_function #Hash_tables para una explicación de cómo funcionan).

Por lo tanto, la respuesta es típicamente O (1) o O (log (n)) dependiendo de qué tipo de estructura de datos se use.

Esto puede hacer que se pregunte por qué no siempre usamos funciones de hash. Hay varias razones. Las funciones hash hacen que sea difícil recuperar rangos de valores. Si la función HASH no se distribuye bien los datos, es posible que el tiempo de acceso se convierta en O (n). Los hashes necesitan cambiar el tamaño ocasionalmente, lo cual es potencialmente muy caro. Y el registro (n) crece lentamente lo suficiente para poder tratarlo como razonablemente cerca de constante en todos los conjuntos de datos prácticos. (De 1000 a 1 Petabyte, varía por un factor de 5.) y con frecuencia los datos solicitados activamente muestran algún tipo de localidad, qué árboles hacen un mejor trabajo de mantenerse en RAM. Como resultado, los árboles están algo más frecuentes en la práctica. (Aunque los hashes no son raros de ninguna manera.)

Otros consejos

Eso depende de una serie de factores que incluyen la implementación del motor de la base de datos, la estrategia de indexación, los detalles de la consulta, el hardware disponible, la configuración de la base de datos, etc.

No hay manera de responder una pregunta tan general.

Una base de datos diseñada e implementada correctamente con terabytes de datos puede superar una pequeña base de datos mal diseñada (particulaly One sin indexación y una que usa las consultas y cosas que no son sueltas, como las subconsferencias correlacionadas).Esta es la razón por la que alguien espera tener grandes cantidades de datos necesidades para contratar a un experto en el diseño de Database para obtener grandes bases de datos para hacer el diseño Intial no más adelante cuando la base de datos es grande.También puede necesitar invertir en el tipo de equipo que necesita para manejar el tamaño también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top