2010-12-01 5 views
1

그래서 좋은 데이터베이스를 설정하는 방법을 배우려고합니다. 나는 많은 양의 데이터를 정확하게 저장하는 문제를 겪었다. 내가 사용하는 데이터베이스는 MSSQL 2008입니다. 예 :테스트 데이터 용 SQL 데이터베이스 설계

일주일에 약 50,000 개의 장치를 테스트합니다. 이 장치들 각각은 관련된 많은 데이터를 가지고 있습니다. 전반적으로 원시 데이터에서 계산 된 데이터 요약을 살펴보고 있습니다. 요약은 다루기 쉽고, 누군가가 더 자세한 정보를 원한다면 나중에 사용할 수 있도록 데이터베이스에 입력하려고하는 원시 데이터입니다.

요약하면 50,000 개의 장치 세트마다 데이터베이스가 가득합니다.

("DevID") I,V,P I,V,P I,V,P ... 
("DevID") WL,P WL,P WL,P ... 

번째 라인 (126 ~ 882 개 문자) 데이터의 첫 번째 행에 대한 포인트 12000 (~ 102,000 문자) 데이터 포인트를 합계 :하지만, 각 소자는 이와 유사한 데이터가있다. 이 정보를 저장하는 가장 좋은 방법은 무엇입니까? 각각의 모든 장치에 대한 테이블을 생성하십시오 (이 방법은 어렵습니다)? 이 많은 정보를 처리 할 수있는 데이터 유형이 있습니까? 나는 잘 모르겠다.

감사합니다.

EDIT : ~ char 수와 두 번째 라인 데이터 포인트가 업데이트되었습니다.

답변

1

당신은,

CREATE TABLE device 
( id   BIGINT AUTO_INCREMENT PRIMARY KEY 
, DevID  INT 
, DataPoint VARCHAR 
, INDEX(DevID)) 

Psudocode 분명히 하나 개의 테이블에 모든 것을 정상화 할 수있다.

+0

나는 varchar를 생각하고 있었지만 두 번째 줄에 54000 자 이상을 가지고있다. 나는 varchar가 8000만을 가질 수 있다고 생각한다. – HoboDan

+0

각 문자는 새로운 레코드에있다. 그래서 첫 번째 예제에서는 I는 3 행, V는 3 행, P는 3 행이됩니다. –

+0

OH! 음, 흥미 롭습니다 ... 고마워요! – HoboDan

1

이 데이터는 시간 경과에 따른 일련의 판독 값입니까? 시계열 데이터는 반복성이 높은 경향이 있습니다. 따라서 일반적인 전략은 모든 단일 값을 저장하지 않는 방식으로 압축하는 것입니다. 예를 들어 run-length encoding을 사용하거나 시간 간격을 단일 점 대신 각 값과 연결하십시오. 나는 당신의 정확한 요구 사항을 알 수 없기 때문에

+0

+1은 런 - 길이 인코딩 아이디어입니다. –

+0

시간이 지날수록 수치가 아닙니다. 현재 범위에서의 수치입니다. 즉 1mA, 2mA, 3mA이다. 이것은 비슷한 값이있는 곳에서 작동하지만 모두 다르다. – HoboDan

관련 문제