• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Les données sont tout. Et par extension, les bases de données le sont aussi. Voici quelques options open source fantastiques pour votre prochain projet kick-ass.

    Pour un monde dominé si longtemps par des combinaisons de bases de données comme Oracle et SQL Server, il semble y avoir une multitude de solutions maintenant. Une partie de la raison est l'innovation alimentée par l'Open Source - des développeurs vraiment talentueux qui veulent se gratter et créer quelque chose dans lequel ils peuvent se délecter.

    L'autre partie est l'émergence de nouveaux modèles commerciaux, dans lesquels les entreprises maintiennent une version communautaire de leur produit pour gagner en partage d'esprit et en traction tout en proposant une offre complémentaire commerciale.

    Le résultat?

    Plus de bases de données que l'on peut suivre. Il n'y a pas de statistique officielle à ce sujet, mais je suis presque sûr que nous avons plus d'une centaine d'options disponibles aujourd'hui si vous combinez tout, des bases de données d'objets spécifiques à la pile aux projets pas si populaires des universités.

    Je connais; ça me fait peur aussi. Trop d'options - trop de documentation à parcourir - et une vie si courte. 🙂

    C'est pourquoi j'ai décidé d'écrire cet article, présentant dix des meilleures bases de données que vous pouvez utiliser pour améliorer vos solutions, que ce soit pour vous ou pour d'autres.

    Pas de MySQL

    Remarque: cette liste ne contiendra pas MySQL, même si c'est sans doute la solution de base de données Open Source la plus populaire.

    Pourquoi ?

    Simplement parce que MySQL est partout - c'est ce que tout le monde apprend en premier, il est pris en charge par pratiquement tous les CMS ou frameworks, et c'est très, très bon pour la plupart des cas d'utilisation. En d'autres termes, MySQL n'a pas besoin d'être «découvert». 🙂

    Cela dit, veuillez noter que les éléments suivants ne sont pas nécessairement des alternatives à MySQL. Dans certains cas, ils peuvent l'être, tandis que dans d'autres, ils constituent une solution complètement différente pour un besoin entièrement différent. Ne vous inquiétez pas, car je vais également discuter de leurs utilisations.

    Note spéciale: compatibilité

    Avant de commencer, je dois également mentionner que la compatibilité est quelque chose que vous devez garder à l'esprit. Si vous avez un projet qui, pour une raison quelconque, ne prend en charge qu'un moteur de base de données particulier, vos choix sont à peu près transposés.

    Par exemple, si vous utilisez WordPress, cet article ne vous est d'aucune utilité. 🙂 De même, ceux qui exécutent des sites statiques sur JAMStack ne gagneront rien à chercher des alternatives trop sérieusement.

    C'est à vous de comprendre l'équation de compatibilité. Cependant, si vous avez une ardoise vierge et que l'architecture dépend de vous, voici quelques recommandations intéressantes.

    PostgreSQL

    Si vous venez du pays PHP (WordPress, Magento, Drupal, etc.), alors PostgreSQL vous paraîtra étranger. Cependant, ce logiciel de base de données relationnelle existe depuis 1997 et est le premier choix dans des communautés comme Ruby, Python, Go, etc.

    En fait, de nombreux développeurs ont fini par «passer» à PostgreSQL pour les fonctionnalités qu'il offre ou simplement pour la stabilité. Il est difficile de convaincre quelqu'un dans un bref article comme celui-ci, mais pensez à PostgreSQL comme un produit soigneusement conçu qui ne vous laisse jamais tomber.

    Il y a beaucoup de bons Clients SQL disponible pour se connecter à la base de données PostgreSQL pour l'administration et le développement.

    Caractéristiques uniques

    PostgreSQL possède plusieurs fonctionnalités fascinantes par rapport à d'autres bases de données relationnelles (en particulier MySQL), telles que:

    • Types de données intégrés pour Array, Range, UUID, Geolocation, etc.
    • Prise en charge native du stockage de documents (style JSON), XML et du stockage de valeurs-clés (Hstore)
    • Réplication synchrone et asynchrone
    • Scriptable en PL, Perl, Python et plus
    • Recherche en texte intégral

    Mes favoris personnels sont le moteur de géolocalisation (qui enlève la douleur lorsque vous travaillez avec des applications basées sur la localisation - essayez de trouver tous les points à proximité manuellement, et vous saurez ce que je veux dire) et la prise en charge des tableaux (de nombreux projets MySQL sont annulés faute de tableaux, optant à la place pour les fameuses chaînes séparées par des virgules).

    Quand utiliser PostgreSQL

    PostgreSQL est toujours un meilleur choix que tout autre moteur de base de données relationnelle. Autrement dit, si vous démarrez un nouveau projet et que vous avez déjà été mordu par MySQL, c'est le bon moment pour envisager PostgreSQL. J'ai des amis qui ont renoncé à lutter contre les mystérieux échecs de verrouillage transactionnel de MySQL et sont passés à autre chose de façon permanente. Si vous décidez la même chose, vous ne réagirez pas de manière excessive.

    PostgreSQL présente également un net avantage si vous avez besoin d'installations NoSQL partielles pour un modèle de données hybride. Le stockage des documents et des valeurs-clés étant pris en charge de manière native, vous n'avez pas besoin de rechercher, d'installer, d'apprendre et de gérer une autre solution de base de données.

    Lorsque vous n'utilisez pas PostgreSQL

    PostgreSQL n'a pas de sens lorsque votre modèle de données n'est pas relationnel et / ou lorsque vous avez des exigences architecturales très spécifiques. Par exemple, pensez à Analytics, où de nouveaux rapports sont constamment créés à partir de données existantes. Ces systèmes sont lourds en lecture et souffrent lorsqu'un schéma strict leur est imposé. Bien sûr, PostgreSQL dispose d'un moteur de stockage de documents, mais les choses commencent à se désagréger lorsque vous avez affaire à de grands ensembles de données.

    En d'autres termes, utilisez toujours PostgreSQL sauf si vous savez à 100% ce que vous faites! 🙂

    Check out this Cours SQL et PostgreSQL pour débutants si vous souhaitez en savoir plus.

    MariaDB

    MariaDB a été créé en remplacement de MySQL par la même personne qui a développé MySQL.

    Confus?

    Eh bien, en fait, après la reprise de MySQL par Oracle en 2010 (en acquérant Sun Microsystems, qui, d'ailleurs, est également la manière dont Oracle en est venu à contrôler Java), le créateur de MySQL a lancé un nouveau projet open source appelé MariaDB.

    Pourquoi tous ces détails ennuyeux sont-ils importants, demandez-vous? C'est parce que MariaDB a été créée à partir de la même base de code que celle de MySQL (dans le monde open-source, cela s'appelle «forking» un projet existant). En conséquence, MariaDB est présentée comme un remplacement «drop-in» de MySQL.

    Autrement dit, si vous utilisez MySQL et que vous souhaitez migrer vers MariaDB, le processus est si facile que vous ne le croirez tout simplement pas.

    Malheureusement, une telle migration est une voie à sens unique. Revenir de MariaDB à MySQL n'est pas possible, et si vous essayez d'utiliser la force, la corruption permanente de la base de données est assurée!

    Caractéristiques uniques

    Bien que MariaDB soit essentiellement un clone de MySQL, ce n'est pas strictement vrai. Depuis l'introduction de la base de données, les différences entre les deux se sont accrues. Au moment de la rédaction, l'adoption de MariaDB doit être une décision mûrement réfléchie de votre part. Cela dit, il y a beaucoup de nouvelles choses en cours dans MariaDB qui peuvent vous aider à faire cette transition:

    • Vraiment gratuit et ouvert: comme il n'y a pas d'entité corporative unique contrôlant MariaDB, vous pouvez être libre de licences prédatrices soudaines et d'autres soucis.
    • Plusieurs autres options de moteurs de stockage pour des besoins spécialisés: par exemple, le moteur Spider pour les transactions distribuées; ColumnStore pour l'entreposage massif de données; le moteur ColumnStore pour le stockage parallèle et distribué; et bien d'autres encore.
    • Améliorations de la vitesse par rapport à MySQL, notamment grâce au moteur de stockage Aria pour les requêtes complexes.
    • Colonnes dynamiques pour différentes lignes d'une table.
    • Meilleures capacités de réplication (par exemple, réplication multi-source)
    • Plusieurs fonctions JSON
    • Colonnes virtuelles

    . . . Et bien d'autres encore. Il est épuisant de suivre toutes les fonctionnalités de MariaDB. 🙂

    Quand utiliser MariaDB

    Si vous voulez un véritable remplacement de MySQL, vous devriez utiliser MariaDB car ils veulent rester sur la courbe d'innovation et ne prévoient pas de revenir à MySQL à nouveau. Un excellent cas d'utilisation est l'utilisation de nouveaux moteurs de stockage dans MariaDB pour compléter le modèle de données relationnelles existant de votre projet.

    Quand ne pas utiliser MariaDB

    La compatibilité avec MySQL est la seule préoccupation ici. Cela dit, cela devient moins un problème car des projets comme WordPress, Joomla, Magento, etc., ont commencé à prendre en charge MariaDB. Mon conseil serait de ne pas utiliser MariaDB pour tromper un CMS qui ne le prend pas en charge, car de nombreuses astuces spécifiques à la base de données planteront facilement le système.

    Découvrez la différence entre MariaDB contre MySQL et Guide d'installation de MariaDB.

    CockroachDB

    L'équipe derrière CockroachDB semble être composée de masochistes. Avec un nom de produit comme celui-là, ils veulent sûrement retourner toutes les chances contre eux et toujours gagner?

    Eh bien, pas tout à fait.

    L'idée derrière «cafard» est que c'est un insecte construit pour survivre. Quoi qu'il arrive - prédateurs, inondations, ténèbres éternelles, nourriture pourrie, bombardements, le cafard trouve un moyen de survivre et de se multiplier.

    L'idée est que l'équipe derrière CockroachDB (composée d'anciens ingénieurs de Google) était frustrée par les limites des solutions SQL traditionnelles à grande échelle. En effet, historiquement, les solutions SQL étaient censées être hébergées sur une seule machine (les données n'étaient pas si volumineuses). Pendant longtemps, il n'y avait aucun moyen de créer un cluster de bases de données exécutant SQL, c'est pourquoi MongoDB a attiré tant d'attention.

    Même lorsque la réplication et le clustering sont sortis dans MySQL, PostgreSQL et MariaDB, c'était au mieux douloureux. CoackroachDB veut changer cela, en apportant un partitionnement, un clustering et une haute disponibilité sans effort au monde de SQL.

    Quand utiliser CockroachDB

    CockroachDB est le rêve de l'architecte système devenu réalité. Si vous ne jurez que par SQL et que vous avez mijoté les capacités de mise à l'échelle de MongoDB, vous adorerez CockroachDB. Vous pouvez désormais configurer rapidement un cluster, lui lancer des requêtes et dormir paisiblement la nuit. 🙂

    Quand ne pas utiliser CockroachDB

    Mieux vaut le diable que tu connais que celui que tu ne connais pas. Par cela, je veux dire, si votre SGBDR existant fonctionne bien pour vous et que vous pensez pouvoir gérer les difficultés de mise à l'échelle qu'il apporte, respectez-le. CockroachDB est un nouveau produit pour tout le génie impliqué, et vous ne voulez pas vous battre contre lui plus tard. Une autre raison majeure est la compatibilité SQL - si vous faites des trucs SQL exotiques et que vous comptez dessus pour des choses critiques, CockroachDB présentera trop de cas extrêmes à votre goût.

    À partir de maintenant, nous envisagerons des solutions de base de données non SQL (ou NoSQL, comme on l'appelle) pour des besoins hautement spécialisés.

    ClickHouse

    Vous recherchez un système de base de données OLAP rapide et open source?

    Aller pour ClickHouse.

    Il utilise chaque matériel à son potentiel maximum pour aborder chaque requête plus rapidement. Les performances maximales du traitement d'une requête restent généralement supérieures à deux téraoctets par seconde. Pour éviter une latence accrue, les lectures sont automatiquement équilibrées entre les réplicas sains. 

    Il prend en charge la réplication asynchrone multi-maître et vous pouvez la déployer dans différents centres de données. Comme les nœuds sont maintenus égaux, vous pouvez éviter même des points de défaillance uniques. Le temps d'arrêt d'un seul nœud ou du centre de données complet n'affectera jamais la disponibilité du système en termes d'écritures et de lectures.

    ClickHouse est très facile à utiliser et simple. Il rationalise le traitement des données, met toutes vos données dans un système de manière organisée et est disponible instantanément pour créer des rapports. De plus, le dialecte SQL permet d'exprimer le résultat sans utiliser d'API non standard, que vous pouvez obtenir dans des systèmes alternatifs. 

    Vous pouvez compter sur ce système de gestion de base de données pour le configurer en tant que système distribué situé sur des nœuds distincts sans points de défaillance. De plus, ses fonctionnalités de sécurité sont robustes, y compris une sécurité de niveau entreprise et des mécanismes de sécurité en cas d'erreurs humaines.

    ClickHouse peut traiter les requêtes plus rapidement que les systèmes orientés lignes ayant la même capacité de processeur et le même débit d'E / S. Son format de stockage de données en colonnes permet de conserver plus de données dans la RAM, ce qui réduit les temps de réponse.

    Le coût total de possession peut être réduit par un matériel standard ayant des lecteurs de disque rotatifs plutôt que par l'utilisation de NVMe / SSD sans sacrifier la latence pour les requêtes. Il vise l'efficacité du processeur, optimise l'accès au lecteur de disque et minimise les transferts de données. 

    De plus, grâce à sa base de données SQL riche en fonctionnalités, vous pouvez traiter efficacement votre requête en un rien de temps, joindre des données colocalisées et distribuées, gérer efficacement les informations dénormalisées, etc. ClickHouse évolue horizontalement et verticalement et s'adapte facilement pour fonctionner sur un seul serveur ou des clusters avec des milliers de nœuds.

    Utilisez ClickHouse pour l'analyse Web et d'applications, les télécommunications, les réseaux publicitaires, les jeux en ligne, l'IoT, l'intelligence d'entreprise, finance, commerce électronique, surveillance et plus encore. 

    Il intègre avec Hadoop, Postgres et MySQL.

    Neo4j

    L'un des développements les plus significatifs de la dernière décennie concerne les données connectées. Le monde qui nous entoure n'est pas divisé en tables, en rangées et en boîtes - c'est un désordre géant avec tout ce qui est connecté à presque tout le reste.

    Les réseaux sociaux en sont un excellent exemple, et construire un modèle de données similaire à l'aide de SQL ou même de bases de données documentaires est un cauchemar.

    C'est parce que la structure de données idéale pour ces solutions est le graphique, qui est une bête entièrement différente. Et pour cela, vous avez besoin d'une base de données de graphiques comme Neo4j.

    L'exemple ci-dessus a été tiré directement du site Web Neo4j et montre comment les étudiants universitaires sont connectés à leurs départements et cours. Un tel modèle de données est tout simplement impossible avec SQL, car il sera difficile d'éviter des boucles infinies et des dépassements de mémoire.

    Caractéristiques uniques

    Les bases de données de graphes sont uniques en elles-mêmes et Neo4j est à peu près la seule option pour travailler avec des graphiques. En conséquence, toutes les fonctionnalités dont il dispose sont uniques. 🙂

    • Prise en charge des applications transactionnelles et de l'analyse graphique.
    • Capacités de transformation de données pour digérer des données tabulaires à grande échelle dans des graphiques.
    • Langage de requête spécialisé (Cypher) pour interroger la base de données graphique
    • Fonctions de visualisation et de découverte

    Il est discutable de savoir quand utiliser Neo4j et quand non. Si vous avez besoin de relations basées sur des graphiques entre vos données, vous avez besoin de Neo4j. 🙂

    MongoDB

    MongoDB a été la première base de données non relationnelle à faire de grandes vagues dans l'industrie de la technologie et continue de dominer une bonne part de l'attention.

    Contrairement aux bases de données relationnelles, MongoDB est une «base de données de documents», qui stocke les données par blocs, les données associées étant regroupées dans le même bloc. Ceci est mieux compris en imaginant une agrégation de structures JSON comme celle-ci:

    Ici, contrairement à une structure basée sur une table, les coordonnées et les niveaux d'accès de l'utilisateur résident dans le même objet. La récupération de l'objet utilisateur récupère automatiquement les données associées et il n'y a pas de concept de jointure. Voici une introduction plus détaillée à MongoDB.

    Caractéristiques uniques

    MongoDB a des fonctionnalités sérieuses (je veux presque écrire «kick-ass» pour transmettre l'impact, mais ce ne serait peut-être pas approprié sur un site Web public) qui ont poussé plusieurs architectes chevronnés à abandonner à jamais le terrain relationnel:

    • Un schéma flexible pour les cas d'utilisation spécialisés / imprévisibles.
    • Ridiculement simple sharding et le regroupement. Il vous suffit de configurer la configuration d'un cluster et de l'oublier.
    • L'ajout ou la suppression d'un nœud d'un cluster est très simple.
    • Verrous transactionnels distribués. Cette fonctionnalité manquait dans les versions précédentes mais a finalement été introduite.
    • Il est optimisé pour les écritures très rapides, ce qui le rend parfaitement adapté aux données analytiques en tant que système de mise en cache.

    Si je ressemble à un porte-parole de MongoDB, je m'excuse, mais il est difficile d'exagérer les avantages de MongoDB. Bien sûr, la modélisation de données NoSQL est étrange au début, et certains ne comprennent jamais le coup, mais pour de nombreux architectes, elle l'emporte presque toujours sur un schéma basé sur une table.

    Quand utiliser MongoDB

    MongoDB est un excellent pont croisé entre le monde structuré et strict de SQL et celui amorphe, presque déroutant, de NoSQL. Il excelle dans le développement de prototypes, car il n'y a tout simplement pas de schéma à s'inquiéter et quand vous vraiment besoin d'évoluer. Oui, vous pouvez utiliser un service cloud SQL pour vous débarrasser des problèmes de mise à l'échelle de la base de données, mais bon sang, c'est cher!

    Enfin, il existe des cas d'utilisation où les solutions basées sur SQL ne fonctionnent tout simplement pas. Par exemple, si vous créez un produit comme Canva, où l'utilisateur peut créer des conceptions arbitrairement complexes et pouvoir les modifier plus tard, bonne chance avec une base de données relationnelle!

    Quand ne pas utiliser MongoDB

    L'absence totale de schéma fourni par MongoDB peut fonctionner comme un goudron pour ceux qui ne savent pas ce qu'ils font. Inadéquation des données, données mortes, champs vides qui ne devraient pas être vides - tout cela et bien plus encore est possible. MongoDB est essentiellement un magasin de données «stupide», et si vous le choisissez, le code de l'application doit assumer une grande responsabilité pour maintenir l'intégrité des données.

    Si vous êtes développeur, vous trouverez ce utile.

    RepenserDB

    Comme son nom l'indique, RepenserDB «Repense» l'idée et les capacités d'une base de données en ce qui concerne les applications en temps réel.

    Lorsqu'une base de données est mise à jour, l'application n'a aucun moyen de le savoir. L'approche acceptée est que l'application déclenche une notification dès qu'il y a une mise à jour, qui est poussée vers le front-end via un pont complexe (PHP -> Redis -> Node -> Socket.io en est un exemple).

    Mais que se passerait-il si les mises à jour pouvaient être poussées directement de la base de données vers le front-end?!

    Oui, c'est la promesse de RethinkDB. Donc, si vous êtes sur le point de créer une véritable application en temps réel (jeu, marketplace, analytics, etc.), Rethink DB vaut le coup d'œil.

    Redis

    En ce qui concerne les bases de données, il est presque trop facile d'ignorer l'existence de Redis. C'est parce que Redis est une base de données en mémoire et est principalement utilisé dans des fonctions de support telles que la mise en cache.

    Apprendre cette base de données est un travail de dix minutes (littéralement!), et c'est un simple magasin clé-valeur qui stocke des chaînes avec une heure d'expiration (qui peut être définie sur l'infini, bien sûr). Ce que Redis perd en fonctionnalités, il compense en utilité et en performances. Comme il vit entièrement dans la RAM, les lectures et les écritures sont incroyablement rapides (quelques centaines de milliers d'opérations par seconde ne sont pas inconnues).

    Redis dispose également d'un système pub-sub, ce qui rend cette «base de données» deux fois plus attractive.

    En d'autres termes, si vous avez un projet qui pourrait bénéficier de la mise en cache ou qui a des composants distribués, Redis est le premier choix.

    SQLite

    Oui, j'ai promis que nous en avions fini avec les bases de données relationnelles, mais SQLite est trop mignon pour être ignoré.

    SQLite est une bibliothèque C légère qui fournissait un moteur de stockage de base de données relationnelle. Tout dans cette base de données se trouve dans un seul fichier (avec une extension .sqlite) que vous pouvez mettre n'importe où dans votre système de fichiers. Et c'est tout ce dont vous avez besoin pour l'utiliser! Oui, pas de logiciel «serveur» à installer et pas de service auquel se connecter.

    Caractéristiques utiles

    Même si SQLite est une alternative légère à une base de données comme MySQL, elle est assez puissante. Certaines de ses caractéristiques choquantes sont:

    • Prise en charge complète des transactions, avec COMMIT, ROLLBACK et BEGIN.
    • Prise en charge de 32,000 XNUMX colonnes par table
    • Prise en charge JSON
    • Prise en charge de JOIN 64 voies
    • Sous-requêtes, recherche en texte intégral, etc.
    • Taille maximale de la base de données de 140 téraoctets!
    • Taille de ligne maximale de 1 gigaoctet!
    • 35% plus rapide que les E / S de fichiers

    Quand utiliser SQLite

    SQLite est une base de données extrêmement spécialisée qui se concentre sur une approche sans fioritures et sans fioritures. Si votre application est relativement simple et que vous ne voulez pas les tracas d'une base de données complète, SQLite est un candidat sérieux. Cela est particulièrement utile pour les CMS et les applications de démonstration de petite et moyenne taille.

    Lorsque vous n'utilisez pas SQLite

    Bien qu'impressionnant, SQLite ne couvre pas toutes les fonctionnalités du SQL standard ou de votre moteur de base de données préféré. Le clustering, les procédures stockées et les extensions de script sont manquants. De plus, il n'y a pas de client pour se connecter, interroger et explorer la base de données. Enfin, à mesure que la taille de l'application augmente, les performances se dégraderont.

    Cassandra

    Alors que beaucoup proclament que la fin est proche pour Java, de temps en temps, la communauté lâche une bombe et fait taire les critiques. Cassandra en est un exemple.

    Cassandra appartient à ce que l'on appelle la famille de bases de données «en colonnes». L'abstraction de stockage dans Cassandra est une colonne plutôt qu'une ligne. L'idée ici est de stocker toutes les données dans une colonne physiquement ensemble sur le disque, en minimisant le temps de recherche.

    Caractéristiques uniques

    Cassandra a été conçu avec un cas d'utilisation spécifique à l'esprit - traitant des charges d'écriture élevées et une tolérance zéro pour les temps d'arrêt. Ceux-ci deviennent ses arguments de vente uniques.

    • Performances d'écriture extrêmement rapides. Cassandra est sans doute la base de données la plus rapide pour la gestion de lourdes charges d'écriture.
    • Évolutivité linéaire. Autrement dit, vous pouvez continuer à ajouter autant de nœuds à un cluster que vous le souhaitez, et il n'y aura aucune augmentation de la complexité ou de la fragilité du cluster.
    • Tolérance de partition inégalée. Autrement dit, même si plusieurs nœuds d'un cluster Cassandra tombent en panne, la base de données est conçue pour continuer à fonctionner sans perte d'intégrité.
    • Typage statique

    Quand utiliser Cassandra

    La journalisation et l'analyse sont deux des meilleurs cas d'utilisation de Cassandra. Mais ce n'est pas tout - le point idéal est lorsque vous devez gérer de très grandes tailles de données (Apple a un déploiement Cassandra gérant plus de 400 pétaoctets de données tandis que chez Netflix, il gère 1 billion de demandes par jour) avec littéralement zéro temps d'arrêt. La haute disponibilité est l'une des caractéristiques de Cassandra.

    Quand ne pas utiliser Cassandra

    Le schéma de stockage en colonne de Cassandra a également ses inconvénients. Le modèle de données est plutôt plat, et si vous avez besoin d'agrégations, Cassandra n'est pas à la hauteur. De plus, il atteint une haute disponibilité en sacrifiant la cohérence (rappelez-vous le théorème CAP pour les systèmes distribués), ce qui le rend moins adapté aux systèmes où une précision de lecture élevée est nécessaire.

    Echelle de temps

    Les nouveaux développements exigent de nouveaux types de bases de données, et l'Internet des objets (IoT) est l'un de ces phénomènes. L'une des meilleures bases de données open source pour cela est Echelle de temps.

    L'échelle de temps est un type de ce qu'on appelle une base de données de «séries chronologiques». C'est différent d'une base de données traditionnelle en ce temps-là est le principal axe de préoccupation, et l'analyse et la visualisation d'ensembles de données massifs est une priorité absolue. Les bases de données de séries chronologiques voient rarement un changement dans les données existantes; par exemple, les lectures de température envoyées par un capteur dans une serre - de nouvelles données s'accumulent chaque seconde, ce qui est intéressant pour les analyses et les rapports.

    Pourquoi ne pas utiliser uniquement une base de données traditionnelle avec un champ d'horodatage? Eh bien, il y a deux raisons principales à cela:

    • Les bases de données à usage général ne sont pas optimisées pour fonctionner avec des données temporelles. Pour les mêmes quantités de données, une base de données à usage général sera beaucoup plus lente.
    • La base de données doit gérer des quantités massives de données au fur et à mesure que de nouvelles données affluent, et la suppression des données ou la modification du schéma par la suite n'est pas une option.

    Caractéristiques uniques

    Timescale DB possède des fonctionnalités intéressantes qui le distinguent des autres bases de données de la même catégorie:

    • Il est construit sur PostgreSQL, sans doute la meilleure base de données relationnelle open source du marché. Si votre projet exécute déjà PostgreSQL, Timescale se glisse directement.
    • Les requêtes sont effectuées via la syntaxe SQL familière, ce qui réduit la courbe d'apprentissage.
    • Des vitesses d'écriture ridiculement rapides - des millions d'insertions par seconde ne sont pas inconnues.
    • Des milliards de lignes ou des pétaoctets de données - ce n'est pas grave pour Timescale.
    • Véritable flexibilité avec schéma - choisissez entre relationnel ou sans schéma selon vos besoins.

    Cela n'a pas beaucoup de sens de parler du moment où utiliser ou non Timescale DB. Si l'IoT est votre domaine ou si vous recherchez des caractéristiques de base de données similaires, Timescale vaut le coup d'œil.

    CouchDB

    CouchDB est une petite solution de base de données soignée qui se trouve tranquillement dans un coin et a un petit mais dévoué suivant. Il a été créé pour résoudre les problèmes de perte de réseau et de résolution éventuelle des données, ce qui s'avère être un problème si compliqué que les développeurs changeraient plutôt de travail que de le résoudre.

    Essentiellement, vous pouvez considérer un cluster CouchDB comme une collection distribuée de nœuds grands et petits, dont certains devraient être hors ligne. Dès qu'un nœud est mis en ligne, il renvoie les données au cluster, qui sont lentement et soigneusement digérées, devenant finalement disponibles pour l'ensemble du cluster.

    Caractéristiques uniques

    CouchDB est une sorte de race unique en matière de bases de données.

    • Fonctionnalités de synchronisation des données hors ligne
    • Versions spécialisées pour navigateurs mobiles et web (PouchDB, CouchDB Lite, etc.)
    • Fiabilité résistante aux chocs et testée au combat
    • Clustering facile avec stockage de données redondant

    Quand utiliser CouchDB

    CouchDB a été conçu pour la tolérance hors ligne et reste inégalé à cet égard. Un cas d'utilisation typique est celui des applications mobiles dans lesquelles une partie de vos données réside sur une instance CouchDB sur le téléphone de l'utilisateur (car c'est là qu'elle a été générée). Ce qui est intéressant, c'est que vous ne pouvez pas compter sur l'appareil de l'utilisateur pour être connecté en permanence, ce qui signifie que la base de données doit être opportuniste et être prête à résoudre les mises à jour conflictuelles plus tard. Ceci est réalisé en utilisant l'impressionnant Protocole de réplication de table.

    Quand ne pas utiliser CouchDB

    Essayer d'utiliser CouchDB en dehors de son cas d'utilisation prévu entraînera un désastre. Il utilise beaucoup plus de stockage que toute autre chose, simplement parce qu'il a besoin de conserver des copies redondantes des données et des résultats de résolution des conflits. En conséquence, les vitesses d'écriture sont également très lentes. Enfin, CouchDB ne convient pas comme moteur de schéma à usage général, car il ne fonctionne pas bien avec les changements de schéma.

    Conclusion

    J'ai dû laisser de côté de nombreux candidats intéressants comme Riak, donc cette liste doit être considérée comme un guide plutôt que comme un commandement. J'espère que j'ai pu atteindre mon objectif avec cet article - présenter non seulement une collection de recommandations de logiciels de base de données, mais aussi discuter brièvement où et comment ils doivent être utilisés (et évités!).

    Si vous êtes curieux d'apprendre les bases de données, consultez Udemy pour des cours en ligne brillants.