
L'une des décisions les plus importantes qu'un développeur prend est la base de données à utiliser. Au fil des ans, les options se sont limitées à diverses options de base 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 sont apparues sur le marché dans le cadre de l'approche No-SQL. Il s'agit notamment des magasins de valeurs-clés, tels que Redis et Amazon DynamoDB, des bases de données à colonnes larges, telles que 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, tels que 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 dans le processus.
Expliquez Granny SQL
Grand-mère, imaginez que je ne suis pas votre seul petit-fils. Au lieu de cela, maman et papa s'aimaient comme des lapins, ils ont eu 100 enfants, puis ils en ont adopté 50 autres.
Donc, vous nous aimez tous et ne voulez oublier aucun de nos noms, anniversaires, goûts de nos glaces préférées, tailles de vêtements, loisirs, noms de conjoints, noms de progéniture et autres faits super importants. Mais avouons-le. Vous avez 85 ans et le bon vieux souvenir n'est tout simplement pas capable de faire face.
Heureusement, moi, étant le plus intelligent de vos petits-enfants, je peux vous aider. Je viens donc chez vous, je prends quelques feuilles de papier et je vous demande de faire des biscuits avant de commencer.
Sur une feuille de papier, nous faisons une liste intitulée «
Petits-enfants ». Chaque
petit-fils est enregistré avec des informations essentielles à son sujet, y compris un numéro unique, qui indiquera maintenant quel type de
petit -
fils il est. De plus, pour des raisons d'organisation, nous écrivons les attributs nommés en haut de la liste afin de toujours savoir quelles informations cette liste contient.
Liste des petits-enfants
Après un certain temps, vous comprenez tout et nous avons presque fini avec la liste! Cependant, vous vous tournez vers moi et dites: "Nous avons oublié d'ajouter une place pour les conjoints, les passe-temps, les petits-enfants!" Mais non, nous n'avons pas oublié! Cela va plus loin et nécessite une nouvelle feuille de papier.
Je tire donc un autre morceau de papier, et là-dessus, nous appelons la liste des
conjoints . Nous ajoutons à nouveau les attributs qui sont importants pour nous en haut de la liste et commençons à ajouter dans les lignes.
Liste des conjoints
À ce stade, j'explique à ma grand-mère que si elle veut savoir qui est marié avec qui, il lui suffit de faire correspondre l'
identifiant dans la liste des
petits -
enfants avec
grandchild_id dans la liste des conjoints.
Après quelques dizaines de cookies, je dois faire une sieste. "Pouvez-vous continuer, mamie?" Je pars faire une sieste.
Je reviens dans quelques heures. Et tu es cool, mamie! Tout a l'air bien, sauf la liste des
loisirs . Il y a environ 1000 loisirs sur la liste. La plupart d'entre eux sont répétés; qu'est-il arrivé
Désolé, j'ai complètement oublié de dire! En utilisant une seule liste, vous ne pouvez suivre que les
loisirs . Ensuite, dans une autre liste, nous devons suivre les
petits -
enfants qui sont engagés dans ce
passe -
temps . Nous allons l'appeler la
«Liste générale» . Voyant que vous ne l'aimez pas, je commence à m'inquiéter et retourne en mode liste.
Liste des loisirs
Dès que nous avons notre liste de loisirs, nous créons notre deuxième liste et l’appelons «
Loisirs des petits-enfants ».
Liste générale des passe-temps des petits-enfants
Après tout ce travail, ma grand-mère a maintenant un système de mémorisation cool pour suivre toute sa famille étonnamment grande. Et puis - pour me détenir 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 aux
données ou les collecter de diverses manières sans avoir à réorganiser les tables de
base de données . Il existe de nombreux types de bases de données relationnelles, mais malheureusement la 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 à lui, si ma grand-mère transfère son système de mémoire sur un ordinateur, elle pourra obtenir rapidement des réponses à des questions telles que: "Qui ne m'a pas rendu visite l'année dernière, est marié et n'a aucun hobbies?"
L'un des systèmes de gestion de base de données SQL les plus populaires est MySQL open source. Il est principalement mis en œuvre en tant que système de gestion de base de données relationnelle (SGBDR) pour les applications logicielles basées sur le Web.
Quelques fonctionnalités clés de MySQL:
- Il est assez célèbre, largement utilisé et minutieusement testé.
- Il existe de nombreux développeurs qualifiés ayant une expérience de travail avec SQL et les bases de données relationnelles.
- Les données sont stockées dans différentes tables, ce qui facilite l'établissement de la communication à l'aide de clés primaires et étrangères (identifiants).
- Il est facile à utiliser et efficace, ce qui le rend idéal pour les grandes et petites entreprises.
- Le code source est soumis à la licence publique générale GNU.
Maintenant, oubliez
TOUT .
Expliquez grand-mère NoSQL
Grand-mère, nous avons une immense famille. Elle a 150 petits-enfants! Beaucoup d'entre eux sont mariés, ont des enfants, aiment 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
ne veux
pas que vous oubliez mon anniversaire et mon goût préféré de crème glacée, je peux vous aider. Par conséquent, je cours au magasin le plus proche, prends un cahier et retourne chez toi.
La première étape que je prends est d'écrire «Petits-enfants» en gros caractères gras sur la couverture d'un cahier. Je passe ensuite à la première page et commence à écrire tout ce dont vous devez vous souvenir à mon sujet. 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!" }
Moi : "Tout semble prêt!"
Grand -
mère : "Attends, et les autres petits-enfants?"
Moi : «Oui, exactement. Sélectionnez ensuite une page pour chacun. »
Grand -
mère : "Et je devrai enregistrer toutes les mêmes informations pour tout le monde, comme je l'ai fait pour vous?"
Moi : «Non, seulement si tu veux. Laissez-moi vous montrer. "
Ayant pris mon stylo à ma grand-mère, je tourne la page et écris rapidement des informations sur mon cousin le plus mal aimé.
{ "_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 qu'une grand-mère a besoin de se souvenir de quelque chose au sujet d'un de ses petits-enfants, elle n'a qu'à aller à la bonne page dans le cahier de ses petits-enfants. Toutes les informations les concernant seront stockées directement sur leur page, qu'elles pourront rapidement modifier et mettre à jour.
Quand tout est déjà fait, elle pose la question magique: "Où as-tu appris à faire tout ça?"
Bases de données NoSQL
Il existe de nombreuses
bases de données NoSQL («pas seulement SQL»). Dans nos exemples, nous avons montré
une base de données de documents . 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 qui avaient besoin d'un regroupement de bases de données dans le cloud en raison de leurs exigences d'évolutivité explicites (par exemple Facebook). Dans de telles applications, la cohérence des données était beaucoup 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 de niche. Fondamentalement, en ce qui concerne les applications Web et cloud, les bases de données NoSQL ont traité et distribué des quantités importantes de données. Les ingénieurs travaillant avec NoSQL ont également apprécié le schéma de données flexible (ou son absence totale), de sorte que des changements rapides dans les applications mises à jour étaient possibles.
Principales fonctionnalités de NoSQL:
- Manière très flexible de stocker des données.
- Mise à l'échelle en grappes
- Séquence de cohérence / distribution possible
- Documents identifiés à l'aide de clés uniques
Comparaison détaillée
MySQL nécessite un framework spécifique et structuré.
NoSQL vous permet d'enregistrer toutes les données dans un "document".
MySQL prend en charge une énorme communauté.
NoSQL a une petite communauté en croissance rapide.
NoSQL est facile à mettre à l'échelle.
MySQL a besoin de plus de gestion.
MySQL utilise SQL, qui est utilisé dans de nombreux types de bases de données.
NoSQL est une base de données basée sur la conception avec des implémentations populaires.
MySQL utilise un langage de requête standard (SQL).
NoSQL n'utilise pas le langage de requête standard.
MySQL dispose de nombreux excellents outils de création de rapports.
NoSQL dispose de plusieurs outils de reporting difficiles à standardiser.
MySQL peut générer des problèmes de performances pour les mégadonnées.
NoSQL offre d'excellentes performances sur les mégadonnées.
Pensées 8base
Chez
8base , où je travaille, nous fournissons l'espace de travail de chaque projet avec la base de données relationnelle Aurora MySQL hébergée sur AWS. Bien que NoSQL soit un choix logique lorsque les exigences de votre application nécessitent des performances et une évolutivité élevées, nous pensons que la cohérence stricte des données fournie par le SGBD est nécessaire lors de la création d'applications SaaS et d'autres logiciels d'entreprise.
Pour les startups et les développeurs créant de telles 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.
En savoir plus sur le développement avec Aurora, Serverless et GraphQL avec 8base.com
ici .