2016-07-28 3 views
0

나는 대규모 데이터 세트를 데이터베이스에 삽입하기 위해 influxDB를 사용하고 라인 프로토콜을 사용하고 있습니다. 내가 얻는 데이터는 키 값 쌍의 형식입니다. 여기서 키는 긴 문자열에 계층 적 데이터가 들어 있으며 값은 단순한 정수 값입니다.InfluxDB 디자인 문제

샘플 키 값 데이터 : 아래

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/allocations 
value = 500 

/path/units/unit/subunits/subunit[name\='NAME2']/memory/chip/application/filter/allocations 
value = 100 
(Note Name = 2) 

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/free 
value = 700 
(Note Instead of allocation it is free at the leaf) 

/path/units/unit/subunits/subunit[name\='NAME2']/memory/graphics/application/filter/swap 
value = 600 
Note Instead of chip, graphics is in path) 

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/size 
value = 400 
Note Different path but till subunit it is same 

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free 
value=100 
Note Same path but last element is different 

내가 데이터를 삽입하기 위해 사용하고있는 라인 프로토콜입니다.

interface, Key= /path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free, valueData= 500 

저는 하나의 측정 즉 인터페이스를 사용합니다. 하나의 태그와 하나의 필드 세트. 그러나이 DB 디자인은 데이터를 쿼리하는 데 문제가되고 있습니다.

데이터베이스 이름을 Name = Name1 또는 모든 하드 디스크의 모든 크기 데이터로 가져 오는 것과 같이 쿼리 할 수 ​​있도록 어떻게 디자인 할 수 있습니까?

미리 감사드립니다. 나는 다음과 같은 것입니다 권하고 싶습니다

+0

나는 여기서 무슨 일이 벌어지고 있는지 약간 혼란 스럽다. 실행할 예제 쿼리를 제공 할 수 있습니까? –

+0

@MichaelDesa 위의 언급 데이터를 효율적으로 검색하기 위해 스키마 디자인에 대해 궁금합니다./path/units/unit/subunits/subunit [name \ = 'NAME2']/하드 디스크/데이터/무료 또는/path/units/unit/subunits/subunit [name \ = 'NAME2']/하드 디스크/데이터/할당 – Ammad

+0

'Key' 값의 카디널리티는 무엇입니까? –

답변

1

스키마 : filename가 태그이며 value이 필드

interface,filename=/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free value=500 

.

이 스키마의 수는 filename이므로이 카디널리티가 제대로 작동해야합니다.

+0

감사합니다. Michael, 키의 부분 문자열 부분을 어떻게 쿼리 할 수 ​​있습니까? 예를 들어 이름이 "NAME2"인 모든 "/ harddisk"에 대해 'value'의 카운트를 얻습니다. – Ammad

+0

InfluxQL은 태그에 대한 정규 표현식을 지원하므로 쿼리가 SELECT * FROM interface WHERE filename = ~/Harddisk /와 유사합니다. 정규식이 일치하는 많은 쿼리를 수행하는 경우에는 여러 파일에 'filename'을 나눠 넣는 것이 좋습니다. –