Les SSD réduisent-ils l'utilité des bases de données

28

Je n'ai entendu parler de Robert Martin qu'aujourd'hui, et il semble qu'il soit une figure notable du monde du logiciel, donc je ne veux pas que mon titre apparaisse comme s'il s'agissait d'un appât de clic ou que je mette des mots dans sa bouche, mais c'est simplement comment j'ai interprété ce que j'ai entendu de lui avec mon expérience et ma compréhension limitées.

Je regardais une vidéo aujourd'hui (sur l'architecture logicielle), sur une conférence de Robert C. Martin, et dans la seconde moitié de la vidéo, le sujet des bases de données était le thème principal.

D'après ma compréhension de ce qu'il a dit, il semblait qu'il disait que les SSD réduiraient ( considérablement ) l'utilité des bases de données .

Pour expliquer comment j'en suis arrivé à cette interprétation:

Il a expliqué comment avec les disques durs / disques rotatifs, la récupération des données est lente. Cependant, ces jours-ci, nous utilisons des SSD, a-t-il noté. Il commence par "la RAM arrive", puis continue en mentionnant les disques RAM, mais dit ensuite qu'il ne peut pas l'appeler disque RAM, donc recourt simplement à dire RAM. Donc, avec la RAM, nous n'avons pas besoin des index, car chaque octet prend le même temps pour être récupéré. ( ce paragraphe est paraphrasé par moi )

Donc, il suggère que la RAM (comme dans la mémoire de l'ordinateur) en remplacement des bases de données (comme c'est ce que j'ai interprété comme sa déclaration) n'a pas de sens parce que c'est comme dire que tous les enregistrements sont traités en mémoire pendant la durée de vie d'une application ( sauf si vous extrayez un fichier disque à la demande)

Donc, j'ai eu recours à la pensée RAM, il veut dire SSD. Donc, dans ce cas, il dit que les SSD réduisent l'utilité des bases de données. Il dit même: "Si j'étais Oracle, j'aurais peur. Le fondement même de mon existence s'évapore."

D'après ma petite compréhension des SSD, contrairement aux HDD, qui sont à la O(n)recherche de temps (je pense), les SSD sont proches O(1)ou presque aléatoires. Donc, sa suggestion m'a intéressé, parce que je n'y ai jamais pensé comme ça. La première fois que j'ai découvert les bases de données il y a quelques années, lorsqu'un professeur décrivait les avantages d'un système de fichiers classique, j'ai conclu que le rôle principal d'une base de données était essentiellement d'être un système de fichiers très indexé (ainsi que les optimisations, la mise en cache, l'accès simultané, etc), donc, si les index ne sont pas nécessaires dans SSD, ce type de rend les bases de données moins utiles.

Quoi qu'il en soit, avant de dire que je suis un newb, j'ai du mal à croire qu'ils deviennent moins utiles, car tout le monde utilise toujours les bases de données comme point principal de leur application, au lieu du système de fichiers pur, et il a l'impression de simplifier à l'excès le rôle des bases de données.

Remarque : j'ai regardé jusqu'à la fin pour m'assurer qu'il ne disait pas quelque chose de différent.

Pour référence: 42:22, c'est quand tout le sujet de la base de données apparaît, 43:52, c'est quand il commence par "Pourquoi avons-nous même des bases de données"

Cette réponse dit que les SSD accélèrent considérablement les DB. Cette question demande comment l’optimisation est modifiée.

Pour TL; DR ma question, est-ce que l'avènement de l'utilisation généralisée des SSD sur le marché des serveurs (qu'il soit à venir ou déjà arrivé) réduit l'utilité des bases de données?

Il semblait que ce que le présentateur essayait de transmettre était qu'avec les SSD, on pouvait stocker les données sur le disque, et ne pas avoir à se soucier de la lenteur avec laquelle les récupérer, comme avec les anciens disques durs, comme avec les SSD, les temps de recherche sont proches O(1)(Je pense). Donc, si cela était vrai, cela perdrait hypothétiquement l'un des avantages qu'il avait: l'indexation, car l'avantage d'avoir des index pour des temps de recherche plus rapides a disparu.

Abdul
la source

Réponses:

59

Il y a certaines choses dans une base de données qui devraient être modifiées lorsque vous utilisez des SSD. Par exemple, en parlant de PostgreSQL, vous pouvez ajuster effective_io_concurrency, et random_page_cost. Cependant, des lectures plus rapides et un accès aléatoire plus rapide ne sont pas ce que fait une base de données. Il assure

Il se trompe juste sur les index. Si la table entière peut être lue dans ram, un index est toujours utile. Tu ne me crois pas? Faisons une expérience de pensée,

  • Imaginez que vous ayez une table avec une colonne indexée.

    CREATE TABLE foobar ( id text PRIMARY KEY );
  • Imaginez qu'il y a 500 millions de lignes dans ce tableau.

  • Imaginez que les 500 millions de lignes soient concaténées ensemble dans un fichier.

Quoi de plus rapide,

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

Il ne s'agit pas seulement de savoir où se trouvent les données, mais de la façon dont vous les commandez et des opérations que vous pouvez effectuer. PostgreSQL prend en charge les index B-tree, Hash, GiST, SP-GiST, GIN et BRIN (et Bloom via une extension). Vous seriez stupide de penser que toutes ces mathématiques et fonctionnalités disparaissent parce que vous avez un accès aléatoire plus rapide.

Evan Carroll
la source
31
Juste un addendum - OP doit faire attention à ne pas confondre "accès aléatoire" avec "accès adressable au contenu". Comme OP l'a noté, «accès aléatoire» signifie que l'accès à chaque octet de mémoire est O (1). Cependant, la recherche de données dans cette "mémoire à accès aléatoire" nécessite toujours une recherche séquentielle à travers elle; c'est-à-dire que vous ne pouvez pas demander à la mémoire de "me trouver les données qui ressemblent à ceci " et de vous les remettre magiquement.
Bob Jarvis - Réintègre Monica
2
@BobJarvis Vous avez raison. Votre commentaire permet d'éclaircir encore plus @ l'exemple "Quoi de plus rapide" d'EvanCarroll sur les raisons pour lesquelles l'indexation et même la sous-indexation sont importantes, et la saisie O(1)n'est pas suffisante pour les cas d'utilisation fournis par une base de données
Abdul
12

Sur la base de votre message, il semble que le message clair est que les optimisations de temps de recherche RDBMS sont remplacées par du matériel, ce qui rend le temps d'E / S négligeable.

C’est absolument vrai. Le SSD sur les serveurs de base de données combiné à une RAM élevée (réelle) raccourcit considérablement les E / S. Cependant, l'indexation et la mise en cache du SGBDR sont toujours utiles, car même les systèmes avec cet énorme avantage d'E / S peuvent et auront des goulots d'étranglement d'E / S provenant de requêtes peu performantes causées par une mauvaise indexation. Cela se trouve généralement uniquement dans les applications à charge de travail élevée ou dans des applications mal écrites.

La valeur clé des systèmes SGBDR en général est la cohérence des données, la disponibilité des données et l'agrégation des données. L'utilisation d'une feuille de calcul Excel, d'un fichier csv ou d'une autre méthode pour conserver une "base de données" ne donne aucune garantie.

Le SSD ne vous protège pas de votre serveur principal devenu indisponible pour une raison quelconque (réseau, corruption du système d'exploitation, perte d'alimentation). Le SSD ne vous protège pas d'une mauvaise modification des données. Le SSD ne permet pas d'exécuter des analyses plus rapidement que de les «avoir simplement».

Josh Bonello
la source
Bien que j'ai acquis une meilleure compréhension, je demandais dans le contexte du stockage de données SSD brut vs le stockage de données sur une base de données avec disque dur, et votre réponse est dans le contexte de la base de données sur SSD (en raison d'une mauvaise formulation des questions)
Abdul
4
@Abdul Cette comparaison concerne les ponts entre les pommes et les suspensions. Un appareil brut vous offre une grande étendue de stockage; une base de données vous permet d'organiser et d'accéder à ce stockage selon un modèle de données. Le point de Josh ici est que si vous abordez cela avec l'idée aux yeux étoilés qu'un SSD brut est une chose merveilleuse parce qu'il est "rapide" et que vous allez simplement écrire du code pour faire tout votre stockage de données sur ce volume brut , vous finirez par finir par écrire une base de données.
Blrfl
8

Oncle Bob parlait probablement de bases de données en mémoire telles que Redis ou Gemfire . Dans ces bases de données, tout dans la base de données est vraiment contenu dans la RAM. La base de données peut commencer vide et être archivée avec des données de courte durée (utilisées comme cache) ou elle commence par charger tout depuis le disque et périodiquement les modifications des points de contrôle sur le disque.

Cela devient de plus en plus populaire parce que la RAM devient bon marché et il devient possible d'avoir un téraoctet de données stockées dans une base de données en cluster en mémoire. Il existe de nombreux cas d'utilisation où la vitesse d'avoir un accès instantané aux choses, il est utile de mettre en RAM plutôt que même un disque rapide comme SSD. Vous pouvez même continuer à utiliser SQL pour certains d'entre eux si cela est logique.

Pourquoi cela devrait-il inquiéter Oracle? Les données augmentent et il est peu probable que les SGBDR disparaissent. Cependant, une grande partie du temps d'ingénierie d'Oracle au cours des années a été consacrée à des moyens de rendre la récupération des données sur les disques en rotation très rapide. Oracle devra s'adapter à un niveau de stockage complètement différent. Ils le sont avec Oracle Database In Memory , mais ils sont exposés à une concurrence différente de celle du passé. Pensez au temps qu'il vous a fallu pour vous assurer que l'optimiseur de requêtes choisit les bonnes stratégies en fonction de la disposition des éléments sur le disque ...

Alan Shutko
la source
Ah. Je n'y ai jamais connu des choses telles que les bases de données en mémoire
Abdul
1
Comme un autre exemple, SQLite peut fonctionner en mémoire, donc pas besoin d'utiliser une base de données différente
user151019
8

Publication sur le wiki de la communauté recueillant les réponses initialement laissées sous forme de commentaires


Je dirais tout le contraire. Étant donné que les vitesses de lecture / écriture sont si rapides, vous pouvez désormais obtenir une base de données accélérée par GPU (par exemple BlazingDB ou Alenka ) pour calculer les chiffres encore plus rapidement. Vous pouvez désormais exécuter des requêtes encore plus complexes plus rapidement. Désormais, les requêtes que les gens ne considèrent même pas comme exécutables peuvent être exécutées à une vitesse raisonnable. Plus vous êtes complexe et plus vous avez de données, mieux c'est - Cybernard

Bien que Bob Martin existe depuis longtemps et que ses opinions valent généralement la peine d'être écoutées (si elles ne sont pas d'accord avec :-), dans ce cas, je pense qu'il plonge dans la foule "La mort des bases de données relationnelles est sur nous" (dont Je suis membre associé :-). Pour certaines choses dans des circonstances limitées, un argument quelque peu convaincant peut être avancé selon lequel les technologies de bases de données non relationnelles peuvent fournir un avantage. Cela dit, cependant, l'OMI, le modèle relationnel, imparfait de diverses manières, peut encore offrir le meilleur modèle de base de données à usage général disponible aujourd'hui. YMMV. - Bob Jarvis

La principale raison pour laquelle nous utilisons des bases de données n'est pas parce que les disques sont lents (en effet, à l'origine, cela a été cité comme une raison de ne pas utiliser de bases de données), mais plutôt parce que les données sont compliquées . Le but principal d'une base de données est de permettre à plusieurs applications / utilisateurs d'être en mesure de trouver les données correctes et même de pouvoir les modifier simultanément de manière contrôlée. Faire cela rapidement n'est qu'un objectif secondaire des bases de données. - RBarryYoung

RDBMS ne disparaîtra pas de sitôt; ils sont le meilleur choix pour certains types d'applications, et NoSQL (Mongo, etc.) est le meilleur choix pour d'autres. Chevaux de course. - sh1rts

La base de données aide à organiser les données. De toute façon, il n'était pas vraiment conçu pour un accès rapide aux données. - JI Xiang

Paul White
la source