web-dev-qa-db-fra.com

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

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 un 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 au centre des préoccupations.

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 RAM, donc recourt à dire juste RAM. Donc avec RAM, nous n'avons pas besoin des index, parce que chaque octet prend le même temps pour obtenir. ( ce paragraphe est paraphrasé par moi )

Donc, lui suggérant 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 en mémoire traitée 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 O(n) temps de recherche (je pense), les SSD sont proches de 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 les SSD, ce type 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 d'un 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 est lorsque tout le sujet de la base de données apparaît, 43:52 est quand il commence par "Pourquoi avons-nous même des bases de données"

This réponse dit que les SSD accélèrent considérablement les DB. This 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.

28
Abdul

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.

59
Evan Carroll

Sur la base de votre message, il semble que le message clair est que les optimisations de temps de recherche SGBDR sont remplacées par du matériel, ce qui rend IO temps négligeable.

C’est absolument vrai. SSD sur les serveurs de base de données combiné avec une valeur élevée (réelle) RAM rend IO attente considérablement plus courte. Cependant, l'indexation et la mise en cache RDBMS sont toujours utiles car même les systèmes avec ce énorme IO boon peut et aura IO goulots d'étranglement dus à des requêtes peu performantes causées par une mauvaise indexation. Cela ne se trouve généralement que sous des applications à charge de travail élevée ou 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, panne de courant). 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".

12
Josh Bonello

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 car 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ù le la vitesse d'avoir un accès instantané aux choses, il est utile de mettre 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 que par le passé. Pensez au temps nécessaire 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 ...

8
Alan Shutko

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


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 le GPU (par exemple BlazingDB ou Alenka ) pour calculer les nombres 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 certains choses sous circonstances limitées un argument quelque peu convaincant peut être avancé que les technologies de bases de données non relationnelles peuvent fournir un Edge. 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 pas pour utiliser des 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 de pouvoir 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

8
Paul White 9