2009-06-23 4 views
19

합리적으로 큰 데이터 세트가 있고이를 RDBMS가 아닌 파일에 저장하려고합니다.대용량 데이터 세트를위한 SQLite?

데이터 세트의 주 테이블은 1M 행, 30 열 및 약 600Mb 크기로 CSV로 구성됩니다.

SQLite를 고려 중입니다. SQLite는이 크기의 데이터 세트를 조사 할 가치가 있습니까?

답변

16

SQLite는 그 파일을 잘 처리 할 것입니다. 모든 레코드를 가져 오기 전까지 인덱스를 만드는 데 많은 시간을 소비하지 않도록 트랜잭션의 레코드를 가져와야합니다.

+0

추가 정보 Paul을 보내 주셔서 감사합니다. –

8

비슷한 응용 프로그램에 대해 SQLite를 최근 조사했습니다. SQLite 문서는 SQLite 데이터베이스의 크기가 테라 바이트 일 수 있으며 SQLite의 주요 제한 사항은 동시성 (많은 사용자가 동시에)이라는 것을 설명합니다. 우리가이 방향으로 나아 가지는 않았지만 (우리는 우리 자신의 바이너리 저장 포맷을 가짐), SQLite가이 크기의 파일을 처리 할 수 ​​있다고 확신했습니다.

2

sqlite가 잘 작동합니다. 나는 임베디드 장치 에서조차 그 크기의 데이터 세트를 실행했으며 sqlite 성능은 상당히 합리적이었다.

앞에서 설명한 것처럼 주 병목 현상은 동시성입니다. 데이터베이스 파일 당 최대 하나의 데이터베이스 핸들이 열리도록 시스템을 설계하십시오.

5

sqlite는 트랜잭션을 사용할 때 빠르며 너무 자주 커밋하지 않습니다. 매개 변수와 함께 prepared statement를 사용하면 작업 속도가 빨라집니다. Sqlite는 매개 변수화 된 쿼리를 사용할 때 각 sql 문을 다시 구문 분석 할 필요가 없습니다. 예 : How do I get around the "'" problem in sqlite and c#?

sqlite db에 2 기가 바이트를 저장하면 매우 잘 작동합니다. 플랫 파일 위에있는 sqlite의 큰 장점은 데이터를 인덱싱 할 수 있다는 것입니다.

3

당신은 이미 답을 가지고 있지만 현재 실험을 공유하고 싶습니다 : 저는 793 GiB의 데이터를 수십억 개의 데이터로 단일 SQLite 데이터베이스에 버렸습니다. 읽기 쿼리는 여전히 놀랍도록 (1m 미만) 빠릅니다.

작성 시간은 22 시간을 약간 넘는 시간이었으며, 사후 색인 작성에는 컬럼 당 약 4 시간이 소요되었습니다.

+0

인상적 ... 만약 내가 그 중 10 %에 도달하면 그것은 많이 될 것입니다. 팔았다. – ppumkin

관련 문제