TL, DR
대량의 계층 구조 데이터를 저장하기 위해 과학 컴퓨팅 분야에서 인정되는 모범 사례는 무엇입니까? 예를 들어 SQL은 큰 희소 행렬로 훌륭하게 재생되지 않습니다. 이런 종류의 데이터를 구조화, 보관 및 분석하는 데 유용한 도구가 있습니까? LHC 직원들은 무엇을 사용합니까?
사용 사례 세부 사항
다음 계층 구조에 따라 단백질 시뮬레이션의 데이터를 저장하고 싶습니다.
protein
|__simulation conditions
|____|__residues
|____|____|__conformers
|____|____|____|__atoms
모든 단백질은 각각의 잔류 물을 알고 있어야하며, 모든 원자는 시뮬레이션에 사용 된 조건 등을 알아야하며 그 반대도 마찬가지입니다.
원래 관계형 데이터베이스가이 응용 프로그램에 완벽 할 것이라고 생각했기 때문에 SQL 데이터베이스에 데이터를 저장하는 python과 sqlalchemey를 사용하는 프로그램을 작성했습니다. 그러나 실제로이 프로그램은 제대로 작동하지 않습니다.
가장 큰 문제는 모든 가능한 쌍의 순응 자 사이의 쌍별 상호 작용으로 인해 잠재적 에너지를 저장하는 순응 자 데이터 레벨에 N x N 매트릭스가 있다는 사실과 관련이 있습니다. 행렬의 대부분의 항목은 0이므로 데이터베이스의 별도 테이블에 행렬을 항목 당 한 줄씩 희소 형식으로 저장합니다. 불행히도, 수천 개의 순응자를 포함하는 시뮬레이션의 경우 pairwise 테이블은 여전히 수십만 개의 행으로 끝나고 다음과 같습니다.
a) 빌드 및 쿼리 속도가 매우 느리다 (시간)
b) 희소 행렬이 아닌 데이터의 동등한 일반 텍스트 표현보다 하드 드라이브에서 더 많은 공간을
차지합니다. c) 10 기가 바이트 이상의 메모리를 차지합니다. 테이블을 메모리로 읽습니다.
나의 궁극적 인 목표는 데이터베이스에 수만 개의 런 (수십 개의 시뮬레이션 조건에서 수천 개의 단백질에서 파생 된)을 저장하여 모두 함께 분석하는 것입니다. 이는 페어 단위 행렬을 나타내는 테이블이 약 10 억 행으로 늘어날 수 있음을 의미합니다. 현재이 데이터베이스에서 단일 쿼리를 실행하기 위해 Cray 또는 다른 공유 메모리 몬스터가 필요할 것 같습니다.
더 나은 옵션이 있습니까? LHC 직원들은 무엇을 사용합니까?