2011-07-29 4 views
0

ansi C++로 작업하는 파일의 기본 키를 기반으로 사용자의 레코드를 보관하고 액세스 할 수있는 방법은 무엇입니까? 데이터베이스가 사용되지 않습니다.파일에 저장된 사용자 레코드에 액세스하는 방법 (데이터베이스 없음)

+3

파일 *이 데이터베이스가 아니겠습니까? –

+0

솔루션에 단일 파일이 필요하거나 여러 파일을 사용할 수 있습니까? 성능에 어느 정도의 관심이 있습니까? 레코드 수가 상대적으로 적습니까? –

+0

모든 레코드를 메모리에로드하고 콜렉션/오브젝트 모델로 표현할 수 있으며 변경이 이루어지면 데이터 모델을 전체 파일로 다시 저장할 수 있습니다. –

답변

0

파일을 데이터베이스에 무작위로 액세스하는 경우 데이터베이스로 호출하든 그렇지 않든 관계없이 데이터베이스라고합니다.

어쨌든 파일의 최대 레코드 길이를 정의하십시오. 그것을 부르십시오 MAX_RECL

읽기/쓰기를 위해 엽니 다 rec * MAX_RECL을 읽고 MAX_RECL을 읽으려고 시도하십시오. 기록하려면 rec * MAX_RECL을 찾고 MAX_RECL을 작성하십시오. 닫으려면 닫고 끝내십시오.

키를 사용하려면 매번 전체 파일을 검색하지 않는 한 키를 레코드에 매핑하는 별도의 색인이 필요합니다.

0

자신의 롤링을 시작하기 전에 SQLite 나 Berkeley DB와 같은 내장 데이터베이스를 확인하십시오.

고정 레코드 크기를 사용할 수도 있고 가변적 인 경우 항목의 시작 및 길이에 대한 별도의 인덱스 파일을 사용할 수도 있습니다.

1

가장 단순한 시나리오는 (ab) 파일 시스템을 데이터베이스로 사용하는 것입니다. 기본 키는 파일의 이름이고 파일의 내용은 레코드 자체입니다. 이름/키별로 파일을 여는 것은 조회입니다.

그러나 요구 사항을 더 자세히 지정할 수 있습니다. 어떤 종류의 레코드와 키, 얼마나 많은 레코드를 저장해야하는지, 얼마나 자주 업데이트와 쿼리가 발생하는지 등.

관련 문제