2011-03-15 4 views
3

관계형 데이터베이스 (MySQL 또는 SQLite)에 계층 적 2 차원 과학 데이터 집합을 저장하려고합니다. 각 데이터 세트에는 임의의 수의 열이있는 숫자 데이터 테이블이 있습니다. 또한 각 데이터 집합에는 테이블의 지정된 행과 연관된 동일한 유형의 하나 이상의 하위 항목이있을 수 있습니다. 각 데이터 세트는 일반적으로 1 ~ 100 개의 열과 1 ~ 1,000,000 개의 행을 포함합니다. 데이터베이스는 많은 데이터 세트 (> 1000)를 처리 할 수 ​​있어야하며 데이터 읽기/쓰기는 비교적 빠르다.관계형 데이터베이스에 과학 데이터 저장

이러한 종류의 데이터를 저장하는 최상의 DB 스키마는 무엇입니까? 개별 데이터 세트의 이름, ID 및 관계가있는 "마스터"테이블과 숫자 값이 들어있는 데이터 세트 당 하나의 테이블을 갖는 것이 합리적입니까?

+0

"임의의 수의 열이있는 2D 테이블 ..."이란 무엇입니까? 왜 여기에 코드를 보여주지 그래? –

+0

무엇을 최적화하려고합니까? 관계형 데이터베이스를 사용하여 얻고 자하는 이점은 무엇입니까? – CookieOfFortune

+0

주요 목표 중 하나는 여러 프로세스/컴퓨터에서 동시에 데이터에 액세스하는 기능입니다 (예 : 측정 중에 데이터 집합을 시각화하는 것). – ThePhysicist

답변

4

는 이름, ID 및 개인 데이터 세트의 관계와 수치 값을 포함하는 데이터 세트 당 또한 하나 개의 테이블에서 "마스터"테이블이 합리적인가요?

그렇게하는 방법입니다.

데이터가 일반적으로 그렇게 작동하지 않기 때문에 '임의의 열'이 어떻게 작동하는지 정확히 알 수 없습니다. 그럼에도 불구하고 행, 열, 행으로 저장하는 것처럼 들리네요. 발이 제대로 작동 할 수도 있습니다.

정직하게도 (최대, 최소 등) 검색 할 필요가없는 경우 일종의 플랫 파일을 사용하는 것이 좋습니다.

흥미로운 또 다른 설정은 각 데이터 세트에 별도의 데이터베이스 파일과 하나의 마스터 파일을 추가하여 SQLite를 사용하는 것입니다.

무엇을 선택하든, 실제로 얼마나 잘 작동할지는 데이터로 무엇을 할 것인가에 달려 있습니다.

3

성능면에서 유연성을 잃게 될 것입니다. 피할 수있는 것처럼 들리지만 최상의 성능을 제공하는 dB 스키마를 하드 코드 할 수 있습니다.

런타임시 결정된 스키마를 '마스터'테이블에 저장 한 채로두면 유연성을 제공하지만 참조 무결성을 강화하고 데이터 유형을 설정하는 능력은 줄어 듭니다.

잠시 동안 두 가지 방법을 시도해 볼 수 있습니다. 어떤 정보를 얻을 수 있는지에 대한 정보가 충분할 때까지 작업을 수행하는 것이 좋습니다.

2

문제 도메인을 이해하지 않고 구체적으로 설명하기는 어렵지만 데이터가 본질적으로 관계형 인 경우 관계형 모델을 사용하십시오. 데이터가 본질적으로 관계형이 아니라면 관계형 모델로 강제 변환하려고하지는 않을 것입니다. 모든 데이터 집합에 ID가 있다고해서 그것이 동일하다는 것을 의미하지는 않습니다. 또는 기본 키로 사용하기에 적합합니다.

각 데이터가 고유 한 테이블 (또는 자식 레코드가있는 경우 테이블)로 설정하여 시작하고 필요할 경우 마스터 테이블을 만드는 것이 좋습니다.

zebediah49의 질문에 "정말 데이터베이스를 사용합니까? 플랫 파일이 좋지 않습니까?"

2

우리는 이러한 데이터를 자신의 플랫 파일에 저장합니다. 파일의 헤더에는 읽을 수 있도록 충분한 정보 (타임 스탬프, 행 수/열 ... 등)가 들어 있습니다. 그런 다음이 데이터에 대한 메타 정보가 데이터베이스에 있습니다.최소한 이것은 파일 위치이지만 데이터에 대한 다른 정보를 포함 할 수 있습니다. 예를 들어 높은 수준에서 세부 사항을 요약하는 프록시 변수에 데이터를 집계합니다. 일반적으로이 요약 데이터는 충분하지만 필요한 경우 모든 세부 정보 파일을 읽을 수 있습니다.

관련 문제