¿Los SSD reducen la utilidad de las bases de datos?


28

Hoy solo escuché sobre Robert Martin, y parece que es una figura notable en el mundo del software, así que no me refiero a que mi título aparezca como si fuera un cebo de clic o que le pusiera palabras en la boca, pero esto es simplemente cómo interpreté lo que escuché de él con mi limitada experiencia y comprensión.

Hoy estaba viendo un video (sobre arquitectura de software), en una charla de Robert C. Martin, y en la segunda mitad del video, el tema principal de las bases de datos fue el tema principal.

Según tengo entendido de lo que dijo, parecía que estaba diciendo que los SSD reducirían la utilidad de las bases de datos ( considerablemente ).

Para explicar cómo llegué a esta interpretación:

Discutió cómo con los discos duros / discos giratorios, la recuperación de datos es lenta. Sin embargo, en estos días usamos SSD, señaló. Comienza con "RAM está llegando" y luego continúa mencionando los discos RAM, pero luego dice que no puede llamarlo disco RAM, por lo que recurre a solo decir RAM. Entonces, con RAM, no necesitamos los índices, porque cada byte tarda el mismo tiempo en llegar. ( este párrafo está parafraseado por mí )

Entonces, sugerir RAM (como en la memoria de la computadora) como un reemplazo para los DB (ya que eso es lo que interpreté) no tiene sentido porque es como decir que todos los registros se procesan en la memoria durante la vida útil de una aplicación ( a menos que extraiga de un archivo de disco a pedido)

Entonces, recurrí a pensar por RAM, él quiere decir SSD. Entonces, en ese caso, dice que los SSD reducen la utilidad de las bases de datos. Incluso dice: "Si fuera Oracle, estaría asustado. La base misma de por qué existo se está evaporando".

Desde mi poca comprensión de los SSD, a diferencia de los HDD, que son O(n)tiempo de búsqueda (creo), los SSD están cerca O(1)o son casi al azar. Entonces, su sugerencia fue interesante para mí, porque nunca lo había pensado así. La primera vez que me presentaron las bases de datos hace unos años, cuando un profesor describía los beneficios sobre el sistema de archivos regular, concluí que el papel principal de una base de datos es esencialmente ser un sistema de archivos muy indexado (así como optimizaciones, almacenamiento en caché, acceso concurrente, etc.), por lo tanto, si no se necesitan índices en SSD, este tipo de base de datos hace que las bases de datos sean menos útiles.

Sin embargo, independientemente de eso, antes de ser un novato, me resulta difícil creer que se vuelvan menos útiles, ya que todos todavía usan DB como punto principal de su aplicación, en lugar de un sistema de archivos puro, y siento que está simplificando demasiado. El papel de las bases de datos.

Nota : Observé hasta el final para asegurarme de que no dijera algo diferente.

Para referencia: 42:22 es cuando surge todo el tema de la base de datos, 43:52 es cuando comienza con "¿Por qué tenemos bases de datos?"

Esta respuesta dice que los SSD aceleran considerablemente los DB. Esta pregunta se refiere a cómo se cambia la optimización.

Para TL; DR mi pregunta, ¿el advenimiento del uso generalizado de SSD en el mercado de servidores (ya sea próximo o ya ha sucedido) reduce la utilidad de las bases de datos?

Parecía que lo que el presentador intentaba transmitir era que con los SSD, uno puede almacenar los datos en el disco y no tener que preocuparse por lo lento que sería recuperarlos como con los HDD más antiguos, como con los SSD, los tiempos de búsqueda están cerca O(1)(Yo creo que). Entonces, en el caso de que eso sea cierto, hipotéticamente perdería una de las ventajas que tenía: indexación, porque la ventaja de tener índices para tiempos de búsqueda más rápidos se ha ido.

Respuestas:


59

Hay algunas cosas en una base de datos que deben modificarse cuando usa SSD. Por ejemplo, hablando para PostgreSQL puede ajustar effective_io_concurrency, y random_page_cost. Sin embargo, las lecturas más rápidas y el acceso aleatorio más rápido no es lo que hace una base de datos. Se asegura

Simplemente está equivocado acerca de los índices. Si toda la tabla se puede leer en RAM, un índice sigue siendo útil. No me creas Hagamos un experimento mental,

  • Imagine que tiene una tabla con una columna indexada.

    CREATE TABLE foobar ( id text PRIMARY KEY );
  • Imagine que hay 500 millones de filas en esa tabla.

  • Imagine que los 500 millones de filas se concatenan juntas en un archivo.

¿Qué es más rápido?

  1. grep 'keyword' file
  2. SELECT * FROM foobar WHERE id = 'keyword'

No se trata solo de dónde están los datos, se trata de cómo se solicitan y qué operaciones se pueden realizar. PostgreSQL admite índices B-tree, Hash, GiST, SP-GiST, GIN y BRIN (y Bloom a través de una extensión). Sería tonto pensar que toda esa matemática y funcionalidad desaparece porque tiene un acceso aleatorio más rápido.


31
Solo un apéndice: OP debe tener cuidado de no combinar "acceso aleatorio" con "acceso direccionable por contenido". Como OP señaló, "acceso aleatorio" significa que llegar a cada byte de memoria es O (1). Sin embargo, ENCONTRAR datos en esa "memoria de acceso aleatorio" todavía requiere una búsqueda secuencial a través de ella; es decir, no puedes pedirle a la memoria "encuéntrame los datos que se parecen a esto " y que te lo entreguen mágicamente.
Bob Jarvis - Restablece a Mónica el

2
@BobJarvis Tienes razón. Su comentario ayuda a aclarar aún más @ EvanCarroll de "¿Qué es más rápido" ejemplo de por qué la indexación e incluso subindexing la materia, y sólo sacar en O(1)que no es suficiente para los casos de uso de una base de datos proporciona
Abdul

12

Según su publicación, parece que el mensaje claro es que las optimizaciones del tiempo de búsqueda RDBMS se están reemplazando con hardware que hace que el tiempo de E / S sea insignificante.

Esto es absolutamente cierto. SSD en servidores de bases de datos combinados con RAM alta (real) hace que la espera de E / S sea significativamente más corta. Sin embargo, la indexación y el almacenamiento en caché de RDBMS siguen siendo valiosos porque incluso los sistemas con este gran beneficio de E / S pueden y tendrán cuellos de botella de E / S por consultas de bajo rendimiento causadas por una mala indexación. Esto normalmente solo se encuentra en aplicaciones de alta carga de trabajo o aplicaciones mal escritas.

El valor clave para los sistemas RDBMS en general es la consistencia de datos, la disponibilidad de datos y la agregación de datos. La utilización de una hoja de cálculo de Excel, un archivo csv u otro método para mantener una "base de datos" no ofrece garantías.

SSD no lo protege de que su servidor primario no esté disponible por ningún motivo (red, corrupción del sistema operativo, pérdida de energía). SSD no lo protege de una mala modificación de datos. SSD no hace que sea más rápido ejecutar análisis en comparación con "simplemente tenerlos".


A pesar de que he adquirido una mejor visión, yo estaba pidiendo en el contexto de almacenamiento de datos SSD vs prima de almacenamiento de datos en una base de datos w / HDD, y su respuesta es en el contexto de DB en SSD (debido a la mala pregunta redacción de mí)
Abdul

44
@Abdul Esa comparación es puentes de manzanas a suspensión. Un dispositivo en bruto le ofrece una gran cantidad de almacenamiento; una base de datos le ofrece una forma de organizar y acceder a ese almacenamiento de acuerdo con un modelo de datos. El punto de Josh aquí es que si entras en esto con la idea de que un SSD sin procesar es algo maravilloso porque es "rápido" y que solo vas a escribir código para hacer todo tu almacenamiento de datos en ese volumen sin procesar , eventualmente terminarás escribiendo una base de datos.
Blrfl

8

El tío Bob probablemente estaba hablando de bases de datos en memoria como Redis o Gemfire . En estas bases de datos, todo en la base de datos realmente está contenido en la RAM. La base de datos podría comenzar vacía y archivarse con datos de corta duración (que se utiliza como caché) o comenzar cargando todo desde el disco y periódicamente cambios de punto de control en el disco.

Esto se está volviendo cada vez más popular porque la RAM se está volviendo barata, y es factible tener un terabyte de datos almacenados en una base de datos agrupada en memoria. Hay muchos casos de uso donde la velocidad de tener acceso instantáneo a las cosas hace que sea valioso colocar RAM en lugar de incluso un disco rápido como SSD. Incluso puede continuar usando SQL para algunos de estos si tiene sentido.

¿Por qué debería preocupar esto a Oracle? Los datos están creciendo y es poco probable que los RDBMS desaparezcan. Sin embargo, gran parte del tiempo de ingeniería de Oracle a lo largo de los años se ha dedicado a hacer que la recuperación de datos en discos giratorios sea realmente rápida. Oracle deberá adaptarse a un nivel de almacenamiento completamente diferente. Lo están, con Oracle Database In Memory , pero están expuestos a una competencia diferente que en el pasado. Piense en cuánto tiempo ha pasado para asegurarse de que el optimizador de consultas elija las estrategias correctas en función del diseño de las cosas en el disco ...


Ah Nunca supe cosas como las bases de datos en memoria
Abdul

1
Como otro ejemplo, SQLite puede ejecutarse en la memoria, por lo que no es necesario usar una base de datos diferente
user151019

8

Publicación Wiki de la comunidad que recopila respuestas originalmente dejadas como comentarios


Yo diría todo lo contrario. Dado que las velocidades de lectura / escritura son tan rápidas, ahora puede obtener una base de datos acelerada por GPU (por ejemplo, BlazingDB o Alenka ) para procesar los números aún más rápido. Ahora puede ejecutar consultas aún más complejas más rápido. Ahora las consultas que las personas ni siquiera considerarían correr pueden ejecutarse a una velocidad razonable. Cuanto más complejo y más datos, mejor estará - cybernard

Si bien Bob Martin ha existido por mucho tiempo y sus opiniones generalmente merecen ser escuchadas (si no está de acuerdo con :-), en este caso creo que se está sumergiendo en la multitud "La muerte de las bases de datos relacionales está sobre nosotros" (de las cuales Soy un miembro asociado :-). Para algunas cosas, en circunstancias limitadas, se puede hacer un argumento algo convincente de que las tecnologías de bases de datos no relacionales pueden proporcionar una ventaja. Sin embargo, dicho esto, el modelo relacional de la OMI, defectuoso en diversas y diversas formas, puede proporcionar el mejor modelo de base de datos de propósito general disponible en la actualidad. YMMV. - Bob Jarvis

La razón principal por la que usamos bases de datos no se debe a que los discos sean lentos (de hecho, originalmente, eso se citó como una razón para no usar bases de datos), sino a que los datos son complicados . El propósito principal de una base de datos es permitir que múltiples aplicaciones / usuarios puedan encontrar los datos correctos e incluso poder alterarlos simultáneamente de manera controlada. Hacer eso rápidamente es solo un objetivo secundario de las bases de datos. - RBarryYoung

RDBMS no desaparecerá pronto; son la mejor opción para algunos tipos de aplicaciones, y NoSQL (Mongo, etc.) es la mejor opción para otros. Caballos de carreras. - sh1rts

La base de datos ayuda a organizar los datos. En primer lugar, en realidad no fue diseñado para un acceso rápido a los datos. - JI Xiang

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.