0

Azure 방울 저장소를 사용하여 스트림 분석 작업에서 오는 원격 측정 데이터를 저장하는 현재 프로젝트에 몇 가지 테스트를 추가하고 있습니다. 텔레 메 트리 데이터를 가져 오는 루틴에 대한 테스트를 수행하고자하므로 테스트 데이터 용 별도의 컨테이너를 만들었습니다. 샘플 데이터 세트를 다운로드하고 필요에 맞게 데이터를 수정 한 다음 Azure 스토리지 탐색기를 사용하여 모든 것을 새 컨테이너로 다시 업로드했습니다.Azure 방울 저장소에 테스트 데이터 컨테이너 만들기

테스트가 즉시 실패했고 파일의 LastModified 날짜가 업로드 날짜/시간으로 변경 되었기 때문에이 테스트가 곧 발견되었습니다. 괜찮지 만 업로드 순서도 다릅니다. 내 코드는 파일의 수정 된 날짜를 사용하여 어느 것이 가장 최근인지를 확인합니다. 새 날짜를 기준으로 다른 파일을 반환합니다.

다른 속성을 업데이트하도록 변경할 수는 있지만이 속성은 수정할 수 없다는 것을 발견했습니다. 그래서 해결책을 알았습니다. 프로덕션 인스턴스에서 파일 순서를 얻은 다음 동일한 순서로 테스트 인스턴스의 모든 파일에 접근하는 빠른 스크립트를 작성할 수있었습니다.

하지만 ... 이것이 최선의 선택인지 궁금합니다. 또한 별도의 속성에 맞춤 datetime을 저장하는 것이 '우수 사례'라고 읽었지 만 스트림 애널리틱스 (BLOB 작성)에서 바로 수행 할 수 있다고는 생각하지 않습니다. 나는 또한 이것을하기 위해 Azure 함수를 사용하는 것을 고려했다. (새로운 BLOB => 업데이트 속성), 그러나 나는 어떤 이유로 든 실패 할 수도있는 복잡성과 무언가를 추가하는 것이다.

그래서이 문제를 해결하는 가장 좋은 방법을 찾고 있습니다. 누군가?

업데이트 :이 부분은 아마도 조금 더 설명 할 가치가 있습니다. LastModified 날짜를 사용하여 정렬하는 것 외에도 Blob을 필터링하는데도 사용합니다. BLOB 자체는 ASA 출력 데이터가 포함 된 CSV 파일이므로 원격 측정 기록입니다. 각 레코드에는 시간 소인이 있지만 그 정보는 파일에 있습니다. 데이터를 가져올 때 각 파일에 타임 스탬프가 무엇인지 알기를 원하지 않습니다. 따라서 미리 필터를 사용하여 특정 시간 범위 내의 얼룩을 필터링 한 다음 해당 파일을 내부의 레코드에만 다운로드/열기합니다.

blob을 전혀 건드리지 않는 한 완벽하게 작동하지만 분명히 어떤 이유로 든 blob이 수정되는 즉시 작동을 멈 춥니 다. 그래서 저는 이제이 문제를 해결하기 위해 다른/더 좋은 방법이 필요하다는 것을 확신합니다. 하지만 어떻게?

+0

정확하게 이해한다면 하늘색 분석을 사용하여 일부 계산을 수행하고 결과를 BLOB에 저장하고 그 BLOB를 다른 프로세스에서 사용합니다. 그리고 다운로드 할 얼룩을 알아내는 마지막 수정 시간에 의존하고 있습니까? 맞습니까? 내가 마지막으로 수정 한 시간에 의존해야하는 이유가 궁금합니다. 출력 blob을 시간별로 분할하고 적절한 폴더를 살펴 보는 것이 어떻습니까? –

+0

그게 참으로 유효한 설명이고, 실제로 나는 그런 얼룩을 저장하고 있습니다. 그러나 어떤 경우에는 ASA가 두 개의 CSV 파일을 폴더 안에 넣을 것입니다. 나는 둘 다 로딩 한 다음 올바른 내부 비교를하기 위해 내부 날짜를 사용하는 것으로 할 수 있다고 생각한다. 이 일을 더 일찍 생각해야했는데 때로는 일을 복잡하게 만드는 것이 너무 쉽습니다. – Jasper

답변

0

@Vignesh의 의견은 여기에 가치가 있지만이 답변을 표시하기 위해 직접 제공하겠습니다.

ASA를 사용하면 출력을 날짜/시간별로 구성 할 수 있습니다. 즉,이 경우, 데이터가 디렉토리 구조 등으로 BLOB 저장소에 기록됩니다 의미

2016/06/27/15/23 (= 27-06-2016 15:23) 2016/06/28/11/02 (= 28-06-2016 11:02)

ASA는 출력 당신이 구조 상세 수준을 지정할 수, 내 경우에는 내가 선택 (시간 경로를 포함하지 않으므로) 일별로 저장합니다. ASA 런타임은 특정 시점의 데이터가 올바른 경로에있는 BLOB 내에 저장되도록합니다.

그런 다음 내 논리를 으로 변경하지 않았습니다. 개별 blob 파일의 datetime 스탬프를 더 이상 사용하지 않고 단순히 관심이있는 timerange 내에있는 폴더에서 파일을 읽습니다. 해당 기간 내에 생성 된 데이터를 가져옵니다. 폴더에 파일이 두 개 이상있는 경우 둘 다로드해야합니다. 두 파일이 같은 시간대에 있기 때문입니다. 분이 당신만큼 세분화 된 한, 이런 일에 폴더 구조를 사용하는 것이 약간 이상하다고 느낄지라도 이것은 훌륭하게 작동합니다.

datetime을 추적하는 blob에 대한 별도의 '색인'을 갖는 것도 물론 효과적 일 수 있지만,이 경우에는 필자에게 실제로 필요하지 않은 복잡성이 추가됩니다.

+0

이 IMHO에 폴더를 사용하는 것은 전혀 이상하지 않습니다. – Ytrog

+0

아마, 나는 항상 중요한 무언가를 위해 폴더 구조를 사용하는 것은 나쁜 습관이라고 전했다. 맞춰보세요. 개인적인 것 같아요 :) – Jasper

+0

우리는 항상 REST API의 리소스에 대해 (잘 정렬하여) 사용합니다 – Ytrog

0

블롭 저장소에 저장하려는 데이터와 타임 스탬프와 같은 blob에 대한 메타 데이터라는 두 가지 별도의 사항이 있다고 생각됩니다. 나는 메타 데이터에 대해 다른 (푸른) 데이터베이스를 만들거나 더 간단 단지 (블록) BLOB 메타 데이터를 추가 :

blockBlob.Metadata.Add("from", dateTime.ToString()); 
blockBlob.Metadata.Add("to", dateTime.ToString()); 
blockBlob.Metadata.Add("order", "1"); 

을 그냥 간단한 주문 속성을 추가 할 수 정렬.

+0

당신 말이 맞습니다.하지만 블롭을 작성하는 프로세스를 제어 할 수 있다고 가정합니다. BLOB가 ASA에 의해 디스크에 기록되고 그곳에는 그다지 구성 할 것이 없기 때문에 나는 그 통제력을 가지고 있지 않습니다. 어쨌든, 프로세스를 변경하여 파일 자체의 타임 스탬프가 아닌 디렉토리 구조에 저장된 '타임 스탬프'에 의존합니다. 이 작동, 여기에 대답을 추가 할 것입니다. – Jasper