2010-03-12 6 views
0

J'ai dé-normalisé ma base de données, puisque l'application explorait autrement, et Im stocker une liste de catégories pour chaque élément dans la DB comme une version html brute, et simplement l'écho dans ma conception. Chaque catégorie est en fait un lien, qui comprend une balise. Naturellement, c'est un peu difficile, surtout si je veux changer l'apparence de la façon dont les liens de catégorie sont affichés, car je dois mettre à jour toutes les anciennes entrées en cache. Et si je devais stocker ces données sous la forme d'un tableau sérialisé à la place, et simplement le désérialiser, puis lui appliquer une mise en forme en php. Y aurait-il une diminution significative des performances par rapport au simple html brut?Est-il préférable de stocker des données sérialisées ou html brut dans mysql?

Répondre

1

C'est une mauvaise idée de stocker des valeurs sérialisées uniquement pour une langue spécifique dans une base de données.

Avez-vous considéré memcache pour réduire "crawls" de votre base de données? Je trouve généralement que la mise en cache est une solution beaucoup plus élégante et flexible qu'une base de données dés-normalisée.

+0

Vous utilisez déjà memcache, sauf qu'il y a 2 millions d'objets qui doivent être rapatriés plusieurs fois par jour, donc la BUILDING du cache doit être optimisée. –

+2

Deux millions d'objets ont chacun leur propre liste HTML de catégories? Je suppose que vous aurez besoin de partager plus de détails sur votre application si vous voulez une réponse plus détaillée que "non, ne pas stocker les objets PHP sérialisés dans une base de données." – Matthew

+0

C'est une application de liste de films. J'ai besoin de montrer les genres de films + les acteurs associés à chaque film, qui doivent tous être des liens cliquables. Je stocke les paires film-acteur, film-genre, film-réalisateur dans les tables relationnelles, mais quand il y a 1,5 million de films, et chaque film a une moyenne de 15 acteurs, cela crée une très grande table de recherche, qu'il faudrait pour interroger sur chaque build de cache. C'est pourquoi je stocke les listes réelles en tant que HTML brut dans une colonne spéciale de chaque élément de la base de données. –

Questions connexes