Des bases de données sans SQL, ai je bien entendu ?
Oui, c’est bien de cela qu’on va parler.
Aujourd’hui de nombreux acteurs utilisent des bases de données NO SQL (amazon, google…)
L’intérêt c’est que les temps d’éxecution sont divisés par 10,100 voir plus mais que l’intégrité des données n’est plus parfaite.
Prenons un exemple. Au lieu d’avoir une table avec :
– champ N° commande
– champ nom
– …
Et une autre table qui décompose la liste des objets commandés:
– nom produit
Et une 3e table qui fait la liaison:
– ID Commande
– ID Produit
En NO SQL, vous avez une seul objet commande avec un identifiant unique qui stocke tous les élements dont il a besoin.
– champ N° commande
– champ qui regroupe tous les items et leurs attributs respectifs.
Du coup, si vous souhaitez rappatrier une commande, vous rechercher uniquement une ligne dans votre base, et les temps de réponse s’en ressentent. Vous vous retrouvez ni plus ni moins avec des objets JSON.
Chaque objet possède ses propres attributs, et seul une clé permet de récupérer un objet commande, ou un objet personne.
Maintenant si vous souhaitez rajouter un attribut à tous vos objets, c’est là que ca se complique. Il vous faudra éditer toutes les lignes pour le rajouter, alors qu’en SQL, vous rajoutez juste le champ.
Bref, voici un cas d’utilisation:
Je devais stocker des positions pour des urls et des mots clés sur plusieurs moteurs.
Cela nous fait donc en SQL classique:
1 table avec les urls
1 table avec les mots clés
1 table avec une liaison mot clé/url
1 table avec les moteurs
1 table avec les résultats (lié au moteur, lié au mot clé, lié au site)
Multiplier le tout par 1000 sites, et 3 ans d’historique, et vous obtiendrez des millions de lignes et des temps de réponses horribles malgré tous les index que vous poserez. J’ai donc passé le tout en NO-SQL grâce à CouchDB, et depuis, tout se fait en un clin d’oeil. La base est beaucoup plus légère, je stocke même davantage d’informations et mes utilisateurs ont retrouvés le sourire.
Alors si vous avez des problématiques qui ne requiert pas forcément du transactionnel, et que toutes les données soient bien structurés, pensez différement, et vous gagnerez assurément en performance !