KR20170035985A - 데이터 기록 동작들을 위한 파일의 식별 - Google Patents

데이터 기록 동작들을 위한 파일의 식별 Download PDF

Info

Publication number
KR20170035985A
KR20170035985A KR1020177004531A KR20177004531A KR20170035985A KR 20170035985 A KR20170035985 A KR 20170035985A KR 1020177004531 A KR1020177004531 A KR 1020177004531A KR 20177004531 A KR20177004531 A KR 20177004531A KR 20170035985 A KR20170035985 A KR 20170035985A
Authority
KR
South Korea
Prior art keywords
data
file
write operation
files
data write
Prior art date
Application number
KR1020177004531A
Other languages
English (en)
Inventor
브라이언 제이슨 도브
누노 호세 핀토 베사 드 멜로 세르퀘이라
타일러 다운스
앨리슨 엠 레예스
마틴스 루이 바르보사
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170035985A publication Critical patent/KR20170035985A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F17/30115
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F17/30129

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 기록 동작들에 대한 파일들을 식별하기 위한 기법들이 설명된다. 다양한 실시예들에 따라, 혼합된 데이터의 스트림들은 유사한 데이터의 개별 세트들을 발생시키기 위해 다양한 기준들 및/또는 필터들에 기반하여 소팅(sort)된다. 데이터 세트들은 영구 스토리지에 기록되도록 준비시 개별 데이터 큐들에서 버퍼링된다. 다양한 실시예들에 따르면, 파일들은 데이터 세트들을 저장하도록 요구된다. 예를 들어, 데이터 세트에 대한 기록 파라미터들을 포함하는 파일 요청이 제출된다. 기록 파라미터들에 기초하여, 데이터 세트를 저장하기 위해 파일이 식별되고 선택된다. 데이터 세트가 파일에 기록되도록 인에이블시키는 파일에 대한 식별자가 제공된다.

Description

데이터 기록 동작들을 위한 파일의 식별{IDENTIFYING FILES FOR DATA WRITE OPERATIONS}
오늘날의 연결된 환경(connected environment)은 방대한 양의 데이터를 발생시킨다. 예를 들어, 클라우드 기반 아키텍처들 및 서비스들은 시스템 분석, 진단, 등과 같은 다양한 목적으로 사용될 수 있는 데이터를 발생시킨다. 분산 환경(distributed environment)에서 대량의 데이터를 처리하는 것은 많은 구현상의 도전과제들을 제시한다.
본 요약은 아래의 상세한 설명에서 보다 상세하게 설명되는 개념들의 선택을 단순한 형태로 소개하기 위해 제공된다. 본 요약은 청구된 발명내용의 중요한 피처들 또는 필수적인 피처들을 식별하도록 의도된 것이 아니며, 청구된 발명내용의 범위를 결정하는데 도움이 되도록 의도된 것도 아니다.
데이터 기록 동작들에 대한 파일들을 식별하기 위한 기법들이 설명된다. 다양한 실시예들에 따라, 혼합된 데이터의 스트림들은 유사한 데이터의 개별 세트들을 발생시키기 위해 다양한 기준들 및/또는 필터들에 기반하여 소팅(sort)된다. 데이터 세트들은 영구 스토리지에 기록되도록 준비시 개별 데이터 큐들에서 버퍼링된다. 다양한 실시예들에 따르면, 파일들은 데이터 세트들을 저장하도록 요구된다. 예를 들어, 데이터 세트에 대한 기록 파라미터들을 포함하는 파일 요청이 제출된다. 기록 파라미터들에 기초하여, 데이터 세트를 저장하기 위해 파일이 식별되고 선택된다. 데이터 세트가 파일에 기록되도록 인에이블시키는 파일에 대한 식별자가 제공된다.
첨부 도면들을 참고하여 상세한 설명이 설명된다. 도면들에서, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 식별한다. 설명 및 도면들에서 상이한 경우에 있어 동일한 참조 번호들의 사용은 유사하거나 동일한 항목들을 표시할 수 있다.
도 1은 본 명세서에 논의된 기법들을 이용하도록 동작가능한 예시적인 구현예에서의 환경의 예시이다.
도 2는 하나 이상의 구현예들에 따른 데이터를 데이터 세트들로 소팅하기 위한 예시적인 구현 시나리오를 예시한다.
도 3은 하나 이상의 구현예들에 따른 데이터 세트들을 저장하기 위하여 파일을 획득하기 위한 예시적인 구현 시나리오를 예시한다.
도 4는 하나 이상의 실시예들에 따른 데이터를 소팅하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 5는 하나 이상의 실시예들에 따른 데이터 세트를 저장하기 위하여 파일을 획득하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 6은 하나 이상의 실시예들에 따른 데이터 기록 동작에 대한 파일을 식별하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 7은 하나 이상의 실시예들에 따른 데이터 기록 동작에 대한 파일을 선택하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 8는 하나 이상의 실시예들에 따른 데이터 기록 동작이 성공적인지 여부를 확인하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 9는 하나 이상의 실시예들에 따른 데이터 기록 동작에 대한 파일을 선택하기 위한 방법에서의 단계들을 설명하는 흐름도이다.
도 10은 본 명세서에 설명된 기법들의 실시예들을 구현하도록 구성되는, 도 1을 참고하여 설명된 바와 같은 예시적인 시스템 및 컴퓨팅 디바이스를 예시한다.
개요
데이터 기록 동작들에 대한 파일들을 식별하기 위한 기법들이 설명된다. 다양한 구현예들에 따라, 다양한 타입들, 카테고리들, 날짜들 등의 데이터를 포함하는 혼합된 데이터의 스트림들이 수신된다. 혼합된 데이터는 유사한 데이터의 개별 세트들, 예를 들어 개별 이종(heterogeneous) 데이터 세트들을 발생시키기 위해 다양한 기준들 및/또는 필터들에 기반하여 소팅된다. 데이터 세트들은 영구 스토리지에 기록되도록 준비시 개별 데이터 큐들에서 버퍼링된다.
다양한 구현예들에 따르면, 파일들은 데이터 세트들을 저장하도록 요구된다. 예를 들어, 데이터 세트 내의 데이터의 카테고리, 데이터 세트의 사이즈, 데이터 세트에 대한 날짜 파라미터(예를 들어, 데이터 세트의 데이터가 수집된 날짜) 등과 같은 데이터 세트에 대한 기록 파라미터들을 포함하는 파일 요청이 제출된다. 기록 파라미터들에 기초하여, 데이터 세트를 저장하기 위해 파일이 식별되고 선택된다. 데이터 세트가 파일에 기록되도록 인에이블시키는 파일에 대한 식별자(예를 들어, 포인터)가 제공된다. 본 명세서에 논의된 기법들은 많은 상이한 데이터 세트들에 대한 많은 파일 요청들이 제출되고 이행되게끔 인에이블하도록 고도로 확장가능하므로, 대용량 데이터 수집을 위한 데이터 기록 프로세스들의 효율을 증가시킨다. 또한, 파일들에 대한 많은 상이한 요청들이 동시에 발생할 수 있으며, 본 명세서에서 논의된 기법들은 상이한 파일 요청들 간의 충돌을 피하면서 그러한 동시 요청들이 이행되도록 인에이블한다.
다양한 구현예들에 따라, 상이한 지리적 및 물리적 위치들에서 유지되는 파일들과 같은 많은 다른 저장 위치들로부터 파일이 선택될 수 있다. 또한, 적어도 몇몇 구현예들은 파일 요청들이 상이한 파일 시스템들에 상주하는 파일들에 대한 상태 인식을 유지하는 엔티티에 의해 관리될 수 있도록, 복수의 분산 파일 시스템들에 걸쳐 저장되는 파일들의 중앙집중식 뷰(centralized view)를 제공한다. 따라서, 기록될 데이터를 갖는 엔티티들이 상이한 개별 파일 시스템들과 협상할 필요없이 파일을 간단히 요청하고 수신할 수 있도록, 파일들의 고도로 분산된 콜렉션들을 관리하는 복잡성은 추상화될 수 있다. 이러한 기능들을 가능하게 하는 다양한 양상들 및 구현예들은 아래에 상술된다.
하기의 논의에서, 본 명세서에 설명된 기법들을 이용하도록 동작가능한 예시적 환경이 먼저 설명된다. 다음으로, "예시적 구현 시나리오들"이라는 제목의 섹션은 하나 이상의 구현예들에 따라 데이터 기록 동작들에 대한 파일들을 식별하기 위한 몇몇 예시적인 구현 시나리오들을 설명한다. 이에 이어서, "예시적 프로시져들"이라는 제목의 섹션은 하나 이상의 구현예들에 따라 데이터 기록 동작들에 대한 파일들을 식별하기 위한 몇몇 예시적인 프로시져들을 설명한다. 마지막으로, "예시적 시스템 및 디바이스"라는 제목의 섹션은 하나 이상의 구현예들에 따라 본 명세서에 논의된 기법들을 이용하도록 동작가능한 예시적 시스템 및 디바이스를 설명한다.
하나 이상의 구현예들에 따른 예시적인 구현예들의 개요를 제시하였고, 이제 예시적 구현예들이 이용될 수 있는 예시적인 환경을 고려한다.
예시적 환경
도 1은 본 명세서에 설명된 데이터 기록 동작들에 대한 파일들을 식별하기 위한 기법들을 이용하도록 동작가능한 예시적인 구현예에서의 환경(100)의 예시이다. 일반적으로, 환경(100)은 본 명세서에 논의된 기법들을 구현하기 위해 이용될 수 있는 다양한 디바이스들, 서비스들 및 기능들을 포함한다. 환경(100)은 다양한 타입의 데이터를 발생시키는 기능들을 나타내는 데이터 발생기(102)를 포함한다. 적어도 몇몇 구현예들에서, 데이터 발생기(102)는 종래의 컴퓨터(예를 들어, 데스크탑 개인용 컴퓨터, 랩탑 컴퓨터 등), 이동국, 엔터테인먼트 기기, 스마트폰, 넷북, 게임 콘솔, 핸드헬드 디바이스(예를 들어, 태블릿), 웨어러블 컴퓨팅 디바이스, 등과 같은 이산 디바이스들을 나타낸다. 데이터 발생기(102)는 또한 데이터 센터들에서 실행되는 서비스들, 분산된 프로세스들, 환경 데이터를 수집하는 기능들 등과 같은 데이터를 발생시키는 다양한 서비스들 및 프로세스들을 포함할 수 있다.
환경(100)은 데이터 발생기들(102)에 의해 발생된 데이터를 수신 및 프로세싱하고, 프로세싱된 데이터가 스토리지 시스템들(106)에 의해 저장될 수 있게 하는 기능부를 나타내는 스토리지 매니저(104)를 더 포함한다. 적어도 몇몇 구현예들에서, 스토리지 매니저(104)는 네트워크(108)를 통해 데이터 발생기들(102)로부터 데이터를 수신한다. 일반적으로, 네트워크(108)는 다양한 엔티티들 간의 데이터 전송을 위한 접속성을 제공하는 인프라구조 및 컴포넌트들을 나타낸다. 네트워크(108)는 예컨대, 유선 및 무선 네트워크들, 근거리 네트워크들(LAN), 광역 네트워크들(WAN), 인터넷 등의 조합들을 통한 다양한 방식들로 구현될 수 있다.
스토리지 시스템들(106)은 다양한 방식들로 구현될 수 있다. 예를 들어, 스토리지 시스템들(106)의 상이한 인스턴스들은 다양한 상이한 물리적 및/또는 지리적 위치들에 걸쳐 분산될 수 있다. 예를 들어, 개별 스토리지 시스템들(106)은 스토리지 매니저(104)의 인스턴스들을 유지할 수 있다. 따라서, 단일 스토리지 매니저(104)가 예시되나, 스토리지 매니저(104)의 복수의 인스턴스들이 상이한 엔티티들에 의해 및/또는 상이한 위치들에서 이용될 수 있음이 이해되야 한다. 대안적으로 또는 부가적으로, 스토리지 매니저(104)는 복수의 상이한 분산형 스토리지 시스템들(106)을 서비스할 수 있는 중앙집중화된 서비스로서 구현될 수 있다. 적어도 몇몇 구현예들에서, 스토리지 매니저(104) 및/또는 스토리지 시스템들(106)은 데이터 센터들, 엔터프라이즈 설비들, 클라우드 기반 스토리지 서비스들 등을 통해 구현될 수 있다.
스토리지 매니저(104)는 데이터 소터(sorter)(110), 데이터 기록기(112) 및 파일 브로커(broker)(114)를 포함하는 본 명세서에서 논의된 데이터 기록 동작들에 대한 파일을 식별하기 위한 기법들을 구현하기 위한 다양한 컴포넌트들을 포함한다. 데이터 소터(110)는 데이터 발생기(102)로부터 수신된 데이터를 소팅하고, 소팅된 데이터를 상이한 데이터 큐들(116)에 배치하기 위한 기능부를 나타낸다. 데이터는 다양한 상이한 기준들에 기반하여 소팅될 수 있으며, 그 예들은 하기에 논의된다. 일반적으로, 데이터 큐들(116)은 상이한 카테고리들 및/또는 타입들의 데이터의 일시적인 저장을 한 기능들을 나타낸다. 예를 들어, 개별 데이터 큐들(116)은 각각 상이한 카테고리 및/또는 데이터 타입과 연관될 수 있다. 따라서, 적어도 몇몇 구현예들에서, 데이터 소터(110)는 데이터의 이종 스트림을 취하여 이를 개별 동종(homogeneous) 데이터 세트들 및/또는 데이터 스트림들로 소팅하는 멀티플렉서로 간주될 수 있다.
데이터 기록기(112)는 데이터 큐들(116)로부터 데이터를 검색하고(retrieve), 데이터가 물리적 저장 위치에 저장되도록 하는 기능부를 나타낸다. 예를 들어, 데이터 기록기(112)는 파일 브로커(114)로부터 특정 데이터 큐(116)로부터의 데이터를 저장하기 위한 저장 위치를 요청한다. 본 명세서에 논의된 구현예들에 따르면, 파일 브로커(114)는 스토리지 시스템들(106)에 의해 저장된 파일들(120)에 대한 상태 정보를 포함하는 파일 테이블(118)에 액세스한다. 적어도 몇몇 구현예들에서, 파일 테이블(118)은 비-구조적 질의 언어(SQL) 스토리지 구조, 예를 들어, 비 SQL 및/또는 비 SQL 스토리지 구조로서 구현된다.
다양한 구현예들에 따르면, 파일 테이블(118)은 개별 파일들(120) 및 파일들(120)에 대한 상태 정보를 식별한다. 예를 들어, 파일 테이블(118)은 파일의 현재 사이즈(예를 들어, 바이트 단위), 파일에 대한 최대 메모리 사이즈, 파일이 얼마나 많은 이용가능한 저장 공간을 갖는지와 같은 개별 파일들에 대한 메모리 사이즈 정보를 표시한다. 파일 테이블(118)은 또한 파일이 기록될 수 있는지(예를 들어, 파일이 현재 사용중인지 및/또는 락킹(lock)되었는지), 파일이 타임 아웃되었는지 등을 표시할 수 있다. 파일 테이블(118)은 또한 개별 파일들에 저장된 데이터의 타입들 및/또는 카테고리들과 같은 개별 파일들에 대한 설명 정보를 포함한다. 파일 테이블(118)은 또한 개별 파일들에 액세스하는데 사용될 수 있는 포인터들과 같은 개별 파일들에 대한 ID 및/또는 액세스 정보를 포함할 수 있다.
데이터 기록기(112)로부터의 요청에 응답하여, 파일 브로커(114)는 데이터 큐(116)로부터 데이터를 수신하기에 적합한 파일들(120)로부터의 후보 파일을 식별한다. 파일 브로커(114)는 데이터 기록기(112)가 데이터를 파일에 기록할 수 있도록, 파일을 데이터 기록기(112)에 통지한다. 이 프로세스 및 관련 프로세스들에 대한 추가 세부사항들은 아래에서 논의된다.
스토리지 매니저(104)의 다양한 기능들이 통합된 것으로 예시되나, 기능들 중 적어도 일부는 상이한 물리적 위치들에서 및/또는 상이한 엔티티들에 의해 구현될 수 있음이 이해될 것이다. 다양한 구현들에 따르면, 환경(100)에 예시된 상이한 엔티티들은 하드웨어, 소프트웨어 및/또는 이들의 조합들을 통해 구현될 수 있다.
본 명세서에 설명된 기법들이 동작할 수 있는 예시적인 환경의 속성들을 설명하고, 이제 하나 이상의 구현예들에 따라 데이터 기록 동작들에 대한 파일들을 식별하기 위한 몇몇 예시적인 구현 시나리오들을 고려한다.
예시적 구현 시나리오들
다음 섹션은 하나 이상의 구현예들에 따라 데이터 기록 동작들에 대한 파일들을 식별하기 위한 몇몇 예시적인 구현 시나리오들을 설명한다. 예시적 구현 시나리오들은 상기 논의된 환경(100) 및/또는 임의의 다른 적절한 환경에서 구현될 수 있다.
도 2는 하나 이상의 구현예들에 따른 데이터를 데이터 세트들로 소팅하기 위한 예시적인 구현 시나리오(200)를 예시한다. 시나리오(200)는 환경(100)을 참조하여 위에서 소개된 다양한 엔티티들 및 컴포넌트들을 포함한다.
시나리오(200)에서, 데이터 소터(110)는 데이터 발생기(102)로부터 데이터 스트림(202)을 수신한다. 데이터 스트림(202)은 임의의 적절한 타입의 데이터를 포함할 수 있다. 적어도 몇몇 구현예들에서, 데이터 스트림(202)은 다양한 디바이스들, 시스템들, 센서들 및/또는 다른 데이터 생성 메커니즘 또는 프로세스로부터 수집된 원격측정 데이터를 포함한다. 상기 논의된 목적을 위해, 데이터 스트림(202)은 VoIP(Voice over Internet Protocol) 호출, 비디오 호출, 채팅 세션, 통합 통신 (UC, unified communications) 세션 등과 같은 상이한 사용자 디바이스들 간의 통신 이벤트들로부터 수집된 원격측정 데이터(예를 들어, 메타데이터)를 나타낸다. 그러나, 이는 제한하는 것으로 해석되어서는 안 되며, 데이터 스트림(202)은 임의의 타입의 데이터를 포함할 수 있다.
시나리오(200)에 더하여, 데이터 스트림(202)은 광범위한 상이한 타입들 및 카테고리들의 데이터를 포함하는 이종 데이터 콜렉션을 나타낸다. 따라서, 데이터 소터(110)는 데이터 스트림(202)을 데이터 세트(204a), 데이터 세트(204b) 및 데이터 세트(204n)로 파싱한다(parse). 일반적으로, 데이터 세트들(204a-204n)은 상이한 속성들을 갖는 상이한 카테고리의 데이터에 대응한다. 데이터 소터(110)는 데이터 세트들(204a-204n)을 각각의 데이터 큐들(116)에 저장(예컨대, 버퍼링)한다. 이 특정 예에서, 데이터 세트(204a)는 데이터 큐(206a)에 저장되고, 데이터 세트(204b)는 데이터 큐(206b)에 저장되고, 데이터 세트(204n)는 데이터 큐(206n)에 저장된다. 일반적으로, 데이터 큐들(204a-204n)은 데이터 스트림(202)으로부터 추출된 특정 카테고리의 데이터로 개별적으로 채워지는(populated) 임시 데이터 저장소(store)들(예를 들어, 버퍼들)를 나타낸다.
예를 들어, 통신 이벤트들을 참조하면, 데이터 세트들(204a-204n)은 각각 많은 상이한 개별 통신 세션들로부터 수집된 상이한 원격측정 데이터를 나타낸다. 이러한 원격측정 데이터의 예들은 이벤트 타입(예를 들어, 음성, 비디오, 메시징 등), 이벤트 날짜, 이벤트 기간, 개별 이벤트들이 개시된 방법, 이벤트 품질 속성들(예를 들어, 패킷 드롭 퍼센트, 이벤트가 드랍되었는지 여부, 이벤트 품질에 관한 사용자 피드백 등), 통신 이벤트 중에 이용된 피처들 등을 포함한다. 이러한 특정 카테고리의 데이터는 단지 예시를 목적으로 제시되며, 광범위한 상이한 타입들 및 카테고리들의 데이터가 다양한 구현예들에 따라 인식 및/또는 정의될 수 있다.
시나리오(200)가 단일 데이터 스트림(202)을 참조하여 예시되나, 데이터 스트림(202)은 많은 상이한 데이터 발생기들(102)로부터 수신되고 그 구성 데이터 카테고리들로 파싱되는 많은 상이한 이산 데이터 스트림들을 나타낼 수 있다. 예를 들어, 통신 이벤트들을 참조하면, 데이터 스트림(202)은 수백만 개 이상의 상이한 이산 통신 이벤트들로부터의 원격측정 데이터를 나타낼 수 있다.
도 3은 하나 이상의 구현예들에 따른 데이터 세트들을 저장하기 위하여 파일을 획득하기 위한 예시적인 구현 시나리오(300)를 예시한다. 시나리오(300)는 환경(100)을 참조하여 위에서 소개된 다양한 엔티티들 및 컴포넌트들을 포함한다. 적어도 몇몇 구현예들에서, 시나리오(300)는 시나리오(200)의 연속적 예시이다.
시나리오(300)에서, 데이터 기록기(112)는 데이터 큐들(206a-206n)이 영구적 스토리지에 기록될 데이터 세트들(204a-204n)로 채워진다는 것을 확인한다. 예를 들어, 데이터 기록기(112)는 데이터 큐들(116)이 스토리지에 기록될 데이터를 갖는지 여부를 확인하기 위해 데이터 소터(110)에 질의한다. 대안적으로 또는 부가적으로, 데이터 소터(110)는 데이터 큐들(116)이 스토리지에 기록될 데이터 세트들(204a-204n)을 갖는다는 것을 데이터 기록기(112)에 통지한다.
데이터 큐들(116)이 저장될 데이터를 포함하는 것을 확인하는 것에 응답하여, 데이터 기록기(112)는 파일 질의(302)를 파일 브로커(114)에 전달한다. 다양한 구현예들에 따르면, 파일 질의(302)는 데이터 세트들(204a-204n)에 관한 정보, 예컨대 데이터에 대한 카테고리들, 데이터가 수집된 날짜(들), 데이터의 양(예를 들어, 바이트 단위), 등을 명시하는 기록 파라미터들(304)을 포함한다. 파일 브로커(114)는 파일 질의(302)를 수신하고, 기록 파라미터들을 결정하기 위한 요청을 검사한다.
기록 파라미터들(304)에 기반하여, 파일 브로커(114)는 기록 파라미터들(304)에 대응하는 파일 테이블(118)로부터 파일들(120)의 파일(306a), 파일(306b) 및 파일(306n)을 식별한다. 예를 들어, 파일들(306a-306n)은 데이터 세트들(204a-204n)에 대한 각각의 데이터 카테고리들, 날짜들 등에 대응하고, 데이터 세트들 (204a-204n)의 데이터에 대해 충분한 저장 공간을 갖는다. 적어도 몇몇 구현예들에서, 파일들(306a-306n)은 데이터 세트들(204a-204n)에 대해 동일하거나 유사한 카테고리의 데이터로 이전에 기록된 기존(existing) 파일들이다. 대안적으로 또는 추가적으로, 기존 파일(120)이 특정 데이터 세트에 대해 이용가능하지 않으면(예를 들어, 파일 테이블(118)에서 식별되지 않으면), 데이터 세트에 대해 새로운 파일이 생성될 수 있다. 후보 파일들을 선택하기 위한 상세한 프로시저는 하기에 논의된다.
시나리오(300)에 더하여, 파일 브로커(114)는 다른 엔티티들(예를 들어, 파일 브로커(114)의 다른 인스턴스들)이 파일들(306a-306n)에 액세스하지 않도록 및/또는 파일들(306a-306n)을 데이터 기록을 위해 이용가능한 것으로 식별하지 않도록, 파일들(306a-306n)에 락을 설정한다. 다양한 구현예들에 따르면, 파일 브로커(114)는 파일들(306a-306n)이 잠금 상태임을, 예를 들어, 파일들(306a-306n)이 이용가능 및/또는 현재 사용중이지 않은 것을 표시하기 위해 파일 테이블(118)을 갱신한다. 파일 브로커(114)는 파일들(306a-306n)에 대한 포인터들(310)을 포함하는 질의 응답(308)을 발생시킨다. 일반적으로, 포인터들(310)은 파일들(306a-306n)을 식별하는 그리고/또는 파일들(120) 중 파일들(306a-306n)의 각각의 위치를 식별하는 데이터를 나타낸다.
파일 브로커(114)는 질의 응답(308)을 데이터 기록기(112)에 전달한다. 데이터 기록기(112)는 포인터들(310)를 얻기 위해 질의 응답(308)을 파싱한다. 데이터 기록기(112)는 포인터들(310)을 사용하여 데이터 세트들(204a-204n)을 파일을(308a-308n)의 각각의 파일들에 기록한다.
다양한 구현예들에 따르면, 데이터 기록기(112)가 데이터 세트들(204a-204n)을 각각의 파일들(308a-308n)에 기록하는 것을 완료한 후에, 데이터 기록기(112)는 파일 브로커(114)에게 파일들(306a-306n)에 대한 기록이 완료되었음을 통지한다. 이에 응답하여, 파일 브로커(114)는 데이터 세트들(204a-204n)이 각각의 파일들(306a-306n)에 성공적으로 기록되었는지를 검증할 수 있다. 예를 들어, 파일 브로커(114)는 파일들(306a-306n)에 대한 기록 동작들 동안에 임의의 기록 에러들이 발생했는지 여부를 확인한다. 데이터 세트(204a-204n)가 파일(306a-306n)에 성공적으로 기록되지 않도록 에러가 발생하면, 파일 브로커(114)는 데이터 세트들(204a-204n)이 성공적으로 저장되지 않았음을 데이터 기록기(112)에 통지한다. 적어도 몇몇 구현예들에서, 데이터 기록의 실패에 응답하여, 시나리오(300)는 새로운 파일을 선택하고 데이터 세트들(204a-204n)을 새로운 파일들에 기록하기 위해 다시 수행될 수 있다.
파일 브로커(114)가 파일들(306a-306n)에 대한 데이터 기록이 성공적이라는 것을 확인하면, 파일 브로커(114)는 데이터 기록기(112)에 기록 동작들이 성공적이었다는 것을 통지한다. 데이터 기록기(112)는 그 후 데이터 큐들(116)로부터의 다른 데이터 세트들로 시나리오(200)로 시작하는 것과 같은 다른 데이터 기록 동작들을 수행할 수 있다. 파일 브로커(114)는 또한 파일 테이블(118)을 갱신하여 후보 파일들(120)이 이제 예를 들어 파일들(306a-306n)을 언락킹(unlock)하기 위해 기록되도록 이용가능함을 표시할 수 있다. 파일 브로커(114)는 또한 파일 테이블(118)을 갱신하여 각각의 파일들(306a-306n)에서 이용가능한 저장 공간의 양을 표시할 수 있다. 적어도 몇몇 구현예들에서, 예를 들어, 파일들(120) 중 적어도 일부는 최대 사이즈 문턱치를 가질 수 있다. 따라서, 파일 기록 동작이 파일(120)로 하여금 최대 사이즈 문턱치를 초과하게 하면, 파일(120)은 그 기록 동작에 대한 후보가 아닌 것으로 표시될 수 있다.
다양한 구현예들에 따라, 시나리오들(200 및 300)의 많은 경우들이 예컨대 복수의 상이한 저장 위치들에 걸쳐 동시에 수행되어, 본 명세서에 논의된 기법들에 따라 영구적 저장을 위해 데이터 세트들로 많은 상이한 이종 데이터 스트림들을 소팅할 수 있다. 또한, 시나리오들(200 및 300)은 발생된 새로운 데이터 스트림들을 프로세싱하기 위해 소정 기간 동안 반복적으로(예를 들어, 계속해서) 수행될 수 있는 동적 프로세스를 나타낸다.
예시적인 구현 시나리오를 논의하고, 이제 하나 이상의 구현 예에 따른 몇몇 예시적인 프로시져들에 대한 논의를 고려한다.
예시적 프로시저들
다음 논의는 하나 이상의 구현예들에 따라 데이터 기록 동작들에 대한 파일들을 식별하기 위한 몇몇 예시적인 프로시져들을 설명한다. 예시적인 프로시져들은 도 1의 환경(100), 도 10의 시스템(1000) 및/또는 임의의 다른 적합한 환경에서 이용될 수 있다. 또한, 예시적인 프로시져들은 상기 논의된 예시적인 구현 시나리오들의 양상의 구현예들을 나타낼 수 있다. 적어도 몇몇 구현예들에서, 다양한 프로시저들에 대해 설명된 단계들은 자동적으로 그리고 사용자 상호작용과 독립적으로 구현될 수 있다.
도 4는 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따라 데이터를 소팅하기 위한 예시적인 프로시저를 설명한다.
단계(400)는 이종 데이터의 스트림을 수신한다. 예를 들어, 데이터 소터(110)는 데이터 발생기(102)로부터 데이터 스트림(202)을 수신한다.
단계(402)는 이종 데이터의 스트림을 상이한 데이터 카테고리들에 대응하는 데이터 세트들로 소팅한다. 예를 들어, 이종 데이터는 다양한 필터링 기준들에 기반하여 동종 및/또는 반동종 데이터의 상이한 세트들로 필터링될 수 있다. 데이터를 소팅하는데 이용될 수 있는 상이한 기준들 및/또는 카테고리들의 예들이 상기 논의된다. 적어도 몇몇 구현예들에서, 소팅은 소팅된 데이터의 전체 순서를 포함하지 않지만, 다른 유사한 데이터와 함께 특정 카테고리들의 데이터의 버킷팅(bucketing)을 통해 간단히 구현될 수 있다.
단계(404)는 데이터 세트의 영구 저장을 위한 준비로 데이터 세트들을 버퍼링한다. 데이터 세트들은 각각의 데이터 큐들에 저장될 수 있으며, 그 예들은 위에 논의된다.
도 5는 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따른 데이터 세트를 저장하기 위하여 파일을 획득하기 위한 예시적인 프로시저를 설명한다. 적어도 몇몇 구현예들에서, 방법은 도 4와 관련하여 상기 설명된 방법의 예시적인 확장을 설명한다.
단계(500)는 데이터 세트가 스토리지에 기록되는 것을 확인한다. 예를 들어, 데이터 기록기(112)는 데이터 큐(116)가 영구 스토리지에 기록될 데이터 세트를 포함하는 것을 확인한다. 적어도 몇몇 구현예들에서, 데이터 큐(116)로부터 스토리지로 데이터 세트를 기록하는 프로세스는 예를 들어 바이트 단위의 특정 사이즈 문턱치를 초과하는 데이터 세트에 응답하여 개시될 수 있다. 예를 들어, 도 4를 참조하여 상기 설명된 방법은 특정 데이터 큐(116)가 문턱치 사이즈를 초과할 때까지 데이터 큐들(116)에 데이터를 첨부하도록 수행될 수 있다. 데이터 큐가 문턱치 사이즈를 초과하는 것에 응답하여, 데이터 큐로부터 영구적 스토리지로(예를 들어, 파일들(120)) 데이터를 기록하는 프로세스가 개시될 수 있다.
단계(502)는 데이터 세트에 대한 파일을 요청한다. 예를 들어, 데이터 기록기(112)는 데이터 세트에 대한 기록 파라미터들(304)과 파일 질의(302)를 파일 브로커(114)에 전달한다.
단계(504)는 파일에 대한 포인터를 수신한다. 예를 들어, 데이터 기록기(112)는 파일을 가리키는 포인터(310)를 포함하는 질의 응답(308)을 수신한다. 예를 들어, 포인터(310)는 예컨대, 메모리 어드레스, 파일에 대한 링크 등에 기반하여 파일의 개별 인스턴스를 식별한다. 적어도 몇몇 구현예들에서, 포인터(310)는 파일의 시작으로부터의 오프셋 값과 같이, 데이터 기록 동작이 시작되어야 하는 파일 내의 위치를 표시한다.
단계(506)는 데이터 세트를 파일에 기록하기 위해 포인터를 사용하여 기록 동작을 수행한다. 예를 들어, 데이터 기록기(112)는 데이터 세트를 포인터(310)에 의해 식별된 저장 위치에 기록한다.
단계(508)는 데이터 기록 동작이 완료되었다는 통지를 전달한다. 예를 들어, 데이터 기록기(112)는 데이터 기록기(112)가 데이터를 파일에 기록하는 것을 완료했음을 파일 브로커(114)에 통지한다.
단계(510)는 데이터 기록 동작이 성공적인지 여부를 표시하는 통지를 수신한다. 예를 들어, 데이터 기록기(112)는 데이터 기록 동작이 성공적 이었는지 또는 데이터 기록 동작이 실패했는지를 표시하는 통지를 파일 브로커(114)로부터 수신한다. 본 명세서의 다른 곳에서 논의된 바와 같이, 동작의 일부로서 에러가 발생하면 데이터 기록 동작은 실패할 수 있다.
단계(512)는 통지가 데이터 기록 동작이 성공적인 것을 표시하는지 여부를 확인한다. 통지가 데이터 기록 동작이 성공적이라고 나타낼 경우("예"), 단계(514)는 데이터 세트가 스토리지에 성공적으로 커미트된(committed) 것으로 마킹한다. 예를 들어, 데이터 기록기(112)는 데이터 세트가 저장되는 데이터 큐(116)가 다른 데이터를 저장하는데 사용될 수 있음을, 예를 들어 데이터 세트가 다른 데이터로 겹쳐써질 수 있음을 데이터 소터(110)에 통지할 수 있다.
통지가 데이터 기록 동작이 성공적이지 않은 것으로 표시하는 경우("아니오"), 프로세스는 단계 502로 복귀하여 데이터 세트에 대한 새로운 데이터 기록 동작을 개시한다. 적어도 몇몇 구현예들에서, 상기 방법은 데이터 세트에 대한 성공적인 데이터 기록 동작의 통지가 수신될 때까지 여러번 수행될 수 있다.
도 6은 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따른 데이터 기록 동작에 대한 파일을 식별하기 위한 예시적인 프로시저를 설명한다.
단계(600)는 데이터 세트에 대한 데이터 기록 동작을 위한 파일에 대한 요청을 수신한다. 예를 들어, 요청은 기록 동작에 대한 데이터의 카테고리, 기록 될 데이터의 양(예를 들어, 바이트 단위의 사이즈), 기록될 데이터의 다양한 설명적 속성들, 등과 같은 데이터 기록 동작에 대한 파라미터들을 포함한다. 예를 들어, 요청은 도 3을 참조하여 상기 논의된 파일 질의(302)를 통해 구현될 수 있다. 예를 들어, 요청은 도 4를 참조하여 상기 설명된 방법에 따라 발생된 버퍼링된 데이터 세트를 저장하기 위한 파일에 대한 요청일 수 있다.
단계(602)는 데이터 기록 동작에 대해 이용가능한 파일을 식별한다. 예를 들어, 파일 브로커(114)는 데이터 기록 동작을 수신하기 위한 후보들인 파일들(120)에 대한 파일 테이블(118)의 인덱스를 스캔한다. 적어도 몇몇 구현예들에서, 파일 브로커(114)는 요청으로부터의 파라미터들을, 데이터 기록 동작과 연관된 데이터와 동일하거나 유사한 카테고리의 데이터를 갖는 파일들과 같은 이용가능한 파일들(120)의 파라미터들에 매칭시킨다. 예를 들어, 파일 브로커(114)는 파일 질의(302)로부터의 기록 파라미터들(304)을 기록 파라미터들(304) 중 하나 이상과 매칭되는 파일을 식별하기 위해 상이한 파일들(120)의 속성들에 매칭시킨다. 데이터 기록 동작을 위해 파일을 선택하기 위한 상세한 프로시저는 아래에서 논의된다.
단계(604)는 파일에 대한 포인터를 전달한다. 예를 들어, 파일 브로커(114)는 후보 파일에 대한 포인터(310)를 포함하는 질의 응답(308)을 데이터 기록기(112)에 전달한다. 포인터(310)는 파일에 대한 메모리 어드레스, 파일에 대한 링크(예를 들어, 파일에 대한 URI(Uniform Resource Indicator), 파일에 대한 URL(Uniform Resource Locator) 등), 등과 같은 후보 파일이 액세스될 수 있게 하는 다양한 정보를 포함할 수 있다.
단계(606)는 파일에 대한 데이터 기록 동작이 수행되었다는 표시를 수신한다. 예를 들어, 파일 브로커(114)는 데이터 기록기(112)로부터 데이터 기록 동작이 완료되었다는 통지를 수신한다.
단계(608)는 데이터 기록 동작이 성공적인지 여부를 확인한다. 예를 들어, 파일 브로커(114)는 파일을 체크하여, 데이터 손상, 파일 손상, 데이터 기록 실패 등과 같은 데이터 기록 동작의 일부로서 임의의 에러들이 발생했는지 여부를 확인한다. 데이터 기록 동작이 성공했는지 여부를 확인하는 예시적인 방법은 아래에 상술된다.
데이터 기록 동작이 성공적이면("예"), 단계(610)는 데이터 기록 동작이 성공적이라는 통지를 전달한다. 예를 들어, 파일 브로커(114)는 데이터 기록기(112)로 데이터 기록 동작이 성공적이라는 통지를 전달한다. 적어도 몇몇 구현예들에서, 데이터 기록 동작을 위해 사용된 데이터를 저장하는 데이터 큐(116)는 예컨대 스토리지에 기록될 추가 데이터 세트들에 대한 버퍼 공간을 마련하기 위해, 성공적인 데이터 기록 동작의 통지에 응답하여 클리어될 수 있다.
데이터 기록 동작이 성공적이지 않다면("아니요"), 단계(612)는 데이터 기록 동작이 실패하였다는 통지를 전달한다. 예를 들어, 파일 브로커(114)가 데이터 기록 동작의 일부로서 에러가 발생했다고 결정하면, 파일 브로커(114)는 데이터 기록기(112)에 데이터 기록 동작이 실패했음을 통지한다. 적어도 몇몇 구현예들에서, 데이터 기록기(112)는 도 5를 참조하여 상기 논의된 바와 같이, 실패의 통지에 응답하여 데이터 세트에 대한 다른 데이터 기록 동작을 개시할 수 있다.
도 7은 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따른 데이터 기록 동작에 대한 파일을 선택하기 위한 예시적인 프로시저를 설명한다. 적어도 몇몇 구현예들에서, 방법은 도 6와 관련하여 상기 설명된 방법의 다양한 양상들을 구현하는 상세한 방식들을 설명한다.
단계(700)는 기존 파일이 데이터 세트에 대한 데이터 기록 동작에 대해 이용가능한지 여부를 확인한다. 예를 들어, 파일 브로커(114)는 데이터 세트를 저장하기에 충분한 가용 저장 공간을 갖고 데이터 세트에 대한 하나 이상의 기록 파라미터들과 매칭되는 파일(120)에 대한 레코드를 파일 테이블(118)이 포함하는지 여부를 확인한다. 데이터 세트에 대한 상이한 기록 파라미터들의 예들은 위에서 논의되어 있다.
기존의 파일이 데이터 기록 동작에 대해 이용가능한 경우("예"), 단계(702)는 기존 파일을 선택한다. 예를 들어, 파일 브로커(114)는 파일 테이블(118)에서 식별된 기존 파일을, 데이터 세트를 저장하기에 충분한 저장 공간을 갖는, 그리고 기록되도록 이용가능한, 예를 들어 다른 프로세스에 의해 락킹되지 않은, 데이터 세트에 대한 매칭 기록 파라미터들로서 선택한다.
기존 파일이 데이터 기록 동작에 대해 이용가능하지 않으면("아니오"), 단계(704)는 데이터 기록 동작에 대한 기록 파라미터들과 매칭되는 타임 아웃된 파일이 식별되는지 여부를 확인한다. 적어도 몇몇 구현예들에서, 타임 아웃된 파일은, 상이한 데이터 기록 동작에 대해 락킹되었으나 그것의 할당된 시간을 초과한 파일을 지칭한다. 예를 들어, 데이터 기록 동작을 위해 파일이 선택될 때, 다른 프로세스들이 예컨대 데이터 판독/기록 동작들을 위해 파일에 액세스할 수 없도록, 파일은 락킹된다. 파일 락킹의 일부로서, 파일에 대한 락 타이머가 시작된다. 일반적으로, 락 타이머는 파일에 대한 데이터 기록 동작을 수행하기 위해 파일이 연관된 프로세스(예를 들어, 데이터 기록기(112))에 임대되는 시간량에 대응한다. 예컨대 분, 초 등의 단위로 락 타이머에 대하여 임의의 적절한 시간량이 지정될 수 있다.
락 타이머가 만료될 때, 파일은 다른 프로세스들이 예컨대 데이터 판독/기록 동작들을 위해 파일과 상호작용할 수 있도록, 타임 아웃으로 표시될 수 있다. 예를 들어, 타임 아웃된 파일은 원래의 타임 아웃된 데이터 기록 동작이 완료되지 않은 경우에도, 상이한 데이터 기록 동작을 위해 획득되고 락킹될 수 있다. 데이터 기록 동작이 완료되기 전에 타임 아웃되고 다른 프로세스가 파일을 획득하는 경우에, 데이터 기록 동작은 상이한 파일로 재 초기화(예를 들어, 재시도)될 수 있도록 실패할 수 있다.
다양한 구현예들에 따르면, 파일 테이블(118)은 락킹된 파일들에 대한 락 타이머 상태를 추적할 수 있다. 따라서, 파일에 대한 락 타이머가 만료될 때, 파일은 다른 데이터 기록 동작들과 같은 다른 프로세스들에 의해 액세스되게끔 이용가능하도록, 파일 테이블(118)에 타임 아웃된 것으로 마킹될 수 있다.
방법으로 돌아가서, 파일에 대한 기록 파라미터들과 매칭되는 타임 아웃된 파일이 식별되면("예"), 단계(706)는 타임 아웃된 파일을 선택한다. 타임 아웃된 파일이 파일에 대한 기록 파라미터들과 매칭되는 것으로 식별되지 않으면("아니오"), 단계(708)는 기록 동작을 위해 새로운 파일을 선택한다. 예를 들어, 파일 브로커(114)는 특정 스토리지 시스템들(106)과 통신하고, 데이터 기록 동작에 대한 기록 파라미터들에 대응하는 새로운 파일(120)이 생성되게 한다.
단계(710)는 데이터 기록 동작에 대해 선택된 파일을 락킹한다. 예를 들어, 파일 브로커(114)는 데이터 기록 동작 만이 파일에 액세스하는 것이 허용되도록, 파일 테이블(118)의 파일을 특정 데이터 기록 동작을 위해 잠긴 것으로 마킹한다.
도 8은 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따른 데이터 기록 동작이 성공적인지 여부를 확인하기 위한 예시적인 프로시저를 설명한다. 적어도 몇몇 구현예들에서, 방법은 도 7와 관련하여 상기 설명된 방법의 확장 및/또는 연속을 설명한다.
단계(800)는 데이터 기록 동작에 대해 사용가능한 파일에 대한 통지를 전달한다. 예를 들어, 파일 브로커(114)는 포인터(112)와 함께 질의 응답(308)을 데이터 기록기(310)에 전달한다. 적어도 몇몇 구현예들에서, 파일은 도 7과 관련하여 상기 설명된 방법에 따라 선택된 파일에 대응한다.
단계(802)는 파일에 대한 데이터 기록 동작이 완료되었다는 표시를 수신한다. 예를 들어, 파일 브로커(114)는 데이터 기록기(112)가 파일에 데이터를 기록하는 것을 끝냈다는 통지를 수신한다.
단계(804)는 파일에 대한 데이터 기록 동작에 대한 락 타이머를 연장하도록 시도한다. 예를 들어, 파일 브로커(114)는 파일 테이블(118)과 상호작용하여 데이터 기록 동작을 위한 락 타이머 상에 남은 시간을 연장시키도록 시도한다. 적어도 몇몇 구현예들에서, 락 타이머를 연장하는 것은 현재 경과하고 있는, 예를 들어 만료되지 않은 락 타이머에 추가 시간을 부가하는 것을 수반한다. 락 타이머를 연장하는 것은 또한 만료된 락 타이머를 리프레시 또는 재시작하는 것을 포함할 수 있다. 다양한 구현예들에 따르면, 락 타이머는 예를 들어 초, 분 등의 단위로 미리 지정된 시간량만큼 연장될 수 있다. 대안적으로 또는 부가적으로, 락 타이머가 연장되는 시간량은 다양한 데이터 기록 속성들에 기반하여 동적으로 결정될 수 있다. 이러한 데이터 기록 속성들의 예들은 데이터 기록 동작에 관련된 데이터의 양, 데이터 타입, 데이터에 대한 우선순위 레벨 등을 포함한다.
단계(806)는 락 타이머를 연장시키려는 시도가 성공적인지 여부를 확인한다. 락 타이머를 연장시키려는 시도가 성공적이지 않다면("아니요"), 단계(808)는 데이터 기록 동작이 실패하였다는 표시를 발생시킨다. 적어도 몇몇 구현예들에서, 락 타이머가 만료되고 다른 프로세스가 예컨대 데이터 기록 및/또는 판독 동작을 위해 파일을 락킹하면 락 타이머를 연장하려는 시도는 실패할 수 있다. 예를 들어, 다른 프로세스는 데이터 기록 동작 동안에 타임 아웃된 파일을 "스틸(steal)"할 수 있다. 전술한 바와 같이, 락 타이머가 만료되는 파일은 다른 프로세스들(예를 들어, 다른 데이터 기록 동작들)이 사용을 위해 파일을 락킹할 수 있도록 타임 아웃된 파일로서 파일 테이블(118)에 표시될 수 있다. 예를 들어, 도 7을 참조하여 상기 논의된 단계(704)를 참조하라.
다양한 구현예들에 따르면, 파일 브로커(114)는 데이터 기록기(112)에 데이터 기록 동작이 실패했음을 통지할 수 있다. 따라서, 데이터 기록 동작과 관련된 데이터는 후속하는 데이터 기록 동작을 위해 마킹될 수 있다. 또한, 실패한 데이터 기록 동작의 일부로서 기록된 파일의 일부분은 후속 데이터 기록에 대해 이용가능한 것으로 표시될 수 있다. 예를 들어, 실패한 데이터 기록 동작의 일부로서 파일에 기록된 데이터는 파일에서 데이터가 지속되도록 하는 커밋(commit) 동작의 대상이 아니다. 따라서, 데이터는 다른 데이터로 덮어쓸 수 있고, 예컨대 판독 동작에 대해 가시적이지 않을 수 있다.
방법으로 돌아가, 락 타이머를 연장하려는 시도가 성공적이면("예"), 단계(810)는 데이터 기록 동작에 의해 야기된 파일에 대한 변경들을 지속한다. 예를 들어, 파일 브로커(114)는 파일 브로커(114)가 데이터에 대해 수행되게 하여 데이터가 파일에 유지되도록 하는 이산 시간량만큼 락 타이머를 연장시킨다. 다양한 구현예들에 따르면, 이것은 데이터가 다른 프로세스들에 대해 가시적이도록 하여, 데이터가 다양한 방식으로 판독 및/또는 프로세싱될 수 있게 한다.
단계(812)는 파일을 언락킹한다. 예를 들어, 파일 브로커(114)는 파일 테이블(118)의 파일을 다른 데이터 기록 동작들에 대해 이용가능한 것으로서 마킹한다. 적어도 몇몇 구현예들에서, 파일 브로커(114)는 파일에 남아있는 저장 공간량, 파일에 저장된 데이터의 카테고리 등과 같은 파일 테이블(118)의 파일에 대한 상태 정보를 갱신할 수 있다.
단계(814)는 데이터 기록 동작이 파일에 대해 지속된다는 확인을 전달한다. 예를 들어, 파일 브로커(114)는 데이터 기록 동작에 관련된 데이터가 파일에 대해 지속된다는(예를 들어, 커밋된다는) 통지를 데이터 기록기(112)에 전달한다.
도 9는 하나 이상의 구현예들에 따른 방법에서의 단계들을 설명하는 흐름도이다. 방법은 하나 이상의 구현예들에 따른 데이터 기록 동작에 대한 파일을 선택하기 위한 예시적인 프로시저를 설명한다. 적어도 몇몇 구현예들에서, 방법은 도 6을 참조하여 논의된 단계(602)의 상세한 구현예 및/또는 도 7을 참조하여 논의된 방법에 따라 파일을 선택하기 위한 구현 세부사항을 설명한다.
단계(900)는 파일에 대한 요청에 응답하여 후보 파일들의 배치(batch)를 식별한다. 예를 들어, 파일 브로커(114)는 파일 요청과 연관된 기록 파라미터들과 매칭되는 파일 테이블(118)로부터 복수의 이용가능한(예를 들어, 언락킹된) 파일들을 식별한다. 대안적으로 또는 부가적으로, 예를 들어 파일 브로커(114)는 파일 요청과 연관된 기록 파라미터들과 매칭되는 파일 테이블(118)로부터 타임 아웃된 파일들을 식별한다. 다양한 구현예들에 따르면, 파일 배치는 이용가능한 파일들, 타임 아웃된 파일들, 또는 이 둘의 조합을 포함할 수 있다.
단계(902)는 후보 파일들의 배치로부터 파일을 랜덤하게 선택한다. 예를 들어, 파일 브로커(114)는 후보 파일들의 배치로부터 파일의 인스턴스를 선택하기 위해 임의의 적절한 랜덤 선택 알고리즘을 사용할 수 있다. 적어도 몇몇 구현예들에서, 랜덤 파일 선택은 다른 프로세스들, 예를 들어, 다른 데이터 기록 동작들을 위한 파일들을 식별하는 다른 파일 브로커(114)와의 파일 충돌을 회피하는데 도움을 준다.
단계(904)는 요청에 대해 선택된 파일에 대한 포인터로 응답한다. 예를 들어, 파일 브로커(114)는 데이터 기록 동작의 일부로서 사용을 위해 포인터를 데이터 기록기(112)에 전달한다. 상이한 파일 포인터들의 예들은 상기에서 논의되어 있다.
상기 제시된 다양한 실시예들은 개별적인 데이터 기록 동작들을 참조하여 논의되었지만, 본 명세서에서 논의된 기법들은 복수의 상이한 데이터 세트들에 대해 (예를 들어, 동시에) 복수의 데이터 기록 동작들이 개시되고 관리될 수 있도록 확장가능하다는 것이 이해되어야 한다.
몇몇 예시적인 프로시저들을 논의하고, 이제 하나 이상의 구현 예들에 따른 예시적 시스템 및 디바이스에 대한 논의를 고려한다.
예시적 시스템 및 디바이스
도 10은 본 명세서에 설명된 다양한 기법들을 구현할 수 있는 하나 이상의 컴퓨팅 시스템들 및/또는 디바이스들을 나타내는 예시적인 컴퓨팅 디바이스(1002)를 포함하는 예시적인 시스템을 1000에서 일반적으로 예시한다. 예를 들어, 상기 논의된 클라이언트 디바이스(102), 네트워크 제어기(118) 및/또는 원격 구성 서비스(128)는 컴퓨팅 디바이스(1002)로서 구현될 수 있다. 컴퓨팅 디바이스(1002)는 예를 들어 서비스 제공자의 서버, 클라이언트(예를 들어, 클라이언트 디바이스)와 연관된 디바이스, 온-칩 시스템, 및/또는 임의의 다른 적절한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수 있다.
예시된 컴퓨팅 디바이스(1002)는 프로세싱 시스템(1004), 하나 이상의 컴퓨터 판독가능 매체(1006) 및 서로 통신가능하게 결합된 하나 이상의 입력/출력(I/O) 인터페이스들(1008)을 포함한다. 도시되지는 않았지만, 컴퓨팅 디바이스(1002)는 다양한 컴포넌트들을 서로 결합하는 시스템 버스 또는 다른 데이터 및 코맨드 전달 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 제어기, 주변장치 버스, 범용 직렬 버스 및/또는 다양한 버스 아키텍처들 중 임의의 것을 이용하는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조들 중 임의의 하나 또는 그들의 조합을 포함할 수 있다. 제어 및 데이터 라인들과 같은 다양한 다른 예들도 또한 고려된다.
프로세싱 시스템(1004)은 하드웨어를 사용하여 하나 이상의 동작들을 수행하는 기능부를 나타낸다. 따라서, 프로세싱 시스템(1004)은 프로세서들, 기능 블록들 등으로서 구성될 수 있는 하드웨어 엘리먼트(1010)를 포함하는 것으로 예시된다. 이것은 애플리케이션 특정 집적 회로 또는 하나 이상의 반도체들을 사용하여 형성된 다른 논리 디바이스로서의 하드웨어로의 구현을 포함할 수 있다. 하드웨어 엘리먼트들(1010)은 그들이 형성되는 재료들 또는 거기에 이용된 프로세싱 메커니즘에 의해 제한되지 않는다. 예를 들어, 프로세서들은 반도체(들) 및/또는 트랜지스터들(예를 들어, 전자 집적 회로들(ICs))로 구성될 수 있다. 이러한 맥락에서, 프로세서-실행가능 명령어들은 전자적-실행가능 명령어들일 수 있다.
컴퓨터 판독가능 매체(1006)는 메모리/스토리지(1012)를 포함하는 것으로 예시된다. 메모리/스토리지(1012)는 하나 이상의 컴퓨터 판독가능 매체와 연관된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지(1012)는 (랜덤 액세스 메모리(RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(ROM), 플래시 메모리, 광학 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/스토리지(1012)는 착탈식 매체(예를 들어, 플래시 메모리, 착탈식 하드 드라이브, 광학 디스크 등)뿐만 아니라, 고정식 매체(예를 들어, RAM, ROM, 고정식 하드 드라이브 등)를 포함할 수 있다. 컴퓨터 판독가능 매체(1006)는 하기에 더 설명되는 바와 같이 다양한 다른 방법들로 구성될 수 있다.
입력/출력 인터페이스(들)(1008)는 사용자가 코맨드들 및 정보를 컴퓨팅 디바이스(1002)에 입력할 수 있게 허용하는 기능부를 나타내며, 다양한 입력/출력 디바이스들을 사용하여 사용자 및/또는 다른 컴포넌트들 또는 디바이스들에 정보가 제시되도록 허용한다. 입력 디바이스들의 예들은, 키보드, 커서 제어 디바이스(예를 들어, 마우스), 마이크로폰(예를 들어, 음성 인식 및/또는 음성 입력), 스캐너, 터치 기능부(예를 들어, 물리적 터치를 검출하도록 구성되는 용량성 또는 기타 센서들), 카메라(예컨대, 제스처로서 터치를 수반하지 않는 움직임을 검출하기 위해 적외선 주파수들과 같은 가시적 또는 비가시적 파장들을 사용할 수 있는) 등을 포함한다. 출력 디바이스들의 예들은 디스플레이 디바이스(예를 들어, 모니터 또는 프로젝터), 스피커들, 프린터, 네트워크 카드, 촉각 반응 디바이스 등을 포함한다. 따라서, 컴퓨팅 디바이스(1002)는 사용자 상호작용을 지원하기 위하여 하기에 추가로 설명되는 바와 같이 다양한 방법들로 구성될 수 있다.
소프트웨어, 하드웨어 엘리먼트들 또는 프로그램 모듈들의 일반적인 맥락에서 다양한 기법들이 본 명세서에 설명될 수 있다. 일반적으로, 이러한 모듈들은 특정 태스크들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 엘리먼트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 본 명세서에서 사용된 바와 같은 "모듈", "기능부", "서비스” 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 본 명세서에 설명된 기법들의 피처들은 플랫폼 독립적이며, 이는 기법들이 다양한 프로세서들을 갖는 다양한 상업용 컴퓨팅 플랫폼들 상에서 구현될 수 있음을 의미한다.
설명된 모듈들 및 기법들의 구현은 컴퓨터 판독가능 매체의 일부 형태를 통해 저장되거나 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 디바이스(1002)에 의해 액세스될 수 는 다양한 매체를 포함할 수 있다. 제한이 아닌 서, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체”및 "컴퓨터 판독가능 신호 매체"를 포함할 수 있다.
"컴퓨터 판독가능 저장 매체"는 단순한 신호 전송, 반송파들 또는 신호들 그 자체와 달리 정보의 영구 저장을 가능하게 하는 매체 및/또는 디바이스들을 지칭할 수 있다. 컴퓨터 판독가능 저장 매체는 신호 그 자체를 포함하지 않는다. 컴퓨터 판독가능 저장 매체는 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체 및/또는 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들, 로직 엘리먼트들/회로들, 또는 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기술로 구현된 저장 디바이스들과 같은 하드웨어를 포함한다. 컴퓨터 판독가능 저장 매체의 예들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 다른 스토리지 장치, 유형의(tangible) 매체, 또는 원하는 정보를 저장하기에 적합하고 컴퓨터에 의해 액세스될 수 있는 제조 물품을 포함할 수 있으나, 이에 제한되는 것은 아니다.
"컴퓨터 판독가능 신호 매체"는 예컨대 네트워크를 통해 컴퓨팅 디바이스(1002)의 하드웨어에 명령어들을 전송하도록 구성되는 신호 보유 매체를 지칭할 수 있다. 신호 매체는 통상적으로 컴퓨터 판독가능 명령어들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파, 데이터 신호들 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 포함할 수 있다. 신호 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호의 정보를 인코딩하는 방식으로 그것의 특징들 중 하나 이상을 설정하거나 변경한 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속부와 같은 유선 매체, 및 음향, 무선 주파수(RF), 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
이전에 설명된 바와 같이, 하드웨어 엘리먼트들(1010) 및 컴퓨터 판독가능 매체(1006)는 본 명세서에 설명된 기법들의 적어도 몇몇 양상들을 구현하기 위해 몇몇 구현예들에 이용될 수 있는 하드웨어 형태로 구현된 명령어들, 모듈들, 프로그램가능 디바이스 로직 및/또는 고정형 디바이스 로직을 나타낸다. 하드웨어 엘리먼트들은 집적 회로 또는 온-칩 시스템의 컴포넌트들, 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA), 복합 프로그램가능 로직 디바이스(CPLD) 및 실리콘 또는 다른 하드웨어 디바이스들에서의 다른 구현예들을 포함할 수 있다. 이러한 맥락에서, 하드웨어 엘리먼트는 실행을 위한 명령어들을 저장하는데 이용되는 하드웨어 디바이스, 예를 들어 이전에 설명된 컴퓨터 판독가능 저장 매체 뿐 아니라, 하드웨어 엘리먼트에 의해 구현되는 명령어들, 모듈들 및/또는 로직에 의해 정의되는 프로그램 태스크들을 수행하는 프로세싱 디바이스로서 작동할 수 있다.
전술한 것들의 조합들은 또한 본 명세서에 설명된 다양한 기법들 및 모듈들을 구현하기 위해 이용될 수 있다. 따라서, 소프트웨어, 하드웨어 또는 프로그램 모듈들 및 다른 프로그램 모듈들은 컴퓨터 판독가능 저장 매체의 일부 형태 상에 포함되는 하나 이상의 명령어들 및/또는 로직으로서 및/또는 하나 이상의 하드웨어 엘리먼트(1010)에 의해 구현될 수 있다. 컴퓨팅 디바이스(1002)는 소프트웨어 및/또는 하드웨어 모듈들에 대응하는 특정 명령어들 및/또는 기능들을 구현하도록 구성될 수 있다. 따라서, 컴퓨팅 디바이스(1002)에 의해 소프트웨어로서 실행가능한 모듈들의 구현예는 예를 들어 컴퓨터 판독가능 저장 매체 및/또는 프로세싱 시스템의 하드웨어 엘리먼트들(1010)의 사용을 통해 적어도 부분적으로 하드웨어로 달성될 수 있다. 명령어들 및/또는 기능들은 본 명세서에 설명된 기법들, 모듈들, 및 예들을 구현하기 위해 하나 이상의 제조 물품들(예를 들어, 하나 이상의 컴퓨팅 디바이스들(1002) 및/또는 프로세싱 시스템들(1004))에 의해 실행가능/동작가능할 수 있다.
도 10에 추가로 예시되는 바와 같이, 예시적인 시스템(1000)은 개인용 컴퓨터(PC), 텔레비전 디바이스 및/또는 모바일 장치에서 애플리케이션을 구동할 때 끊김 없는 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 애플리케이션을 이용하거나, 비디오 게임을 하거나, 비디오를 보는 등의 동안에, 한 디바이스에서 다른 디바이스로 전환할 때, 공통적 사용자 경험을 위해 서비스들 및 애플리케이션들은 세 가지 환경 모두에서 실질적으로 유사하게 실행된다.
예시적인 시스템(1000)에서, 복수의 디바이스들은 중앙 컴퓨팅 디바이스를 통해 상호연결된다. 중앙 컴퓨팅 디바이스는 복수의 디바이스들에 대해 국부적일 수 있거나 또는 복수의 디바이스들로부터 원격으로 위치될 수 있다. 일 실시예에서, 중앙 컴퓨팅 디바이스는 네트워크, 인터넷 또는 다른 데이터 통신 링크를 통해 복수의 디바이스들에 연결된 하나 이상의 서버 컴퓨터들의 클라우드일 수 있다.
일 실시예에서, 이 상호접속 아키텍처는 복수의 디바이스들의 사용자에게 공통적이고 끊김 없는 경험을 제공하기 위해 기능이 복수의 디바이스들에 걸쳐 전달될 수 있게 한다. 복수의 디바이스들 각각은 상이한 물리적 요건들 및 능력들을 가질 수 있으며, 중앙 컴퓨팅 디바이스는 플랫폼을 사용하여 디바이스에 맞춰지고 모든 디바이스들에 공통적인 경험을 디바이스에 전달하는 것을 가능하게 한다. 일 실시예에서, 타겟 디바이스들의 클래스가 생성되고, 경험들은 디바이스들의 일반 클래스에 맞춰진다. 디바이스들의 클래스는 물리적 피처들, 사용 타입들 또는 디바이스들의 다른 공통적 특징들에 의해 정의될 수 있다.
다양한 구현예들에서, 컴퓨팅 디바이스(1002)는 예컨대, 컴퓨터(1014), 모바일(1016) 및 텔레비전(1018) 사용을 위해 다양한 상이한 구성들을 취할 수 있다. 이들 구성들 각각은 일반적으로 상이한 구조들 및 능력들을 가질 수 있는 디바이스들을 포함하고, 따라서 컴퓨팅 디바이스(1002)는 하나 이상의 상이한 디바이스 클래스들에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스(1002)는 개인용 컴퓨터, 데스크탑 컴퓨터, 멀티-스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 디바이스의 컴퓨터(1014) 클래스로서 구현될 수 있다.
컴퓨팅 디바이스(1002)는 또한 이동 전화, 웨어러블 디바이스, 휴대용 뮤직 플레이어, 휴대용 게임 디바이스, 태블릿 컴퓨터, 멀티-스크린 컴퓨터 등과 같은 모바일 디바이스들을 포함하는 모바일(1016) 클래스의 디바이스로서 구현될 수도 있다. 컴퓨팅 디바이스(1002)는 또한 캐주얼 시청 환경들에서 일반적으로 더 큰 스크린들을 가지거나 그것에 연결된 디바이스들을 포함하는 텔레비전(1018) 클래스의 디바이스로서 구현될 수도 있다. 이러한 디바이스들은 TV, 셋톱 박스들, 게임 콘솔들 등을 포함한다.
본 명세서에 설명된 기법들은 컴퓨팅 디바이스(1002)의 이들 다양한 구성들에 의해 지원될 수 있으며, 본 명세서에 설명된 기법들의 특정 예들러 제한되지 않는다. 예를 들어, 클라이언트 디바이스(102), 네트워크 제어기(118), 및/또는 원격 구성 서비스(128)를 참조하여 논의된 기능부들은 전체적으로 또는 부분적으로 분산 시스템의 사용을 통해, 예컨대 하기 설명되는 바와 같이 플랫폼(1022)을 통해 "클라우드"(1020)에 걸쳐 구현될 수 있다.
클라우드 (1020)는 리소스들(1024)을 위한 플랫폼(1022)을 포함하거나 그리고/또는 나타낸다. 플랫폼(1022)은 하드웨어(예를 들어, 서버들)의 기본 기능부 및 클라우드(1020)의 소프트웨어 리소스들을 추상화한다. 리소스들(1024)은 컴퓨터 프로세싱이 컴퓨팅 디바이스(1002)로부터 원격인 서버들 상에서 실행되는 동안 이용될 수 있는 애플리케이션들 및/또는 데이터를 포함할 수 있다. 리소스들(1024)은 또한 인터넷를 통해 및/또는 셀룰러 또는 Wi-Fi™ 네트워크와 같은 가입자 네트워크를 통해 제공되는 서비스들을 포함할 수 있다.
플랫폼(1022)은 컴퓨팅 디바이스(1002)를 다른 컴퓨팅 디바이스들과 연결하기 위한 리소스들 및 기능들을 추상화할 수 있다. 플랫폼(1022)은 또한 플랫폼(1022)을 통해 구현되는 리소스들(1024)에 대해 맞닥뜨리는 요구에 대응하는 스케일 레벨을 제공하기 위해 리소스들의 스케일링을 추상화하는 역할을 할 수도 있다. 따라서, 상호 연결된 디바이스 실시예에서, 본 명세서에 설명된 기능부의 구현은 시스템(1000)에 걸쳐 분산될 수 있다. 예를 들어, 기능부는 클라우드(1020)의 기능부를 추상화하는 플랫폼(1022)을 통해서 뿐 아니라, 컴퓨팅 디바이스(1002) 상에서 적어도 부분적으로 구현될 수 있다.
본 명세서에 논의된 기법들을 수행하기 위해 구현될 수 있는 복수의 방법들이 여기서 논의된다. 방법들의 양상들은 하드웨어, 펌웨어, 또는 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 방법들은 하나 이상의 디바이스들에 의해 수행되는 동작들을 지정하는 단계들의 세트로서 도시되며, 반드시 각각의 블록에 의해 동작들을 수행하기 위해 도시된 순서로 제한되는 것은 아니다. 또한, 특정 방법과 관련하여 도시된 동작은 하나 이상의 구현예들에 따라 상이한 방법의 동작과 결합 및/또는 교환될 수 있다. 방법들의 양상들은 환경(100)을 참조하여 상기 논의된 다양한 개체들 간의 상호작용을 통해 구현될 수 있다.
결론
데이터 기록 동작들에 대한 파일들을 식별하기 위한 기법들이 설명된다. 구현예들이 구조적 피처들 및/또는 방법론적 동작들에 특정한 언어로 설명되었지만, 첨부된 청구항들에 정의된 구현예들이 설명된 특정 피처들 또는 동작들로 반드시 제한되는 것은 아니라는 것을 이해해야 한다. 오히려, 특정 피처들 및 동작들은 청구된 구현예들을 구현하는 예시적인 형태들로서 개시된다.

Claims (15)

  1. 데이터 기록 동작에 대한 데이터의 카테고리에 기반하여 상기 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템에 있어서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의한 실행에 응답하여 시스템이 동작들을 수행하게 하는, 저장된 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 저장 매체
    를 포함하며, 상기 동작들은:
    데이터 세트에 대한 데이터 기록 동작을 위한 파일에 대한 요청 ― 상기 요청은 상기 데이터 세트에 포함된 데이터의 카테고리를 식별함 ― 을 수신하는 것;
    이용가능한 파일들 중 적어도 하나의 파일이 상기 요청에 의해 표시된 상기 데이터의 카테고리와 매칭되는지 여부를 확인(ascertain)하기 위하여 상기 이용가능한 파일들의 콜렉션을 스캐닝함으로써, 상기 데이터 기록 동작에 대해 이용가능한 파일을 식별하는 것;
    상기 데이터 세트를 상기 파일에 기록하는데 사용가능한 포인터를 상기 파일에 전달(communicating)하는 것;
    상기 파일에 대한 상기 데이터 기록 동작이 수행되었다는 표시를 수신하는 것;
    상기 파일에 대한 상기 데이터 기록 동작이 성공적인지 여부를 확인하는 것; 및
    상기 데이터 기록 동작이 성공적인지 여부를 표시하는 통지를 전달하는 것
    을 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  2. 제1항에 있어서,
    상기 이용가능한 파일들의 콜렉션은 복수의 상이한 저장 위치들로부터의 파일들을 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  3. 제1항에 있어서,
    상기 요청은 상기 데이터 세트의 사이즈를 더 포함하며,
    상기 식별하는 것은 상기 데이터 세트를 저장하기에 충분한 저장 공간을 갖는 파일에 기반하여 상기 파일을 식별하는 것을 더 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  4. 제1항에 있어서,
    상기 식별하는 것은:
    상기 이용가능한 파일들의 콜렉션이 상기 데이터 기록 동작에 대해 이용가능한 기존 파일을 포함하는 경우에, 상기 데이터 기록 동작에 대해 이용가능한 파일로서 상기 기존 파일을 선택하는 것;
    상기 이용가능한 파일들의 콜렉션이 상기 데이터 기록 동작에 대해 이용가능한 기존 파일을 포함하지 않는 경우에, 상기 요청에 의해 표시된 상기 데이터의 카테고리에 매칭되는 타임 아웃된 파일이 식별되는지 여부를 확인하는 것;
    상기 요청에 의해 표시된 상기 데이터의 카테고리에 매칭되는 타임 아웃된 파일이 식별되는 경우에, 상기 데이터 기록 동작에 대해 이용가능한 파일로서 상기 타임 아웃된 파일을 선택하는 것; 및
    상기 요청에 의해 표시된 상기 데이터의 카테고리에 매칭되는 타임 아웃된 파일이 식별되지 않는 경우에, 상기 데이터 기록 동작에 대해 새로운 파일이 생성되게 하는 것
    을 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  5. 제1항에 있어서,
    상기 식별하는 것은:
    상기 이용가능한 파일들의 콜렉션으로부터의 요청에 의해 표시된 상기 데이터의 카테고리에 매치되는 후보 파일들의 배치(batch)를 식별하는 것; 및
    상기 후보 파일들의 배치로부터 파일을 랜덤하게 선택하는 것
    을 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  6. 제1항에 있어서,
    상기 확인하는 것은:
    상기 파일에 대한 데이터 기록 동작을 위한 락 타이머(lock timer)를 연장하도록 시도하는 것;
    상기 시도가 실패한 경우에, 상기 데이터 기록 동작이 실패한 것을 확인하는 것; 또는
    상기 시도가 성공한 경우에, 상기 데이터 기록 동작에 의해 야기된 상기 파일에 대한 변화들을 지속하는 것
    을 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  7. 제6항에 있어서,
    상기 시도하는 것은, 상기 데이터 기록 동작에 의해 야기된 파일에 대한 변화들이 지속되는 동안의 이산 시간량(discrete amount of time)만큼 상기 락 타이머가 연장되게 하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  8. 제6항에 있어서,
    상기 동작들은, 상기 데이터 기록 동작이 실패하였음을 확인하는 것에 응답하여, 상기 데이터 기록 동작이 실패하였음을 표시하기 위한 통지를 전달하는 것을 더 포함하는 것인, 데이터 기록 동작에 대해 이용가능한 파일을 식별하기 위한 시스템.
  9. 컴퓨터 구현 방법에 있어서,
    데이터 세트를 저장하기 위한 파일에 대한 요청에 응답하여, 후보 파일들의 배치를 식별하는 단계 ― 상기 식별하는 단계는, 상기 요청에 의해 지정된 데이터 세트에 대한 기록 파라미터들에 기반하여 상기 후보 파일들을 식별하는 단계를 포함함 ― ;
    상기 후보 파일들의 배치로부터 파일을 랜덤하게 선택하는 단계; 및
    상기 선택된 파일에 대한 포인터로 상기 요청에 응답하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  10. 제9항에 있어서,
    상기 기록 파라미터들은, 상기 데이터 세트에 포함된 데이터의 카테고리, 상기 데이터 세트의 데이터가 수집된 날짜, 또는 상기 데이터 세트의 사이즈 중 하나 이상을 표시하는 것인, 컴퓨터 구현 방법.
  11. 제9항에 있어서,
    상기 후보 파일들의 배치는 이용가능한 파일들, 타임 아웃된 파일들, 또는 이들의 조합물을 포함하는 것인, 컴퓨터 구현 방법.
  12. 제9항에 있어서,
    상기 식별하는 단계는, 상기 후보 파일들에 포함된 데이터의 속성들에 상기 기록 파라미터들 중 하나 이상을 매칭시키는 단계를 포함하는 것인, 컴퓨터 구현 방법.
  13. 데이터 기록 동작에 대한 데이터의 카테고리에 기반하여 상기 데이터 기록 동작을 수행하기 위한 컴퓨터 구현 방법에 있어서,
    데이터 세트가 스토리지에 기록되는 것을 확인하는 단계;
    상기 데이터 세트에 포함된 데이터의 카테고리 및 상기 데이터 세트의 사이즈를 포함하는 파일 질의를 전달하는 단계를 포함하는, 상기 데이터 세트를 저장하기 위한 파일을 요청하는 단계;
    상기 요청에 응답하여 파일에 대한 포인터를 수신하는 단계; 및
    상기 데이터 세트를 상기 파일에 기록하기 위하여 상기 포인터를 사용하여 데이터 기록 동작을 수행하는 단계
    를 포함하는, 데이터 기록 동작을 수행하기 위한 컴퓨터 구현 방법.
  14. 제13항에 있어서,
    상기 파일 질의는 상기 데이터 세트에 대한 데이터 파라미터 또는 상기 데이터 세트의 사이즈 중 하나 이상을 더 포함하는 것인, 데이터 기록 동작을 수행하기 위한 컴퓨터 구현 방법.
  15. 제13항에 있어서,
    상기 데이터 기록 동작이 완료되었다는 통지를 전달하는 단계;
    상기 데이터 기록 동작이 성공적인지 여부를 표시하는 통지를 수신하는 단계;
    상기 통지가 상기 데이터 기록 동작이 성공적임을 표시하는 경우에, 상기 데이터 세트를 스토리지에 성공적으로 커미트된(committed) 것으로 마킹하는 단계; 또는
    상기 통지가 상기 데이터 기록 동작이 성공적이지 않음을 표시하는 경우에, 상기 데이터 세트에 대한 새로운 데이터 기록 동작을 개시하는 단계
    를 더 포함하는, 데이터 기록 동작을 수행하기 위한 컴퓨터 구현 방법.
KR1020177004531A 2014-07-18 2015-07-16 데이터 기록 동작들을 위한 파일의 식별 KR20170035985A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/335,558 2014-07-18
US14/335,558 US20160019300A1 (en) 2014-07-18 2014-07-18 Identifying Files for Data Write Operations
PCT/US2015/040670 WO2016011217A1 (en) 2014-07-18 2015-07-16 Identifying files for data write operations

Publications (1)

Publication Number Publication Date
KR20170035985A true KR20170035985A (ko) 2017-03-31

Family

ID=53783339

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177004531A KR20170035985A (ko) 2014-07-18 2015-07-16 데이터 기록 동작들을 위한 파일의 식별

Country Status (11)

Country Link
US (1) US20160019300A1 (ko)
EP (1) EP3146423A1 (ko)
JP (1) JP2017520845A (ko)
KR (1) KR20170035985A (ko)
CN (1) CN106537386A (ko)
AU (1) AU2015289651A1 (ko)
BR (1) BR112017000144A2 (ko)
CA (1) CA2955011A1 (ko)
MX (1) MX2017000774A (ko)
RU (1) RU2017101414A (ko)
WO (1) WO2016011217A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10096065B2 (en) * 2015-01-16 2018-10-09 Red Hat, Inc. Distributed transactions with extended locks
CN108153744A (zh) * 2016-12-02 2018-06-12 上海中兴软件有限责任公司 一种数据存储维护方法及装置
US10528435B2 (en) 2017-05-08 2020-01-07 International Business Machines Corporation Performance efficient time locks on data in a storage controller
US10514859B2 (en) * 2017-05-08 2019-12-24 International Business Machines Corporation Reduction of processing overhead for point in time copy to allow access to time locked data
US10489080B2 (en) 2017-05-08 2019-11-26 International Business Machines Corporation Point in time copy of time locked data in a storage controller
US10691514B2 (en) * 2017-05-08 2020-06-23 Datapipe, Inc. System and method for integration, testing, deployment, orchestration, and management of applications
US10514721B2 (en) 2017-05-08 2019-12-24 International Business Machines Corporation Validation of clock to provide security for time locked data
CN111694521B (zh) * 2020-06-17 2022-08-05 杭州海康威视系统技术有限公司 存储文件的方法、装置及系统
CN115758206B (zh) * 2022-11-07 2023-05-16 武汉麓谷科技有限公司 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148338A (en) * 1998-04-03 2000-11-14 Hewlett-Packard Company System for logging and enabling ordered retrieval of management events
DE69928222T2 (de) * 1999-04-23 2006-05-24 Sony Deutschland Gmbh Verfahren und System zum Versand von Information
US7191176B2 (en) * 2000-07-31 2007-03-13 Mccall Danny A Reciprocal data file publishing and matching system
US6671773B2 (en) * 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20030182420A1 (en) * 2001-05-21 2003-09-25 Kent Jones Method, system and apparatus for monitoring and controlling internet site content access
GB2405495B (en) * 2003-08-18 2006-09-20 Orchestria Ltd Data storage system
US7188127B2 (en) * 2003-10-07 2007-03-06 International Business Machines Corporation Method, system, and program for processing a file request
US8996486B2 (en) * 2004-12-15 2015-03-31 Applied Invention, Llc Data store with lock-free stateless paging capability
US8364670B2 (en) * 2004-12-28 2013-01-29 Dt Labs, Llc System, method and apparatus for electronically searching for an item
US7831795B2 (en) * 2005-11-28 2010-11-09 Commvault Systems, Inc. Systems and methods for classifying and transferring information in a storage network
US9207997B2 (en) * 2007-08-09 2015-12-08 Novell, Inc. Multithreaded lock management
US20090043831A1 (en) * 2007-08-11 2009-02-12 Mcm Portfolio Llc Smart Solid State Drive And Method For Handling Critical Files
US7945587B2 (en) * 2007-10-10 2011-05-17 Microsoft Corporation Random allocation of media storage units
CN100578460C (zh) * 2007-12-21 2010-01-06 深圳市同洲电子股份有限公司 文件读写控制装置、系统及方法
US8620923B1 (en) * 2008-05-30 2013-12-31 Adobe Systems Incorporated System and method for storing meta-data indexes within a computer storage system
US7962458B2 (en) * 2008-06-12 2011-06-14 Gravic, Inc. Method for replicating explicit locks in a data replication engine
US20100094822A1 (en) * 2008-10-13 2010-04-15 Rohit Dilip Kelapure System and method for determining a file save location
US8542691B2 (en) * 2009-06-30 2013-09-24 Oracle International Corporation Classes of service for network on chips
US9575985B2 (en) * 2009-12-07 2017-02-21 Novell, Inc. Distributed lock administration
US20130024483A1 (en) * 2011-07-21 2013-01-24 Alcatel-Lucent Canada, Inc. Distribution of data within a database
US9805054B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Managing a global namespace for a distributed filesystem
US8543576B1 (en) * 2012-05-23 2013-09-24 Google Inc. Classification of clustered documents based on similarity scores
US9734237B2 (en) * 2012-10-08 2017-08-15 Bmc Software, Inc. Progressive analysis for big data
US20140105218A1 (en) * 2012-10-12 2014-04-17 Prashant H. Anand Queue monitoring to filter the trend for enhanced buffer management and dynamic queue threshold in 4g ip network/equipment for better traffic performance
US9489445B2 (en) * 2013-03-13 2016-11-08 Nice Systems Ltd. System and method for distributed categorization
US9336258B2 (en) * 2013-10-25 2016-05-10 International Business Machines Corporation Reducing database locking contention using multi-version data record concurrency control
US10264071B2 (en) * 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9811427B2 (en) * 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US10169367B2 (en) * 2014-06-06 2019-01-01 Panzura, Inc. Managing opportunistic locks in a distributed file system
US9646022B2 (en) * 2014-06-06 2017-05-09 Panzura, Inc. Distributed change notifications for a distributed filesystem

Also Published As

Publication number Publication date
BR112017000144A2 (pt) 2018-01-23
EP3146423A1 (en) 2017-03-29
CN106537386A (zh) 2017-03-22
MX2017000774A (es) 2017-05-04
WO2016011217A1 (en) 2016-01-21
US20160019300A1 (en) 2016-01-21
RU2017101414A3 (ko) 2019-02-13
JP2017520845A (ja) 2017-07-27
RU2017101414A (ru) 2018-07-17
AU2015289651A1 (en) 2017-01-12
CA2955011A1 (en) 2016-01-21

Similar Documents

Publication Publication Date Title
KR20170035985A (ko) 데이터 기록 동작들을 위한 파일의 식별
US10733079B2 (en) Systems and methods for end-to-end testing of applications using dynamically simulated data
US10713271B2 (en) Querying distributed log data using virtual fields defined in query strings
US11474974B2 (en) Coordinator for preloading time-based content selection graphs
CN107885488B (zh) 意图和具有意图的锁
US11720488B2 (en) Garbage collection of preloaded time-based graph data
AU2023241318B1 (en) Watermark-based techniques for change-data-capture
US20230023208A1 (en) Preloaded content selection graph validation
EP3900380B1 (en) Preloaded content selection graph for rapid retrieval
US10642676B2 (en) Scalable automated detection of functional behavior
US11748355B2 (en) Collection of timepoints and mapping preloaded graphs
US11829294B2 (en) Preloaded content selection graph generation
US20230033059A1 (en) System and methods for dynamic log indexing and processing
US20200265029A1 (en) Information processing apparatus, information processing method, and recording medium recording information processing program