Pourquoi les bases de données relationnelles ne peuvent-elles pas atteindre les échelles du Big Data?
17
Il est souvent répété que le problème du Big Data est que les bases de données relationnelles ne peuvent pas évoluer pour traiter les volumes massifs de données qui sont en cours de création.
Mais quelles sont les limitations d'évolutivité auxquelles les solutions Big Data comme Hadoop ne sont pas liées? Pourquoi Oracle RAC ou MySQL sharding ou MPP RDBMS comme Teradata (etc.) ne peuvent-ils pas réaliser ces exploits?
Je suis intéressé par les limites techniques - je suis conscient que les coûts financiers du clustering SGBDR peuvent être prohibitifs.
MS vient d'avoir un entretien technique aux Pays-Bas où ils ont discuté de certaines de ces choses. Il commence lentement, mais pénètre dans la viande de Hadoop vers les 20 minutes.
L'essentiel est que "cela dépend". Si vous disposez d'un ensemble de données judicieusement organisé (au moins quelque peu) facile à partitionner qui est (au moins un peu) homogène, il devrait être assez facile de l'adapter à ces volumes de données élevés avec un SGBDR, en fonction de ce que vous faites. .
Hadoop et MR semblent être plus adaptés aux situations où vous êtes obligé de faire de grandes analyses distribuées de données, en particulier lorsque ces données ne sont pas nécessairement aussi homogènes ou structurées que ce que nous trouvons dans le monde SGBDR.
À quelles limitations les solutions Big Data ne sont-elles pas liées? Pour moi, la plus grande limitation à laquelle ils ne sont pas tenus est de devoir faire un schéma rigide à l'avance. Avec les solutions Big Data, vous placez d'énormes quantités de données dans la «boîte» maintenant et ajoutez de la logique à vos requêtes plus tard pour faire face au manque d'homogénéité des données. Du point de vue d'un développeur, le compromis est la facilité de mise en œuvre et la flexibilité à l'avant du projet, par rapport à la complexité des requêtes et à la cohérence des données moins immédiate.
Merci Dave, vous me rapprochez de ce que j'essaie de découvrir. Vous dites que Hadoop est adapté aux situations avec de grands scans distribués - si certains / de nombreux SGBDR ont des solutions en cluster (RAC, fragments, MPP, etc.), pourquoi ne peuvent-ils pas faire cela aussi? Qu'est-ce qui rend impossible pour un SGBDR de trier 10 billions d'enregistrements en 16 heures comme le peut un très gros cluster Hadoop? voir ici
Jeremy Beard
2
Rien ne rend impossible pour un cluster SGBDR d'effectuer ce type de travail, et vous pouvez configurer un SGBDR pour évoluer pour faire ce genre de chose. Le problème avec un SGBDR est que pour ce faire, vous devez être très prudent sur la façon dont vous structurez votre schéma et vos partitions pour qu'il fonctionne. Les architectures Big Data gagnent lorsque vos données ne sont pas suffisamment structurées pour être partitionnées et optimisées facilement ou efficacement dans un SGBDR.
Dave Markle
1
Les concepteurs de bases de données incompétents rendent difficile la mise à l'échelle des bases de données relationnelles. Trop d'entreprises pensent que les développeurs d'applications peuvent concevoir des bases de données (ou pire utiliser ORMS pour faire la conception) lorsqu'ils ont besoin d'embaucher des développeurs de bases de données dès le départ. La deuxième personne que vous engagez pour un projet impliquant des données doit être le développeur de la base de données.
HLGEM
3
@HLGEM: Ma réponse est "meh". Les développeurs les plus efficaces vont être ceux qui comprennent les deux côtés de la pile - l'idée qu'il existe un bon "développeur d'applications" qui travaille tout le temps avec un SGBDR sans savoir comment cela fonctionne est une erreur. . De même, l'idée qu'il existe un bon "développeur de base de données" qui ne comprend pas les ORM ou le côté application est également, l'OMI, une erreur.
Dave Markle
6
Le pionnier des bases de données et chercheur Michael Stonebraker a co-écrit un article qui discute des limites des architectures de bases de données traditionnelles. Généralement, ils évoluent avec du matériel plus cher, mais ont du mal à évoluer avec plus de matériel de base en parallèle, et sont limités par l'architecture logicielle héritée qui a été conçue pour une époque plus ancienne. Il soutient que l'ère BigData nécessite plusieurs nouvelles architectures de base de données qui tirent parti d'une infrastructure moderne et optimisent pour une charge de travail particulière. Le projet C-store, qui a conduit à la base de données commerciale Vertica Systems, et le projet H-store, qui a conduit à VoltDB, une base de données SQL OLTP en mémoire conçue pour les charges de travail BigData à grande vitesse, en sont des exemples. (Divulgation complète, je travaille pour VoltDB).
Vous pourriez trouver ce webinaire intéressant sur ce sujet. Il répond à certains des mythes qui ont surgi avec le succès des bases de données NoSQL. Fondamentalement, il soutient que SQL n'était pas le problème, il ne devrait pas être nécessaire de renoncer aux fonctionnalités de base de données traditionnelles telles que la cohérence afin d'obtenir des performances.
Il n'est pas entièrement vrai que le SGBDR ne peut pas évoluer. Cependant, la vérité partielle dans la déclaration dépend de l'architecture. Dans la liste que vous avez donnée, Oracle RAC est différent des autres (MySQL et Teradata fragmentés). La principale différence réside dans les architectures de disque partagé contre rien partagé.
Les architectures de disque partagé comme Oracle RAC souffrent de la mise à l'échelle, car à un moment ou à un autre, toutes les machines en cours d'exécution doivent se synchroniser sur une partie des données. Par exemple, Global Lock Manager est un tueur. Vous pouvez continuer à le régler avec précision dans une certaine mesure, mais vous finirez par heurter un mur. Si vous ne pouvez pas facilement ajouter des machines, vous devriez avoir moins de machines mais super puissantes qui peuvent brûler votre poche. En cas d'architectures partagées (ou de données fragmentées), chaque machine prend possession de certaines données. Il n'a pas besoin de se synchroniser avec d'autres mahcines s'il souhaite mettre à jour certaines données.
Vient ensuite la race des bases de données NoSQL. Je leur traiterais un sous-ensemble de bases de données RDBMS traditionnelles. Toutes les applications de ce monde n'auront pas besoin de toutes les fonctionnalités offertes par RDBMS. Si je veux utiliser la base de données comme cache, je ne me soucierais pas de la durabilité. Peut-être que dans certains cas, je ne me soucierais pas non plus de la cohérence. Si toutes mes recherches de données sont basées sur une clé, je n'ai pas besoin de support pour les requêtes de plage. Je n'ai peut-être pas besoin d'index secondaires. Je n'ai pas besoin de la totalité de la couche de traitement / optimisation des requêtes que toutes les bases de données traditionnelles ont.
Le pionnier des bases de données et chercheur Michael Stonebraker a co-écrit un article qui discute des limites des architectures de bases de données traditionnelles. Généralement, ils évoluent avec du matériel plus cher, mais ont du mal à évoluer avec plus de matériel de base en parallèle, et sont limités par l'architecture logicielle héritée qui a été conçue pour une époque plus ancienne. Il soutient que l'ère BigData nécessite plusieurs nouvelles architectures de base de données qui tirent parti d'une infrastructure moderne et optimisent pour une charge de travail particulière. Le projet C-store, qui a conduit à la base de données commerciale Vertica Systems, et le projet H-store, qui a conduit à VoltDB, une base de données SQL OLTP en mémoire conçue pour les charges de travail BigData à grande vitesse, en sont des exemples. (Divulgation complète, je travaille pour VoltDB).
Vous pourriez trouver ce webinaire intéressant sur ce sujet. Il répond à certains des mythes qui ont surgi avec le succès des bases de données NoSQL. Fondamentalement, il soutient que SQL n'était pas le problème, il ne devrait pas être nécessaire de renoncer aux fonctionnalités de base de données traditionnelles telles que la cohérence afin d'obtenir des performances.
la source
Il n'est pas entièrement vrai que le SGBDR ne peut pas évoluer. Cependant, la vérité partielle dans la déclaration dépend de l'architecture. Dans la liste que vous avez donnée, Oracle RAC est différent des autres (MySQL et Teradata fragmentés). La principale différence réside dans les architectures de disque partagé contre rien partagé.
Les architectures de disque partagé comme Oracle RAC souffrent de la mise à l'échelle, car à un moment ou à un autre, toutes les machines en cours d'exécution doivent se synchroniser sur une partie des données. Par exemple, Global Lock Manager est un tueur. Vous pouvez continuer à le régler avec précision dans une certaine mesure, mais vous finirez par heurter un mur. Si vous ne pouvez pas facilement ajouter des machines, vous devriez avoir moins de machines mais super puissantes qui peuvent brûler votre poche. En cas d'architectures partagées (ou de données fragmentées), chaque machine prend possession de certaines données. Il n'a pas besoin de se synchroniser avec d'autres mahcines s'il souhaite mettre à jour certaines données.
Vient ensuite la race des bases de données NoSQL. Je leur traiterais un sous-ensemble de bases de données RDBMS traditionnelles. Toutes les applications de ce monde n'auront pas besoin de toutes les fonctionnalités offertes par RDBMS. Si je veux utiliser la base de données comme cache, je ne me soucierais pas de la durabilité. Peut-être que dans certains cas, je ne me soucierais pas non plus de la cohérence. Si toutes mes recherches de données sont basées sur une clé, je n'ai pas besoin de support pour les requêtes de plage. Je n'ai peut-être pas besoin d'index secondaires. Je n'ai pas besoin de la totalité de la couche de traitement / optimisation des requêtes que toutes les bases de données traditionnelles ont.
la source