Comment expliquer la différence entre SQL et NoSQL à votre grand-mère

Comment expliquer la différence entre SQL et NoSQL à votre grand-mère

L'une des décisions les plus importantes prises par un développeur est la base de données à utiliser. Pendant de nombreuses années, les options étaient limitées à diverses options de bases de données relationnelles prenant en charge le langage de requête structuré (SQL). Il s'agit notamment de MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 et bien d'autres.

Au cours des 15 dernières années, de nombreuses nouvelles bases de données No-SQL sont apparues sur le marché. Il s'agit notamment de magasins clé-valeur tels que Redis et Amazon DynamoDB, de vastes bases de données en colonnes telles que Cassandra et HBase, de magasins de documents tels que MongoDB et Couchbase, ainsi que de bases de données graphiques et de moteurs de recherche tels qu'Elasticsearch et Solr.

Dans cet article, nous allons essayer de comprendre SQL et NoSQL sans entrer dans leurs fonctionnalités.
De plus, nous nous amuserons un peu dans le processus.

Expliquer SQL à grand-mère

Grand-mère, imagine que je ne suis pas ton seul petit-fils. Au lieu de cela, maman et papa s’aimaient comme des lapins, ont eu 100 enfants, puis en ont adopté 50 autres.

Donc, vous nous aimez tous et vous ne voulez oublier aucun de nos noms, anniversaires, saveurs de glace préférées, tailles de vêtements, passe-temps, noms des conjoints, noms de nos enfants et autres faits très importants. Cependant, soyons réalistes. Vous avez 85 ans et votre bonne vieille mémoire ne peut tout simplement pas vous en sortir.

Heureusement, étant le plus intelligent de vos petits-enfants, je peux vous aider. Alors je viens chez toi, je sors quelques feuilles de papier et je te demande de faire des biscuits avant de commencer.

Sur une feuille de papier, nous dressons une liste intitulée «Petits-enfants" Chaque petit fils enregistré avec quelques informations essentielles le concernant, dont un numéro unique qui indiquera désormais quel petit fils il est. De plus, par souci d'organisation, nous inscrivons les attributs nommés en haut de la liste afin de toujours savoir quelles informations la liste contient.

id
prénom
anniversaire
derniere visite
taille de vêtements
glace préférée
adopté

1
Jimmy
09-22-1992
09-01-2019
L
chocolat à la menthe
non

2
Jessica
07-21-1992
02-22-2018
M
chemin rocailleux
oui

...continuez la liste !

Liste des petits-enfants

Au bout d'un moment, vous comprenez tout et nous avons presque terminé la liste ! Cependant, vous vous tournez vers moi et dites : « Nous avons oublié d'ajouter de l'espace pour les conjoints, les loisirs, les petits-enfants ! Mais non, nous n'avons pas oublié ! Cela suit plus loin et nécessite une nouvelle feuille de papier.

Alors je sors un autre morceau de papier et dessus on appelle la liste Conjoints. Nous ajoutons à nouveau les attributs qui sont importants pour nous au début de la liste et commençons à ajouter des lignes.

id
petit-enfant_id
prénom
anniversaire

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

...plus de conjoints !

Liste des conjoints

A ce stade, j'explique à ma grand-mère que si elle veut savoir qui est mariée avec qui, alors elle n'a qu'à comparer id dans la liste petits enfants с petit-enfant_id dans la liste des conjoints.

Après quelques dizaines de cookies, j'ai besoin d'une sieste. « Pouvez-vous continuer, grand-mère ? » Je pars faire une sieste.

Je reviens dans quelques heures. Tu es cool, grand-mère ! Tout a l'air bien sauf la liste хобби. Il y a environ 1000 XNUMX passe-temps sur la liste. La plupart d’entre eux sont répétitifs ; Ce qui s'est passé?

petit-enfant_id
hobby

1
vélo

4
vélo

3
vélo

7
pour le running

11
vélo

...nous allons continuer!

Désolé, j'ai complètement oublié de le dire ! En utilisant une seule liste, vous pouvez uniquement suivre хобби. Ensuite, dans une autre liste, nous devons suivre petits enfantsqui fait ça хобби. Nous allons l'appeler "Liste commune". Voyant que ça ne vous plaît pas, je commence à m'inquiéter et je repasse en mode liste.

id
hobby

1
vélo

2
pour le running

3
natation

...plus de loisirs !

Liste des loisirs

Une fois que nous avons notre liste de passe-temps, nous créons notre deuxième liste et l'appelons "Loisirs des petits-enfants».

petit-enfant_id
hobby_id

4
1

3
1

7
2

…plus!

Liste générale des loisirs des petits-enfants

Après tout ce travail, grand-mère dispose désormais d'un système de mémoire sympa pour garder une trace de sa famille incroyablement nombreuse. Et puis – pour me retenir plus longtemps – elle pose la question magique : « Où as-tu appris à faire tout ça ?

Bases de données relationnelles

Une base de données relationnelle est un ensemble de tables formellement décrites (dans notre exemple ce sont des feuilles) à partir desquelles vous pouvez accéder Selon ou les rassembler de différentes manières sans avoir à réorganiser les tables des bases. Il existe de nombreux types de bases de données relationnelles, mais malheureusement, une liste sur un morceau de papier n’en fait pas partie.

Une caractéristique distinctive des bases de données relationnelles les plus populaires est le langage de requête SQL (Structured Query Language). Grâce à cela, si grand-mère transférait son système de mémoire sur l'ordinateur, elle pourrait rapidement obtenir une réponse à des questions telles que : « Qui ne m'a pas rendu visite l'année dernière, est marié et n'a pas de passe-temps ?

L'un des systèmes de gestion de bases de données SQL les plus populaires est MySQL open source. Il est mis en œuvre principalement en tant que système de gestion de base de données relationnelle (SGBDR) pour les applications logicielles Web.

Quelques fonctionnalités clés de MySQL :

  • Il est bien connu, largement utilisé et minutieusement testé.
  • Il existe de nombreux développeurs qualifiés qui ont de l’expérience avec SQL et les bases de données relationnelles.
  • Les données sont stockées dans diverses tables, ce qui permet d'établir facilement des relations à l'aide de clés primaires et étrangères (identifiants).
  • Il est facile à utiliser et efficace, ce qui le rend idéal pour les entreprises, grandes et petites.
  • Le code source est soumis aux termes de la licence publique générale GNU.

Maintenant oublie ça TOUS.

Expliquer NoSQL à grand-mère

Grand-mère, nous avons une grande famille. Il y a 150 petits-enfants ! Beaucoup d’entre eux sont mariés, ont des enfants, s’intéressent à quelque chose, etc. À votre âge, il est impossible de se souvenir de tout sur nous tous. Ce dont vous avez besoin, c'est d'un système de mémorisation !

Heureusement, je aucun Je veux que tu oublies mon anniversaire et ma saveur de glace préférée, je peux t'aider. Je cours donc au magasin le plus proche, prends un cahier et rentre chez toi.

La première étape que je fais est d’écrire « Petits-enfants » en gros caractères gras sur la couverture de mon cahier. Ensuite, je me tourne vers la première page et commence à écrire tout ce dont vous devez vous souvenir sur moi. Après quelques minutes, la page ressemble à ceci.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: « On dirait que tout est prêt ! »
Grand-mère: "Attendez, et les autres petits-enfants ?"
Я: "Oui, exactement. Ensuite, nous attribuons une page à chacun.
Grand-mère: « Vais-je devoir écrire les mêmes informations pour tout le monde comme je l'ai fait pour vous ?
Я: « Non, seulement si tu veux. Laisse moi voir."
Prenant le stylo de ma grand-mère, je tourne la page et note rapidement des informations sur mon cousin le moins préféré.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Chaque fois que grand-mère a besoin de se souvenir de quelque chose concernant l'un de ses petits-enfants, il lui suffit d'aller à la bonne page du cahier de ses petits-enfants. Toutes les informations les concernant seront stockées directement sur leur page, qu'elle pourra rapidement modifier et mettre à jour.

Quand tout est fait, elle pose la question magique : « Où as-tu appris à faire tout ça ?

Bases de données NoSQL

Il y a beaucoup de Bases de données NoSQL (« pas seulement SQL »). Dans nos exemples, nous avons montré base de données documentaire. Les bases de données NoSQL modélisent les données de manière à éliminer les relations entre tables utilisées dans les bases de données relationnelles. Ces bases de données sont devenues populaires au début des années 2000 parmi les entreprises qui avaient besoin d'un clustering de bases de données basé sur le cloud en raison de leurs exigences d'évolutivité (par exemple Facebook). Dans de telles applications, la cohérence des données était bien moins importante que les performances et l’évolutivité.

Au début, les bases de données NoSQL étaient souvent utilisées pour des tâches de gestion de données spécialisées. Fondamentalement, lorsqu'il s'agissait d'applications Web et cloud, les bases de données NoSQL traitaient et distribuaient des quantités importantes de données. Les ingénieurs NoSQL ont également apprécié la flexibilité du schéma de données (ou son absence), qui permettait des changements rapides dans les applications évolutives.

Principales fonctionnalités de NoSQL :

  • Une manière très flexible de stocker des données
  • Mise à l'échelle horizontale vers les clusters
  • Séquence possible pour la persistance/propagation
  • Documents identifiés à l'aide de clés uniques

Comparaison détaillée

MySQL nécessite un schéma défini et structuré.
NoSQL vous permet de stocker n'importe quelle donnée dans un « document ».

MySQL est soutenu par une énorme communauté.
NoSQL a une petite communauté en croissance rapide.

NoSQL est facile à mettre à l’échelle.
MySQL a besoin de plus de facilité de gestion.

MySQL utilise SQL, qui est utilisé dans de nombreux types de bases de données.
NoSQL est une base de données de par sa conception avec des implémentations populaires.

MySQL utilise un langage de requête standard (SQL).
NoSQL n'utilise pas de langage de requête standard.

MySQL dispose de nombreux excellents outils de reporting.
NoSQL dispose de plusieurs outils de reporting difficiles à standardiser.

MySQL peut rencontrer des problèmes de performances pour les données volumineuses.
NoSQL offre d'excellentes performances sur le Big Data.

Pensées 8base

La société 8base, là où je travaille, nous alimentons l'espace de travail de chaque projet avec une base de données relationnelle Aurora MySQL hébergée sur AWS. Bien que NoSQL soit un choix logique lorsque les exigences de vos applications nécessitent des performances et une évolutivité élevées, nous pensons que la forte cohérence des données fournie par un SGBD est essentielle lors de la création d'applications SaaS et d'autres logiciels d'entreprise.

Pour les startups et les développeurs créant des applications métier qui nécessitent des rapports, l’intégrité des transactions et des modèles de données bien définis, investir dans des bases de données relationnelles est, à notre avis, le bon choix.

Apprenez-en davantage sur le développement avec Aurora, Serverless et GraphQL avec 8base.com ici.

Source: habr.com

Ajouter un commentaire