2011-02-25 4 views
0

Je n'arrête pas d'entendre que l'une des façons d'architecturer un site Web évolutif est de ne pas utiliser les jointures. Comment faites-vous le monde puisque la plupart des données sont relationnelles?S'agit-il des moyens d'écrire une requête sans jointures dans une architecture de site Web évolutive NOSQL?

Ma recherche limitée a donné ces pensées:

A) Si vos données sont par nature relationnelle alors en effet utiliser une base de données relationnelle, à savoir utiliser le bon outil pour le travail. B12) Maintenir une version dénormalisée de vos données. C) Pour les données qui peuvent être forcées d'être non-relationnelles, vous pouvez utiliser NOSQL. L'architecture de données de telle sorte que les jointures ne sont pas nécessaires.

D) Si vous devez relier vos données, la couche application doit implémenter manuellement les jointures en récupérant les données une à une et en reliant manuellement les résultats. E) Comme les jointures manuelles au niveau de la couche d'application sont très lentes, essayez de les faire hors ligne (pas pendant que l'utilisateur attend).

F) Utiliser Map-Reduce.

Est-ce correct/autres réponses?

Répondre

3

L'évolutivité élevée a d'excellents articles sur ceci. Consultez le reddit un pour la façon dont ils ont géré les jointures: http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html

Ensuite, il y a déjà une question stackoverflow avec un tas de liens dans les réponses pour les informations similaires: Techniques for writing a scalable website

+0

Merci! J'ai déjà passé environ trois heures à lire HighScalability.com et SO articles sur ce sujet et est venu à travers ceux-ci. Je vais mettre à jour ma question pour être plus précis. –

0

Cache, autant que possible, à savoir lorsque vous avoir des requêtes coûteuses (avec ou sans jointures) essayez de mettre en cache le résultat de la requête plutôt que d'exécuter à nouveau la requête etc. Pour rendre le site entier rapide, cachez les objets sur la couche la plus élevée possible, c.-à-d. , essayez de mettre en cache les fragments de page, puis les objets de données qui fournissent les données pour remplir les pages, etc.

Avertissement: Il y a une part de vérité dans le vieil adage: «Il n'y a que 2 choses difficiles en informatique - invalidation de cache et nommage des choses», alors faites attention à ce que vous mettez dans votre cache et pendant combien de temps.

Questions connexes