Mis à jours 12 janvier 2018 Cette base de données a parcouru un long chemin depuis les tables de lignes et de colonnes, et le voyage est loin d’être terminé.
Qu’est-ce qu’une base de données ? Il était une fois, c’était simple. La base de données était un moderne Bob Cratchit mettant des données dans des tableaux composés de colonnes très droites remplies d’une ligne par entrée. Longs rectangles sans fin d’informations qui s’étendent dans le futur.
La base de données relationnelle a été le socle de l’informatique moderne. La grande majorité des sites Web sont juste un tas de rouge à lèvres CSS peint sur SQL. Tout ce qui nous rend spécial est juste une autre rangée dans la grande table de la vie.
L’histoire d’amour avec la grande matrice de bits s’efface lentement alors que les développeurs se rendent compte que tout ne rentre pas dans une table simple. Et parce que les développeurs sont intelligents et obsessionnels à l’idée de trouver des solutions pour chaque besoin, ils ont commencé à créer de nouveaux et meilleurs endroits pour stocker l’information. Les dernières années ont provoqué une explosion dans d’autres mécanismes pour écarter nos données.
Ces merveilleuses nouvelles options sont-elles toujours des bases de données ? Les données doivent-elles s’inscrire dans une grande matrice pour constituer une base de données ? Certains aiment utiliser le mot « magasin de données » pour différencier les mécanismes modernes parce que le mot « base de données » est trop étroitement lié dans notre esprit à l’ancienne structure tabulaire. Nous laisserons cela aux philosophes. Les données entrent et les réponses sortent.
Voici huit façons de réinventer la base de données dans de nouvelles formes et formes.
GPU computing
Il était une fois, les cartes vidéo ont été construites pour dessiner des scènes élaborées pour les jeux des enfants, mais maintenant les soi-disant unités de traitement graphique font beaucoup de traitement non graphique. La recherche dans les données n’est que l’une des meilleures opérations non graphiques à aborder. Et pourquoi pas ? Parcourir des piles infinies de données à la recherche d’une correspondance est une opération intrinsèquement parallèle composée de nombreux travaux rudimentaires (tests d’égalité) répétés des millions de fois. Il est donc assez simple de confier le travail aux milliers de processeurs du GPU.
Les plus gros gains ne sont pas dans la réponse à chaque requête (qui est évidemment beaucoup plus rapide) mais dans le travail de préparation, puisqu’il y a peu de besoin de prétraitement. De nombreuses bases de données gagnent du temps en maintenant un index, qui est effectivement un résultat pré-calculé de toutes les recherches possibles. Si cet index est corrompu ou détruit, la reconstruction peut prendre des heures, des jours, voire des mois. Si les données peuvent tenir dans la mémoire d’un GPU, vous pouvez généralement vous en passer sans l’index. Si les données changent rapidement et que la plus grande partie de l’index n’est jamais utilisée, alors ignorer le prétraitement peut être très efficace.
Mémoire non volatile (NVRAM)
Les programmeurs qui ont fait leur travail il y a 50 ans l’ont fait facilement. Ils n’avaient pas à jongler les données entre la RAM et le disque avec des protocoles élaborés pour assurer la cohérence. C’est parce que la mémoire à l’époque était un noyau de fer et n’a pas été effacée lorsque l’alimentation a été coupée. Ces bons moments peuvent être de retour bientôt parce que les fabricants de puces parlent de remplacer la RAM avec NVRAM ou de la mémoire non volatile.
C’est un grand changeur de jeu pour les programmeurs de bases de données parce que l’un de leurs plus grands défis (et même leur plus grande raison de vivre) est en train de disparaître. Certains suggèrent que les bases de données peuvent être beaucoup plus rapides car la sémantique des transactions peut être plus simple. D’autres font flotter l’idée de construire le journal de récupération après que les données ont été écrites sur le support, pas avant.
Personne ne sait comment cela peut se revenir. Les gens continueront-ils à utiliser une base de données s’ils n’ont pas besoin d’un enregistrement permanent ? Ou est-ce que la recherche et l’indexation les feront revenir ? Tous les algorithmes et toutes les architectures sont à repenser. Nous connaîtrons la meilleure façon d’utiliser NVRAM dans une dizaine d’années.
Répartir SQL
Lorsque le mouvement NoSQL a commencé, l’une des grandes caractéristiques était la possibilité de répartir votre stockage de données sur plusieurs nœuds. Les bases de données NoSQL comme Cassandra et MongoDB ont fait croire que l’obtention de toutes les fonctionnalités intéressantes du stockage à grande échelle signifiait abandonner le monde confortable de SQL.
En réalité, il n’y a pas besoin d’être un compromis. Alors que les premières expériences dans les bases de données à grande échelle ont été plus faciles à créer parce qu’elles ont laissé derrière elles tout le bagage SQL, il n’y a aucune raison pour que SQL ne fonctionne pas bien sur plusieurs machines fonctionnant à grande échelle. En effet, des entreprises comme Oracle le font depuis des années.
Les bases de données à grande échelle les plus récentes vous permettent d’utiliser toutes vos connaissances et commodités SQL avec un ensemble de données réparties sur un grand cluster. CockroachDB, par exemple, offre un moteur de requête SQL standard qui accède aux données répliquées dans plusieurs nœuds, toutes avec des garanties ACID. Oui, vous paierez pour une partie de ce soutien à la ceinture et aux bretelles pour la cohérence des données, mais peut-être moins que prévu.
Si la cohérence garantie est importante pour votre travail, commencez par consulter des piles telles que CockroachDB, Google Cloud Spanner, Clustrix, Azure SQL et NuoDB.
Bases de données géospatiales
Les bases de données traditionnelles sont construites pour les ensembles de données unidimensionnels, et non les coordonnées bidimensionnelles de la géographie. Vous pouvez truquer et utiliser une base de données standard pour accomplir des tâches de base avec des coordonnées géographiques. Si vous collez la latitude et la longitude dans des colonnes séparées, il n’est pas difficile de rechercher des lignes qui se trouvent dans une boîte définie par une plage de latitudes et de longitudes. Mais une fois que vous voulez aller au-delà de cette boîte de base, les requêtes SQL standard ne les coupent pas.
Les bases de données géospatiales ajoutent quelques fonctions supplémentaires qui facilitent la recherche, le tri et l’intersection dans un espace à deux dimensions. Les index spatiaux, par exemple, fonctionnent généralement en ajoutant une grille au-dessus de l’espace de coordonnées pour accélérer la recherche de lignes adjacentes dans des mondes bidimensionnels et tridimensionnels.
Ces indices permettent d’écrire des requêtes avec des opérations comme ” contain “, ” overlap “, et même ” touch ” avec des ensembles définis par des polygones. Tout cela rend le raisonnement sur le monde réel beaucoup plus efficace.
Découvrez Neo4j Spatial, GeoMesa, MapD, et PostGIS pour quelques bons endroits pour commencer.
Bases de données graphiques
Les tableaux sont un bon référentiel pour de nombreuses structures de données, mais ils ne font pas un excellent travail de modélisation d’une grande structure de données émergente qui a alimenté les 10 dernières années d’évolution d’Internet : le réseau. Comme le soi-disant ” graphe social ” explose, nous remplissons notre ordinateur avec de plus en plus de nœuds avec des liens entre eux. Et les connexions entre les nœuds sont souvent plus importantes que les données qui s’y trouvent. Bien sûr, stocker et récupérer un lien entre une paire de nœuds est facile à faire dans une base de données relationnelle classique, mais les requêtes plus complexes deviennent impossibles. Bob est-il à deux ou trois pas de Chris dans le réseau d’amitié ? Marie sort-elle avec l’un de ses amis ?
Les bases de données de graphe facilitent l’exécution de ces requêtes. Il n’y a pas de récupération infinie à partir des tables car la requête sait comment regarder dans le voisinage spécifié par les liens. Des outils comme Neo4J, OrientDB et DataStax ne sont que quelques-unes des options que l’on peut à peine compter sur deux mains et deux pieds. Ils ont aussi leurs propres langages de requête.
Bases de données dans le cloud
L’un des plus grands changements réside dans la façon dont nous achetons des logiciels de base de données. Dans le passé, nous achetions nos propres machines et signions des contrats de licence pour exécuter le logiciel sur nos machines. Maintenant, les sociétés de cloud offrent des services qui stockent des données bloquées quelque part que nous ne pouvons pas voir ou toucher. Elles disent simplement que les données seront là au moment où nous le voulons.
Les avantages sont évidents. Il n’est pas nécessaire de maintenir le serveur ou la pièce qui le contient. Vous n’avez pas besoin de vous inquiéter de la licence ou de la configuration ou de l’installation de correctifs. Quelqu’un d’autre s’occupe de tous ces soucis. La solution est souvent moins chère, surtout si vous n’avez pas une tonne de données à stocker. Les services facturent généralement par octet.
Mais les dangers, s’il y en a, sont dans l’ombre. Quelqu’un d’autre a-t-il accès aux données ? Le serveur est-il protégé contre les surtensions, les orages ou les inondations ? Les données sont-elles sauvegardées dans un emplacement hors site fiable ? Dans ce cas, vous devez faire confiance au fournisseur de cloud sur tout.
Les principaux fournisseurs de services de cloud computing Google, Microsoft et Amazon proposent une longue liste de services de base de données. Ces jours-ci, Oracle, MongoDB et DataStax rendent également leurs bases de données disponibles dans le cloud.
Intelligence artificielle (IA)
Certains disent que l’Intelligence Artificielle est juste un terme pour la dernière génération de recherche qui vient de sortir des laboratoires et en production. Si oui, il y a un certain nombre de nouveaux produits et solutions avec des mots à la mode comme « apprentissage automatique » ou « réseaux de neurones » ou « apprentissage profond ». Ils peuvent ne pas ressembler à une base de données. Pourquoi pas ? La bonne nouvelle des solutions d’Intelligence Artificielle est que vous n’avez pas besoin de savoir ce que vous cherchez. Vous pouvez simplement agiter votre main et demander quelque chose de nébuleux comme ” le plus intéressant ” ou ” le plus proche “. Vous n’avez pas besoin de la bonne clé, ce numéro de référence infernal que les gens du service client vous demandent toujours d’écrire.
La mauvaise nouvelle est que vous ne saurez pas si vous avez obtenu la bonne réponse parce que vous n’avez pas spécifié la question avec n’importe quelle précision. Par exemple, est-ce que ce blog est vraiment le plus intéressant ? Le plus grand secret pour le succès de Google est qu’il n’y a pas de bonne réponse absolue. Si vous êtes dans le parc de balle, personne ne peut se plaindre.
La liste des boîtes à outils d’apprentissage automatique est presque trop longue à envisager. Vous pouvez toujours demander à votre moteur de recherche préféré l’IA ” la plus intéressante “.
Blockchain
Le mot blockchain peut être lié à l’économie compliquée et à la politique de Bitcoin, mais au-dessous de tout le discours sur la devise est un magasin de données distribué extrêmement stable et pratique. Tout le monde a la possibilité de mettre à jour les données dans la longue table et tout le monde peut partager la réponse. Le plus intéressant est le fait que tout le monde partage les mêmes réponses. C’est parfait pour les entreprises qui sont des ennemis.
Certains développeurs vont un peu plus loin et parlent de « contrats intelligents », ce qui est une autre façon de dire que les octets dans la base de données sont suffisamment fiables pour que les gens puissent baser des problèmes légaux comme leur propriété. Vous ne pouvez pas faire cela avec une base de données régulière, qui peut être modifiée par n’importe qui avec des privilèges administratifs.
Il y a des points faibles, cependant. Chaque utilisateur doit gérer une clé de chiffrement car toutes les transactions doivent être signées numériquement. Si cette clé est perdue ou oubliée, les données de ces lignes sont figées pour toujours. Si cette clé est volée, eh bien, tous les paris sont désactivés. En d’autres termes, le blockchain n’est pas parfait, mais il est beaucoup plus fiable que le modèle standard.
R3, Ripple et IBM ne sont que trois des nombreux concurrents qui explorent l’espace. Beaucoup de grandes banques ont leurs propres projets internes. Et puis, il y a les compagnies Bitcoin et Altcoin elles-mêmes, qui sont aussi de grandes parties de l’écosystème.