2010-03-12 1 views
0

응용 프로그램이 달리 크롤링 중이었기 때문에 데이터베이스를 비정규 화했습니다. DB의 각 항목에 대한 범주 목록을 원시 HTML 버전으로 저장하고 설계에 반영했습니다. 각 카테고리는 실제로 링크이며 태그를 포함합니다. 자연스럽게, 이것은 내가 오래된 캐시 된 모든 엔트리를 업데이트해야하기 때문에 카테고리 링크가 어떻게 표시되는지를 바꾸고 싶을 때 특히 고통 스럽다.직렬화 된 데이터 또는 원시 html을 mysql에 저장하는 것이 더 낫습니까?

이 데이터를 대신 직렬화 된 배열로 저장하고 단순히 직렬화를 해제 한 다음 PHP에서 형식을 적용하면 어떨까요? 원시 html을 단순히 반향 출력하는 것보다 상당한 성능 저하가 있습니까?

답변

1

특정 언어에 대해서만 직렬화 된 값을 데이터베이스에 저장하는 것은 좋지 않습니다.

데이터베이스의 "크롤링"을 줄이기 위해 memcache을 고려 했습니까? 보통 캐싱은 de-normaliezd 데이터베이스보다 훨씬 더 우아하고 유연한 솔루션이라는 것을 알게되었습니다.

+0

이미 memcache를 사용합니다. 단 2 백만 건의 개체가 있습니다. 하루에 여러 번 캐시해야하므로 캐시를 최적화해야합니다. –

+2

2 백만 개의 객체에는 각각 고유 한 HTML 목록이 있습니다. "아니요, 직렬화 된 PHP 객체를 데이터베이스에 저장하지 마세요"보다 자세한 정보를 원한다면 애플리케이션에 대한 자세한 정보를 공유해야한다고 생각합니다. – Matthew

+0

영화 목록 응용 프로그램입니다. 나는 각 영화와 관련된 영화 장르 + 배우를 보여줄 필요가 있는데, 모두 클릭 가능한 링크 여야합니다. 나는 영화 배우, 영화 장르, 영화 감독 ID 쌍을 관계형 테이블에 저장하지만, 영화가 150 만 개 있고 각 영화의 배우가 평균 15 명이면 매우 큰 조회 테이블을 만들 수 있습니다. 모든 캐시 빌드를 쿼리합니다. 그게 왜 DB에있는 모든 항목의 특수 열에 실제 목록을 원시 HTML로 저장하는지. –

관련 문제