2012-09-04 2 views
1

큰 파일 (> 3GB)에서 데이터를 읽는 C 프로그램을 작성했습니다. 파일의 각 레코드는 키 - 값 쌍입니다. 쿼리가 올 때마다 프로그램은 키를 검색하여 값을 업데이트하는 것과 마찬가지로 해당 값을 검색합니다.
쿼리가 빠른 속도로 처리되므로이 기술이 결국 실패합니다. 최악의 액세스 시간이 너무 깁니다. 인 메모리 객체를 생성하는 것은 크기 때문에 다시 나쁜 아이디어가 될 것입니다.
이 문제를 해결할 수있는 방법이 있습니까?C의 큰 파일에 대한 I/O 최적화

+1

새 키를 많이 만들지 않는 경우 : 키를 기반으로 전체를 정렬하여 이진 검색을 허용하고이 정렬 된 순서에 따라 여러 파일로 나눌 수도 있습니다. – huon

+1

파일을 적절한 데이터베이스로 변환 할 수 있습니까? – Glenn

+3

이것은 [NoSQL 데이터베이스] (http://en.wikipedia.org/wiki/NoSQL#Key-value_store)에 대한 이상적인 사례 인 것처럼 보입니다. –

답변

5

분명히 그 이름의 파일을 묶는 크기의 파일이 실제 데이터베이스로 마이그레이션되도록 요청하고 있습니다. 그것을 실패하면 아마도 적어도 주어진 시간에 상주하는 부분 만있는 메모리 매핑 파일에 대한 아이디어를 탐색 할 것입니다 ...

3

해당 값과 비교하여 키의 크기는 얼마나됩니까? 파일 크기가 상당히 작 으면 키와 해당 값 파일 내의 해당 위치 사이에서 메모리에 테이블을 만들 수 있습니다.

관련 문제