MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Bases de données NoSQL les plus populaires prises en charge par ClusterControl

NoSQL ("pas seulement SQL") est une approche de la conception de bases de données qui permet le stockage et l'interrogation de données en dehors des structures traditionnelles trouvées dans les bases de données relationnelles. Il a été créé pour traiter principalement des données non structurées générées à partir de nombreuses sources telles que des documents, de l'audio, de la vidéo, des réseaux sociaux, etc. Les bases de données NoSQL sont idéales pour les applications modernes où les modèles de données évoluent et où l'évolutivité est essentielle. Cette base de données a gagné en popularité ces dernières années, car les entreprises doivent désormais plus que jamais gérer des données non structurées. Ce modèle stocke les données différemment des tables relationnelles traditionnelles pour permettre aux données associées d'être conservées dans une structure de données unique. Une base de données NoSQL peut être divisée en quatre catégories :

  • Magasin de documents

  • Bases de données clé-valeur

  • Magasins à larges colonnes

  • Bases de données de graphes

Les bases de données NoSQL sont souvent utilisées dans les projets agiles car elles offrent des modèles de données flexibles. Cela permet aux développeurs de se concentrer sur la logique métier et les algorithmes au lieu de s'occuper des mises à jour de schéma. Si vous prévoyez que le modèle de données de votre application doit rester flexible pour s'adapter aux changements au fil du temps, l'approche de schéma flexible des bases de données NoSQL peut être adaptée à vos besoins.

Selon db-engines, les deux premières bases de données NoSQL (juillet 2021) sont MongoDB (classement :5) et Redis (classement :6). Fait intéressant, ces bases de données NoSQL n'existaient pas il y a 12 ans. La façon dont ils ont vu le jour et ont gagné en attrait, en popularité et ont changé le paysage du système de gestion de base de données est l'essence principale de ce billet de blog.

MongoDB

MongoDB est une base de données orientée document open source, dont la version initiale a été publiée en février 2009. Les bases de données documentaires contrastent fortement avec la base de données relationnelle traditionnelle. Ils stockent toutes les informations d'un objet donné dans une seule instance de la base de données, et chaque objet stocké peut être différent des autres. Cela élimine le besoin de mappage objet-relationnel et permet une structure sans schéma, une fonctionnalité où les développeurs d'applications ont l'agilité d'évoluer rapidement grâce à son modèle de données flexible. Plutôt que d'adapter une application pour répondre aux exigences du schéma, les développeurs écrivent l'application et le schéma suit.

MongoDB est très populaire en raison de sa flexibilité, de sa facilité d'apprentissage et de son faible coût de possession pour démarrer. Les développeurs d'applications adorent MongoDB car ils peuvent modifier le modèle de données en déplacement et parce que MongoDB utilise des documents JSON pour enregistrer les données. JSON est partout et peut être considéré comme le format de facto pour envoyer des données riches entre les applications Web et les terminaux. Sa conception simple et sa flexibilité le rendent facile à lire et à comprendre, et dans la plupart des cas, facile à manipuler dans le langage de programmation de votre choix.

MongoDB a vu le jour grâce à 10gen (avant d'être renommé MongoDB Inc), a commencé à le développer en 2007 et est sorti avec sa première version GA en février 2009. Depuis lors, MongoDB a évolué rapidement et est considéré comme l'un des projets de base de données les plus passionnants pour les applications modernes. Selon StackOverflow Developer Survey 2020, MongoDB reste la technologie de base de données que les développeurs souhaitent le plus apprendre. Au moment d'écrire ces lignes, ils viennent de publier la version 5.0 (13 juillet 2021) et sont livrés avec de nombreuses fonctionnalités notables telles que le repartitionnement en direct, la prise en charge native des données de séries chronologiques et l'API versionnée, adaptée aux environnements multi-cloud.

Une autre caractéristique importante de MongoDB est les fonctionnalités intégrées de haute disponibilité telles que la réplication, le jeu de réplicas et le sharding. Il est évolutif horizontalement, ce qui permet de réduire la charge de travail et de faire évoluer votre entreprise en toute simplicité. Il offre une réplication via un protocole de consensus local qui s'inspire de Raft et peut distribuer des données sur des fragments via son routeur de requête appelé mongos. Vous pouvez utiliser ClusterControl pour déployer facilement un jeu de répliques MongoDB et une configuration de cluster fragmenté.

MongoDB a attiré l'attention du public et des critiques en raison de sa faiblesse sur la configuration de sécurité par défaut de MongoDB, permettant à quiconque d'avoir un accès complet à la base de données. Les données de dizaines de milliers d'installations MongoDB ont été volées. De plus, de nombreux serveurs MongoDB ont été retenus contre rançon. Cette exposition nous a amenés à écrire une poignée d'articles de blog liés à la sécurité liés à MongoDB tels que, Secure MongoDB and Protect Yourself From the Ransom Hack and How to Secure MongoDB From Ransomware - Ten Tips. Par conséquent, MongoDB a amélioré les aspects de configuration par défaut pour être plus sécurisé avec MongoDB 3 et versions ultérieures.

Certaines grandes entreprises s'appuient fortement sur MongoDB comme magasin de données, telles que Forbes, Toyota, SAP, Cisco, eBay et Adobe. MongoDB est considéré comme un changeur de jeu dans le monde des bases de données, devenant l'une des plates-formes de bases de données les plus importantes à l'ère d'Internet.

ClusterControl prend en charge MongoDB depuis la version juillet 2013 (v1.2.3) et n'a cessé de s'améliorer depuis lors. ClusterControl a même pris en charge le TokuMX (MongoDB avec l'arbre fractal de Tokutek) à l'époque, avant qu'il ne soit obsolète dans MongoDB 3 en raison des changements de conception de base de l'amont. Dans les récentes améliorations notables, ClusterControl introduit la prise en charge de Percona Backup pour MongoDB, une solution distribuée à faible impact pour réaliser des sauvegardes cohérentes des clusters fragmentés MongoDB et des jeux de réplicas. Le projet Percona Backup pour MongoDB est hérité de et remplace mongodb_consistent_backup, qui n'est plus activement développé ou pris en charge.

Redis

Redis est une autre technologie de base de données NoSQL la plus populaire qui se concentre sur l'accès fréquent à haut débit aux mêmes blocs de données, même si ces blocs de données sont volumineux. En mai 2019, Salvatore Sanfilllippo a publié la version initiale de Redis, alias Remote Dictionary Server, et a attiré l'attention de tous en raison de ses fonctionnalités plus riches par rapport à la solution de base de données en mémoire open source déjà établie à l'époque appelée Memcached.

Redis est ultra-rapide grâce à la structure des données en mémoire et au fait qu'il a été écrit en langage C (c'est l'une des raisons pour lesquelles Memcached a été réécrit en C). En raison de ses performances élevées, les développeurs se sont tournés vers Redis pour la mise en cache des données lorsque le volume des opérations de lecture et d'écriture dépasse les capacités des bases de données traditionnelles. Les données fréquemment consultées peuvent être mises en cache et servies par des magasins de données clé-valeur en mémoire et minimiser les lectures et les écritures sur des systèmes sur disque plus lents en se concentrant sur le stockage persistant.

Traditionnellement, les systèmes de gestion de bases de données sont conçus pour fournir des fonctionnalités de données robustes plutôt qu'une vitesse à grande échelle. Le cache de l'application est souvent utilisé pour stocker des copies des tables de recherche et les réponses aux requêtes coûteuses du SGBD, à la fois pour améliorer les performances de l'application et réduire la charge de la source de données. Parfois, le flux de travail d'une application nécessite la génération de résultats gourmands en ressources. Une fois ces résultats obtenus, il existe des cas où les résultats pourraient être réutilisés ultérieurement, comme lors de la réalisation d'agrégats partiels. Le cache agit comme un support intermédiaire idéal pour conserver ces résultats entre les requêtes. C'est là que Redis brille.

Redis est passé d'un simple magasin clé-valeur très rapide à un stockage de données persistant et est utilisé comme courtier de messagerie et système de file d'attente. Il permet une véritable absence d'état pour les processus des applications tout en réduisant la duplication des données ou des requêtes vers des sources de données externes. Selon StackOverflow Developer Survey 2020, Redis reste au sommet de la technologie de base de données que les développeurs ont exprimé leur intérêt à poursuivre le développement. Au moment d'écrire ces lignes, Redis 6 est la dernière version, avec une nouvelle implémentation ACL plus sophistiquée basée sur l'utilisateur, un cryptage SSL du trafic intégré et des E/S multithread, bien que le processus Redis soit toujours monothread. .

Le déploiement de Redis est pris en charge dans ClusterControl 1.9.0 à l'aide de notre nouveau package d'interface graphique ClusterControl de nouvelle génération disponible dans une installation distincte. Au moment d'écrire ces lignes, nous l'appelons ClusterControl v2 étiqueté avec Technology Preview qui ne prend en charge que le déploiement d'une réplication Redis jusqu'à 5 nœuds avec Redis Sentinel avec gestion de sauvegarde d'AOF et RDB. Si vous êtes intéressé, veuillez vous référer à ce guide pour savoir comment l'installer.

Résumé

MongoDB et Redis sont sans conteste deux des meilleures solutions de base de données NoSQL sur le marché à l'heure actuelle et devraient conserver leur position dans le top 10 des bases de données pendant assez longtemps. C'est la raison pour laquelle ClusterControl prend en charge les deux technologies de base de données.