2012-11-25 3 views
6

J'ai une application sur une base de données relationnelle qui a besoin de changer afin de garder plus de données. Mon problème est que seulement 2 des tables vont stocker plus de données (jusqu'à des milliards d'entrées) et une des tables est "liée" par fk à d'autres tables. Je pourrais abandonner le modèle relationnel pour ces tables. Je voudrais garder le reste de la base de données intact et ne change que ces 2 tables. Je fais aussi beaucoup de requêtes - de simples sélections à grouper par et sous-requêtes - sur ces tables, donc plus de problèmes là-bas.SQL NOSQL mix possible ou non?

Mon expérience avec NoSQL est limité, donc je demande que l'on (le cas échéant) de ses frères et sœurs à mes besoins: convient - d'énormes données - requêtes complexes - intégration avec une base de données SQL. Ce n'est pas aussi important que les deux premiers et je pourrais migrer toute ma base de données vers un équivalent si ça en vaut la peine.

Merci

+1

La vaste gamme de technologies communément regroupées en tant que «NoSQL» ne sont pas plus de frères et soeurs que de frères et soeurs de bases de données SQL. – Philipp

Répondre

3

Les deux bases de données relationnelles et les approches NoSQL peuvent traiter des données ayant des milliards de points de données. Avec les informations fournies, il est difficile de faire une recommandation significative et spécifique. Il serait utile d'en savoir plus sur ce que vous essayez de faire avec les données, quelles sont vos options concernant votre matériel et votre topologie réseau, etc.

Je suppose que puisque vous utilisez actuellement une base de données relationnelle, vous avez probablement déjà Nous avons envisagé de partitionner ou de structurer autrement vos tables plus grandes afin que les performances de vos requêtes soient satisfaisantes. Cette activité en soi peut être non triviale, mais à mon humble avis, une bonne conception de base de données avec SQL optimisé peut vous prendre un très long chemin avant qu'il y ait un besoin clair d'explorer des alternatives. Toutefois, si votre utilisation des données ressemble à write-once, read souvent, les dépendances de jointure sont gérables et que vous devez effectuer des agrégations sur l'ensemble de données, vous pouvez commencer à rechercher des approches alternatives telles que Hadoop ou MongoDB - Cependant, ces choix s'accompagnent de compromis en termes de performances, de capacités, d'exigences de plate-forme, de latence, etc. Votre question particulière sur l'intégration entre un référentiel NoSQL et une base de données SQL au niveau de la requête peut ne pas être réalisable sans une duplication des données entre les deux. Par exemple, MongoDB n'aime pas les jointures (http://stackoverflow.com/questions/4067197/mongodb-and-joins), vous devez donc concevoir votre modèle de persistance en ayant cela à l'esprit, ce qui peut impliquer une duplication des données. Le point que j'essaie de faire est - l'identification de la «bonne» approche dépendra de votre objectif et des contraintes spécifiques.

+0

Actuellement l'application fonctionne sur MySQL. La base de données sur un seul noeud, mais il est possible d'obtenir jusqu'à 3 machines. Les requêtes que je cours sont complexes et il est possible pour elles d'impliquer toutes les lignes de la table (pour un grand groupe par). D'après mon expérience, MySQL ne peut pas gérer ce genre d'opérations dans un délai raisonnable (moins de 1min par requête), c'est pourquoi je suis à la recherche d'alternatives. – qtm

Questions connexes