Vous ne pouvez pas épeler science des données sans données. Bon, c’est ringard mais c’est vrai ! La plupart du temps (sinon la totalité), les données dont vous avez besoin sont stockées dans un SGBD (système de gestion de base de données) sur un serveur distant ou sur votre disque dur.
Cela signifie que vous devez interagir et communiquer avec ce SGBD pour stocker et récupérer des données, mais pour interagir avec le SGBD, vous devez parler son langage : SQL (Structured Query Language). (Remarque : Au fil des ans, les gens ont commencé à se référer aux bases de données elles-mêmes en tant que SQL.)
Récemment, un autre terme a fait surface : les bases de données NoSQL. Que vous débutiez dans la science des données ou que vous soyez sur le terrain depuis un certain temps, vous avez probablement entendu parler des bases de données SQL et NoSQL.
L’utilisation de bases de données SQL ou NoSQL dépend de vos données et de l’application cible. Mais, disons que vous utilisez Python et que vous savez déjà quel schéma de base de données vous allez utiliser. La question est maintenant… quelle bibliothèque Python utilise-t-elle ?
Dans cet article, je couvrirai les bibliothèques de bases de données Python les plus connues, utilisées et développées. Nous parlerons de chaque bibliothèque elle-même et des meilleures raisons d’utiliser chacune d’entre elles.
Bibliothèques SQL Python
Nous utilisons des bibliothèques SQL avec des bases de données relationnelles (RDBMS). Les bases de données relationnelles stockent les données dans différentes tables et chaque table contient plusieurs enregistrements. Ces tables sont reliées par une ou plusieurs relations.
SQLiteName
SQLite était à l’origine une bibliothèque en langage C conçue pour implémenter un moteur de base de données SQL petit, rapide, autonome, sans serveur et fiable. Désormais, SQLite est intégré au cœur de Python, ce qui signifie que vous n’avez pas besoin de l’installer. Vous pouvez l’utiliser tout de suite. En Python, cette bibliothèque de communication de base de données s’appelle sqlite3.
Utilisez SQLite quand…
-
Vous êtes un débutant qui commence tout juste à en apprendre davantage sur les bases de données et sur la façon d’interagir avec elles.
-
vous utilisez des applications embarquées. Si votre application nécessite de la portabilité, optez pour SQLite car SQLite a un faible encombrement et est très léger.
-
vos données sont stockées dans un fichier sur votre disque dur. Vous pouvez utiliser SQLite comme solution parallèle pour le SGBDR client/serveur à des fins de test.
-
vous avez besoin d’une connexion rapide à vos données. Vous n’avez pas besoin de vous connecter à un serveur pour utiliser SQLite, ce qui signifie également que la bibliothèque a une faible latence.
SQLite n’est pas la meilleure option si la concurrence est une préoccupation majeure pour votre application, car les opérations d’écriture sont sérialisées. De plus, SQLite est faible en ce qui concerne les applications multi-utilisateurs.’
MySQL
MySQL est l’un des connecteurs RDBMS open source les plus largement utilisés et les plus connus. Il utilise une architecture serveur/client consistant en un serveur SQL multi-thread. Cela permet à MySQL de bien fonctionner car il utilise facilement plusieurs processeurs. MySQL a été écrit à l’origine en C/C++, puis étendu pour prendre en charge diverses plates-formes. Les principales caractéristiques de MySQL sont l’évolutivité, la sécurité et la réplication.
Pour utiliser MySQL, vous devez installer son connecteur. Dans la ligne de commande, vous pouvez le faire en exécutant :
python -m pip install mysql-connector-python
Utilisez MySQL quand…
-
vous avez besoin d’une sécurité supplémentaire. En raison des avantages de sécurité de MySQL, il est optimal pour les applications nécessitant une authentification par utilisateur ou par mot de passe.
-
vous avez besoin d’un support multi-utilisateurs. Contrairement à SQLite, MySQL prend en charge les applications multi-utilisateurs et constitue un bon choix pour les systèmes distribués.
-
Vous voulez des capacités de sauvegarde et d’interaction avancées, mais avec une syntaxe simple et une installation sans tracas.
MySQL, cependant, fonctionne mal lorsque vous exécutez des opérations INSERT en masse ou que vous souhaitez effectuer des opérations de recherche en texte intégral.
PostgreSQLName
PostgreSQL est un autre connecteur RDBMS open source qui se concentre sur l’extensibilité et utilise une structure de base de données client/serveur. Dans PostgresSQL, nous appelons les communications gérant les fichiers et les opérations de la base de données “le processus Postgres”, d’où la bibliothèque tire son nom.
Pour communiquer avec une base de données PostgresSQL, vous devez installer un pilote qui permet à Python de le faire. Un pilote couramment utilisé est psycopg2. Vous pouvez l’installer en exécutant l’instruction de ligne de commande suivante :
pip install psycopg2
Utilisez PostgreSQL quand…
-
Vous exécutez un entrepôt de données d’applications analytiques. PostgresSQL possède des capacités de traitement parallèle exceptionnelles.
-
vous avez besoin que votre base de données adhère au modèle ACID (A : atomicité ; C : cohérence ; I : isolement ; D : durabilité) (principalement des applications financières). Dans ce cas, PostgresSQL fournit une plate-forme optimale pour le faire.
-
vous avez besoin de bases de données de recherche et de projets scientifiques.
PostgresSQL est un peu plus complexe à installer et à utiliser que MySQL. Cela dit, cela en vaut la peine compte tenu des innombrables fonctionnalités avancées qu’il offre.
Bibliothèques Python NoSQL
Bibliothèques Python NoSQL
- MongoDB
- Redis
- Cassandre
- Néo4j
Les bases de données NoSQL sont plus flexibles que les bases de données relationnelles. Dans ces types de bases de données, la structure de stockage des données est conçue et optimisée pour des besoins spécifiques. Il existe quatre principaux types de bibliothèques NoSQL :
-
Orienté document
-
Paire clé-valeur
-
Orienté colonne
-
Graphique
MongoDB
MongoDB est un magasin de données de base de données bien connu des développeurs modernes. Il s’agit d’un système de stockage de données open source orienté document. Nous utilisons couramment PyMongo pour permettre l’interaction entre une ou plusieurs instances MongoDB via le code Python. MongoEngine est un ORM Python écrit pour MongoDB au-dessus de PyMongo.
Pour utiliser MongoDB, vous devez installer un moteur et les bibliothèques MongoDB réelles.
pip install pymongo==3.4.0
pip install mongodb
Utilisez MongoDB quand…
-
Vous souhaitez créer des applications faciles à mettre à l’échelle que vous pouvez facilement déployer.
-
vos données sont structurées en documents, mais vous souhaitez exploiter la puissance des fonctionnalités des bases de données relationnelles.
-
vous avez une application avec des structures de données variables telles que des applications IoT.
-
vous travaillez avec des applications en temps réel telles que des applications de commerce électronique et des systèmes de gestion de contenu.
Redis
Redis est un magasin de structure de données open source en mémoire. Il prend en charge les structures de données telles que les chaînes, les tables de hachage, les listes, les ensembles et bien plus encore. Redis offre une haute disponibilité via Redis Sentinel et un partitionnement automatique avec Redis Cluster. Redis est également considéré comme la base de données la plus rapide au monde.
Vous pouvez configurer Redis en exécutant les instructions suivantes à partir de la ligne de commande :
wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar xzf redis-6.0.8.tar.gz
cd redis-6.0.8
make
Utilisez Redis quand…
-
la rapidité est une priorité dans vos applications.
-
vous avez une conception bien planifiée. Redis a de nombreuses structures de données définies et vous donne la possibilité de définir explicitement comment vous souhaitez que vos données soient stockées.
-
votre base de données a une taille stable. Redis peut augmenter la vitesse de recherche d’informations spécifiques dans vos données.
Cassandre
Apache Cassandra est un magasin de données NoSQL orienté colonne conçu pour les applications de stockage à forte écriture. Cassandra offre une évolutivité et une haute disponibilité sans compromettre les performances. Cassandra offre également une latence plus faible pour les applications multi-utilisateurs. Cassandra est un peu complexe à installer et à démarrer. Cependant, vous pouvez le faire en suivant le guide d’installation sur le site officiel de Cassandra.
Utilisez Cassandra quand…
-
vous avez d’énormes quantités de données. Cassandra dispose d’une grande flexibilité et d’une grande puissance pour traiter des quantités incroyables de données, de sorte que la plupart des applications Big Data constituent un bon cas d’utilisation pour Cassandra.
-
vous avez besoin de fiabilité. Cassandra offre des performances stables en temps réel pour les applications de streaming et d’apprentissage en ligne.
-
la sécurité est une priorité. Cassandra dispose d’une gestion de la sécurité puissante, ce qui en fait un excellent choix pour les applications de détection de fraude.
Néo4j
Neo4j est une base de données de graphes NoSQL conçue à partir de zéro pour exploiter les données et les relations entre les données. Neo4j connecte les données au fur et à mesure qu’elles sont stockées, permettant des requêtes à grande vitesse. Neo4j a été initialement implémenté sur Java et Scala, puis étendu pour être utilisé sur différentes plates-formes, telles que Python.
Neo4j est essentiellement une bibliothèque de bases de données de graphes et possède l’un des meilleurs sites Web et systèmes de documentation technique. Il est clair, concis et couvre toutes les questions que vous pourriez vous poser sur l’installation, la prise en main et l’utilisation de la bibliothèque.
Utilisez Neo4j quand…
-
vous avez besoin de visualiser et d’analyser les réseaux et leurs performances.
-
vous concevez et analysez des systèmes de recommandation.
-
vous analysez les connexions aux médias sociaux et extrayez des informations basées sur les relations existantes.
-
vous allez effectuer des opérations de gestion des identités et des accès.
-
vous devez effectuer diverses optimisations de la chaîne d’approvisionnement.
Les plats à emporter
Choisir la bonne base de données pour votre structure de données et votre application peut réduire le temps de développement de votre application tout en augmentant l’efficacité de votre travail. Développer la possibilité de choisir le bon type de base de données à la volée peut prendre un peu de temps, mais une fois que vous l’aurez fait, la plupart des travaux fastidieux sur votre projet seront beaucoup plus simples, plus rapides et plus efficaces. La seule façon de développer une compétence est de pratiquer. Une autre façon d’explorer est par essais et erreurs (généralement ma méthode). Essayez différentes options jusqu’à ce que vous en trouviez une qui résonne le mieux avec vous et corresponde à votre application.
.