질량 분석계의 스캔을 MySQL 데이터베이스에 저장하려고 계획 중이며이 양의 데이터를 저장하고 분석하는 것이 원격으로 가능한지 알고 싶습니다. 성능에 따라 환경에 따라 크게 차이가 나는 것을 알고 있지만 대략적인 규모의 쿼리를 찾고 있습니다. 쿼리에 5 일 또는 5 밀리 초가 소요됩니까?
입력 형식
각 입력 파일에는 분광계의 단일 실행이 포함됩니다. 각 실행은 일련의 스캔으로 구성되며 각 스캔에는 순서가 지정된 데이터 포인트 배열이 있습니다. 메타 데이터는 약간 있지만 파일의 대부분은 32 비트 또는 64 비트 정수 또는 부동 소수점 배열로 구성됩니다.
호스트 시스템
| ---------------- + ------------------------------- | | OS | Windows 2008 64 비트 | | MySQL 버전 | 5.5.24 (x86_64) | | CPU | 2x Xeon E5420 (총 8 코어) | | 램 | 8GB | | SSD 파일 시스템 | 500GiB | | HDD RAID | 12TiB | | ---------------- + ------------------------------- |
무시할만한 프로세서 시간을 사용하여 서버에서 실행되는 다른 서비스가 있습니다.
파일 통계
| ------------------ + -------------- | | 파일 수 | ~ 16,000 | | 총 크기 | 1.3TiB | | 최소 크기 | 0 바이트 | | 최대 크기 | 12GiB | | 평균 | 800 MiB | | 중앙값 | 500 MiB | | 총 데이터 포인트 | ~ 2,000 억 | | ------------------ + -------------- |
총 데이터 포인트 수는 매우 대략적인 추정치입니다.
제안 된 스키마
나는 "올바르게"(즉, 미친 것처럼 데이터를 정규화) 일을 할 계획이므로 runs
테이블, spectra
외래 키가 runs
있는 datapoints
테이블 및에 외래 키가 있는 테이블이 spectra
있습니다.
200 억 데이터 포인트 질문
여러 스펙트럼과 여러 번의 실행을 분석하여 수백만 행에 닿을 수있는 쿼리를 생성하려고합니다. 내가 모든 것을 올바르게 색인화한다고 가정하면 (다른 질문의 주제 임) 네트워크를 통해 수백 개의 MiB를 섞으려고하지 않는다면 MySQL 이이를 처리하는 것이 원격으로 그럴듯합니까?
추가 정보
스캔 데이터는 XML 기반 mzML 형식의 파일에서
제공 됩니다. 이 형식의 고기
<binaryDataArrayList>
는 데이터가 저장된 요소에 있습니다. 각 스캔은> = 2 개의 <binaryDataArray>
요소를 생성 하여 함께 2 차원 (또는 그 이상) 형식의 배열을 형성 [[123.456, 234.567, ...], ...]
합니다.
이러한 데이터는 한 번만 기록되므로 업데이트 성능 및 트랜잭션 안전성은 중요하지 않습니다.
데이터베이스 스키마에 대한 나의 순진한 계획은 다음과 같습니다.
runs
표
| 열 이름 | 타입 | | ------------- + ------------- | | 아이디 | 기본 키 | | start_time | 타임 스탬프 | | 이름 | 바 차르 | | ------------- + ------------- |
spectra
표
| 열 이름 | 타입 | | ---------------- + ------------- | | 아이디 | 기본 키 | | 이름 | 바 차르 | | 색인 | INT | | spectrum_type | INT | | 표현 | INT | | run_id | 외래 키 | | ---------------- + ------------- |
datapoints
표
| 열 이름 | 타입 | | ------------- + ------------- | | 아이디 | 기본 키 | | spectrum_id | 외래 키 | | mz | 더블 | | num_counts | 더블 | | 색인 | INT | | ------------- + ------------- |
이것이 합리적입니까?
그래서, 당신이 추측 할 수 있듯이, 나는 실험실의 생물학자가 아닌 프로그래머입니다. 그래서 나는 실제 과학자들만큼 과학을 거의 알지 못합니다.
다음은 처리 할 데이터 종류의 단일 스펙트럼 (스캔) 플롯입니다.
소프트웨어의 목표는 피크가 어디에서 얼마나 중요한지 파악하는 것입니다. 우리는 지금 독점 소프트웨어 패키지를 사용하여이를 파악하지만, 자체 분석 프로그램 (R)을 작성하여 도대체 무슨 일이 벌어지고 있는지 알기를 원합니다. 보시다시피, 대부분의 데이터는 흥미롭지 않지만 알고리즘에서 놓친 잠재적으로 유용한 데이터는 버리고 싶지 않습니다. 만족할만한 피크 목록이 만들어지면 나머지 파이프 라인은 원시 데이터 포인트 목록 대신 해당 피크 목록을 사용합니다. 원시 데이터 포인트를 큰 얼룩으로 저장하는 것이 충분하므로 필요할 경우 다시 분석 할 수 있지만 피크 만 별개의 데이터베이스 항목으로 유지하십시오. 이 경우 스펙트럼 당 최대 수십 개의 피크가 있으므로 미친 스케일링 요소는 '