Si les bases de données relationnelles n'évoluent pas, rien ne le fait. Ne vous inquiétez pas des problèmes de mise à l'échelle.
SQL a des problèmes avec certaines sortes d'analyses, mais cela ne prend pas beaucoup de données pour déclencher le problème. Par exemple, considérons une table unique avec une colonne qui fait référence à d'autres lignes en fonction d'une clé unique. En règle générale, cela peut être utilisé pour créer une structure arborescente. Vous pouvez écrire des instructions SQL rapides qui référencent la ligne associée. Ou la ligne associée de la ligne associée. En fait, vous pouvez effectuer un nombre spécifique de sauts. Mais si, pour chaque ligne, vous souhaitez sélectionner un champ sur la première ligne associée de la chaîne qui répond à un critère, cela devient compliqué.
Considérez un tableau des emplacements des bureaux aux niveaux de la nation, de la province / de l'état, du comté, de la ville et du village, chaque bureau faisant référence au bureau auquel il rend compte. Il n'y a aucune garantie que le bureau déclarant de chaque bureau ne soit qu'à un niveau supérieur. Pour un ensemble sélectionné de bureaux, pas tous sur un seul niveau, vous souhaitez répertorier le bureau national associé de chacun. Cela nécessite des boucles d'instructions SQL et prendra encore longtemps aujourd'hui. (J'obtenais 30 secondes sur une sélection de 30 bureaux, mais c'était il y a longtemps - et le passage aux procédures stockées m'a un peu aidé.)
Donc, l'alternative est de mettre toute la structure en un seul gros bloc de données, de l'étiqueter et de la stocker. Lorsque vous souhaitez analyser les données, lisez-les toutes en mémoire d'un coup, en configurant des pointeurs pour suivre la structure, et vous pouvez traiter quelques millions de bureaux en un clin d'œil.
Rien de tout cela n'a beaucoup à voir avec la quantité de données. La clé est la nature de l'organisation des données. Si une mise en page relationnelle aide, alors un SGBDR est ce que vous voulez. Si ce n'est pas le cas, une sorte de stockage en vrac sera plus rapide, voire légèrement quadrillaire.
Notez que si l'un de ces ensembles de données devient trop volumineux pour tenir en mémoire, votre base de données non SQL ne fonctionne plus. Un autre problème est lorsque vous avez besoin de données provenant de plusieurs blocs à la fois; vous pouvez le faire si et seulement si tous les blocs tiennent en mémoire en même temps. Et l'utilisateur doit attendre pendant que vous les chargez.
Si votre base de données relationnelle va vous causer des problèmes, elle le fera avant d'y mettre beaucoup de données. Le seul problème de mise à l'échelle que vous pourriez avoir est avec votre programme lorsque le bloc de données que vous assemblez pour une base de données nosql - si vous devez en utiliser un - devient trop gros pour lui. (Lisez les erreurs de mémoire insuffisante. Les nouvelles langues font parfois des choses étranges avec la mémoire.)