KR101224752B1 - 시간 제한적 메시지들의 효율적인 처리 방법 - Google Patents
시간 제한적 메시지들의 효율적인 처리 방법 Download PDFInfo
- Publication number
- KR101224752B1 KR101224752B1 KR1020077027635A KR20077027635A KR101224752B1 KR 101224752 B1 KR101224752 B1 KR 101224752B1 KR 1020077027635 A KR1020077027635 A KR 1020077027635A KR 20077027635 A KR20077027635 A KR 20077027635A KR 101224752 B1 KR101224752 B1 KR 101224752B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- messages
- time
- metadata
- processing
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/212—Monitoring or handling of messages using filtering or selective blocking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Computer Hardware Design (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
시간 제한적 메시지들의 효율적인 처리가 본원에 기술된다. 일 구현예에서, 메시지들은 시간 제한적 메시지 또는 시간 비제한적 메시지 중 어느 하나로서 분류된다. 그런 다음, 시간 제한적 메시지는 시간 비제한적 메시지와 분리되어 처리된다. 시간 제한적 메시지의 예는 스팸 이메일, 또는 몇몇 세트의 기간 동안만 보존되도록 보존 정책하에 있는 기타 유형 또는 클래스의 이메일을 포함할 수 있다. 시간 제한적 메시지와 관련된 메타데이터는, 그 메시지와 분리되어 컴파일 및 저장됨으로써, 메타데이터 저장의 최적화 및 메시지로부터 분리된 처리를 가능케 한다. 시간 제한적 메시지들은 대량으로 처리되기 이전에 축적됨으로써, 시간 제한적 메시지들에 의해 소비되는 I/O 동작의 수를 감소시키고, 시간 제한적 메시지들의 처리를 지원하는 리소스의 양과 비용을 감소시킬 수 있다.
메시지 처리, 기간, I/O 동작,
Description
본 발명은 시간 제한적 메시지들의 효율적인 처리에 관한 것이다.
스팸은 이메일 서비스, 회사 엔터프라이즈, 및 ISP(Internet Service Provider)에 도달하여 처리되는 메시지들 중에서 많은 부분을 차지한다. 스팸의 유포로 인해, 이메일 서비스 및 ISP의 하드웨어 리소스 및 대역폭의 상당 부분이 스팸을 핸들링하고 처리하는 데 소요된다. 동시에, 스팸은 통상적으로 통상적인 메일과는 상이한 속성들을 가지며 다르게 다루어지기 때문에, 이들 특정 속성을 이용하고 특징들을 핸들링함으로써 이메일 서버 및 기타 하드웨어의 성능을 최적화할 기회를 갖는다. 보다 구체적으로, 스팸 메시지들은 통상적인 메일 메시지들보다는 크기가 작은 편이며, 덜 읽혀지는 경향이 있으며, 최종 사용자에게 덜 중요한 경향이 있어서, 대량으로 삭제되며, 통상적으로 소정의 기간(예컨대, 수일) 후에 자동으로 삭제된다.
마찬가지의 관점에서, 회사 엔터프라이즈는 이메일 등의 메시지 트래픽을 관리 및 저장함에 있어 유사한 문제에 직면할 수 있다. 보다 구체적으로, 회사 엔터프라이즈는 스팸에 의해서 영향을 받을 뿐만 아니라, 엔터프라이즈 내에서 일하는 사람이 발신 또는 수신하는 대규모의 비-스팸(non-spam) 메시지에 의해서도 영향을 받을 수 있다. 엔터프라이즈 내의 이메일 서버에 저장되는 이런 메시지들의 양을 줄이기 위해, 관리자는 소정의 기간 후에 특정 클래스의 메시지가 자동으로 삭제되도록 지시하는 정책을 확립한다. 예를 들어, 일부 유형 또는 클래스의 메시지들은, 메시지들이 "스팸"으로 여겨지는지 여부에 관계없이, 송신 또는 수신된 이후에 30일이 지나면 자동으로 삭제될 수 있다. 이런 의미에서, 이런 클래스의 비-스팸 메시지들은, 규정된 기간 동안 보존되고 이 기간이 만료된 후에 자동으로 삭제된다는 점에서, 스팸과 일부 특징을 공유할 수 있다.
상당한 수의 메시지들을 처리, 관리, 및 삭제하는 것은 통상적으로 메시지 서버가 상당한 수의 입력/출력(I/O) 동작을 수행하는 것을 수반한다. 이런 동작은 I/O 동작의 "페이로드(payload)"로 여겨질 수 있는 데이터를 실제로 이동시키기 위해 하드웨어, 예컨대, 디스크 드라이브를 준비시킬 때에 상당한 오버헤드를 포함하는 것으로 알려져 있다. 하지만, 이런 메시지들의 처리가 최적화될 경우, 이런 처리를 지원하는 데 소요되는 하드웨어 리소스들이 감소 또는 통합될 수 있어, ISP, 이메일 서비스 제공자, 회사 엔터프라이즈 등이 소비하는 총 운영비를 감소시킬 수 있다. 본원의 교시는 본 기술 분야의 이런 및 다른 요구들을 해결한다.
시간 제한적 메시지들의 효율적인 처리가 본원에 기술된다.
일 구현예에서, 메시지들은 시간 제한적 메시지 또는 시간 비제한적 메시지 중 어느 한 메시지로 분류된다. 그런 다음, 시간 제한적 메시지는 시간 비제한적 메시지와 분리되어 처리된다. 시간 제한적 메시지의 예로서, 소정의 설정된 기간 동안에만 유지되도록 하는 보존 정책하에 있는 스팸 이메일 또는 다른 유형 또는 클래스의 이메일을 포함할 수 있다. 시간 제한적 메시지들과 관련된 메타데이터는 메시지로부터 분리되어 저장 및 컴파일됨으로써, 메타데이터 저장의 최적화, 및 메시지와는 분리된 처리를 가능케 해준다. 시간 제한적 메시지들은 그것들이 대량으로 처리되기 전에 축적됨으로써, 시간 제한적 메시지들에 의해 소비되는 I/O 동작의 수를 감소시키고, 시간 제한적 메시지들의 처리를 지원하는 리소스의 양과 비용을 감소시킬 수 있게 된다.
상세한 설명은 첨부된 도면들을 참고하여 기술된다. 도면들에서, 참조 번호의 가장 좌측의 숫자는 참조 번호가 처음 마킹된 도면을 식별한다. 서로 다른 도면들에서 동일한 참조 번호는 유사하거나 동일한 구성 요소를 지시하는 데 사용된다.
도 1은 시간 제한적 메시지들의 효율적인 처리에 대한 고 레벨의 데이터 흐름을 나타내는 블록도이다.
도 2는 시간 제한적 메시지들을 처리하기 위한, 도 1에 도시된 관리 및 저장 시스템과 연관된 컴포넌트들 및 데이터 흐름들을 나타내는 블록도이다.
도 3은 특히 소정의 클러스터의 컴포넌트들인, 도 1 및 도 2에 도시된 관리 및 저장 시스템과 연관된 컴포넌트들 및 데이터 흐름들을 보다 상세히 나타내는 블록도이다.
도 4는 상기 도 3에 도시된 시간 제한적 메시지들의 바디(body)를 처리 및 저장하는 것과 연관된 컴포넌트들 및 데이터 흐름들을 보다 상세히 나타내는 블록도이다.
도 5는 상기 도 3에 도시된 메타데이터 저장 구조의 일 구현예를 나타내는 블록도이다.
도 6은 메타데이터 저장 구조의 다른 한 구현예를 나타내는 블록도이다.
도 7은 시간 제한적 메시지들을 수신 및 전달하기 위해 수행되는 프로세스 흐름을 나타내는 흐름도이다.
도 8은 메시지 바디들이 기입되는 하나 이상의 로그 파일들을 관리하기 위한 프로세스 흐름을 나타내는 흐름도이다.
도 9는 시간 제한적 메시지들에 대응하는 메타데이터를 저장하기 위한 프로세스를 나타내는 흐름도이다.
도 10은 도 9에 도시된 프로세스의 시퀀스 다이어그램이다.
도 11은 요청된 메타데이터 또는 헤더 정보를 서치(search)하기 위해 테이블 구조를 트래버싱(traversing)하기 위한 프로세스를 나타내는 흐름도이다.
도 12는 사용자에게 제시될 수 있도록 요청 시에 소정의 메시지를 검색(retrieving)하기 위한 프로세스를 나타내는 흐름도이다.
도 13은 소정의 메시지를 판독된 것으로 마킹하기 위한 프로세스를 나타내는 흐름도이다.
도 14는 본원에 기술된 컴퓨팅, 네트워크, 및 시스템 아키텍처뿐만 아니라 시간 제한적 메시지들의 효율적인 처리를 위한 시스템 및 방법이 전체적으로 또는 부분적으로 구현될 수 있는 컴퓨팅 환경을 나타내는 블록도이다.
도 1은 본원의 교시에 의해 제공되는 고 레벨의 데이터 흐름(100)을 나타낸다. 메시지들(105)은 메시지 클래시파이어(110)에 수신된다. 메시지 클래시파이어(110)는 이런 메시지들(105)을 적어도 2개의 카테고리로 나뉘는데, 첫번째 카테고리는 시간 제한적 메시지들(115)을 포함하고, 적어도 두번째 카테고리는 시간 비제한적 메시지들(120)을 포함한다. 시간 제한적 메시지들(115)은 그것들이 얼마나 오랫동안 보존될 것인가를 규정하는 몇몇 규칙하에 있는 메시지들을 포함한다. 서로 다른 시간 제한적 메시지들(115)은 하나 이상의 서로 다른 보존 기간하에 있다. 도 1은 메시지들(115) 중에 2가지 샘플 세트를 도시하며, 첫번째 메시지 세트(115(1))는 5일 보존 기간하에 있고, 두번째 메시지 세트(115(2))는 30일 보존 기간하에 있다. 명료함과 편의를 위해 2개의 메시지 세트(115)가 도면에 도시되어 있지만, 얼마든지 다른 보존 기간이 시간 제한적 메시지들(115)의 서로 다른 세트에 적용될 수 있다.
메시지들(115)은 시간 제한적 메시지들(115)을 위한 관리 및 저장 시스템(125)에 라우팅되고, 이 시스템(125)은 본원에 상세히 기술된다. 명료함과 편의를 위해, 2개의 메시지 세트(115(1) 및 115(2))가 관리 및 저장 시스템(125)의 인스턴스에 라우팅되는 것으로 도시된다. 하지만, 관리 및 저장 시스템(125)의 인스턴스 각각은 다른 보존 기간하에 있는 메시지들(115)의 서로 다른 세트에 대해 구 현될 수 있음에 유의해야 한다.
시간 비제한적 메시지들(120)은 그것들이 얼마나 오랫동안 보존될 것인가를 규정하는 임의의 규칙하에 있지 않은 메시지들(120)을 포함하므로, 무기한 보존된다. 이들 메시지(120)는 시간 비제한적 메시지들(120)을 위한 통상의 관리 및 저장 시스템(130)에 라우팅될 수 있다.
도 1에 도시된 데이터 흐름(100)은 다양한 환경에서 이용될 수 있다. 첫번째 예로서, 데이터 흐름(100)은 이메일 서비스를 복수의 가입자에게 제공하는 ISP에 관련하여 이용될 수 있다. 이런 첫번째 예에서, 메시지들(105)은 가입자에게 착신되는 이메일의 형태를 취할 수 있고, 메시지 클래시파이어(110)는 스팸 필터의 형태를 취할 수 있다. 시간 제한적 메시지들(115)은 메시지 클래시파이어(110)에 의해 스팸으로 식별되는 이메일의 형태를 취할 수 있다. 이 ISP는 스팸으로 분류되는 메시지들(105)을 얼마나 오랫동안 보존할 것인가를 규정하는 정책을 구현할 수 있다. 설명의 편의를 위해, 보유 시간은 본원에서 "보존 기간(retention period)"으로서 지칭된다(하지만 이에만 제한되는 것은 아님). 예를 들어, 스팸으로 분류되는 메시지들(105)은 5일의 보존 기간하에 있을 수 있다. 이 예에서, 스팸으로 분류되는 메시지들(105)은 관리 및 저장 시스템(125)에 라우팅되고, 이 시스템은 하기에 보다 상세히 기술된 바와 같이 스팸을 관리하고 보존 기간의 만료 후에 삭제한다.
두번째 예에서, 데이터 흐름(100)은 소정의 회사 엔터프라이즈를 위해 동작하는 이메일 애플리케이션에 관련해서 이용될 수 있다. 이런 엔터프라이즈는 그 엔터프라이즈가 수신하거나 송신하는 특정 클래스의 이메일들에 대해 보존 기간을 지정하는 정책을 구현할 수 있다. 예를 들어, 소정의 엔터프라이즈는 "송신된" 이메일의 형태인 메시지들(105)에 대해 30일의 보존 기간(이에 한정되는 것은 아님)을 지정할 수 있다. 이 예에서, 메시지 클래시파이어(110)는 이들 "송신된" 이메일들을 식별할 것이고, 그것들을 이러한 정책에 따라 처분하기 위해 관리 및 저장 시스템(125)에 라우팅할 것이다.
도 2는 시간 제한적 메시지들(115)을 핸들링하기 위한, 도 1에 도시된 관리 및 저장 시스템(125)과 연관된 컴포넌트들 및 데이터 흐름들을 나타낸다. 관리 및 저장 시스템(125)은 시간 제한적 메시지들(115)을 수신하는 프론트 엔드(205)를 포함하고, 프론트 엔드(205)와 통신하는 복수의 클러스터(210(1) 내지 210(N))(총체적으로, 클러스터(210))를 더 포함한다. 프론트 엔드(205)는 여러 클러스터들(210) 간에 로드 밸런스(load-balance)를 행하고, 파선(215)에 의해 나타낸 바와 같이, 시간 제한적 메시지들(115) 중 소정의 메시지를 클러스터들(210) 중 하나에 라우팅한다.
N개의 클러스터(210)가 도 2에 도시되어 있지만, 본원에 예시된 이런 구성 및 다른 구성은 편의 및 간결함을 위해 채용된 것이며, 본원의 교시를 한정하는 것은 아니다. 대신에, 본원의 교시는 임의의 수의 클러스터들(210)로 구현될 수 있으며, N은 0보다 큰 정수로 선택되며, 클러스터의 총 개수는 N이 된다. 이런 일반적인 설명은 정수 N에 관련하여 본원에 예시된 어떤 컴포넌트에도 적용된다.
도 3은 도 1 및 도 2에 도시된 관리 및 저장 시스템(125)과 연관된 데이터 흐름들 및 컴포넌트들, 특히 클러스터(210)의 컴포넌트들을 보다 상세히 나타낸다. 소정의 클러스터(210)는 클러스터(210)를 동작시키는 소프트웨어가 실행되는 복수의 서버 머신들(305(1) 내지 305(N))(총체적으로, 서버 머신(305))을 포함할 수 있다. 서버 머신(305)의 적합한 예는 본원에 교시된 기능들(function)을 지원하도록 구성된 피코 서버(pico Server)("PServ") 웹 서버이다.
프론트 엔드(205)는 소정의 시간 제한적 메시지들(115)을 수신하기 위해 소정의 클러스터(210)를 선택한다. 선택된 클러스터(210) 내의 소정의 서버 머신(305)은 소정의 시간 제한적 메시지(115)의 바디(310)를 하나 이상의 저장 머신(315)에 저장을 위해 전달하며, 이는 하기의 도 4와 관련하여 보다 상세히 기술될 것이다. 서버 머신들(305)은 또한 시간 제한적 메시지들(115)과 관련된 메타데이터(320)로 헤더 구조를 채우고, 이런 메타데이터(320)를 메타데이터 저장 구조(325)에 라우팅하며, 이들 전부에 대해서는 도 5와 관련하여 하기에 보다 상세히 기술된다.
서버 머신들(305)은 메시지 바디들(310)과 메타데이터(320)를 분리된 저장소 구조에 기입함으로써, 메시지 바디들(310)과 메타데이터(320)가 서로 분리되어 저장될 수 있게 된다. 메시지 바디들(310)은 전체적으로 메시지들과 관련된 임의의 헤더 데이터를 포함하는 것으로 여겨지지만, 메타데이터(320)를 포함하는 헤더 구조들 자체는 메시지 바디들(310)과 분리되어 저장될 수 있다. 메시지 바디들(310)을 메타데이터(320)와는 분리하여 저장함으로써, 관리 및 저장 시스템(125)이 메시지 바디들(310) 및 메타데이터(320)를 서로 독립적으로 처리하는 것을 최적화할 수 있게 된다. 본원에 사용된 "처리"라는 용어는 적어도 메시지들을 수신, 핸들링, 저장, 또는 검색하는 것, 혹은 임의의 적용 가능한 보존 기간의 만료 후에 메시지들을 삭제하는 것을 포함할 수 있다.
도 3은 단지 편의와 간결함을 위해 N개의 서버 머신(305)(개별적으로는, 서버 머신(305(1) 내지 305(N)))과 N개의 저장 머신(315)(개별적으로는, 저장 머신(315(1) 내지 315(N)))을 나타낸다. 하지만, 이런 예시가 본원의 교시를 제한하는 것은 아님에 유의해야 한다. 대신에, 본원의 교시는 임의의 수의 서버 머신들(305) 및 저장 머신들(315)에서 구현될 수 있다. 보다 구체적으로는, 단일 박스가 서버 머신(305), 저장 머신(315), 및 메타데이터 저장소(325)를 실행 또는 관리할 수 있다. 대안으로서, 전술한 머신들 중 일부 또는 전부는 다른 박스들에 구현될 수 있다.
도 4는 도 3에 도시된 시간 제한적 메시지들(115)의 바디들(310)을 처리 및 저장하는 것과 연관된 컴포넌트들 및 데이터 흐름들을 보다 상세히 나타낸다. 상기 도 3에 설명된 바와 같이, 메시지 바디들(310) 및 메타데이터(320)는 분리되고, 분리된 구조들에서 핸들링 및 저장된다. 도 4는 메시지 바디들(310)의 관리에 대해 설명하고, 반면에 도 5는 메타데이터(320)의 관리에 대해 설명한다.
각각의 서버 머신(305)은 메시지 바디들(310)이 도착할 때 저장되는 데이터 구조(405)를 유지한다. 이런 데이터 구조(405)는 서버 머신(305)의 메모리에 상주할 수 있다. 데이터 구조(405)의 정확한 특성은 중요하지 않으며, 예컨대, 큐, 링크 리스트(linked list), 스택, 어레이 등의 형태라고 가정할 수 있다. 데이터 구 조(405)는 각각의 메시지 바디들(310)을 위한 각각의 필드(410(1) 내지 410(N))(총체적으로, 필드(410))를 포함하고, 단지 편의상, 소정의 메시지 바디(310)가 필드(410(N)) 내로 로드되는 것으로 도시되어 있다. 데이터 구조(405)가 큐로서 구현되는 것을 가정하면, 소정의 메시지 바디(310)가 큐에 추가될 수 있다.
데이터 구조(405)는 복수의 각각의 메시지 바디들(310)을 축적하도록 기능한다. 데이터 구조(405)가 충분히 클 때(예컨대, 대략 메가바이트 정도), 또는 소정의 시간(예컨대, 100 milliseconds 마다)이 지난 후에, 데이터 구조(405)의 메시지 바디들(310)은 각각의 저장 머신(315) 상에서 호스팅되는 하나 이상의 로그 파일(415(1) 내지 415(N))(총체적으로, 로그 파일들(415) 또는 로그 파일 세트(415))에 기입된다. 본원에 사용된, "세트"라는 용어는 하나 이상의 수량을 지칭한다. 저장 머신들(315)은 디스크-드라이브 매체 및 관련 저장 기술을 이용하여 로그 파일들(415)을 호스팅할 수 있다. 소정의 메시지 바디들(310)은, 소정의 구현예에서 적절한 경우, 리던던시 및 장애 허용오차를 위해 로그 파일 세트들(415)에 기입될 수 있다. 본원의 교시의 일부 양상에 따르면, 로그 파일들(145)은 하나 이상의 데이터베이스를 이용하여 적어도 부분적으로 구현될 수 있다. 이런 구현예에서, 로그 파일들(145)은 일괄 처리되어 테이블 세트에 기입될 수 있다. 본원의 교시 중 이러한 양상들은 사실상 예시적이며 제한적이지 않음을 이해해야 한다.
서버 머신들(305)은 저장 머신들(315) 간에 로드 밸런스를 행하도록 편향될 수 있는 수정된 라운드-로빈(round-robin) 알고리즘을 이용하여 저장 머신들(315) 상의 로그 파일 세트(415)를 선택할 수 있다. 예를 들어, 소정의 저장 머신(315) 이 그 저장 용량에 접근할 때, 서버 머신(305)은 새로운 메시지 바디들(310)이 그 저장 머신(315)에 기입되는 속도를 감소시킬 수 있다. 본원의 교시의 예시적인 실시예에서, 소정의 로그 파일(415)은 단 하나의 서버 머신(305)에 의해 기입됨으로써, 서로 다른 서버 머신들(305)에 의한 소정의 로그 파일(415)에의 기입들을 조정할 필요성이 없게 된다. 로그 파일 세트(415)는, 로그 파일 세트(415)의 일부에 기입 에러가 존재할 경우, 또는 로그 파일들(415)이 소정의 기간(예컨대, 몇 시간) 동안 오픈되었을 경우, 클로즈될 수 있으며, 이는 도 6에 관련하여 하기에 더 기술되어 있다.
로그 파일들(415)은, 캐시, 버퍼, 또는 다른 형태의 중간 데이터 구조에 기입하는 것과는 대조적으로, 디스크 매체를 통해 직접 기입하는 옵션을 이용하여 기입될 수 있고, 기입 동작은 기입이 지속성있게 될 때까지 미완료된 것으로 여겨질 수 있다. 저장 머신(315)에의 기입이 완료될 때, 서버 머신(305)은 소정의 메시지 바디(310)를 저장하는 로그 파일(415)의 이름, 로그 파일(415)을 포함하는 저장 머신(315), 로그 파일 내의 소정의 메시지 바디(310)의 오프셋, 및 메시지 바디(310)의 길이를 알고 있다. 서버 머신(305)은 메시지 바디(310) 각각에 대한 이들 파라미터를 메타데이터(320)로서 메타데이터 저장 구조(325)에 저장할 수 있다.
메시지 바디(310) 각각을 로그 파일(145)에 기입하는 것과는 대조적으로, 복수의 메시지 바디들(310)을 로그 파일들(415)에 기입하기 전에 데이터 구조(405)에 축적함으로써, 관리 및 저장 시스템(125)은 보다 높은 효율성을 달성할 수 있다. 저장 머신들(315)이 디스크 드라이브와 같은 보조 저장 장치를 포함하고, 이런 드 라이브로부터 판독하거나 그에 기입하는 것은 "I/O 동작"이라고 하면, I/O 동작 각각은 임의의 데이터 "페이로드"가 저장 매체로부터 판독되거나 그에 기입되기 전에 저장 매체 내의 적절한 섹터를 위치찾기 하는데 상당한 량의 오버헤드를 포함한다. 보다 구체적으로, 이런 오버헤드는 드라이브가 드라이브상의 적절한 트랙을 찾는데 걸리는 시간, 이 트랙으로 판독-기입 헤드를 방사상으로 이동시키는 데 걸리는 시간, 및 판독-기입 헤드 아래에 목표 섹터가 위치되도록 드라이브를 적절하게 회전시키는 데 걸리는 시간을 포함한다. 통상적으로, 이런 오버헤드 시간은 페이로드가 크지 않는 한, 데이터를 저장 매체에 또는 저장 매체로부터 전송하는 시간을 거의 초과한다. 예를 들어, 동시대의 표준에 의해, 이런 트레이드 오프 지점은 메가바이트 정도의 페이로드 근처일 수 있다. 하지만, 기술이 발전하면서, 이런 트레이드 오프 지점은 변동할 수 있다.
메시지 바디들(310)을 개별적으로 또는 부분적으로 저장 머신들(315)에 기입하는 것은 비효율적인데, 왜냐하면 메시지 바디들(310) 자체를 기입하는데 보내는 실제 시간이 상기 오버헤드에 비하여 작을 것이기 때문이다. 또한, 이런 오버헤드는 관리 및 저장 시스템(125)에 의해 수신되는 메시지 바디(310) 각각마다 반복될 것이어서, X개의 메시지 바디들(310)을 저장하는 것은 오버헤드 X번 반복을 초래하게 된다. 대신에, 관리 및 저장 시스템(125)은 복수의 메시지 바디들(310)을 데이터 구조(405)에 축적하고, 그 후에 이들 축적된 메시지 바디들(310)을 대량으로 저장 머신들(315)에 기입한다. 이들 메시지 바디(310)가 대량으로 기입되기 때문에, 상기 오버헤드는 메시지 바디들(310)을 저장 머신들(315)에 기입하는 전체 I/O 동 작 중 작은 부분만을 소비한다. 또한 X개의 메시지 바디들(310)은 상기 오버헤드의 단 하나의 인스턴스로 저장될 수 있다. 이런 요소들에 의해 관리 및 저장 시스템(125)에 의해 수행되는 I/O 동작의 전체 효율성이 증가된다.
I/O 동작 각각이 보다 많은 "페이로드"를 이동시켜 보다 효율적이 되기 때문에, 본원에 교시된 바와 같이 구성된 시스템 및 방법은 종래의 시스템의 메시지 처리 로드를 더 적은 I/O 동작으로 지원할 수가 있다. 따라서, 이 로드를 서비스하는데 더 적은 머신이 관련되고, 이는 머신을 획득 및 관리함에 있어 더 적은 투자가 필요함을 의미한다. 또는, 소정의 세트의 리소스를 가진 종래의 시스템이 본원에 교시에 따라 적응된다면, 보다 많은 메시지 로드를 핸들링할 수가 있다.
도 5는 도 3에 도시된 메타데이터 저장 구조(325)의 구현예(500)를 나타낸다. 메타데이터 저장 구조(325)의 다른 실시예는 도 6에 관련하여 하기에 도시 및 기술되어 있다.
전술된 로그 파일들(415)은, 효율적으로 메시지 바디들(310)을 대량으로 수집 및 저장할 수 있지만, 사용자가 그 또는 그녀의 메일박스의 콘텐츠를 나열하거나 보길 원할 때, 로그 파일들(415)로부터 분리하여 메타데이터(320)를 저장하도록 보조 구조(315)를 유지하는 것이 보다 효율적일 수 있다. 이런 메타데이터(320)는 적합한 이메일 애플리케이션이 메시지들의 헤더를 디스플레이할 수 있게 하는 정보를 포함할 수 있다.
메타데이터(320)는 최종 사용자에게 비교적 가시화된 데이터, 최종 사용자에게 가시화되지 않은 다른 데이터를 포함할 수 있다. 가시성 메타데이터(320)는 메 시지들의 생성 주소 및/또는 목적지를 나타내는 데이터, 송신 또는 수신 시각들을 나타내는 시간 또는 날짜 스탬프, 제목 줄, 메시지들이 판독되었는지 여부를 나타내는 아이콘 등을 포함할 수 있다. 가시성이 낮은 메타데이터(320)는 소정의 메시지 바디(310)의 위치를 찾는 것과 관련된 정보를 포함할 수 있고, 소정의 메시지 바디(310)를 포함하는 로그 파일(415)의 이름, 로그 파일(415)을 포함하는 저장 머신(315), 로그 파일(415) 내의 메시지 바디(310)의 오프셋, 및 메시지 바디(310)의 길이를 포함할 수 있다.
메타데이터 저장 구조(325)는 적어도 도 5에 도시된 실시예(500)로서 구현될 수 있다. 이 실시예(500)에서, 메타데이터 저장은 한 세트의 데이터베이스 테이블(505)(예컨대, SQL 기반의 테이블)로서 구현될 수 있고, 도 6에 도시된 두번째 실시예에서는, 이미지 기반의 로그로서 구현될 수 있다. 이 둘 실시예에서, 소정의 메일박스를 위한 메타데이터(320)는 소정의 저장 머신(315)상에 저장될 수 있다. 또한, 메타데이터(320)는 갱신 요청을 수신하는 서버 머신(305)으로부터 트랜잭션을 실행시킴으로써 갱신될 수 있다. 테이블 기반의 구현예에서, 갱신 각각은 단 하나의 트랜잭션을 포함하고, 갱신은 적절한 테이블에 추가된다. 일부 이미지 기반의 구현예는 이런 갱신을 수행하기 위해서 분리된 판독 및 기입 트랜잭션을 실행시킬 수 있다. 하지만, 다른 이미지 기반의 구현예는 기입들을 섹터 경계들에서 라운딩 업(rounding-up)함으로써, 또는 섹터의 종단부(tail end)를 메모리에 저장함으로써 판독 트랜잭션을 피할 수 있다.
이와 대조적으로, 종래의 해법은 메시지 로그 파일들로의 부분적 기입들을 고려하여 갱신마다 2개의 트랜잭션을 필요로 할 수 있다. 첫번째 트랜잭션에서는 부분적 메시지 로그 파일 기입들을 판독하고, 두번째 트랜잭션에서는 갱신들을 기입한다.
도 5 및 도 6에 도시된 실시예는 메타데이터(320)가 보존 기간 후에도 존재하도록 허용할 수 있다. 즉 일부 메타데이터(320)는 만료 및/또는 삭제되었던 로그 파일들(415) 및 메시지 바디들(310)을 기술할 수 있다. 메타데이터(320)는 메시지 바디들(310)과는 분리되어 저장 및 관리되기 때문에, 분리된 유지관리 및 삭제 알고리즘이 메타데이터(320) 및 메시지 바디들(310)에 대해 규정 및 최적화될 수 있다. 소정 세트의 메시지 바디들(310) 및/또는 로그 파일들(415)을 삭제하는 것이 매우 효율적일 때, 대응하는 메타데이터(320)를 삭제하는 것이 효율적이지 않을 수 있다. 하지만, 하기에 상세히 기술된 바와 같이, 서버 머신들(305)은 메타데이터 저장 구조(325)를 트래버싱할 때 이런 "만료된" 메타데이터(320)를 무시한다. SQL 테이블(505)로서 메타데이터 저장의 구현예를 특징짓는 실시예에서, 서버 머신들(305)은 삭제된/만료된 로그 파일들(415) 및/또는 메시지 바디들(310)을 위한 메타데이터(320)를 반환하지 않도록 지정된 쿼리들을 기입할 수 있다.
데이터베이스 테이블 실시예(500)에서, 메타데이터(320)는 한 세트의 테이블(505)에 저장될 수 있다. 대표적인 테이블(505(1))에서 하나의 로우(510(1))는 관리 및 저장 시스템(125)에 의해 저장된 메시지 바디(310) 각각에 대응할 수 있다. 새로운 메시지 바디들(310)이 저장 또는 삭제될 수 있기 때문에, 추가적인 로우(510(N))가 생성되거나, 기존의 로우(510(N))가 삭제 또는 비워질 수 있다.
테이블(505)은 사실상 세대별(generational)로 구성될 수 있다. 즉, 소정의 테이블(505)은 소정의 기간 동안, 예컨대, 보존 기간의 대략 절반 동안, 메시지 바디들(310)의 전부에 대한 메타데이터(320)를 저장할 수 있다. 테이블(505)은 메일박스 ID(515) 및 메시지 ID(520)에 의해 색인될 수 있고, 테이블(505)의 컬럼은 전술된 메타데이터의 다양한 유형에 대응할 수 있다. 소정의 메시지 바디(310) 각각에 대해, 컬럼(525)은 메시지 바디(310)를 저장하는 로그 파일(415)을 포함하는 저장 머신(315)의 ID를 저장할 수 있고, 컬럼(530)은 저장 머신(315) 내의 로그 파일(415)의 ID를 저장할 수 있고, 컬럼(535)은 로그 파일(415) 내의 메시지 바디(310)의 오프셋을 저장할 수 있고, 컬럼(540)은 메시지 바디(310)의 길이를 저장할 수 있다. 분리된 테이블은 전술된 것들을 복제하는 다른 구조들 또는 임의의 테이블의 위치를 추적할 수 있다.
도 6은 메타데이터 저장 구조(325)의 추가적인 구현예(600)를 나타낸다. 본 실시예(600)는 3개의 로우 - 소정의 메일박스의 이름을 위한 로우(610); 세대 번호(통상적으로 정수)를 포함하는 로우(615); 및 소정의 메일박스의 이미지를 위한 로우(620)) - 를 갖는 테이블(605)을 포함할 수 있다. 각각의 컬럼(625)은 메일박스 각각에 대해 인스턴스화될 수 있다.
이미지(620)는 본원에서 로그 "블롭(blob)"으로서 지칭된다. "블롭"이라는 용어는 본 업계에서는 "binary large object"에 대한 약칭으로서 알려져 있다. 따라서, 메시지 바디마다 하나의 로우(515)를 갖는 테이블(505)을 규정하는 것보다는, 본 실시예(600)는 채워진(non-empty) 메일박스 각각을 위한 이미지 또는 로그 블롭(620)을 포함할 수 있다.
로그 블롭(620)은 전술된 테이블(505)에 포함된 메타데이터(320)와 유사한 메타데이터(320)를 포함할 수 있다. 서버 머신(305)이 소정의 메일박스를 위한 메타데이터를 갱신할 때, 이는 메타데이터 저장 구조(325)로부터 그 메일박스에 대한 로그 블롭(620) 및 세대 번호(615)를 검색할 수 있다. 그 후에, 서버 머신(305)은 새로운 메타데이터(320)로 로그 블롭(620)을 갱신할 수 있고, 세대 번호(615)를 증가시키고, 갱신된 로그 블롭(620) 및 증가된 세대 번호(615)를 메타데이터 저장 구조(325)에 다시 기입할 수 있다.
갱신된 로그 블롭(602) 및 세대 번호(615)를 메타데이터 저장 구조(325)에 다시 기입하기 전에, 서버 머신(305)은 서버 머신(305)이 로그 블롭(620)을 원래 판독한 이후에 메타데이터 저장 구조(325)에 현재 저장되어 있는 로그 블롭(565)의 세대 번호(615)가 변경되었는지 여부를 체크한다. 세대 번호(615)가 원래 판독된 이후에 변경되었다면, 이는 판독과 갱신 중간에 다른 서버 머신(305) 또는 다른 프로세스가 로그 블롭(605)을 갱신하였다는 것을 나타낼 수 있다. 이런 경우, 서버 머신(305)은 로그 블롭(620)을 재판독하고 메타데이터 저장 구조(325)에 갱신을 재시도한다.
서버 머신(305)이 로그 블롭(620)을 원래 판독한 이후에 세대 번호(615)가 변경되지 않았다면, 서버 머신(305)은 메타데이터 저장 구조(325)를 갱신한다. 이런 방식으로, 세대 번호(615)는 다른 서버 머신들(305) 또는 다른 프로세스들이 동일한 메일박스에 대해 모순되는 갱신들을 수행하지 않도록 할 수 있다.
전술된 세대 번호 방안에 대한 대안으로서, 그것을 갱신하는 기입 트랜잭션을 제거하기 위해, 현재의 값이 여전히 서버 머신(305)이 원래 판독했던 값이면, 서버 머신(305)은 로그 블롭(620)을 새로운 값에 따라 갱신하는 강화된 갱신 트랜잭션을 이용하여 메타데이터 저장 구조(325)를 갱신된 로그 블롭(620)으로 갱신할 수 있다. 이런 대안적인 접근법은 하나 적은 파라미터를 관리하기 위한 교환에 있어 트랜잭션마다 더 많은 데이터를 이동시키는 것을 포함할 수 있지만, 이런 트레이드 오프는 몇몇 상황에서 바람직할 수 있다.
다른 대안은 세대 번호 접근법과 강화된 갱신 트랜잭션 접근법의 양상들을 결합한다. 이런 대안은 세대 번호(615)를 로그 블롭(620)의 시작 또는 끝에 추가할 수 있다. 갱신 동안에, 서버 머신(305)은 일치하는-조회(identical-looking) 중간 결과를 생성하는 한 세트의 갱신이 적절하게 연재되도록 보장하기 위해 세대 번호(615)를 참조할 수 있다.
소정의 메일박스를 위한 로그 블롭(620)이 갱신될 때, 서버 머신(350)은 로그 블롭(620)을 재기입하기 전에 그 메일박스를 위한 메타데이터(320)에서 임의의 무효한(stale) 엔트리를 삭제할 수 있다. 무효한 엔트리는 예컨대, 적용가능한 보존 기간보다 오래된 시간 제한적 메시지들(115)에 대응하는 엔트리를 포함할 수 있다. 메일박스 내에 메시지 바디들(310)이 더 이상 없을 경우, 세대 번호(615)는 증가되고, 로그 블롭(620)은 삭제된다. 로그 블롭(620)을 삭제하기 위한 한 방법은 그것을 길이가 제로인 파일로서 기입하는 것이다.
채워진 로그 블롭(620)은 최소한의 사이즈를 가질 수 있고, 이 사이즈는 메 일박스의 작은 비율만이 이 사이즈보다 더 큰 사이즈를 필요로할 수 있을 정도로 충분히 큰 값이다. 충분한 수의 연속된 페이지들이 로그 블롭(620)을 위한 테이블(605)에 할당되는 경우, 로그 블롭(620)은 그것이 확대 또는 축소될 때에 재할당될 필요가 없다. 예를 들어, 소정의 구현예에서, 8개의 메시지들이 날마다 메일박스 각각에 도달한다고 가정한다. 소정의 시간 제한적 메시지(115)를 위한 메타데이터(320)가 약 500 byte이고, 보존 기간이 5일이라면, 로그 블롭(565)의 평균 사용 부분은 약 20K가 될 것이다. 따라서, 64K 최소 블롭 사이즈인 경우에는 거의 모든 로그 블롭(620)이 확대될 필요가 없게 된다. 이런 접근법은 다른 해법보다 더 넓은 전체 공간을 사용할 수는 있지만, 사용된 총 공간은 상대적으로 여전히 작을 것이다. 저장 머신(315)마다 메일박스의 평균수는 약 100,000이고, 메일박스마다 64K를 할당하는 것은 로그 블롭(620)을 지원하는 저장 머신(315)마다 저장에 있어 6.4G가 필요함을 초래할 것이다.
소정의 메일박스가 전혀 활성화되지 않은 경우(메시지가 도착하지도 않고, 소유자에 의한 액세스도 없는 경우), 그 로그 블롭(620)은 그것이 만료된 메시지 바디들(310)을 기술하고만 있을지라도 무기한 지속될 수 있다. 관리 및 저장 시스템(125)의 일부 실시예에서, 디먼(daemon)은 메일박스를 트래버싱하고, 만료된 메시지 바디들(310)에 관련된 임의의 메타데이터(320)를 제거할 수 있다. 하지만, 관리 및 저장 시스템(125)이 어느 정도의 기간 후에 비활성화 메일 계정을 완전히 제거한다면, 이런 유형의 디먼 처리는 가치있는 일이 아닐 수 있다.
도 7은 시간 제한적 메시지들(115)을 수신 및 저장하기 위해 수행되는 프로 세스(700)를 나타낸다. 단계(705)에서, 프로세스(700)는 소정의 시간 제한적 메시지(115)의 도착, 또는 데이터 구조(405)(이는 버퍼의 형태를 취할 수 있음)와 연관된 타임아웃 파라미터의 만료 중 어느 한 경우가 발생하기를 기다린다. 예를 들어, 소정의 시간 제한적 메시지들(115)이 관리 및 저장 시스템(125)에 수신되고 서버 머신(305)에 라우팅될 수 있다. 이들 이벤트 중 어느 하나라도 발생할 때, 프로세스(700)는 단계(710)로 진행하고, 여기서 데이터 구조(405)와 연관된 타임 아웃 파라미터가 만료되었는지 여부를 판정한다. 타임 아웃 파라미터가 만료되지 않았다면, 프로세스(700)는 시간 제한적 메시지(115)를 데이터 구조(405)에 로드하며, 이는 단계(715)에 의해 지시된다. 이후에, 프로세스(700)는 단계(720)로 진행하여 데이터 구조(405)가 가득 찼는지(full) 여부를 평가한다. 데이터 구조(405)가 아직 가득 차지 않았다면, 프로세스(700)는 단계(705)로 되돌아가서 타임아웃 조건 또는 다음 시간 제한적 메시지(115)의 도착 중 어느 한 경우일 수 있는 다음 이벤트를 기다린다. 단계(720)로부터, 데이터 구조(405)가 가득 차 있는 경우에, 프로세스(700)는 단계(725)로 진행한다. 도 7은 프로세스(700)를 나타낼 때 편의와 명료함을 위해 온 페이지(on-page) 참조 A를 포함한다. 하지만, 온 페이지 참조 A를 포함하는 것이 본원의 교시를 결코 제한하는 것은 아니다.
단계(710)로 되돌아가서, 타임 아웃 파라미터가 만료된 경우라면, 프로세스(700)는 단계(725)로 진행한다. 다시 한번, 온 페이지 참조 A를 포함하는 것이 본원의 교시를 결코 제한하는 것은 아니다. 단계(725)에서, 프로세스(700)는 현재의 로그 파일(들)(415)에 기입하기 위한 시간 제한을 초과하였는지를 판정한다. 본원의 다른 부분에서 보다 상세히 설명된 바와 같이, 소정의 로그 파일(들)(415)은 제한된 기간 동안 기입될 수 있다. 현재의 로그 파일(들)(415)에 대한 시간 제한을 초과하였다면, 프로세스(700)는 단계(730)로 진행하여 현재의 로그 파일(들)(415)을 클로즈한다. 그 후, 프로세스(700)는 단계(735)로 진행하여 새로운 로그 파일(들)(415)을 오픈한다. 이후에, 프로세스(700)는 판정 단계(725)로 되돌아간다.
단계(725)에서, 현재의 로그 파일(들)(415)에 대한 시간 제한을 초과하지 않았다면, 프로세스(700)는 단계(740)로 진행하고, 여기서 데이터 구조(405)의 콘텐츠(즉, 다양한 시간 제한적 메시지들(115)의 바디들)가 하나 이상의 로그 파일들에 기입된다. 시간 제한적 메시지들(115)과 관련된 메타데이터(320)의 후속 처리를 용이하게 하기 위해서, 메시지(115) 각각에는 타임 스탬핑이 행해진다. 이런 타임 스탬핑은 메시지(115)가 데이터 구조(405)에 로드될 때, 또는 데이터 구조(405)의 콘텐츠가 로그 파일(들)(415)에 기입될 때, 행해질 수 있다.
단계(745)에서는 로그 파일(들)(415)로의 이런 기입이 성공했는지 여부를 테스트한다. 메시지들(115)이 2개 이상의 로그 파일(들)(415)에 리던던시를 위해 기입된다고 가정하면, 임의의 로그 파일(415)로의 기입이 실패할 경우, 프로세스(700)는 단계(730)로 진행하여, 현재의 로그 파일(들)(415) 각각을 클로즈한다. 그 후, 프로세스(700)는 단계(735)로 진행하여, 하나 이상의 새로운 로그 파일(들)(415)을 오픈한다. 이후에, 프로세스(700)는 현재의 로그 파일(들)(415)에 기입하기 위한 시간 제한을 초과하였는지를 테스트하는 판정 단계(725)로 진행된다. 현재의 로그 파일(들)(415)은 지금 막 생성되었기 때문에, 프로세스(700)는 단계(740)로 진행되어 기입 동작을 재시도할 것이다.
일부 실시예에서, 프로세스(700)는 이전의 기입이 실패한 로그 파일(415)을 호스팅하는 저장 머신(315) 이외의 다른 저장 머신들(315)상에서 새로운 로그 파일(들)(415)을 오픈할 것이다. 프로세스(700)의 이런 양상에 의해 메시지들(115)은 로그 파일 세트(415) 중 하나의 로그 파일(415)에 기입되게 되고, 다른 로그 파일(들)(415)에는 기입되지 않게 될 수 있다. 하지만, 로그 파일 세트(415)로의 복합적 기입이 실패했기 때문에, 로그 파일(415) 중 비복제된 부분을 참조하는 메타데이터(320)는 없으며, 따라서 로그 파일(415) 중 비복제된 부분은 나중에 액세스되지 않게 된다. 로그 파일 세트(415) 중 절반에 대한 기입이 실패할 때 로그 파일들(415)이 클로즈되고 다시 기입되지 않기 때문에, 로그 파일들(415)의 끝이 다를 수 있다. 하지만, 로그 파일들(415)의 이러한 서로 다른 끝을 참조하는 메타데이터(320)는 없으며, 이러한 서로 다른 끝은 나중에 액세스되지 않기 때문에, 이들 파일들의 끝이 서로 다를 수 있다는 사실은 중요하지 않다.
로그 파일들(415)은, 로그 파일 세트(415)의 양쪽 부분들이 동일한 이름을 가지는, GUID(Globally Unique Identifier) 이름을 이용할 수 있다. GUID는 서버 머신(305)이 관리 및 저장 시스템(125)의 다른 컴포넌트와의 조정 없이 모순되지 않는 로그 파일들(415)의 이름을 생성할 수 있도록 해준다.
시간 제한적 메시지들(115)은 메시지들(115)이 도착한 시각의 낮은 차수 비트들에 기초하여 저장 머신들(315)상의 로그 파일들(415)에 할당될 수 있다. 메시 지들(115)을 저장 머신들(315)상의 로그 파일들(415)에 할당하는 이런 접근법의 결과로, 특정 메일박스에 대한 메시지들(115)은 다른 저장 머신들(315)에 배포될 수 있다. 이는 불규칙한 메일박스 사이즈와 로드가 관리 및 저장 시스템(125)에서 로드 핫스팟(load hotspot) 또는 오버로드를 유발할 것 같지 않다는 것을 의미한다. 다양한 저장 머신들(315)상에서 이용가능한 자유 공간에 기초하여 라운드 로빈 알고리즘을 편향시킴으로써 관리 및 저장 시스템(125)에서의 저장 핫스팟 또는 오버로드의 발생 확률을 더 감소시킬 수 있다.
판정 단계(745)에서, 기입이 성공했으면, 프로세스(700)는 단계(750)로 진행하여 저장된 메시지들(115)에 대응하는 메타데이터(320)를 생성한다. 로그 파일들(415)에 기입되는 다양한 메시지들(115)이 여러 다른 사용자에게 주소지정될 수 있고, 따라서 여러 다른 메일박스와 연관될 수 있다. 그 결과로서, 사용자 각각의 메일박스는 여러 다른 저장 머신들상에 저장된 여러 로그 파일들(415)에 저장되는 각각의 메시지들을 포함할 수 있다. 메타데이터(320)는 메일박스 각각에 대한 이들 각종 메시지들(115)의 위치지정 및 수집을 가능하게 할 수 있다. 따라서, 사용자 각각의 메일박스는 통상적으로 메타데이터 저장 구조(325)와 연관된다. 단계(755)에서, 프로세스(700)는 현재의 로그 파일(들)(415)에 기입되는 메시지(115) 각각을 트래버싱하고, 메시지(115) 각각이 주소지정되는 메일박스를 식별하고, 이런 메일박스 각각에 대한 메타데이터(320)를 호스팅하는 메타데이터 저장 구조(325)를 위치찾기한다. 단계(760)에서, 프로세스(700)는 단계(745)에서 생성된 메타데이터(320)를 갖는 이런 메일박스 각각에 대한 메타데이터 저장 구조(325) 내 의 엔트리를 갱신한다.
프로세스(700)가 도 5에 도시된 데이터베이스 테이블 실시예(500)로 실시된다고 가정하면, 프로세스(700)는 새로운 메시지 바디(310)를 기술하는 가장 최근의 생성 테이블에 새로운 로우(510)를 추가함으로써, 새로운 메시지 바디(310)를 위해 생성된 메타데이터(320)에 대한 엔트리를 생성할 수 있다.
프로세스(700)가 도 6에 도시된 로그 블롭 실시예(600)로 실시된다고 가정하면, 프로세스(700)는 블롭 이미지(620) 및 세대 번호(615)를 판독하고, 임의의 만료된 엔트리들을 블롭 이미지(620)로부터 축출하고, 새로운 메시지 바디(310)를 위한 엔트리를 블롭 이미지(620)에 추가하고, 세대 번호(615)가 변경되지 않았다면, 메타데이터(320) 저장소 구조(325)에 블롭 이미지(620) 및 세대 번호(615)를 갱신하는 트랜잭션을 개시한다. 세대 번호(615)가 변경되었다면, 프로세스(700)는 메타데이터 저장 구조(325)로부터 그것을 판독한 지점에서 재시작한다.
도 8은 메시지 바디들(310)이 기입되는 하나 이상의 로그 파일들(415)의 상태를 모니터링하기 위한 프로세스 흐름(800)을 나타낸다. 단계(805)에서, 본원에 기술된 보존 기간 파라미터가 설정된다. 상기 이메일 스팸 예에서는, 스팸의 보존 기간이 5일로 설정될 수 있다. 상기 엔터프라이즈 이메일 관리 예에서는, "송신된" 메시지들의 보존 기간이 30일로 설정될 수 있다. 단계(810)에서, 프로세스(800)는 메시지 바디들(310)이 기입된 로그 파일들(415) 중 가장 오래된 파일을 선택한다. 예를 들어, 프로세스(800)는 로그 파일(들)(415)과 연관된 기입 타임스탬프를 액세스할 수 있다. 몇몇 이유로, 기입 타임스탬프가 이용 불가능 또는 액 세스 불가능한 경우, 메시지 바디들(310)이 도달 순서로 로그 파일(415)에 기입된 것으로 가정하면, 마지막 메시지 바디(310)가 로그 파일(415)에 기입되었던 시간이 로그 파일(415)의 나이를 결정할 수 있다. 단계(815)에서, 프로세스(800)는 로그 파일(415)이 보존 기간보다 더 오래된 것인지 여부를 판정한다. 로그 파일(415)이 보존 기간보다 오래된 것이 아니면, 프로세스(800)는 단계(820)로 진행하고, 여기서 프로세스(800)는 로그 파일들(415) 중 하나가 적용가능한 보존 기간보다 더 오래되기를 기다린다. 일단 이런 이벤트가 발생하면, 프로세스(800)는 단계(810)로 되돌아가고, 이런 소정의 로그 파일(415)이 가장 오래된 현재의 로그 파일(415)로서 선택된다. 그 후, 프로세스(800)는 단계(815)로 진행하며, 이에 대해서는 전술되어 있다. 선택된 로그 파일(415)이 보존 기간보다 오래된 것이면, 프로세스(800)는 단계(825)로 진행되며, 여기서 선택된 로그 파일(415)이 삭제되다.
도 8에 도시된 프로세스(800)는 도 7에 도시된 프로세스(700)와 함께, 또는 본원에 교시된 다른 프로세스와 함께 디먼으로서 실행될 수 있다. 또한, 프로세스(800)는 프로세스(700), 또는 본원에 교시된 다른 프로세스 내로 통합될 수 있다. 프로세스(800)는 단지 예시 및 설명의 편의상 도 8에 분리하여 도시되어 있지만, 본원의 교시의 응용가능성을 제한하는 것은 아니다.
도 9는 시간 제한적 메시지(115)에 대응하는 메타데이터(320)를 갱신하기 위한 프로세스(755)를 보다 상세히 나타낸다. 단계(805)에서, 프로세스(900)는 도 8에 관련되어 전술된 바와 같이, 보존 기간 파라미터를 설정한다. 보존 기간 파라미터가 이미 설정되어 있다면, 단계(805)에서 그것을 재설정할 필요는 없다. 이런 경우에, 프로세스(900)는 기존의 보존 기간 파라미터를 참조할 수 있다.
단계(910)에서, 프로세스(900)는 프로세스(900) 중 다양한 단계들에서 메타데이터(320)가 기입될 수 있는 적어도 2개의 테이블을 생성하며, 이에 대해서는 하기에 더 설명할 것이다. 단계(915)에서, 프로세스(900)는 로그 파일들(415)에 저장된 메시지 바디들(310)을 위한 메타데이터를 기입하기 위해, 단계(910)에서 생성된 테이블 중 제1 테이블을 선택한다. 단계(920)에서, 프로세스(900)는 메타데이터(320)를 단계(915)에서 선택된 테이블에 기입한다.
단계(925)에서, 프로세스(900)는 제1 테이블에서 가장 오래된 메시지 바디(310)가 메시지 바디들(310)에 적용될 수 있는 보존 기간보다 더 오래된 것인가를 테스트한다. 그렇지 않다면, 프로세스(900)는 단계(920)로 되돌아가서 메타데이터(320)를 선택된 테이블에 기입하는 것을 계속하고, 판정 단계(925)로 복귀한다. 하지만, 제1 테이블에 있는 가장 오래된 메시지 바디(310)가 보존 기간보다 더 오래된 것일 때, 프로세스(900)는 단계(930)로 진행하고, 여기서 제1 테이블을 클로즈한다. 단계(935)에서, 프로세스(900)는 제2 테이블을 삭제하고, 그런 다음 단계(940)로 진행하여, 여기서 프로세스(900)는 단계(910)에서 생성된 제2 테이블을 기입을 위해 선택한다. 단계(945)에서, 프로세스(900)는 메타데이터(320)를 이 제2 테이블에 기입한다.
단계(950)에서, 프로세스(900)는 보존 기간의 또 하나의 인스턴스가 만료되었는지 여부를 테스트한다. 만료되지 않았다면, 프로세스(900)는 단계(945)로 되돌아가서 메타데이터(320)를 제2 테이블에 기입하는 것을 계속하고, 판정 단 계(950)로 복귀한다. 보존 기간의 다음 인스턴스가 만료될 때, 프로세스(900)는 단계(955)로 진행하고, 여기서 메타데이터(320)가 기입되었던 제1 테이블을 삭제한다. 단계(960)에서, 프로세스(900)는 기입을 위한 제2 테이블을 클로즈하고, 단계(965)에서, 프로세스(900)는 제1 테이블을 재생성한다. 그런 다음, 프로세스(900)는 단계(915)로 복귀하여 제1 테이블에 대한 프로세스를 반복한다.
도 10은 도 9에 도시된 프로세스(900)의 시퀀스 다이어그램(1000)을 제시한다. 타임 라인(1005)은 시각 T0(라인(1010)에 의해 지시됨)에서 시작하고, 수평 시간 축(화살표(1015)에 의해 일반적으로 지시됨)을 따라 무기한 진행된다. 라인(1020)은 보존 기간이 시각 T0에서 시작하는 것으로 가정하면 제1 보존 기간이 만료되는 시각을 나타낸다. 라인들(1010 및 1020)에 의해 지시된 시각들 사이에서, 도 9의 프로세스(900)가, 단계(920)에 의해 지시된 바와 같이, 제1 테이블을 기입한다. 일반적으로 시각 T0에서 또는 그 이전에, 제1 테이블이 선택된다(이는 참조 부호(915)에 의해 지시됨).
일반적으로, 수직선(1020)에 의해 지시된, 제1 보존 기간의 만료 시에 또는 직후에, 프로세스(900)는 단계(925)로부터 "예" 분기선을 취하고, 제1 테이블로의 기입을 중단하며, 메타데이터(320)를 제2 테이블에 기입하는 것을 시작한다(이는 도 10에 보이는 참조 부호(935)에 의해 지시됨). 라인(1020)에 의해 마킹된 시각에서, 보존 기간의 제2 인스턴스가 시작되고, 수직선(1025)에 의해 마킹된 시각까지 실행된다.
라인들(1020 및 1025)에 의해 마킹된 시각들 사이에서, 프로세스(900)는 메타데이터(320)를 제2 테이블에 기입한다(이는 참조 부호(940)에 의해 지시됨). 보존 기간의 제2 인스턴스가 만료될 때, 프로세스(900)는 제2 테이블로의 기입을 중단하는데, 이는 도 9의 단계(945)로부터 "예" 분기선에 대응한다. 따라서, 참조 부호(945)는 도 10에 보이는 바와 같이, 단계(940)의 만료 시에 또는 그 근처에서 나타난다.
프로세스(900)가 라인(1025)에 의해 마킹된 시각에 도달할 때, 프로세스(900)는 보존 기간의 제2 인스턴스 전체가 이제 만료되기 때문에, 제1 테이블(단계(920) 참조)에 기입된 메타데이터는 너무 오래되어 보존될 수 없다는 것을 인식한다. 로그 파일들(415)에 대응하는 메타데이터(302)를 포함하는 제1 테이블 전체가 만료되었기 때문에, 제1 테이블은 삭제될 수 있다. 라인(1025)에 의해 마킹된 시각 전에는, 제1 테이블(단계(920) 참조)에 기입된 메타데이터(320) 중 일부가 여전히 활성화될 수 있는데, 이런 메타데이터(320)를 위한 보존 기간이 다 경과되지 않았다는 점에서 그러하다. 이에 따라 라인(1025)에 의해 마킹된 시각까지, 제1 테이블 내의 메타데이터(320)는 이 메타데이터(320)에 대한 어떤 요청이든지 도착하면 액세스될 수 있도록 유지된다.
도 9 및 도 10에 도시된 바와 같이, 프로세스(900)는 메타데이터(320)를 2개의 테이블에 교대로 기입할 수 있고, 테이블 각각은 번갈아 기입될 수 있고, 하나의 보존 기간 이후에 클로즈되고, 두번째 보존 기간 이후에 삭제된다. 명료함과 간결을 위해, 도 9 및 도 10은 이런 프로세스(900)의 1회 반복을 예시한다. 하지 만, 이런 프로세스(900)는 무한히 반복될 수 있고, 2개의 테이블 각각은 교대로 기입 및 삭제될 수 있음에 유의해야 한다. 프로세스(900)는 2개의 테이블보다 많은 테이블과 함께 실행될 수 있고, 본원에 예시 및 기술된 2개의 테이블의 실시예는 단지 편의상 도시된 것임에 유의해야 한다. 일반적으로, 프로세스(900)는 N개의 테이블을 생성할 수 있고, N은 메시지 보존 기간을 테이블이 기입될 수 있는 기간으로 나눈 것보다 큰 정수 값이다.
도 11은 요청된 메타데이터(320) 또는 헤더 정보를 서치하기 위한 테이블 구조를 트래버싱하기 위한 프로세스(1100)를 나타낸다. 단계(1105)에서, 프로세스(1100)는 소정의 메시지 헤더 정보에 대한 요청을 수신한다. 전술된 예들에서, 이런 요청은 보존 기간하에 있는 "송신된" 메시지 또는 스팸 메시지의 형태를 취하는 소정의 이메일에 대한 요청일 수 있다. 예를 들어, 사용자는 소정의 메시지가 검색되도록 요청할 수 있거나, 소정의 메일박스와 연관된 일부 또는 모든 메시지들이 검색되도록 요청할 수 있다. 프로세스(1100)는 그 요청을 이행하는 데, 또는 그 요청이 이행될 수 있는지 여부를 판정하는 데 적합할 수 있다.
단계(1110)에서, 프로세스(1100)는 단계(1105)에서 수신된 요청에 응답하여 임의의 메시지들을 위한 메타데이터(320)를 위치찾기 하기 위해, 테이블 형태를 취할 수 있는 제1 헤더 구조를 서치한다. 단계(1115)에서, 프로세스(1100)는 요청에 응답하여 임의의 엔트리가 제1 헤더 테이블에서 발견되었는지를 판정한다. 헤더 테이블에서 그 요청에 응답하는 엔트리가 발견되는 경우에, 프로세스(1100)는 단계(1120)로 진행한다. 단계(1120)에서, 프로세스(1100)는 엔트리와 연관된 타임스 탬프를 참조하고, 그 엔트리가 하나의 "보존 기간"보다 더 오래전에 생성되었는지 여부를 판정한다. 예를 들어, 엔트리에 대한 보존 기간이 30일인 경우, 단계(1120)에서는 소정의 엔트리가 30일보다 오래된 것인지를 판정한다. 메시지 바디들(310) 및 관련 메타데이터(320)는 도 7에 도시된 프로세스(700) 동안 그것들이 로그 파일들(415) 및/또는 메타데이터 저장 구조(325)에 저장됐을 때 타임스탬핑이 행해짐을 상기해 보자.
소정의 엔트리가 보존 기간보다 오래된 것이 아닐 경우, 프로세스(1100)는 단계(1125)로 진행하고, 프로세스(1100)는 단계(1105)에서 수신된 요청에 응답하여 이 엔트리를 반환한다. 그 후, 프로세스(1100)는 단계(1130)로 진행하고, 프로세스(1100)는 단계(1105)에서 수신된 요청이 충분히 만족되었는지 여부를 판정한다. 예를 들어, 단계(1105)에서 수신된 요청이 단일 메시지에 대한 요청이고, 그 단일 메시지가 위치찾기 되고 단계(1125)에서 반환될 때, 프로세스(1100)는 요청을 완전히 만족시킨 것이다. 이 경우, 프로세스(1100)는 단계(1135)로 진행하고, 완료된다. 하지만, 요청이 다수의 메시지를 검색하는 것, 또는 소정의 메일박스 중 일부 또는 전부를 검색하는 것이면, 프로세스(1100)는 보다 많은 메시지들을 서치 또는 검색할 수 있다. 이 경우, 프로세스(1100)는 이들 엔트리를 서치하기 위해 단계(1110)로 진행한다.
단계(1115)로 되돌아가서, 요청된 엔트리가 제1 헤더 테이블에서 발견되지 않으면, 프로세스(1100)는 단계(1140)로 진행하고, 단계(1105)에서 요청된 헤더 정보에 대한 제2 헤더 테이블을 서치한다. 단계(1145)에서, 프로세스(1100)는 요청 된 헤더 정보가 제2 헤더 테이블에서 발견되었는지 여부를 판정한다. 요청된 헤더 정보가 발견되었다면, 프로세스(1100)는 단계(1120)로 진행하여 위치 찾아진 헤더 정보가 적용가능한 보존 기간보다 오래된 것인지를 테스트한다. 위치 찾아진 헤더 정보가 적용가능한 보존 기간보다 오래된 것이면, 프로세스(1100)는 단계(1150)로 진행하고, 실패가 보고된다. 단계(1145)로 되돌아가서, 요청된 헤더 정보가 발견되지 않았다면, 프로세스(1100)는 단계(1150)로 진행하고, 요청된 헤더 정보가 제1 헤더 테이블과 제2 헤더 테이블 중 어느 곳에서도 발견되지 않았기 때문에, 실패를 보고한다.
프로세스(1100)가 도 5에 도시된 테이블 구현예(500)로 실행된다고 가정하면, 프로세스(1100)는 세대별 테이블(505)의 전부를 결합하고, 소정의 메일박스 내의 메시지들에 대응하는 모든 로우(510)를 획득하고, 적용가능한 보존 기간이 지난 메시지들을 배제하는 쿼리를 행할 수 있다. 프로세스(1100)가 도 6에 도시된 로그 블롭 구현예(600)로 실행된다고 가정하면, 프로세스(1100)는 소정의 메일박스를 위한 로그 블롭 이미지(620)를 판독하고, 적용가능한 보존 기간보다 오래된 메시지들을 무시하고, 나머지를 반환한다.
도 12는 소정의 메시지가 사용자에게 제시될 수 있도록 소정의 메시지를 검색하기 위한 프로세스(1200)를 나타낸다. 단계(1205)에서, 프로세스(1200)는 소정의 메시지를 사용자에게 제시하라는 요청을 수신한다. 단계(1210)에서, 프로세스(1200)는 메시지 헤더를 판독하기 위해 도 11에 전술된 프로세스(1100)와 유사한 방식으로 소정의 메시지를 위한 메타데이터(320)를 포함하는 헤더를 찾는다. 단 계(1215)에서, 프로세스(1200)는 소정의 메시지를 포함하는 로그 파일(415)의 이름, 로그 파일(415)을 포함하는 저장 머신(315), 로그 파일(415)에서 메시지의 오프셋, 및 메시지의 길이를 찾기 위해 헤더로부터 얻은 메타데이터(320)를 처리한다.
단계(1220)에서, 소정의 메시지가 로그 파일 세트(415)에 저장된 것으로 가정하면, 프로세스(1200)는 로그 파일 세트(415)로부터 하나의 로그 파일(415)을 선택하고, 선택된 로그 파일(415)로부터 요청된 메시지를 판독하려고 시도한다. 판독이 충분히 신속하게 및/또는 성공적으로 완료되지 않으면, 프로세스(1200)는 로그 파일 세트 중 제2 로그 파일(415)로부터 요청된 메시지를 판독하려고 시도할 수 있다. 단계(1225)에서, 요청된 메시지가 성공적으로 판독될 때, 프로세스(1200)는 요청된 메시지를 반환한다.
도 13은 소정의 메시지를 판독된 것으로 마킹하기 위한 프로세스(1300)를 나타낸다. 단계(1305)에서, 프로세스(1300)는 소정의 메시지를 판독된 것으로 마킹하라는 요청을 수신한다. 단계(1310)에서, 프로세스(1300)는 메시지가 판독되었음으로 마킹되어야 한다고 지시하기 위해 소정의 메시지에 대응하는 데이터 구조 내의 엔트리를 수정한다. 이런 수정은 소정의 메시지가 판독되었음을 지시하는 특수한 로그 레코드에 지시자를 기입하는 것을 포함할 수 있다.
단계(1315)에서, 프로세스(1300)는 대부분 복수의 다른 메시지들과 함께, 소정의 메시지를 로그 파일(들)(415)에 기입한다. 프로세스(1300)는 데이터 구조 엔트리들의 기입이 메시지 전달과 동일한 방식으로 로그 파일(들)(415)에 행해질 때 까지 기다릴 수 있다. 로그 파일(415) 내의 이런 레코드는 데이터베이스가 손실되고, 로그 파일들(415)로부터 재생성되는 경우에만 필요로 된다. 단계(1320)에서, 일단 로그 파일(들)(415)로의 기입이 종료되면, 프로세스(1300)는 새로운 메시지의 전달과 유사한 방식으로 메타데이터 저장 구조(325) 내의 메타데이터(320)를 갱신한다.
프로세스들(1200 및 1300)은 예를 들어, 서버 머신(305) 상에서 실행될 수 있다. 소정의 메시지를 삭제된 것으로 마킹하기 위해, 서머 머신(305)은 특수한 로그 레코드를 로그 파일(415)에 기입하는 단계를 포함하여, 소정의 메시지를 판독된 것으로 마킹하기 위해, 프로세스(1300)와 동일한 프로세스를 수행할 수 있다. 로그 블롭 실시예(600)에서는, 소정의 메시지를 삭제함으로써 이전에 메시지가 상주하던 메일박스를 비우게 될 때 로그 블롭(620)을 완전히 삭제하는 것이 권고될 수 있다.
소정의 메일박스 내의 모든 메시지들을 삭제된 것으로 마킹하기 위해, 서버 머신(305)은, 상기 수행된 프로세스(1300)와 마찬가지로, 데이터 구조(405) 내의 엔트리를 마킹할 수 있다. 로그 블롭 실시예(600)에서, 서버 머신(305)은 로그 블롭(620)을 완전히 삭제하기 위해 단일 데이터베이스 트랜잭션을 행할 수 있어, 갱신 중 판독된 부분을 스킵(skip)할 수 있다.
메타데이터 저장 구조(325)가 고장나거나, 액세스불가능 또는 이용불가능하게 될 때, 메타데이터 저장 구조(325)를 재구성하기 위한 데이터가 로그 파일들(415)에서 이용가능하다. 하지만, 임의의 특정한 메타데이터 저장 구조(325)를 위한 로그 파일들(415)은 소정의 클러스터(210) 내의 복수의 로그 파일들(415)에 걸쳐 배포될 수 있다. 메타데이터 저장 구조(325)를 재구성하는 한 가지 접근법은 클러스터(210) 내의 모든 로그 파일들(415)을 판독하는 것이다. 이런 태스크가 단일 머신에 배타적으로 할당되면, 이런 태스크를 행하기 위한 시간은 모든 로그 파일들(415)을 재구성을 행하는 머신의 네트워크 인터페이스를 통해 이동시키는 시간에 의해 제한될 수 있다. 특정한 이식에서, 이런 접근법은 매력적이지도 않고 실행가능하지도 않다.
또 하나의 접근법은, 통상적으로 클러스터마다 균등한 사이즈의 메타데이터 저장 구조(325)를 갖는 100개의 저장 머신이 존재하기 때문에, 실제 판독된 메시지들 중 약 1%만이 재구성되는 메타데이터 저장 구조(325)에 영향을 미친다는 관측에 기초한다. 또한, 메타데이터(320) 만이 재구성에 있어서 관심사항이고, 메시지 바디들(310)은 관심사항이 아니므로, 재구성시에 처리해야 할 데이터 분량을 더 감소시키게 된다.
궁극적으로, 메타데이터 저장 구조(325) 또는 하나 이상의 저장 머신들(315)이 고장나면, 이들 컴포넌트의 콘텐츠가 사전 규정된 프로시저에 따라 주기적으로 아카이브로 저장 또는 백업될 수 있다. 이런 경우들에서, 메타데이터 저장 구조(325) 또는 저장 머신들(315)의 콘텐츠 중 일부 또는 아마도 대부분은 최근에 아카이브 또는 백업 파일로부터 복원될 수 있고, 최근에 백업할 기회를 놓친 그러한 콘텐츠만이 상기 접근법들 중 어느 한 접근법에 따라 복원되게 된다.
도 14는 시간 제한적 메시지들을 효율적으로 처리하고, 본원에 기술된 컴퓨 팅, 네트워크, 및 시스템 아키텍처를 전체적으로 또는 부분적으로 구현하기 위한 컴퓨팅 환경(1400)을 나타낸다. 보다 구체적으로, 컴퓨팅 환경(1400)은 메시지 클래시파이어들(110), 관리 시스템들(125 및 130), 프론트 엔드들(205), 서버 머신들(305), 저장 머신들(315), 및 메타데이터 저장 구조들(325)을 포함하여, 본원에 기술된 다양한 컴포넌트들을 구현하는 데 적합할 수 있지만, 이에만 제한되는 것은 아니다.
예시적인 컴퓨팅 환경(1400)은 컴퓨팅 시스템의 일례에 불과하며, 아키텍처의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(1400)이 예시적인 컴퓨팅 환경(1400)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
컴퓨팅 환경(1400)에서 컴퓨터 및 네트워크 아키텍처는 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 클라이언트 장치, 핸드-헬드 또는 랩톱 장치, 마이크로프로세서 기반 시스템, 멀티프로세서 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 게임 콘솔, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
컴퓨팅 환경(1400)은 컴퓨팅 장치(1402) 형태인 범용 컴퓨팅 시스템을 포함 한다. 컴퓨팅 장치(1402)의 컴포넌트들은 하나 이상의 프로세서(1404)(예컨대, 마이크로프로세서, 컨트롤러 등), 시스템 메모리(1406), 및 다양한 시스템 컴포넌트들을 결합시키는 시스템 버스(1408)를 포함할 수 있지만 이에만 제한되는 것은 아니다. 하나 이상의 프로세서(1404)는 컴퓨팅 장치(1402)의 동작을 제어하고 다른 전자 및 컴퓨팅 장치와 통신하기 위한 다양한 컴퓨터 실행가능 명령어들을 처리한다. 시스템 버스(1408)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, AGP(accelerated graphics port), 및 임의의 다양한 버스 아키텍처를 이용하는 로컬 또는 프로세서 버스를 포함하는 몇몇 유형의 버스 구조들 중 어느 것이라도 될 수 있다.
컴퓨팅 환경(1400)은 컴퓨팅 장치(1402)에 의해 액세스 가능한 임의의 매체일 수 있는 각종 컴퓨터 판독가능 매체를 포함하고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 시스템 메모리(1406)는 RAM(1410)과 같은 휘발성 메모리 형태인 컴퓨터 판독가능 매체 및/또는 ROM(1412)과 같은 비휘발성 메모리의 형태인 컴퓨터 판독가능 매체를 포함한다. 기본 입력/출력 시스템(BIOS)(1414)은 시동 중과 같은 때에, 컴퓨팅 장치(1402) 내의 컴포넌트들 사이의 정보 전송을 용이하게 하는 기본 루틴을 포함하고, ROM(1412)에 저장되어 있다. RAM(1410)은 통상적으로 하나 이상의 프로세서(1404)가 즉시 액세스할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다.
컴퓨팅 장치(1402)는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 예로서, 하드 디스크 드라이브(1416)는 비이동식·비휘발성 자 기 매체(도시 생략)에 기록을 하거나 그로부터 판독을 하고, 자기 디스크 드라이브(1418)는 이동식·비휘발성 자기 디스크(1420)(예컨대, "플로피 디스크")에 기록을 하거나 그로부터 판독을 하고, 광 디스크 드라이브(1422)는 CD-ROM, DVD 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(1424)에 기록을 하거나 그로부터 판독한다. 이런 예에서, 하드 디스크 드라이브(1416), 자기 디스크 드라이브(1418), 및 광 디스크 드라이브(1422)는 하나 이상의 데이터 미디어 인터페이스들(1426)에 의해 시스템 버스(1408)에 각각 접속된다. 디스크 드라이브들 및 관련 컴퓨터 판독가능 매체는 컴퓨팅 장치(1402)를 위해 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다.
예로서, 운영 체제(1428), 하나 이상의 애플리케이션 프로그램(1430), 기타 프로그램 모듈(1432), 및 프로그램 데이터(1434)를 포함하여 프로그램 모듈들 중 어떤 것이든지 RAM(1410), ROM(1412), 하드 디스크(1416), 자기 디스크(1420), 및/또는 광 디스크(1424) 상에 저장될 수 있다. 이런 운영 체제(1428), 하나 이상의 애플리케이션 프로그램(1430), 기타 프로그램 모듈(1432), 프로그램 데이터(1434) 각각이, 또는 그것들의 임의의 조합이 본원에 기술된 시스템 및 방법의 하나 이상의 실시예를 포함할 수 있다.
컴퓨팅 장치(1402)는 통신 매체로서 식별되는 각종 컴퓨터 판독가능 매체를 포함할 수 있다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체, 및/또는 이들의 임의의 조합을 포함한다.
사용자는 키보드(1436) 및 포인팅 장치(1438)(예컨대, "마우스") 등의 기타 여러 입력 장치들 중 어느 것을 통해서도 컴퓨팅 장치(1402)와 인터페이스할 수 있다. 기타 입력 장치들(1440)(구체적으로 도시하지 않음)은 마이크, 조이스틱, 게임 패드, 컨트롤러, 위성 안테나, 직렬 포트, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 시스템 버스(1408)에 결합된 입력/출력 인터페이스들(1442)을 통해 프로세서(들)(1404)에 접속되지만, 병렬 포트, 게임 포트 및/또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다.
디스플레이 장치(1444)(또는 다른 유형의 모니터)는 비디오 어댑터(1446)와 같은 인터페이스를 통해 시스템 버스(1408)에 접속될 수 있다. 디스플레이 장치(1444) 외에, 기타 주변 출력 장치는 입력/출력 인터페이스들(1442)을 통해 컴퓨팅 장치(1402)에 접속될 수 있는 프린터(1448) 및 스피커(도시 생략) 등의 컴포넌트들을 포함할 수 있다.
컴퓨팅 장치(1402)는 원격 컴퓨팅 장치(1450)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 예로서, 원격 컴퓨팅 장치(1450)는 또 하나의 퍼스널 컴퓨터, 휴대형 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있다. 원격 컴퓨팅 장치(1450)는 컴퓨팅 장치(1402)와 관련하여 본원에 기술된 서로 다른 컴포넌트들, 구성요소들, 및 특징들 중 임의의 것 및 그 조합을 포함할 수 있는 휴대형 컴퓨터로서 도시되어 있다.
컴퓨팅 장치(1402)와 원격 컴퓨팅 장치(1450) 사이의 논리적 접속은 LAN(1452) 및 WAN(1454)으로 도시된다. 이런 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다. LAN 네트워킹 환경에서 사용될 때, 컴퓨팅 장치(1402)는 네트워크 인터페이스 또는 어댑터(1456)를 통해 LAN(1452)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨팅 장치(1402)는 통상적으로 WAN(1454)을 통해 통신을 설정하기 위한 모뎀(1458) 또는 기타 수단을 포함한다. 컴퓨팅 장치(1402)의 내부 또는 외부에 존재할 수 있는 모뎀(1458)은 입력/출력 인터페이스들(1442) 또는 기타 적절한 메커니즘을 통해 시스템 버스(1408)에 접속된다. 도시된 네트워크 접속은 예시적인 것일 뿐이며 컴퓨팅 장치들(1402 및 1450) 사이에 통신 링크(들)을 설정하는 기타 수단이 사용될 수 있다.
네트워크화된 환경에서, 컴퓨팅 환경(1400)과 함께 예시된 바와 같이, 컴퓨팅 장치(1402) 또는 그 일부와 관련하여 기술된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 원격 애플리케이션 프로그램들(1460)은 원격 컴퓨팅 장치(1450)의 메모리 장치에서 유지관리된다. 도시를 목적으로, 애플리케 이션 프로그램들 및 운영 체제(1428)와 같은 기타 실행가능 프로그램 컴포넌트들이 분리된 블록으로 본원에 도시되어 있지만, 이런 프로그램들 및 컴포넌트들이 컴퓨팅 장치(1402)의 서로 다른 저장 컴포넌트들에 서로 다른 시각에 존재하고, 컴퓨팅 장치(1402)의 하나 이상의 프로세서(1404)에 의해 실행되는 것을 인식해야 한다.
시간 제한적 메시지들의 효율적인 처리를 위한 실시예들이 구조적인 특징 및/또는 방법에 특정한 언어로 기술되었지만, 첨부된 청구항의 대상물이 기술된 특정한 특징 또는 방법에 반드시 제한되는 것은 아님을 이해해야 한다. 오히려, 특정한 특징 및 방법은 시간 제한적 메시지들의 효율적인 처리에 관한 예시적 구현예로서 개시된다.
Claims (20)
- 복수의 메시지들을 시간 제한적 메시지(time-bounded messages) 및 시간 비제한적 메시지(non-time-bounded messages) 중 하나로서 분류하는 단계;상기 시간 제한적 메시지를 상기 시간 비제한적 메시지와는 별개로 처리하는 단계 - 상기 처리하는 단계는, 상기 시간 제한적 메시지와 연관된 복수의 메시지 바디를 서버 머신 상에 존재하는 데이터 구조에 축적하는 단계, 트리거 이벤트의 발생 시에, 상기 데이터 구조와는 별개인 제1 저장 구조 상에 저장된 하나 이상의 로그 파일에 상기 축적된 복수의 메시지 바디를 대량으로 기입하는 단계, 상기 메시지 바디와 관련된 메타데이터를 컴파일하는 단계, 및 상기 제1 저장 구조와는 별개인 제2 저장 구조 내에 상기 메타데이터를 저장하는 단계를 포함함 -; 및상기 메타데이터의 처리와는 별개로 상기 메시지 바디의 처리를 최적화하는 단계를 포함하고,상기 메시지 바디의 처리를 최적화하는 단계는 보존 기간 내에 있는 복수의 메시지 바디만을 상기 로그 파일에 축적하는 것과, 보존 기간 종료 후에 상기 로그 파일 내에서 복수의 메시지 바디를 삭제하는 것을 포함하는 방법.
- 삭제
- 제1항에 있어서,상기 축적된 복수의 메시지 바디를 대량으로 기입하는 단계는, 상기 데이터 구조의 크기가 타겟 크기에 도달할 때 상기 축적된 복수의 메시지 바디를 하나 이상의 로그 파일에 대량으로 기입하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 제 1 저장 구조에는 하나 이상의 저장 머신이 저장되어 있으며, 각각의 저장 머신에는 하나 이상의 로그 파일이 저장되어 있고,상기 메타데이터를 컴파일하는 단계는, 상기 메타데이터의 적어도 일부에 대응하는 시간 제한적 메시지의 메시지 바디가 저장되는 로그 파일을 포함하는 저장 머신을 결정하는 단계를 포함하는 방법.
- 삭제
- 삭제
- 제1항에 있어서,상기 메시지들을 분류하는 단계는, 상기 메시지들 중 적어도 일부를 스팸 이메일로서 분류하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지들을 분류하는 단계는, 상기 메시지들 중 적어도 일부를 미리 정의된 보존 정책의 대상이 되는 이메일로서 분류하는 단계를 포함하는 방법.
- 삭제
- 제1항에 있어서,상기 시간 제한적 메시지를 데이터 저장소로부터 판독하는 단계를 더 포함하는 방법.
- 복수의 메시지들을 시간 제한적 메시지 및 시간 비제한적 메시지 중 하나로서 분류하기 위한 수단;상기 시간 제한적 메시지를 상기 시간 비제한적 메시지와는 별개로 처리하기 위한 수단 - 상기 처리하기 위한 수단은, 상기 시간 제한적 메시지와 연관된 복수의 메시지 바디를 저장 구조 내에 저장하기 위한 수단, 상기 저장된 복수의 메시지 바디를 하나 이상의 로그 파일에 대량으로 기입하기 위한 수단, 상기 메시지 바디와 관련된 메타데이터를 컴파일하기 위한 수단, 및 상기 저장 구조와는 별개인 추가의 저장 구조 내에 상기 메타데이터를 저장하기 위한 수단을 포함함 -; 및상기 메타데이터의 처리와는 별개로 상기 메시지 바디의 처리를 최적화하기 위한 수단을 포함하고,상기 메시지 바디의 처리를 최적화하기 위한 수단은 보존 기간 내에 있는 복수의 메시지 바디만을 상기 로그 파일에 축적하고, 보존 기간 종료 후에 상기 로그 파일의 복수의 메시지 바디를 삭제하도록 구성되는,장치.
- 삭제
- 제11 항에 있어서,상기 저장된 복수의 메시지 바디를 하나 이상의 로그 파일에 대량으로 기입하기 위한 수단은, 트리거 이벤트의 발생 시에, 상기 저장된 복수의 메시지 바디를 디스크 드라이브에 대량으로 기입하기 위한 수단을 포함하는 장치.
- 제11항에 있어서,상기 메시지 바디와 관련된 메타데이터를 재구성하기 위해 상기 복수의 메시지 바디를 판독하기 위한 수단을 더 포함하는 장치.
- 제11항에 있어서,상기 메시지들을 분류하기 위한 수단은, 상기 메시지들 중 적어도 일부를 미리 정의된 보존 정책의 대상이 되는 이메일로서 분류하기 위한 수단을 포함하는 장치.
- 컴퓨터 실행가능 명령어들을 포함하는 하나 이상의 컴퓨터 판독가능 저장 매체로서,상기 컴퓨터 실행가능 명령어들은, 실행될 때, 컴퓨팅 장치로 하여금복수의 메시지들을 시간 제한적 메시지 및 시간 비제한적 메시지 중 하나로서 분류하도록 지시하고,상기 시간 제한적 메시지를 상기 시간 비제한적 메시지와는 별개로 처리하도록 지시하고 - 상기 처리는, 상기 시간 제한적 메시지와 연관된 복수의 메시지 바디를 제1 저장 구조에 축적하는 것, 상기 축적된 복수의 메시지 바디를 하나 이상의 로그 파일에 대량으로 기입하는 것, 상기 메시지 바디와 관련된 메타데이터를 컴파일하는 것, 및 상기 저장 구조와는 별개인 제2 저장 구조 내에 상기 메타데이터를 저장하는 것을 포함함 -, 및상기 메타데이터의 처리와는 별개로 상기 메시지 바디의 처리를 최적화하도록 지시하며,상기 메시지 바디의 처리를 최적화하는 것은 보존 기간 내에 있는 복수의 메시지 바디만을 상기 로그 파일에 축적하는 것과, 보존 기간 종료 후에 상기 로그 파일 내에서 복수의 메시지 바디를 삭제하는 것을 포함하는,하나 이상의 컴퓨터 판독가능 저장 매체.
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/139,705 US7600126B2 (en) | 2005-05-27 | 2005-05-27 | Efficient processing of time-bounded messages |
US11/139,705 | 2005-05-27 | ||
PCT/US2006/015111 WO2006130259A2 (en) | 2005-05-27 | 2006-04-21 | Efficient processing of time-bounded messages |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080014800A KR20080014800A (ko) | 2008-02-14 |
KR101224752B1 true KR101224752B1 (ko) | 2013-01-21 |
Family
ID=37464832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077027635A KR101224752B1 (ko) | 2005-05-27 | 2006-04-21 | 시간 제한적 메시지들의 효율적인 처리 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7600126B2 (ko) |
EP (1) | EP1911189B1 (ko) |
JP (1) | JP4824753B2 (ko) |
KR (1) | KR101224752B1 (ko) |
CN (1) | CN101636742B (ko) |
AT (1) | ATE554455T1 (ko) |
WO (1) | WO2006130259A2 (ko) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9282081B2 (en) | 2005-07-28 | 2016-03-08 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US8321381B2 (en) * | 2005-12-19 | 2012-11-27 | Oracle International Corporation | Facilitating a sender of email communications to specify policies with which the email communication are to be managed as a record |
US8069141B2 (en) * | 2007-03-12 | 2011-11-29 | Microsoft Corporation | Interfaces for high availability systems and log shipping |
US20080320263A1 (en) * | 2007-06-20 | 2008-12-25 | Daniel Nemiroff | Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner |
US20090177704A1 (en) * | 2008-01-09 | 2009-07-09 | Microsoft Corporation | Retention policy tags for data item expiration |
US8219582B2 (en) * | 2008-04-25 | 2012-07-10 | International Business Machines Corporation | System, method, and computer readable media for identifying a user-initiated log file record in a log file |
US8732265B2 (en) | 2008-06-27 | 2014-05-20 | Microsoft Corporation | Reconciliation and remediation with communication archives |
US8620869B2 (en) | 2008-09-25 | 2013-12-31 | Microsoft Corporation | Techniques to manage retention policy tags |
WO2010071843A1 (en) * | 2008-12-19 | 2010-06-24 | Privatetree, Llc. | Systems and methods for facilitating relationship management |
US20100161537A1 (en) * | 2008-12-23 | 2010-06-24 | At&T Intellectual Property I, L.P. | System and Method for Detecting Email Spammers |
US8995923B2 (en) * | 2009-03-03 | 2015-03-31 | Mobilitie, Llc | System and method for management of a dynamic network using wireless communication devices |
US9609513B2 (en) | 2009-03-03 | 2017-03-28 | Mobilitie, Llc | System and method for device authentication in a dynamic network using wireless communication devices |
US8464342B2 (en) | 2010-08-31 | 2013-06-11 | Microsoft Corporation | Adaptively selecting electronic message scanning rules |
US8635289B2 (en) | 2010-08-31 | 2014-01-21 | Microsoft Corporation | Adaptive electronic message scanning |
US8589732B2 (en) | 2010-10-25 | 2013-11-19 | Microsoft Corporation | Consistent messaging with replication |
CN102469095A (zh) * | 2010-11-19 | 2012-05-23 | 腾讯科技(深圳)有限公司 | 一种基于账户服务器的会话缓存结点的标识方法及系统 |
US8868984B2 (en) | 2010-12-07 | 2014-10-21 | International Business Machines Corporation | Relevant alert delivery in a distributed processing system with event listeners and alert listeners |
US9213621B2 (en) | 2011-05-27 | 2015-12-15 | International Business Machines Corporation | Administering event pools for relevant event analysis in a distributed processing system |
US8676883B2 (en) | 2011-05-27 | 2014-03-18 | International Business Machines Corporation | Event management in a distributed processing system |
US8880943B2 (en) | 2011-06-22 | 2014-11-04 | International Business Machines Corporation | Restarting event and alert analysis after a shutdown in a distributed processing system |
US9419650B2 (en) | 2011-06-22 | 2016-08-16 | International Business Machines Corporation | Flexible event data content management for relevant event and alert analysis within a distributed processing system |
US8887175B2 (en) * | 2011-10-18 | 2014-11-11 | International Business Machines Corporation | Administering incident pools for event and alert analysis |
US20130097272A1 (en) | 2011-10-18 | 2013-04-18 | International Business Machines Corporation | Prioritized Alert Delivery In A Distributed Processing System |
US9178936B2 (en) | 2011-10-18 | 2015-11-03 | International Business Machines Corporation | Selected alert delivery in a distributed processing system |
US8930474B2 (en) * | 2012-02-20 | 2015-01-06 | Microsoft Corporation | Time-managed electronic mail messages |
US8903913B2 (en) * | 2012-08-01 | 2014-12-02 | Facebook, Inc. | Facilitating and tracking processing of a message through a workflow |
US8954811B2 (en) | 2012-08-06 | 2015-02-10 | International Business Machines Corporation | Administering incident pools for incident analysis |
US8943366B2 (en) | 2012-08-09 | 2015-01-27 | International Business Machines Corporation | Administering checkpoints for incident analysis |
CN102882768B (zh) * | 2012-09-14 | 2015-07-08 | 盈世信息科技(北京)有限公司 | 一种基于多层次用户分类的资源分配方法、装置及系统 |
US9361184B2 (en) | 2013-05-09 | 2016-06-07 | International Business Machines Corporation | Selecting during a system shutdown procedure, a restart incident checkpoint of an incident analyzer in a distributed processing system |
US9170860B2 (en) | 2013-07-26 | 2015-10-27 | International Business Machines Corporation | Parallel incident processing |
US9658902B2 (en) | 2013-08-22 | 2017-05-23 | Globalfoundries Inc. | Adaptive clock throttling for event processing |
US9256482B2 (en) | 2013-08-23 | 2016-02-09 | International Business Machines Corporation | Determining whether to send an alert in a distributed processing system |
US9086968B2 (en) | 2013-09-11 | 2015-07-21 | International Business Machines Corporation | Checkpointing for delayed alert creation |
US9602337B2 (en) | 2013-09-11 | 2017-03-21 | International Business Machines Corporation | Event and alert analysis in a distributed processing system |
US10031948B1 (en) * | 2013-12-02 | 2018-07-24 | Amazon Technologies, Inc. | Idempotence service |
US9389943B2 (en) | 2014-01-07 | 2016-07-12 | International Business Machines Corporation | Determining a number of unique incidents in a plurality of incidents for incident processing in a distributed processing system |
US20160269335A1 (en) * | 2015-03-13 | 2016-09-15 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for identifying changed mailboxes in an internet message access protocol (imap) list |
US10200330B2 (en) * | 2015-12-10 | 2019-02-05 | Facebook, Inc. | Techniques for ephemeral messaging with a message queue |
US11005933B2 (en) * | 2016-03-17 | 2021-05-11 | International Business Machines Corporation | Providing queueing in a log streaming messaging system |
CN107231283B (zh) * | 2016-03-23 | 2020-12-18 | 阿里巴巴集团控股有限公司 | 消息管理方法及装置、消息预读方法及装置 |
US10671721B1 (en) * | 2016-03-25 | 2020-06-02 | Fireeye, Inc. | Timeout management services |
US10601863B1 (en) | 2016-03-25 | 2020-03-24 | Fireeye, Inc. | System and method for managing sensor enrollment |
US10476906B1 (en) | 2016-03-25 | 2019-11-12 | Fireeye, Inc. | System and method for managing formation and modification of a cluster within a malware detection system |
US10785255B1 (en) | 2016-03-25 | 2020-09-22 | Fireeye, Inc. | Cluster configuration within a scalable malware detection system |
US10409779B2 (en) | 2016-08-31 | 2019-09-10 | Microsoft Technology Licensing, Llc. | Document sharing via logical tagging |
US10956369B1 (en) * | 2017-04-06 | 2021-03-23 | Amazon Technologies, Inc. | Data aggregations in a distributed environment |
US10645040B2 (en) * | 2017-12-29 | 2020-05-05 | Facebook, Inc. | Techniques for consistent writes in a split message store |
US11405343B2 (en) | 2017-12-29 | 2022-08-02 | Meta Platforms, Inc. | Techniques for extensible message indexing |
US10642877B2 (en) * | 2017-12-29 | 2020-05-05 | Facebook, Inc. | Techniques for consistent reads in a split message store |
US10673791B2 (en) | 2017-12-29 | 2020-06-02 | Facebook, Inc. | Techniques for data reads from secondary stores |
WO2020033976A1 (en) * | 2018-08-10 | 2020-02-13 | Medroster.com Corporation | Encrypted messaging system |
US11456985B2 (en) | 2020-01-31 | 2022-09-27 | Slack Technologies, Llc | Apparatuses, methods, and computer program products for data retention in a common group-based communication channel |
US11782771B2 (en) * | 2021-05-20 | 2023-10-10 | Vmware, Inc. | Method and subsystem within a distributed log-analytics system that automatically determines and enforces log-retention periods for received log-event messages |
US11928099B1 (en) * | 2022-12-16 | 2024-03-12 | Amazon Technologies, Inc. | Time and value ordered data objects for a backup of a data set |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030009698A1 (en) | 2001-05-30 | 2003-01-09 | Cascadezone, Inc. | Spam avenger |
US20030220903A1 (en) | 2002-04-19 | 2003-11-27 | Mont Marco Casassa | Long-term digital storage |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2670067B2 (ja) * | 1988-02-17 | 1997-10-29 | 富士通株式会社 | マルチメディアメールシステム |
JPH03157042A (ja) * | 1989-11-15 | 1991-07-05 | Nec Corp | メッセージの蓄積方法および蓄積制御回路 |
US7117358B2 (en) * | 1997-07-24 | 2006-10-03 | Tumbleweed Communications Corp. | Method and system for filtering communication |
JP3932319B2 (ja) * | 1997-07-24 | 2007-06-20 | タンブルウィード コミュニケーションズ コーポレイション | 格納された鍵による暗号化/暗号解読を用いた電子メール用ファイアウォール |
JP2000076156A (ja) * | 1998-09-03 | 2000-03-14 | Fujitsu Ltd | 電子メール編集方法及び情報処理装置及び記録媒体 |
US7565403B2 (en) * | 2000-03-16 | 2009-07-21 | Microsoft Corporation | Use of a bulk-email filter within a system for classifying messages for urgency or importance |
JP2001282644A (ja) * | 2000-03-29 | 2001-10-12 | Seiko Epson Corp | ネットワークセキュリティシステム |
JP2002183055A (ja) * | 2000-12-18 | 2002-06-28 | Hitachi Ltd | 電子メール情報の管理方法及びそのプログラムを格納する記録媒体 |
CN1402159A (zh) * | 2001-08-22 | 2003-03-12 | 英业达股份有限公司 | 邮件档案管理系统及方法 |
EP1326189A3 (en) * | 2001-12-12 | 2005-08-17 | Microsoft Corporation | Controls and displays for acquiring preferences, inspecting behaviour, and guiding the learning and decision policies of an adaptive communications prioritization and routing systems |
WO2004059506A1 (en) * | 2002-12-26 | 2004-07-15 | Commtouch Software Ltd. | Detection and prevention of spam |
US7219148B2 (en) * | 2003-03-03 | 2007-05-15 | Microsoft Corporation | Feedback loop for spam prevention |
US7543053B2 (en) * | 2003-03-03 | 2009-06-02 | Microsoft Corporation | Intelligent quarantining for spam prevention |
CN1581065A (zh) * | 2003-08-14 | 2005-02-16 | 跨越科技股份有限公司 | 高扩展性的模块化邮件系统的控制方法 |
US20050060643A1 (en) * | 2003-08-25 | 2005-03-17 | Miavia, Inc. | Document similarity detection and classification system |
US7506125B2 (en) * | 2003-09-29 | 2009-03-17 | Hitachi, Ltd. | Information terminals for receiving content with survival time and forwarding content to different information terminal after changing the survival time |
-
2005
- 2005-05-27 US US11/139,705 patent/US7600126B2/en active Active
-
2006
- 2006-04-21 KR KR1020077027635A patent/KR101224752B1/ko active IP Right Grant
- 2006-04-21 JP JP2008513489A patent/JP4824753B2/ja not_active Expired - Fee Related
- 2006-04-21 WO PCT/US2006/015111 patent/WO2006130259A2/en active Application Filing
- 2006-04-21 CN CN2006800147315A patent/CN101636742B/zh active Active
- 2006-04-21 EP EP06750980A patent/EP1911189B1/en active Active
- 2006-04-21 AT AT06750980T patent/ATE554455T1/de active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030009698A1 (en) | 2001-05-30 | 2003-01-09 | Cascadezone, Inc. | Spam avenger |
US20030220903A1 (en) | 2002-04-19 | 2003-11-27 | Mont Marco Casassa | Long-term digital storage |
Also Published As
Publication number | Publication date |
---|---|
EP1911189A2 (en) | 2008-04-16 |
JP2008546076A (ja) | 2008-12-18 |
JP4824753B2 (ja) | 2011-11-30 |
WO2006130259A3 (en) | 2009-08-27 |
CN101636742A (zh) | 2010-01-27 |
EP1911189B1 (en) | 2012-04-18 |
US7600126B2 (en) | 2009-10-06 |
CN101636742B (zh) | 2013-01-02 |
US20060271784A1 (en) | 2006-11-30 |
WO2006130259A2 (en) | 2006-12-07 |
KR20080014800A (ko) | 2008-02-14 |
ATE554455T1 (de) | 2012-05-15 |
EP1911189A4 (en) | 2010-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101224752B1 (ko) | 시간 제한적 메시지들의 효율적인 처리 방법 | |
US11120152B2 (en) | Dynamic quorum membership changes | |
AU2017203631B2 (en) | Database system with database engine and separate distributed storage service | |
US10198356B2 (en) | Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement | |
US10534768B2 (en) | Optimized log storage for asynchronous log updates | |
US9460008B1 (en) | Efficient garbage collection for a log-structured data store | |
US10262005B2 (en) | Method, server and system for managing content in content delivery network | |
US6256634B1 (en) | Method and system for purging tombstones for deleted data items in a replicated database | |
AU2014235433B9 (en) | Fast crash recovery for distributed database systems | |
US7680843B1 (en) | Method and system to offload archiving process to a secondary system | |
US10725666B2 (en) | Memory-based on-demand data page generation | |
JP2017216010A (ja) | 分散型データベースシステムのシステム全体のチェックポイント回避 | |
US20090249001A1 (en) | Storage Systems Using Write Off-Loading | |
US10303564B1 (en) | Reduced transaction I/O for log-structured storage systems | |
US10409804B2 (en) | Reducing I/O operations for on-demand demand data page generation | |
US9015303B2 (en) | Message queue behavior optimizations | |
US10223184B1 (en) | Individual write quorums for a log-structured distributed storage system | |
US7788330B2 (en) | System and method for processing data associated with a transmission in a data communication system | |
US20050097130A1 (en) | Tracking space usage in a database | |
CN115061630A (zh) | 一种数据迁移方法、装置、设备及介质 | |
US20220342888A1 (en) | Object tagging | |
US20110282923A1 (en) | File management system, method, and recording medium of program | |
US8805942B2 (en) | Storing and partitioning email messaging data | |
CN104821907A (zh) | 一种电子邮件处理方法 | |
CN104702700A (zh) | 一种邮件提取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151217 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161220 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171219 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20181226 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20191217 Year of fee payment: 8 |