2014-04-23 2 views
0

일부 슬레이브 장치에서 정보를 검색하는 서버 응용 프로그램이 있으며 검색된 데이터는 장치 당 초당 약 200 개의 부동 소수점에 해당합니다. 응용 프로그램은 시간대가 몇 분에서 몇 달까지 다양 할 수있는 보고서를 작성할 수 있어야합니다. 그렇기 때문에 나는 일종의 데이터웨어 하우징을 구현했습니다.데이터 모델 - 많은 양의 정보를 저장하는 가장 좋은 방법

응용 프로그램이 잘 작동하지만 클라이언트가 내 허락에서 벗어 났으므로 응용 프로그램을 개선하고 싶습니다. 그래서 내가 사용하고있는 데이터 모델이 좋은지 또는 사용하는 것이 더 좋을지 묻고 싶습니다. 다른 하나는, 그래서 여기 내가 사용하고 무엇을 :

이의 내가 & 2. 장치 1이 있다고 가정하자 나는 다음과 같은 테이블을 생성 : - data_s_1 & data_s_2를 :가 들어가는있는 내가 데이터를 저장합니다. - data_m_1 & data_m_2 : 지난 60 초간 평균 데이터입니다. - data_h_1 & data_h_2 : 지난 60 분 동안의 데이터 평균입니다.

이 데이터 모델을 사용하면 내가 요청한 보고서를 신속하게 검색 할 수 있습니다. 하위 테이블에서 데이터를 빠르게 찾을 수있는 상위 테이블에 인덱스가 저장되어 있습니다. 예 : data_h_1의 항목에는 평균에 사용 된 data_m_1 테이블의 첫 번째 항목과 마지막 항목의 색인이 있습니다. 따라서 해당 데이터를 가져와야하는 경우 색인을 통한 검색을 사용하면 훨씬 빠릅니다.

device_id 필드가있는 유일한 data_s 테이블처럼 모든 장치 (클라이언트가 20 개 이상 있음)에 대해 고유 한 테이블을 만드는 것이 더 나은지 묻고 싶습니다. 그것은 문서화 할 때 더 쉽게 만들지 만, 이것을 할 올바른 방법이 있는지 나는 모른다. 모든 조언을 크게 주시면 감사하겠습니다.

답변

1

일반적으로 각 데이터 유형에 대해 하나의 테이블을 갖는 것이 좋습니다 (이러한 각 data_s_x 테이블의 구조는 동일하다고 가정합니다). 이렇게하면 데이터베이스 구조를 변경하지 않고 새 장치를 쉽게 추가 할 수 있습니다.

그러나 하나의 테이블에서 데이터 볼륨이 증가하지만 올바른 색인이 적용된 것이 중요합니다. 어쨌든 당신의 경우에 그렇습니다!

data_m 및 data_h 테이블은 엄격하게 말하자면 비정규 화 된 것입니다.이 테이블에는 파생 데이터가 포함되어 있으며 필요한 경우 해당 내용을 계산할 수 있으므로 실제로 필요하지 않습니다. 그러나 성능상의 이유로 이러한 비정규 화는 불합리하지 않습니다. 나는 그것들을 추가했는지 여부에 대해서는 잘 모르겠다. 왜냐하면 성능이 나 빠졌기 때문이다. 만약 당신이하지 않았다면, 내가 사용하는 보고서가 여전히 AVG 계산을 수행 할 때 받아 들일 수있게 실행 하는지를 보는 것이 하나의 가능한 향상을 제안 할 것이다. 보고서를 생성하는 SQL. 성능이 정상이면 테이블 W 유지 보수하는 처리를 제거 할 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 당신이 말했듯이 성능 문제를 위해 data_m 및 data_h 테이블을 추가했습니다. 그러나 귀하의 제안을 읽고 약간의 조사를 통해 색인 생성이 제대로 수행되지 않았으므로이를 수정하고 이러한 변경 사항으로 성능을 테스트해야합니다. – Aquiles

관련 문제