2011-10-18 2 views
0

스프레드 시트가 있는데 약 1500 행 × 1500 열입니다. 상단 및 측면의 레이블은 동일하며 셀의 데이터는 두 입력에 대한 수량화 된 유사성 점수입니다. 사용자가 행과 열 값을 입력하고 유사성 점수를 검색 할 수있게 해주는 Rails 응용 프로그램을 만들고 싶습니다. 유사성 점수는 경험적으로 도출되어 컨트롤러가 수학적으로 산출 할 수 없습니다.정적 데이터의 스프레드 시트 : 관계형 데이터베이스 또는 플랫 파일?

몇 가지 고려 사항 : 모든 셀이 가득차면 절반 이상의 데이터가 중복됩니다. 예를 들어 (행 34, 열 985)는 (행 985, 열 34)와 동일한 값을 유지합니다. 행 x는 항상 열 x와 완전히 유사합니다. 데이터는 정적이며 몇 년 동안 변경되지 않습니다.

하나의 db 테이블로이 작업을 수행 할 수 있습니까? 더 좋은 방법이 있습니까? 관계형 데이터베이스를 완전히 건너 뛸 수 있으며 어떻게 든 직접 파일을 쿼리 할 수 ​​있습니까?

모든 도움과 조언을드립니다.

답변

1

데이터베이스는 항상 데이터베이스를 저장하기에 안전한 장소입니다. 관계형 데이터베이스는 간단하고 좋은 아이디어입니다. 그러나 고려해야 할 대안이 있습니다. 이 데이터는 얼마나 자주 액세스됩니까? 드물게 또는 아주 자주 액세스됩니까? 매우 드문 경우에만 데이터베이스에 저장하고 검색 및 프리젠 테이션을 코드가 처리하도록하십시오. 데이터베이스 인덱스 등으로 최적화합니다.

플랫 파일은 좋은 생각이지만 모든 요청에 ​​대해 런타임에 읽기 및 검색하는 것은 너무 느립니다.

서버 시작시 모든 데이터 (db/file)를 읽고 메모리에 보관하여 서버가 너무 자주 다시 시작되지 않도록 할 수 있습니다. 이는 서버 하나 하나가 전체 그리드와 함께 메모리에 앉아 있지만 계산 속도가 매우 빠름을 의미합니다. REE를 사용하고 가비지 콜렉션 설정을 조정하는 경우 서버의 시작 시간을 크게 최소화 할 수 있습니다.

여기 내 마지막 제안 사항입니다. 앱을 가장 간단한 방법으로 구축하십시오. 얼마나 자주 그리고 얼마나 많은 앱을 사용하는지 알게되면 최적화가 시작됩니다. 근본적으로 1125000 세포로 작업하고 있습니다. 이것은 데이터베이스가 처리하기에 부당하게 큰 데이터 집합이 아닙니다. 그러나 데이터 세트가 변경되지 않으므로 기존의 캐싱 기술로 멀리 갈 수 있습니다.

관련 문제