2011-11-25 3 views
0

우리는 강력한 RDBMS에 보관 된 2 개의 소스 테이블에서 데이터를 읽는 일괄 처리 SQL 작업을 하루 1 회 실행합니다. 원본 테이블은 거대 (> 100TB)이지만 결합 된 필드가 10 개 미만입니다.인덱싱 된 플랫 파일

2 개의 원본 테이블을 압축 및 인덱싱 된 플랫 파일로 보관하면 전체 작업이 훨씬 빨라지고 저장소에 저장되어 낮은 사양의 서버에서 실행될 수 있습니다. 또한 이러한 압축되고 인덱싱 된 플랫 파일에 대해 쿼리와 같은 SQL을 실행할 수 있습니까? 이 작업을 수행하는 방법에 대한 지침은 매우 유용 할 것입니다.

+0

SQLite는 하나의 휴대용 플랫 파일을 사용하여 단일 데이터베이스의 개체를 저장합니다. 그것은 인덱스와 SQL 인터페이스를 지원합니다. 그러나 최대 데이터베이스 크기는 14TB에 불과합니다. – Raihan

+0

JSON 또는 YAML 기반 텍스트 파일을 사용하여 테이블을 저장할 수 있습니다. 최대 파일 크기는 OS가 허용하는 크기 일 수 있습니다. JSON과 YAML 모두 Java/Ruby와 다른 많은 프로그래밍 인터페이스가 있습니다. 그러나 어떤 임프레이션도 아직 색인 생성을 지원하지 않는다고 생각합니다. 그리고 SQL 인터페이스가 없습니다. – Raihan

답변

1

대부분의 최적화 전략은 속도 또는 크기를 최적화하고 다른 하나를 교환합니다. 일반적으로 RDBMS 솔루션은 크기를 희생시키면서 속도를 최적화합니다. 예를 들어, 인덱스를 작성하면 더 많은 공간을 차지하게되고, 대신에 빠른 데이터 액세스를 얻게됩니다.

따라서 속도와 크기를 모두 최적화하려는 욕구는 거의 실현되지 않을 것입니다.

둘째, "sql-like"쿼리를 실행하려면 RDBMS가 최상의 솔루션이라고 확신합니다. 특히 거대한 데이터 세트의 경우 더욱 그렇습니다.

기본 데이터가 특정 최적화에 적합 할 수 있습니다. 예를 들어, 정수를 생성하기 위해 비트 마스크를 기반으로하는 사용자 정의 색인 구성표를 만들고 이러한 정수를 사용하여 부울 연산자를 사용하여 데이터에 액세스하면 은 RDBMS 색인의 성능을 능가 할 수 있어야합니다.

+0

네빌 감사합니다. "sql like"쿼리는 인덱싱 된 플랫 파일에 대해 기존 SQL 작업을 재사용 할 수 있는지 평가하지만 너무 중요하지는 않습니다. 요점은 이러한 고성능 인덱싱 및 압축 플랫 파일을 어떻게 만들어야하는지입니다. – user1065024