
L'une des décisions les plus importantes que prend un développeur est de choisir la base de données à utiliser. Pendant de nombreuses années, les options étaient limitées à divers types de bases de données relationnelles prenant en charge le langage de requête structuré (SQL). Celles-ci incluent 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 sont apparues sur le marché dans le cadre de l'approche No-SQL. Celles-ci incluent des magasins de clés-valeurs comme Redis et Amazon DynamoDB, des bases de données en colonnes larges comme Cassandra et HBase, des magasins de documents tels que MongoDB et Couchbase, ainsi que des bases de données graphiques et des moteurs de recherche comme Elasticsearch et Solr.
Dans cet article, nous allons essayer de comprendre SQL et NoSQL sans entrer dans leurs fonctionnalités.
De plus, nous allons un peu nous amuser en cours de route.
Expliquer SQL à ma 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, ils ont eu 100 enfants, puis ils ont adopté encore 50.
Alors, tu aimes tous nous et tu ne veux oublier aucun de nos noms, anniversaires, goûts en matière de glace, tailles de vêtements, passe-temps, noms des conjoints, noms des enfants et autres faits super importants. Mais regardons les choses en face. Tu as 85 ans, et ta vieille mémoire tout juste semble incapable de suivre.
Heureusement, moi, le plus intelligent de tes petits-enfants, je peux aider. Donc, je viens chez toi, je sors quelques feuilles de papier et je te demande de faire des biscuits avant que nous commencions.
Sur une feuille de papier, nous dressons une liste intitulée «Petits-enfants». Chaque petit-fils est inscrit avec certaines informations essentielles à son sujet, y compris un numéro unique, qui indiquera maintenant quel petit-fils il est. De plus, pour des raisons d'organisation, nous écrivons des attributs nommés en haut de la liste afin que nous sachions toujours quelles informations contient cette liste.
id
nom
anniversaire
dernière visite
taille de vêtements
glace préférée
adopté
1
Jimmy
09-22-1992
09-01-2019
L
Chocolat menthe
faux
2
Jessica
07-21-1992
02-22-2018
M
Cheminée rocheuse
true
…continuons la liste !
Liste des petits-enfants
Après un certain temps, tu comprends tout et nous avons presque fini avec la liste ! Cependant, tu te tournes vers moi et dis : « Nous avons oublié d'ajouter des places pour les conjoints, les passe-temps, les petits-enfants ! » Mais non, nous n'avons pas oublié ! Cela suit et nécessite une nouvelle feuille de papier.
Donc, je sors une autre feuille de papier, et dessus, nous nommons la liste Conjoints. Nous ajoutons à nouveau les attributs qui nous sont importants en début de liste et commençons à les ajouter dans les lignes.
id
grandchild_id
nom
anniversaire
1
2
Jean
06-01-1988
2
9
Fernanda
03-05-1985
…plus de conjoints !
Liste des conjoints
À ce stade, j'explique à ma grand-mère que si elle veut savoir qui est marié avec qui, elle n'a qu'à comparer id dans la liste petits-enfants avec grandchild_id dans la liste des conjoints.
Après quelques dizaines de cookies, j'ai besoin de faire une petite sieste. « Tu peux continuer, mamie ? » Je pars faire un somme.
Je reviens quelques heures plus tard. Et tu es géniale, mamie ! Tout a l'air super, sauf la liste loisirs. La liste contient environ 1000 loisirs. La plupart se répètent ; que s'est-il passé ?
grandchild_id
hobby
1
vélo
4
vélo
3
vélo
7
en cours d'exécution
11
vélo
…continuons !
Désolé, j'ai complètement oublié de dire ! En utilisant une seule liste, nous pouvons suivre seulement loisirs. Ensuite, dans une autre liste, nous devons suivre petits-enfants, qui s'adonne à cela loisirs. Nous allons l'appeler « Liste générale ». Voyant que cela ne te plaît pas, je commence à m'inquiéter et je retourne en mode liste.
id
hobby
1
vélo
2
en cours d'exécution
3
natation
…plus de loisirs !
Liste des loisirs
Une fois que nous avons notre liste de loisirs, nous créons notre deuxième liste et l'appelons «Loisirs des petits-enfants».
grandchild_id
hobby_id
4
1
3
1
7
2
…plus !
Liste générale des loisirs des petits-enfants
Après tout ce travail, ma grand-mère a maintenant un super système de mémorisation pour suivre toute sa grande famille incroyablement nombreuse. Puis, pour me garder plus longtemps, elle pose la question magique : « Où as-tu appris à faire tout cela ? »
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) auxquelles on peut accéder les données ou les rassembler de différentes manières sans avoir besoin de réorganiser les tables. base de donnéesIl existe de nombreux types de bases de données relationnelles, mais malheureusement, la liste sur une feuille de papier n'en fait pas partie.
La caractéristique distincte des bases de données relationnelles les plus populaires est le langage de requête SQL (Structured Query Language). Grâce à cela, si ma grand-mère transfère son système de mémorisation sur un ordinateur, elle pourra rapidement obtenir des réponses à des questions comme : « Qui ne m'a pas rendu visite l'année dernière, est marié et n'a aucun loisir ? »
L'un des systèmes de gestion de bases de données SQL les plus populaires est MySQL, qui est open source. Il est principalement implémenté en tant que système de gestion de bases de données relationnelles (SGBDR) pour les applications basées sur des technologies web.
Certaines caractéristiques clés de MySQL :
- Elle est assez connue, largement utilisée et soigneusement testée.
- Il y a beaucoup de développeurs qualifiés ayant de l'expérience avec SQL et des bases de données relationnelles.
- Les données sont stockées dans différentes tables, ce qui permet d'établir facilement des relations en utilisant des clés primaires et étrangères (identifiants).
- Il est simple à utiliser et efficace, ce qui le rend idéal pour les grandes et petites entreprises.
- Le code source est sous les conditions de la GNU General Public License.
Maintenant, oublie TOUT.
Expliquer NoSQL à une 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, ont des passe-temps, etc. À ton âge, il est impossible de se souvenir de tout le monde. Ce dont tu as besoin, c'est d'un système de mémorisation !
Heureusement, moi, ne désirant que tu oublies mon anniversaire et ma saveur de glace préférée, peux t'aider. Donc, je cours au magasin le plus proche, prends un carnet et reviens te voir.
La première étape que je fais est d'écrire « Petits-enfants » en grandes lettres grasses sur la couverture du carnet. Puis, je feuillette la première page et commence à écrire tout ce que tu dois te souvenir de 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":[
"vidéos jeux",
"ordinateurs",
"cuisine"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Préfère le gâteau glacé pour son anniversaire au lieu du gâteau au chocolat !"
} Je: “Tout semble prêt !”
Grand-mère: “Attends, et les autres petits-enfants ?”
Je: “Oui, exact. Alors, nous dédions une page à chacun.”
Grand-mère: “Devrai-je enregistrer toute la même information pour tous, comme je l'ai fait pour toi ?”
Je: “Non, seulement si tu le souhaites. Laisse-moi te montrer.”
En prenant un stylo à ma grand-mère, je feuillette la page et note rapidement des informations sur mon cousin que j'apprécie le moins.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Né le même jour que Cody mais pas aussi important"
}Chaque fois que la grand-mère doit se souvenir de quelque chose à propos d'un des petits-enfants, elle doit juste se rendre à la page correspondante dans le carnet des petits-enfants. Toutes les informations à leur sujet seront stockées juste là, sur leur page, qu'elle peut rapidement modifier et mettre à jour.
Quand tout est déjà fait, elle pose la question magique : « Où as-tu appris à tout faire ? »
Les bases de données NoSQL
Il existe de nombreux bases de données NoSQL (« pas seulement SQL »). Dans nos exemples, nous avons montré une base de données documentaire. Les bases de données NoSQL modélisent les données de manière à exclure les relations tabulaires 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 nécessitant une mise en cluster dans le cloud en raison de leurs exigences explicites en matière d'évolutivité (par exemple, Facebook). Dans ces applications, la cohérence des données importait beaucoup moins que la performance et l'évolutivité.
Au début, les bases de données NoSQL étaient souvent utilisées pour des tâches de gestion des données de niche. Principalement, lorsqu'il s'agissait d'applications Web et cloud, les bases de données NoSQL traitaient et distribuaient d'importants volumes de données. Les ingénieurs travaillant avec NoSQL appréciaient également la flexibilité du schéma de données (ou son absence totale), ce qui permettait des changements rapides dans les applications mises à jour.
Fonctionnalités clés de NoSQL :
- Une manière très flexible de stocker les données
- Mise à l'échelle horizontale vers des clusters
- Consistance possible sur la durabilité / la diffusion
- Documents identifiés à l'aide de clés uniques
Comparaison détaillée
MySQL nécessite un schéma défini et structuré.
NoSQL permet de sauvegarder n'importe quelle donnée dans un «document».
MySQL bénéficie d'une énorme communauté.
NoSQL a une petite communauté en pleine croissance.
NoSQL se distingue par sa simplicité d'évolutivité.
MySQL requiert plus de gestion.
MySQL utilise SQL, qui est appliqué dans de nombreux types de bases de données.
NoSQL est une base de données basée sur le design avec des réalisations populaires.
MySQL utilise un langage de requêtes standard (SQL).
NoSQL n'utilise pas de langage de requêtes standard.
MySQL dispose de nombreux outils de reporting excellents.
NoSQL dispose de plusieurs outils de reporting qui sont difficiles à standardiser.
MySQL peut rencontrer des problèmes de performance pour les grandes données.
NoSQL offre d'excellentes performances sur de grandes données.
Réflexions sur 8base
Dans l'entreprise , dans laquelle je travaille, nous fournissons à chaque projet un espace de travail basé sur la base de données relationnelle Aurora MySQL, qui est hébergée sur AWS. Bien que NoSQL soit un choix logique lorsque les exigences de votre application nécessitent des performances élevées et une scalabilité, nous pensons que la stricte cohérence des données fournie par le SGBD est essentielle lors de la création d'applications SaaS et d'autres logiciels pour les entreprises.
Pour les startups et les développeurs qui créent des applications métier nécessitant des rapports, l'intégrité des transactions et des modèles de données clairement définis, investir dans le travail avec des bases de données relationnelles est, selon nous, le bon choix.
En savoir plus sur le développement avec Aurora, Serverless et GraphQL avec 8base.com .
Source : habr.com
