2010-12-23 2 views
0

나는 10,000+ 다른 파일의 데이타베이스가 있고 나는 5 초마다 그 데이타베이스에서 4 개의 무작위 것을 움켜 잡을 필요가있다.10,000 개 이상의 다른 파일이 있으며 매 5 초마다 4 개를 가져와야합니까?

건축가를위한 제안 사항이 궁금합니다. 플랫 파일 또는 sqlite를 사용하려고 생각하고 있습니까? mysql을 통해이 작업을 수행하는 것이 매우 느린가?

+3

왜 MySQL이 매우 느릴 것이라고 생각하십니까? 10K 레코드 테이블은 MySQL에서 "작음"으로 간주됩니다. –

+0

이미 말한 데이터베이스를 변경 하시겠습니까? –

+0

MySql에서 매 5 초마다 임의의 테이블 4 개를 잡아 당기는 것은 내 오히려 미끼 인 mysql 서버에서하고 싶은 것이 아닙니다. 그래서 나는 대안을 찾고있다. – Steven

답변

2

그냥 일반화 된 접근 를 작동합니다 위에서 언급 한. 대신 1203 초마다 selectRandomGroups()을 실행하십시오.

selectRandomGroups()은 매 실행마다 selectRandom() 120/5 회를 실행합니다. 결과 저장소를 일부 저장소 (캐시)에 저장합니다.

다음으로 캐시에서 마지막 그룹을 가져 오는 5 초마다 grabRandomGroup()을 사용하십시오. 제거하십시오.

2

결정적 이름 (0.dat, 1.dat 등)이있는 디렉토리에 파일을 넣고 직접 읽습니다.

파일 시스템의 B 트리 및 캐싱이 나머지를 처리합니다. 이것이 정확히 설계된 것입니다.

+0

좋아, 그 유일한 문제는 실제 데이터베이스가 백만 행을 넘기 때문에 표시하고 싶은 특정 데이터베이스 만 있다는 것입니다. (승인 된 이미지 만). 그래서 나는 오히려 24 시간마다 스크립트를 실행하여 새 데이터를 가져와 어딘가에 쓸 수 있습니까? – Steven

+2

죄송합니다. 10,000 개 이상의 파일을 명시하셨습니까? 이는 1,000,000 개 이상의 레코드 중 일부에 매핑되는 10,000 개의 파일을 의미합니까? 아니면 실제로 1,000,000 개 이상의 파일입니까? 대부분은 표시 대상이 아닙니다. – martona

0

매우 많은 관계형 DB 배경에서 비롯된 첫 번째 반응은 데이터베이스 시스템의 "NoSQL"문서 유형을 권장하지 않습니다. 그러나이 경우에는 기본적으로 하나의 큰 해시 테이블이 필요합니다. 나는 MongoDB 나 CouchDB 같은 것을 볼 것이다. 여기에서 차이점을 볼 수 있습니다 (http://www.mongodb.org/display/DOCS/MongoDB,+CouchDB,+MySQL+Compare+Grid).

다른 많은 기능은 Amazon S3 또는 유사한 기능을 사용하여 "클라우드"에이 정보를 저장하는 것이고 곧 많은 양을 확장해야하고 내부 용량이 필요하지 않다고 생각하면됩니다.

그렇지 않으면, 파일 시스템 아이디어는 selectRandom() 절차 모든 오초이 너무 지저분한 것입니다 실행도

+0

ps 파일이나 파일에 대한 링크를 얼룩으로 저장하고 있습니까? –

0

전체 이미지 파일 대신 이미지에 대한 링크를 저장하지 않는 이유는 무엇입니까? 5 초마다 4 개의 파일 이름을 반환하는 쿼리는 mysql 서버에로드가 많이 걸리지 않아야합니다. 아마 동일한 서버에 다른 DBMS를 설치하고 실행하는 것보다 작을 것입니다.

이것이 웹 사이트의 일부 유형이라고 가정하면 자바 스크립트로 임의의 파일 이름을 생성하여 사용자 시스템으로 오프로드하고 이미지에 필요한 모든 작업을 수행 할 수 있습니다.

0

귀하의 의견은 귀하의 파일이 같은 테이블에 저장되어 있다고 생각합니다. 왜 이런 일이 너무 느릴까요?

SELECT * FROM files WHERE approved = 1 AND type = image ORDER BY RAND() LIMIT 4 

그리고 왜 스크립트에게 69,120 파일을 가져 와서 디렉토리 또는 무엇이든에 기록 24 시간마다 실행하는 빠른 것입니까? 그러나 확실히, 당신은 그것을 할 수 있습니다. 위 쿼리에서 한도를 변경하십시오.

+0

BTW, 파일이 디스크에 저장되어 있고 테이블에 파일 이름 (링크)이있는 경우에도 위 내용이 적용됩니다. –

관련 문제