KR101203306B1 - 데이터 변경 통지 - Google Patents

데이터 변경 통지

Info

Publication number
KR101203306B1
KR101203306B1 KR1020087001535A KR20087001535A KR101203306B1 KR 101203306 B1 KR101203306 B1 KR 101203306B1 KR 1020087001535 A KR1020087001535 A KR 1020087001535A KR 20087001535 A KR20087001535 A KR 20087001535A KR 101203306 B1 KR101203306 B1 KR 101203306B1
Authority
KR
South Korea
Prior art keywords
entity
change
notification
data
information
Prior art date
Application number
KR1020087001535A
Other languages
English (en)
Other versions
KR20080047346A (ko
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 KR20080047346A publication Critical patent/KR20080047346A/ko
Application granted granted Critical
Publication of KR101203306B1 publication Critical patent/KR101203306B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

데이터 변경 통지를 위한 프레임워크는 이벤트 통지를 저장하는 통지 큐를 포함한다. 클라이언트 응용프로그램은 여러 가지 데이터 변경 이벤트에 관련된 이벤트 정보를 요청할 수 있다. 예를 들어, 클라이언트 응용프로그램은 이벤트 정보를 수신하기 위해서 하나 이상의 API를 사용하여 구독할 수 있다. 상기 프레임워크는 세션에 특정된 이벤트 통지 메커니즘 및 서버 재시작이나 클라이언트 세션들을 건너서도 유지될 수 있는 지속형 이벤트 통지 메커니즘을 제공한다. 본 발명의 혁신적인 점은, 이벤트 통지의 배달이 보장된다는 점, 응용프로그램이 구독된 객체들에게 과거에 일어난 이벤트에 대한 요약 정보를 얻을 수 있도록 하는 API가 있다는 점, 클라이언트 세션이 종료되었을 때 폐영역 회수(garbage collection)와 통지에 대한 클린업이 자동으로 이루어진다는 점이다.
Figure R1020087001535
데이터, 변경, 모니터링, 통지

Description

데이터 변경 통지{DATA CHANGE NOTIFICATIONS}
다양한 컴퓨터 시스템에서, 컴퓨터 응용프로그램을 위한, 그리고 그것에 의한 정보의 저장과 검색은 하나 이상의 중앙 저장 시스템(central storage system)에 의해 처리된다. 예를 들어, 개인용 컴퓨터에서 흔히 사용되는 스토리지 시스템 중 하나가 "파일 시스템" 이라고도 불리는, 파일/폴더/디렉토리에 기반한 시스템이다. 이러한 파일 시스템은, 대부분의 파일을 계층적으로 구성하여, 파일이 저장되는 저장 매체의 물리적 구성을 추상화한다. 일반적으로 이러한 계층적 구성은 운영 체제 레벨에서 이루어진다. 보통, 저장된 파일은 파일 시스템에 의해 유지되는 특별한 파일내 구현된 파일 계층구조(디렉토리) 자체가 포함된다. 다른 한편, 위 디렉토리는 그 디렉토리 안에 있는 다른 모든 파일에 대응하는 항목들의 목록과, 파일 계층구조(본 명세서에서 폴더라고 지칭함) 내의 이들 파일들의 노드 위치(nodal location)를 유지한다.
중앙 저장 시스템으로서 파일 시스템을 사용하는 것에는 몇 가지 제한 사항이 있다. 중앙 저장 시스템의 기반으로서 관계형 데이터베이스 기술을 사용함으로써 이와 같은 제한 사항들을 극복할 수 있다.
스토리지 시스템에 저장된 데이터를 사용하는 응용프로그램에서, 응용프로그램의 몇몇 동작은 스토리지 시스템 안에 저장된 데이터의 변경을 기초로 한다. 스 토리지 안의 객체 각각 또는 객체 그룹에 대한 변경에 기초하여, 응용프로그램들은 이에 관련된 비즈니스 로직 또는 디스플레이 로직을 실행하고자 할 수도 있다. 예를 들어, 어떤 이메일 프로그램은 언제 새로운 이메일 메시지가 도착했는지 알고 싶을 것이다. 어떤 시스템에서는, 이메일 메시지가 도착하면 스토리지 시스템에 저장된다. 새로운 메시지가 도착하면, 상기 이메일 프로그램은, 새로운 메시지가 도착했다는 사실을 이용하여, 또는 해당 이메일 메시지의 내용을 이용하여 임의의 내부적인 처리를 할 수 있게 된다. 예를 들어, 몇몇 이메일 프로그램들은 메시지를 처리하는데 사용되는 규칙을 갖는다. 몇몇의 경우, 새로운 메시지가 도착하면 이러한 규칙들의 적용이 시작된다. 또한, 스토리지 시스템 안에 저장된 데이터에 대한 변경에 기초로 사용자 인터페이스가 변경될 수도 있다. 예를 들어, 새로운 메시지가 수신되면, 새로운 메시지가 도착했다는 알림이 사용자에게 표시될 수 있다. 메시지 목록이 갱신되어 새로운 메시지를 포함할 수 있다.
응용프로그램이 관심 가질 만한 데이터 변경의 유형으로는, 객체의 생성, 객체의 삭제, 객체의 이동 또는 보안 설정의 변경과 같은 객체에 대한 업데이트 등이 있다. 기반이 되는 관계형 데이터베이스가 이러한 업데이트를 제공하는데 사용될 수 있는 트리거(trigger)를 제공하지 않을 수 있다.
어떤 컴포넌트들은 관계형 데이터베이스에 저장된 객체들의 변경에 대하여 지속적인 모니터링을 필요로 한다. 예를 들어, 바이러스 백신 프로그램에서는, 특정한 유형의 객체에 대해 변경 사항(객체의 추가도 포함)이 생기면 바이러스 스캔을 시작시킬 필요가 있다. 이와 유사하게, 엔티티에 대한 풀-텍스트 인덱싱이 지 속적으로 이루어진다. 만약 응용프로그램과, 기반이 되는 관계형 데이터베이스 간의 연결에 단절이 생기면, 통지(notification)가 유실될 수 있고 재개시에는, 작업을 다시 시작하기 위해서 많은 일이 필요하게 될 가능성이 있다. 응용프로그램과 관계형 데이터베이스간의 연결이 중단된 동안에 일어나는 변경 사항을 포함한 각종 변경 사항들에 대하여 모니터링과 응답을 끊김 없이 지속함으로써, 연결이 회복되었을 때의 프로세싱과 시간을 절약할 수 있다.
전술한 관점에서 볼 때, 데이터베이스 기반 시스템에서 사용될 수 있고 퍼포먼스와 측정 가능성(scalability)이 좋은 변경 통지기가 필요하다. 본 발명이 바로 이런 필요성을 충족시킨다.
변경 통지를 제공하기 위해서, 변경 통지 시스템에 일 응용프로그램이 등록되고, 이 응용프로그램은 다른 응용프로그램들이 구독(subscription) 행위를 통해 특정된 변경 사항과 관련된 정보를 얻도록 한다. 상기 변경 통지 시스템은 기반이 되는 관계형 데이터베이스 안의 데이터 변경사항을 모니터링 하고, 큐에 수신된 요청과 관련된 변경 정보를 저장한다. 응용프로그램은 해당 응용프로그램의 요청에 대응하여 어떠한 변경이 있었는지 결정하기 위하여 큐에 있는 관련 변경 사항에 접근할 수 있다.
일 실시예에서, 두 가지 종류의 관찰자(watcher)가 생성될 수 있다. 어떤 응용프로그램이 비지속형(non-durable) 관찰자를 요구한다면, 그 응용프로그램이 변경 통지 시스템과의 연결을 잃거나 프로그램이 종료될 때, 큐에 남아있던 해당 응용프로그램을 위한 정보는 제거되고, 해당 응용프로그램의 요청에 대응하는 변경 사항에 대하여 추적을 중단한다. 하지만, 지속형 관찰자를 요청한다면, 해당 응용프로그램이 종료되거나 연결을 잃더라도, 큐에 남아 있던 정보는 유지되고, 해당 응용프로그램의 요청과 관련된 변경 사항이 더 생기면 큐에 저장된다. 상기 응용프로그램이 재접속되면, 접속이 단절된 기간 동안의 변경 정보를 큐에서 얻을 수 있고, 재접속되는 동안 및 재접속 후에 발생한 변경 정보 역시 마찬가지이다.
이러한 방법으로, 응용프로그램은 다양한 객체 범위(개별 아이템 레벨, 폴더 내용 또는 전체 객체 계층)에서, 다양한 이벤트 유형(생성, 갱신, 삭제 작업), 다양한 객체 유형(문서, 메시지 등), 다양한 객체 종류(아이템, 확장자, 링크 등)를 위한 많은 종류의 이벤트 통지 구독 옵션에 접근할 수 있다 이벤트 통지는 세션이 종료(자발적이든 비자발적이든)되어도 유지되므로, 끊김 없이 모티터링을 재개할 수 있다.
본 발명에 관한 다른 특징과 장점은 후술할 발명에 대한 설명과 첨부된 도면을 통해 명백하게 될 것이다.
첨부된 도면을 참조하면 전술한 발명의 상세한 설명뿐만 아니라 이하의 발명에 대한 상세한 설명도 더 잘 이해될 것이다. 본 발명에 대한 이해를 돕기 위하여, 첨부된 도면에 본 발명의 여러 특징에 대한 예시를 도시하였으나, 본 발명은 명세서에 개시된 특정 방법이나 수단에 한정되지 않는다.
예시적인 컴퓨팅 환경
본 발명에 대한 여러 가지 실시예를 컴퓨터상에서 실행할 수 있다. 도 1과 이하의 내용은, 본 발명이 구현되기에 적합한 컴퓨팅 환경에 대한 간략하고 일반적인 설명을 제공하기 위함이다. 필수적인 것은 아니지만, 본 발명의 특징들은, 클라이언트 워크스테이션이나 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈처럼 컴퓨터로 실행가능한 명령어의 맥락에서 서술될 것이다. 일반적으로 프로그램 모듈에는, 특정 작업을 수행하거나 특정한 추상 데이터 형(abstract data type)을 구현하는, 루틴(routine), 프로그램(program), 객체(object), 컴포넌트(component), 데이터 구조(data structure) 등이 포함된다. 또한, 본 발명은 핸드 헬드 장치(hand held device), 멀티프로세서 시스템, 마이크로프로세서에 기반하였거나 프로그램 가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성에서도 실시될 수 있다. 본 발명은 통신 네트워크로 연결된 원격 처리 장치에 의해서 작업이 처리되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 양쪽 모두에 위치할 수 있다.
도 1에 도시된 바와 같이, 전형적인 범용 컴퓨팅 시스템에는, 처리 장치(processing unit)(21), 시스템 메모리(22), 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(21)에 연결시키는 시스템 버스(bus)(23)를 포함하는 종래의 개인용 컴퓨터(20) 등이 포함된다. 시스템 버스(23)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스, 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 상기 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함한다. 시동 중과 같은 때에, 상기 개인용 컴퓨터(20) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(26)은 통상적으로 ROM(24)에 저장되어 있다. 상기 개인용 컴퓨터는 하드 디스크(도시 생략)에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(27), 이동식 자기 디스크(29)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(28), CD-ROM, 또는 기타 광 매체 등의 이동식 광 디스크(31)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(30)를 포함할 수도 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 광 디스크 드라이브(30)는, 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 광 디스크 드라이브 인터페이스(34)에 의하여 시스템 버스(23)에 연결된다. 상기 드라이브와 그에 연관된 컴퓨터 판독 가능 매체는, 개인용 컴퓨터(20)에게 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 위한 비휘발성 저장소를 제공한다. 본 명세서에서 서술하는 예시적인 환경은 하드 디스크, 이동식 자기 디스크(29), 이동식 광 디스크(31)를 사용하고 있지만, 당업자라면 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지(Bernoulli cartridge), RAM, ROM 등과 같이 컴퓨터에 의해 접근 가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독 가능 매체 또한, 예시적인 운영 환경에서 사용될 수 있음을 이해할 것이다. 마찬가지로, 예시적인 운영 환경에는 열 감지 센서와 보안 또는 화재 경보 시스템 과 같은 다양한 유형의 모니터링 장치 및 기타 정보 공급원(sources of information)이 포함될 수 있다.
운영 체제(35), 하나 이상의 응용프로그램(36), 기타 프로그램 모듈(37), 및 프로그램 데이터(38)를 포함한 몇몇 프로그램 모듈은 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40)와 포인팅 장치(42)와 같은 입력 장치를 통하여, 상기 개인용 컴퓨터(20)에 명령어와 정보를 입력할 수 있다. 기타의 입력 장치(도시 생략)에는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 포함될 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 직렬 포트(serial port) 인터페이스(46)를 통해 처리 장치(21)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스에 의해 접속될 수도 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 접속될 수 있다. 모니터(47) 외에, 개인용 컴퓨터는 보통 스피커 및 프린터 등의 기타 주변 출력 장치(도시 생략)를 포함할 수 있다. 도 1의 상기 예시적인 시스템은 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56), SCSI 버스(56)에 연결된 외장형 저장 장치(62) 또한 포함하고 있다.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 상기 원격 컴퓨터(49)는 또 하나의 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 도 1에는 메모리 저장 장치(50)만이 도시되 었으나, 통상적으로 개인용 컴퓨터(20)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 LAN(51) 및 WAN(52)이 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 상기 개인용 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 상기 개인용 컴퓨터(20)는 통상적으로 인터넷과 같은 원거리 통신망(WAN)(52)을 통해 통신을 설정하기 위한 모뎀(54) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 상기 모뎀(54)은 상기 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크화된 환경에서, 상기 개인용 컴퓨터(20) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
도 2의 블록 다이어그램에 도시하였듯이, 컴퓨터 시스템(200)은 대략 세 가지의 컴포넌트 그룹, 즉 하드웨어 컴포넌트(202), 하드웨어/소프트웨어 인터페이스 시스템 컴포넌트(204), 응용프로그램 컴포넌트(206)(이 명세서에서 사용자 컴포넌트 또는 소프트웨어 컴포넌트라고도 지칭됨)로 나뉠 수 있다.
도 1을 다시 참조하면, 컴퓨터 시스템(200)의 여러 실시예에서, 상기 하드웨어 컴포넌트(202)는 중앙 처리 장치(CPU)(21), 메모리(ROM(24)과 RAM(25) 모두), BIOS(26), 그리고 키보드(40), 마우스(42), 모니터(47), 및/또는 프린터(도시 생 략)와 같은 입출력 장치로 구성될 수 있다. 상기 하드웨어 컴포넌트(202)는 상기 컴퓨터 시스템(200)의 기본적인 물리적 하부 구조(infrastructure)를 구성한다.
상기 응용프로그램 컴포넌트(206)는 컴파일러, 데이터베이스 시스템, 워드프로세서, 비즈니스 프로그램, 비디오 게임 등을 포함하는 여러 가지의 소프트웨어 프로그램으로 구성되나, 이에 제한되는 것은 아니다. 응용프로그램은, 문제 해결, 해결책 제시, 여러 사용자(머신(machine), 다른 컴퓨터 시스템, 및/또는 최종 사용자)를 위한 데이터 처리를 위하여 컴퓨터 자원(resource)이 활용되는 방법을 제공한다.
상기 하드웨어/소프트웨어 인터페이스 시스템 컴포넌트(204)는, 대부분의 경우 셸(shell)과 커널(kernel)로 구성된 운영 체제를 포함하며, 몇몇 실시예에서는 운영 체제만으로 구성되어 질 수 있다. "운영 체제(OS)"란 응용프로그램과 컴퓨터 하드웨어 사이에서 중개자 역할을 하는 특별한 프로그램이다. 상기 하드웨어/소프트웨어 인터페이스 시스템 컴포넌트(204)는, 컴퓨터 시스템의 운영 체제와 함께 또는 운영 체제를 대신하여, 가상 컴퓨터 관리자(virtual machine manager), 공통 언어 런타임(common language runtime) 또는 이와 기능면에서 유사한 것, 자바 가상 머신(Java Virtual Machine) 또는 이와 기능면에서 유사한 것, 또는 다른 소프트웨어 컴포넌트를 포함할 수 있다. 하드웨어/소프트웨어 인터페이스 시스템의 목적은 사용자가 응용프로그램을 실행할 수 있는 환경을 제공하는 것이다. 모든 하드웨어/소프트웨어 인터페이스 시스템의 목적은 컴퓨터 시스템을 사용하기 쉽게 만들고, 컴퓨터 하드웨어를 효율적으로 활용하는 것이다.
상기 하드웨어/소프트웨어 인터페이스 시스템은 일반적으로 시동시에 컴퓨터 시스템에 로드되고, 그 후 해당 컴퓨터 시스템 안의 모든 응용프로그램들을 관리한다. 응용프로그램들은 API(application program interface)를 통해 서비스를 요청함으로써 하드웨어/소프트웨어 인터페이스 시스템과 상호 작용한다. 몇몇의 응용프로그램들은 커맨드 언어 또는 그래픽 유저 인터페이스(GUI)를 통하여 최종 사용자가 하드웨어/소프트웨어 인터페이스 시스템과 상호 작용할 수 있도록 한다.
하드웨어/소프트웨어 인터페이스 시스템은 전통적으로 응용프로그램을 위해 다양한 서비스를 수행한다. 복수의 프로그램이 동시에 실행될 수 있는 멀티태스킹 하드웨어/소프트웨어 인터페이스 시스템에서, 하드웨어/소프트웨어 인터페이스 시스템은 어떤 응용프로그램이 어떤 순서로 실행되는 지, 다른 응용프로그램 차례로 바뀌기 전에 각각의 응용프로그램에 얼마나 많은 시간이 할애되어야 하는 지를 결정한다. 또한 상기 하드웨어/소프트웨어 인터페이스 시스템은 복수의 응용프로그램간에 내부 메모리의 할당(sharing)을 관리하고, 하드 디스크, 프린터, 다이얼업 포트와 같은 연결된 하드웨어로의 출력과 연결된 하드웨어로부터의 입력을 처리한다. 또한 상기 하드웨어/소프트웨어 인터페이스 시스템은 작업 상태나 발생한 에러와 관련된 메시지를 각각의 응용프로그램으로(경우에 따라서는 최종 사용자에게도) 보낸다. 또한 상기 하드웨어/소프트웨어 인터페이스 시스템은, 시작되고 있는 응용프로그램이 프린팅과 같은 일괄 작업(batch job)의 방해를 받지 않도록, 일괄 작업(batch job)의 관리를 멈출 수 있고, 다른 프로세싱 및/또는 작업을 다시 시작시킬 수 있다. 병렬 처리의 제공이 가능한 컴퓨터에서, 하드웨어/소프트웨어 인터 페이스 시스템은, 어떤 프로그램이 동시에 하나 이상의 프로세서에서 실행될 수 있도록 프로그램의 분할을 관리하기도 한다.
하드웨어/소프트웨어 인터페이스 시스템의 셸(shell)(이 명세서에서 간단히 "셸"이라고 지칭됨)은 하드웨어/소프트웨어 인터페이스 시스템으로의, 대화형 최종 사용자 인터페이스이다. (셸은 "명령어 해석기", 또는 운영 체제에서는 "운영 체제 셸"이라고 지칭될 수도 있다.) 셸은 응용프로그램 및/또는 최종사용자가 직접 접근할 수 있는, 하드웨어/소프트웨어 인터페이스 시스템의 외부 레이어이다. 셸과 비교하여, 커널은 하드웨어 컴포넌트와 직접 상호 작용하는 하드웨어/소프트웨어 인터페이스 시스템의 가장 내부의 레이어이다.
본 발명의 몇 실시예들은 컴퓨터로 처리되는 시스템에 특히 적합할 것으로 생각되지만, 이 명세서의 어떤 것도 본 발명을 그와 같은 실시예로 한정하지 않는다. 이에 반하여, 이 명세서에서 사용된 "컴퓨터 시스템"이라는 용어는, 정보를 저장하고 처리할 수 있는 장치 및/또는 장치 자체의 동작 또는 실행을 제어하기 위해 저장된 정보를 사용할 수 있는 장치라면 어떤 것이든 포함하는데, 이러한 장치는 본질적으로 전자 장치이든, 기계 장치이든, 논리 장치이든, 가상 장치이든 불문한다.
데이터 변경 통지(Data Change Notification)
관계형 데이터베이스에 적어도 일부라도 기반하는 스토리지 시스템에 저장된 개별 아이템, 폴더, 아이템 도메인의 변경 사항을 응용프로그램이 모니터 할 수 있도록 하기 위하여, 변경 통지 프레임워크가 만들어진다. 모니터링은 변경 이벤트 의 유형(생성, 갱신, 삭제, 보안 설정의 갱신 등)에 따라 특이할 수 있다.
일 실시예에 따르면, 하나 이상의 엔티티(entity), 폴더, 또는 도메인의 변경을 주시하고자 하는, 응용프로그램 또는 다른 엔티티(entity)와 상호 작용하는 변경 통지 시스템은 도 3에서 도시한 바와 같이 진행된다. 도 3은 본 발명의 일 실시예에 따른 변경 통지 시스템이 취하는 단계를 표시한 흐름도이다. 도 3에 도시된 바와 같이, 변경 통지 시스템을 위한 첫 번째 단계(300)는 요청 엔티티에 관한 식별 정보를 수신하는 것이다. 일 실시예에서, 이것은 상기 변경 통지 시스템을 갖춘 통지 클라이언트에 대한 요청을 성립시킨다. 일 실시예에서, 상기 변경 통지 시스템은 관계형 데이터베이스 스토리지를 포함하는 파일 시스템 안으로 통합된다. 이와 다른 실시예에서, 변경 통지 시스템은 관계형 데이터베이스와 직접/간접적으로 통신하는 레이어 또는 엔티티이다.
통지 클라이언트를 등록하는 것은, 요청 엔티티가 변경 통지 시스템으로부터 클라이언트 핸들(client handle)을 얻을 수 있도록 한다. 이를 통해, 응용프로그램은 상기 변경 통지 시스템과의 트랜잭션(transaction)에 있어서 유일한 식별자를 갖게 된다. 몇몇 실시예에 있어서, 변경 통지를 통해 응용프로그램과 공유할 수 있는 정보에 제한이 있는지, 있다면 어떤 제한이 있는지를 변경 통지 시스템이 결정할 수 있도록 하는 보안 정보가 클라이언트 등록 중에 저장된다. 일 실시예에서는, 응용프로그램이 아이템으로의 읽기 접근 권한을 가진 경우에만, 변경 통지가 그 아이템을 위해서 전달된다.
단계 310에서 나타나듯이, 통지 클라이언트가 등록되고 나면, 변경 통지 시 스템이 통지를 제공해야 하는 변경 사항에 대한 정보가 등록된다. 일 실시예에서, 이것은 관찰자 구독(watcher subscription) 내용을 등록함으로서 이루어진다. 단계 300의 상기 통지 클라이언트는 구독(subscription) 내용을 등록하기 위해서 사용되는 핸들을 제공한다. 각각의 구독 행위는, 파일 시스템 안에 있는, 통지되도록 요청을 받은 하나 이상의 특정 구성요소(element)를 지정한다. 예를 들어, 관계형 데이터베이스에 기반한 파일 시스템의 일례에서, 관찰될 수 있는 요소는 엔티티, 폴더, 도메인을 포함할 수 있다. 구성요소의 지정은, 예를 들어 관찰할 특정 도메인을 지정하는 방법처럼 직접적일 수도 있고, 예를 들어 특정한 정규 표현식(regular expression)과 매치되는 이름을 가진 모든 폴더를 지정하는 방법처럼 직접적이지 않을 수도 있다. 또한 각각의 구독 행위는 어떤 종류의 데이터 변경 이벤트가 모니터 되어야 하는지를 지정한다. 예를 들어, 구독 행위는 파일 시스템 안에 있는 구성요소의 생성, 삭제, 또는 변경에 대한 통지를 요청할 수 있다. 일 실시예에 있어서는, 지정된 구성요소와 데이터 변경 이벤트의 종류에 대한 기본값(default value)이 존재할 수 있다. 따라서, 예를 들어 그러한 실시예에 있어서는 (직접 구체적으로 참조하는 방법 또는 기타 다른 방법으로라도) 어떤 구성요소도 지정되지 않았고 변경 유형도 지정되지 않으면, 모든 구성요소에 대한 가능한 모든 변경에 대해 통지가 요청된 것으로 볼 것이다.
관찰자 구독 행위는 언제라도 등록될 수 있다. 하나 이상의 관찰자 구독 행위가 등록되면, 단계 320에서 도시하듯이, 요청 엔티티에게 변경 통지가 제공된다. 몇몇 실시예에서는, 변경 통지는 동기적으로(synchronously) 제공된다. 예를 들 어, "변경 대기(WaitForChanges)" 메소드는, 변경 통지 시스템이 엔티티 정보 및 기다릴 변경 정보를 등록한 후에, 요청 엔티티에 의해서 호출될 수 있다. 이러한 메소드는 변경이 일어나기를 기다렸다가, 변경 통지 시스템에 의하여 발견되는 즉시 변경 통지를 리턴할 것이다. 다른 실시예에서는, 상기 변경 통지가 비동기적으로(asynchronously) 제공된다. 비동기적으로 구현된 실시예에서, 요청 엔티티는, 일정 시간이 지난 후에야 자기의 변경 통지에 접근할 수 있고, 일정 시간 동안에 일어난 모든 변경 통지를 수신한다. 그러므로, 처리되지 않은(pending) 요청 엔티티를 위한 통지가 있는지 결정하고, 처리되지 않은 통지가 있다면 그것을 가지고 반환하는, "오래된 통지 읽기" 메소드가 호출될 수 있다. 일 실시예에서, "변경 대기"와 "오래된 통지 읽기"의 기능을 겸하는 메소드가 제공될 수 있는데, 이 메소드는 처리되지 않은 통지가 있을 때에 호출되면 즉시 반환하고, 처리되지 않은 통지가 없을 경우 변경 통지 시스템에 의해 변경 사실이 발견될 때 반환한다.
일 실시예에 있어서, 변경 통지는 변경 통지 시스템의 통지 클라이언트를 통해 제공된다. 또 다른 실시예에서는, 응용프로그램이, 상술한 바와 같이 변경 통지 시스템의 메소드(method)를 호출하여, 자신이 통지받을 준비가 되었다고 신호를 보낸다. 상기 통지는 관련된 변경 사항의 모음의 형태로 반환된다. 일 실시예에서, 변경 사항은, 변경 사항이 들어있는 큐에 대해 실행되는 대기(wait-for) 쿼리의 결과로서 반환된다. 대기(wait-for) 쿼리는 해당 쿼리와 매치되는 데이터가 발견될 때만 리턴하는 특별한 유형의 (예를 들어 데이터베이스 시스템에 있는) 쿼리이다. 상기 큐에는 여러 관찰자를 위한 변경 사항이 포함될 수 있지만, (쿼리와 매치되는 데이터가 있을 때만 리턴하는) 대기(wait-for) 쿼리는 해당 클라이언트에 대하여 등록된 관찰자 구독 내용에 상응하는 변경 사항만을 받도록 구성된다.
하나의 클라이언트로부터 여러 개의 관찰자 구독 행위가 등록될 수 있다. 클라이언트가 생성된 직후 또는 통지가 요청되거나 수신되기 직전이라도 클라이언트가 새로운 관찰자 구독 행위를 등록하는 데에 아무런 제한이 없다. 전술한 상기 실시예에서, 등록된 구독 내용과 관련된 모든 통지는, 하나로 묶여서 관찰자에게 반환된다. 다른 실시예에서, 각각의 관찰자 구독 내용에 대해서 개별적인 응답이 반환될 수 있다. 또 다른 실시예에서는, 통지 클라이언트가 등록되지 않고, 대신에 통지 클라이언트 및 하나의 관찰자 구독 행위를 일체로 포함하는 하나의 구독 클라이언트가 등록된다.
본 발명의 일 실시예에서, 관찰자(watcher)는 변경 통지 시스템으로의 연결이 종료될 때 관찰자가 종료된다. 그 시점, 또는 그 후 클린업(cleanup) 도중의 임의 시점에, 종료된 관찰자와 관계된 큐(queue) 안의 모든 통지가 삭제되고, 해당 관찰자의 구독 내용에 대응하는 통지는 더 이상 큐에 쌓이지 않는다. 이런 유형의 관찰자는 "비지속형 관찰자(non-durable watcher)" 라고 불린다. 본 발명의 다른 실시예에서는, 지속형 관찰자라고 불리는 유형의 관찰자가 제공된다.
지속형 관찰자 클라이언트는 세션(session)을 초월하여 지속한다. 이를 통해, 지속형 관찰자 클라이언트를 생성하는 응용프로그램은 자기가 등록한 변경 사항을 놓치지 않도록 보장할 수 있다. 지속형 관찰자 클라이언트를 생성한 세션이 종료되면, 해당 클라이언트를 위한 변경 통지는 큐에서 삭제되지 않고 유지된다. 실제로도 지속형 관찰자 클라이언트가 변경 통지를 삭제하라고 요청하기 전까지는, 큐에 있는 모든 통지가 유지된다. 지속형 관찰 클라이언트를 생성한 응용프로그램이 종료된 후에 재접속하면, 종료 시에 큐에 있었으나 삭제되도록 요청되지 않은, 해당 클라이언트를 위한 관찰자 구독 내용과 관련된 모든 통지가 큐에 포함되어있게 되고, 종료 후에 큐에 넣어진 모든 관련 통지 역시 큐에 포함되어 있게 된다. 그 후 해당 응용프로그램은 새로운 클라이언트를 생성하여 이와 같은 통지들를 읽는다. 읽은 후에는, 큐의 공간을 절약하기 위해서 읽은 통지들을 삭제하도록 요청할 수 있다.
지속형 관찰자 클라이언트의 통지는 지속형 관찰자 클라이언트가 해당 통지들에 대한 삭제 요청을 하기 전까지는 삭제되지 않기 때문에, 응용프로그램이 모든 관련 통지를 수신할 것이라는 신뢰성이 높아진다. 예를 들어, 지속형 관찰자 클라이언트를 실행중인 응용프로그램에 통지가 전송되었으나 수신되지 않은 경우 (이를 테면, 예기치 않게 연결이 종료되는 등의 이유로), 응용프로그램은 그와 같은 통지들에 대한 삭제 요청을 하지 않을 것이고, 다시 연결이 복구되면, 해당 지속형 관찰자를 위한 큐에 이런 통지들이 여전히 이용 가능할 것이다. 일 실시예에서 지속형 관찰자는, 주어진 두 시점(타임스탬프, 카운터 클릭, 기타 등등을 사용해 참조됨) 사이에 일어난 변경 사항과 관련된 큐 안의 모든 변경 통지를 요청할 것이다.
본 발명의 다양한 종류의 실시예에 따라, 지속형 관찰자, 또는 비지속형 관찰자, 또는 양쪽 모두가 제공될 수 있다.
도 4는 본 발명의 일 실시예에 따른, 변경 통지 시스템과 소정의 데이터 흐 름을 나타낸 블록 다이어그램이다. 도 4에 도시한 바와 같이, 상기 변경 통지 시스템(400)은 클라이언트(410)을 통하여 응용프로그램과 상호 작용한다. 이와 같은 클라이언트(410)들은 변경 통지 시스템(400)과 함께 관찰자 클라이언트와 관찰자 구독 행위를 등록하는 응용프로그램이다. 등록 트랜잭션은 도 4에서 생략되었다.
관찰자 구독 내용과 관련된 정보(및 관찰자 구독 행위를 위한 관련 클라이언트(410)의 식별 정보)는 구독 정보 테이블(subscription table)(420)에 저장된다. 일 실시예에서, 두 개의 테이블, 즉 클라이언트 구독 테이블과 관찰자 구독 테이블이 저장된다. 상기 클라이언트 구독 테이블은 모든 클라이언트 등록 사항을 저장한다. 지속형 관찰자 클라이언트의 경우, 지속형 관찰자 클라이언트가 자신에 대한 삭제 요청을 하기 전까지는 클라이언트 구독 테이블에 상기 정보가 유지된다. 비지속형 관찰자 클라이언트의 경우, 해당 클라이언트와 관련된 연결이 닫히면 클라이언트 데이터는 제거된다. 관찰자 구독 테이블은 등록된 관찰자와 관련된 정보를 유지한다. 구독 정보 테이블의 데이터는, 그것의 변경 사항이 추적되고 있는 관계형 데이터 베이스에 데이터 형태로 조직화되어 저장될 수 있고, 또는 도 4에 도시된 바와 같이, 별도로 저장될 수 있다.
통지 발송기(430)는 상기 변경 통지 시스템(400)의 심장부에 위치한다. 일 실시예에서, 통지 발송기(430)는 구독 테이블(420)에서 지시하는 바에 따라 관계형 데이터베이스(엔티티 테이블(440))에서 쿼리를 수행하고, 통지 큐(queue)(460)에 변경 통지를 저장하는 백그라운드 쓰레드(thread)이다. 엔티티 테이블(440)은 퍼블리셔(publisher)(450)와 같은 외부 엔티티에 의해서 변경될 수 있다. 엔티티 테 이블(스토리지 시스템의 기초가 되는 관계형 데이터베이스)(440)에 이러한 데이터 변경이 발생할 수 있다. 엔티티 테이블이 마치 변경 통지 시스템(400)의 일부인 것 같이 도시되어 있으나, 엔티티 테이블은 변경 통지 시스템으로부터 분리될 수도 있다.
일 실시예에서, 통지 발송기는 상기 구독 테이블(420)과 엔티티 테이블(440)을 병합하여 엔티티 테이블(440)에서 대응하는 변경 사항에 대한 정보를 찾아낸다. 몇몇 실시예에서, 클라이언트(410) 중 몇몇은 엔티티 테이블(440)안의 모든 데이터를 보지 못할 수 있고, 그러한 실시예에서는, 변경 통지는 클라이언트(410)가 접근 가능한 변경 사항을 위한 통지 큐(queue)(460)에만 저장된다.
일 실시예에서, 통지 큐(460)는 관계형 데이터베이스를 사용하여 구현되고, 클라이언트(410)는 관찰자 구독 내용에 상응하는 변경 통지가 통지 큐(460)에 놓여졌는지를 결정하기 위해서 대기(wait-for) 쿼리를 사용한다. 큐에 들어가는 것에는, 클라이언트(410) 중 변경 통지가 전달되고자 하는 클라이언트가 어떤 것인지를 식별하기 위하여 클라이언트 식별자가 포함되며, 타임스탬프도 포함된다. 예를 들어 지속형 관찰자가 재접속된 경우에서와 같이, 수 개의 변경 통지가 한꺼번에 전송되는 경우도 생길 수 있기 때문에, 타임 스탬프는 클라이언트(410)로 하여금 변경 사항이 일어난 순서를 알 수 있도록 한다. 클라이언트(410)가 변경 통지에 관한 정보를 수신하는 것과 같은 방법으로 통지 큐(460)가 제공되지만, 통지 발송기(430)로부터 변경 통지를 수신하는 클라이언트(410)의 모든 메소드는 주의 깊게 관찰된다. 일반적으로, 몇몇 실시예에서 본 시스템은, 변경 사항 요청 정보를 위 한 스토리지(구독 정보 테이블), 관련된 변경 사항이 있었는지 결정하는 통지 발송기(430), 그리고 통지를 클라이언트에게 전달하는 통지기로 구성된다.
서비스 중개자(Service broker)(470)은 비지속형 관찰자 클라이언트(410)가 연결 해제되었는지 결정하고, 연결이 해제되었다면, 해당 비지속형 관찰자 클라이언트(410)에 속하는 변경 통지 큐를 비운다. 서비스 중개자(470)는, 상기 구독 테이블(420)을 최신의 것으로 유지하기 위하여, 구독 테이블(420)에 담긴 정보 등 다른 클라이언트 상태 정보도 관리한다. 또한 지속형 관찰자를 지원하는 일 실시예에서, 서비스 중개자(470)는 관찰자 클라이언트(410)가 변경 통지의 제거, 또는 종료를 요청했는지 결정하고, 그와 같은 요청에 따라서 상기 구독 테이블(420)과 상기 통지 큐(460)를 대상으로 클린업 작업을 수행한다.
도 5는 일 실시예에서, 클라이언트(410)를 위한 변경 사항을 추적하는 상기 통지 시스템(400)이 취하는 단계를 도시하는 흐름도이다. 도 5에서 도시하듯이, 첫 번째 단계(500)에서, 관련된 데이터 수정을 찾기 위해 관계형 데이터베이스가 조회된다. 일 실시예에서, 이 단계(500)는 상기 관계형 데이터베이스에 변경 사항이 생겼을 때에만 수행된다.
두 번째 단계(510)에서, 상기 변경 통지 시스템의 클라이언트에게 관련된 데이터 수정 사항이 제공된다. 관찰중인 아이템에 관해서 정확히 어떤 변화가 있었는지, 즉 예를 들어 아이템 자체, 아이템의 몇몇 컴포넌트, 또는 연관된 아이템이 바뀌었는지 등에 대한 정보가 통지에 포함된다. 또한, 통지는 해당 통지를 발생시킨 이벤트의 유형에 관한 정보를 포함한다. 아이템에 관련된 데이터 또는 메타 데 이터 안의 어떤 변화도 변경의 원인이 될 수 있다.
몇몇 실시예에서, API(application programming interface)의 일부로서 외부에 노출되는 메소드를 통하여 프레임워크는 응용프로그램에 편의 기능을 제공한다. 제공되는 편의 기능은 이하의 내용을 포함한다.
등록 - 응용프로그램은 통지 클라이언트를 등록할 수 있다. 이와 같은 방법으로 해당 응용프로그램에 특정된 단독의 클라이언트 핸들을 통하여, 응용프로그램을 위한 개별적인 통지 구독 행위를 처리할 수 있다.
구독 - 관찰하고자 하는 데이터 변경 이벤트(엔티티, 폴더, 또는 도메인을 위한 변경 이벤트 등)의 조건을 지정하면서 등록된 통지 클라이언트가 관찰자 구독 행위를 등록할 수 있다. 통지 클라이언트는 그러한 관찰자 구독 행위를 개수와 상관없이 등록할 수 있다. (또 다른 실시예에서는, 등록이 필요하지 않고, 응용프로그램에 의해 직접 구독이 처리될 수 있다.)
미통지된 변경 내역의 열거 - 등록 직후 또는 재시작 중에, 구독된 관찰자를 위해 모든 미통지된(pending) 데이터 변경 사항이 열거된다.
통지의 생성 - 구독 사실이 등록된 데이터 변경 이벤트에 대한 통지가 생성된다.
통지의 큐 삽입 - 구독된 관찰자에게 응답하기 위하여 통지는 통지 큐에 삽입된다.
통지의 제공 - 통지 큐에서 나온 관련된 통지들이 구독된 관찰자들에게 제공된다.
종료 - 개별 관찰자 또는 통지 클라이언트를 종료시키기 위한 방법을 제공한다.
클린업 - 비지속형 관찰자를 위한, 장애 방지형(fault-tolerant) 통지 클린업.
관찰자 삭제 및 클라이언트 삭제 - 이것은 관찰자가 자신이 종료되었는지 알리고, 상기의 변경 통지 시스템으로부터 자신에 대한 정보를 삭제하는 방법이다. 관찰자 구독 내용을 개별적으로 삭제하도록 요청하거나, 또는 클라이언트와 관련된 모든 정보를 삭제하도록 요청할 수 있다. 지속형 관찰자와 비지속형 관찰자 모두를 위해 이와 같은 것들이 구현될 수 있지만, 지속형 관찰자의 실시예에서는, 지속형 관찰자 클라이언트는 이와 같은 편의 사항을 반드시 이용해야 하고, 그렇지 않으면 계속해서 변경 사항들이 해당 클라이언트를 위하여 큐에 계속하여 삽입될 것이다.
결론
전술한 내용이 설명하는 것처럼, 본 발명은 데이터를 조직하고 검색하며 공유하기 위한 저장 플랫폼을 위한 것이다. 본 발명의 상기 저장 플랫폼은 현존하는 파일 시스템과 데이터베이스 시스템을 넘어서 데이터 저장의 개념을 연장하고 확장하며, 관계형(테이블로 된) 데이터, XML, 그리고 아이템이라고 불리는 새로운 형태의 데이터와 같은, 구조적(structured)/비구조적(non-structured)/반구조적(semi-structured) 데이터를 포함하는 모든 타입의 데이터의 저장소가 되도록 설계되었다. 본 발명에서의 공유되는 저장의 기초 토대와 조직화된 데이터를 통하여, 본 발명의 상기 저장 플랫폼은 소비자, 지식근로자(knowledge worker), 및 기업을 위한 응용프로그램 개발을 좀 더 효율적으로 할 수 있도록 한다. 본 발명의 스토리지 플랫폼은, 풍부하고 확장성있는 응용프로그램 프로그래밍 인터페이스를 제공하는데, 이 인터페이스는, 자체 데이터 모델 고유의 기능을 제공할 뿐만 아니라, 기존의 파일 시스템 및 데이터베이스 접근 메소드들을 포함하고 확장한다. 본 명세서에 상술된 실시예에 대하여 본 발명의 범주를 벗어나지 않는 범위의 변형이 있을 수 있음을 이해할 것이다. 따라서 본 발명은 본 명세서에서 기술된 특정 실시예에 한정되는 것이 아니라 청구항에서 정의된 발명의 범주를 벗어나지 않는 범위 내의 모든 변형을 포함할 수 있다.
상술한 내용에 따르면, 본 발명의 여러 시스템, 메소드, 및 특징의 전부 또는 일부가 프로그램 코드(즉 명령어) 형태로 구현될 수 있음이 명백하다. 이와 같은 프로그램 코드는 컴퓨터로 판독 가능한 매체에 저장될 수 있는데, 이 같은 매체로는 자기/전기/광 저장 매체가 있고, 플로피 디스켓, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, 자기 테이프, 플래쉬 메모리, 하드 디스크 드라이브, 그리고 기타 기계로 판독 가능한 모든 매체를 포함하나, 이제 제한되지는 않으며, 다만, 매체에 담긴 프로그램 코드가 컴퓨터 또는 서버와 같은 기계 장치에 로드되어 실행되면, 해당 기계 장치가 본 발명의 실시 장치가 되도록 하는 매체여야 한다. 본 발명은 전기 배선이나 케이블 같은 전송 매체, 광섬유, 인터넷이나 인트라넷을 포함하는 네트워크, 또는 기타 다른 전송 형태로 전송될 수 있는 프로그램 코드의 형태로 구현될 수 있는데, 프로그램 코드가 수신되어 컴퓨터 같은 기계에 로드되고 실행되면, 해 당 기계 장치가 본 발명의 실시 장치가 될 수 있도록 하는 전송 형태여야 한다. 상기 프로그램 코드가 범용 프로세서에서 구현될 경우, 해당 프로세서와 결합하여, 특정한 논리 회로와 비슷하게 작동하는 특별한 실시 장치를 제공한다.

Claims (19)

  1. 컴퓨터로 구현되며 관계형 데이터베이스 내의 데이터에 대한 특정 타입의 변경에 관한 변경 통지를 엔티티에게 제공하는 방법으로서,
    관계형 데이터베이스에서의 데이터 변경 이벤트의 통지를 요청하는 엔티티로부터 엔티티 등록 정보를 수신하는 단계 -상기 등록 정보는 상기 엔티티를 식별하는 정보와, 상기 엔티티가 지속형(durable) 엔티티로 등록되어 있는지 비지속형(non-durable) 엔티티로 등록되어 있는지에 관한 정보와, 통지가 요청되는 상기 관계형 데이터베이스 내 데이터에 대한 특정 타입의 변경을 나타내는 정보를 포함함- 와;
    상기 관계형 데이터베이스 내의 데이터에 대한 상기 특정 타입의 변경의 발생을 모니터링하는 단계와;
    통지가 요청되는 상기 특정 관계형 데이터베이스 내에서의 변경에 대해, 변경 통지 데이터를 큐에 저장함으로써, 상기 변경 통지 데이터를 상기 엔티티에 제공하는 단계 -상기 큐는 부가적인 변경 통지 정보 아이템을 포함하고, 각각의 상기 부가적인 변경 통지 정보 아이템은 상기 엔티티에 대응함- 와;
    상기 엔티티가 비지속형 엔티티로 등록되어 있고 상기 엔티티에 대한 접속이 종료되는 경우, 상기 엔티티에 대응하는 상기 큐 내의 상기 부가적인 변경 통지 정보 아이템을 삭제하는 단계와;
    상기 엔티티가 지속형 엔티티로 등록되어 있는 경우,
    상기 엔티티에 대한 접속이 종료되는지를 판정하는 단계와,
    상기 엔티티에 대한 새로운 접속이 존재하는지를 판정하는 단계와,
    상기 엔티티에 대응하는 상기 부가적인 변경 통지 정보 아이템을 상기 새로운 접속을 이용하여 제공하는 단계와;
    상기 엔티티가 지속형 엔티티로 등록되어 있으면, 상기 엔티티에 대한 상기 엔티티 등록 정보를 복수의 세션에 걸쳐 지속적으로 유지하는 단계와;
    상기 엔티티가 비지속형 엔티티로 등록되어 있으면, 상기 엔티티 등록 정보가 생성된 세션의 종료 후에 상기 엔티티에 대한 상기 엔티티 등록을 제거하는 단계를 포함하는
    변경 통지를 엔티티에게 제공하는 방법.
  2. 제1항에 있어서,
    변경 통지 데이터를 상기 엔티티에 제공하는 상기 단계는,
    상기 큐로부터의 데이터에 대한 요청에 응답하는 단계를 포함하는
    변경 통지를 엔티티에게 제공하는 방법.
  3. 제2항에 있어서,
    상기 큐로부터의 데이터에 대한 요청에 응답하는 상기 단계는,
    상기 큐에 대해 실행되는 대기(wait-for) 쿼리에 응답하는 단계를 포함하는
    변경 통지를 엔티티에게 제공하는 방법.
  4. 제2항에 있어서,
    상기 큐로부터의 데이터에 대한 요청에 응답하는 상기 단계는,
    상기 엔티티 등록 정보를 이용하여 상기 요청이 상기 엔티티로부터 발생했는지 판정하는 단계를 포함하는
    변경 통지를 엔티티에게 제공하는 방법.
  5. 제1항에 있어서,
    상기 변경은 상기 관계형 데이터베이스 내의 특정 아이템과 관련되고,
    상기 관계형 데이터베이스 내의 상기 특정 아이템에 대한 액세스가 보안 요구에 의해 제한되며,
    상기 방법은
    상기 엔티티가 상기 보안 요구를 만족하는지 판정하는 단계를 더 포함하는
    변경 통지를 엔티티에게 제공하는 방법.
  6. 적어도 부분적으로 프로세서 상에서 구현되는 시스템으로서,
    데이터베이스에서의 변경 이벤트의 통지를 요청하는 엔티티에 대한 엔티티 등록 정보를 저장하는 구독 테이블 저장부(subscription table storage) -상기 등록 정보는 상기 엔티티를 식별하는 정보와, 상기 엔티티가 지속형(durable) 엔티티로 등록되어 있는지 비지속형(non-durable) 엔티티로 등록되어 있는지에 관한 정보와, 적어도 하나의 변경 정의에 대한 변경 정보를 포함하고, 상기 변경 정의는 상기 엔티티에 의해 통지가 요청되는 상기 데이터베이스에 대한 하나 이상의 가능한 변경들을 정의함- 와;
    상기 구독 테이블 저장부에 동작가능하게 접속되고, 상기 데이터베이스에 동작가능하게 접속되며, 상기 변경 정의와 관련된 데이터 베이스의 변경에 대하여 상기 데이터베이스에 쿼리하고, 관련 변경사항에 관한 데이터를 수신하는 통지 발송기와;
    상기 통지 발송기에 동작가능하게 접속되고, 상기 엔티티에 동작가능하게 접속되며, 상기 엔티티 등록 정보가 생성되는 현재의 세션 동안에 상기 관련 변경에 대한 적어도 하나의 통지를 상기 엔티티에게 제공하는 통지기를 포함하되,
    상기 통지기는 상기 관련 변경에 대한 상기 적어도 하나의 통지 중 적어도 하나를 저장하는 큐를 포함하고,
    상기 큐는 상기 엔티티로부터 쿼리를 수신하며,
    상기 관련 변경에 대한 적어도 하나의 통지는 상기 쿼리에 응답하여 제공되고,
    상기 엔티티가 지속형 엔티티로서 등록되어 있으면, 상기 엔티티에 대한 상기 엔티티 등록 정보는 상기 현재의 세션의 종료 후에 상기 구독 테이블 저장부에 지속적으로 유지되고,
    상기 엔티티가 비지속형 엔티티로서 등록되어 있으면, 상기 현재의 세션의 종료 후에 상기 엔티티에 대한 상기 엔티티 등록이 상기 구독 테이블 저장부로부터 제거되는
    시스템.
  7. 제6항에 있어서,
    상기 엔티티가 비지속형 엔티티로서 등록되어 있는 경우, 상기 통지기와 상기 엔티티 간의 상기 동작가능한 접속이 종료되면, 상기 큐로부터 상기 엔티티에 상응하는 관련된 모든 변경을 제거하는 서비스 중개자를 더 포함하는
    시스템.
  8. 컴퓨터에 의해 실행가능한 컴퓨터 판독가능한 인스트럭션을 포함하는 컴퓨터로 판독가능한 저장 매체로서,
    상기 컴퓨터 판독가능한 인스트럭션은
    관계형 데이터베이스에서의 데이터 변경의 통지를 요청하는 엔티티로부터 엔티티 등록 정보를 수신하는 단계 -상기 등록 정보는 상기 엔티티를 식별하는 정보와, 상기 엔티티가 지속형(durable) 엔티티로 등록되어 있는지 비지속형(non-durable) 엔티티로 등록되어 있는지에 관한 정보와, 통지가 요청되는 상기 관계형 데이터베이스 내의 데이터에 대한 특정 타입의 변경을 나타내는 정보를 포함함- 와;
    상기 관계형 데이터베이스 내의 데이터에 대한 상기 특정 타입의 변경의 발생을 모니터링하는 단계와;
    통지가 요청되는 상기 특정 관계형 데이터베이스 내에서의 변경에 대해, 변경 통지 데이터를 큐에 저장함으로써, 상기 변경 통지 데이터를 상기 엔티티에 제공하는 단계 -상기 큐는 부가적인 변경 통지 정보 아이템을 포함하고, 각각의 상기 부가적인 변경 통지 정보 아이템은 상기 엔티티에 대응함- 와;
    상기 엔티티가 비지속형 엔티티로 등록되어 있고 상기 엔티티에 대한 접속이 종료되는 경우, 상기 엔티티에 대응하는 상기 큐 내의 상기 부가적인 변경 통지 정보 아이템을 삭제하는 단계와;
    상기 엔티티가 지속형 엔티티로 등록되어 있는 경우,
    상기 엔티티에 대한 접속이 종료되는지를 판정하는 단계와,
    상기 엔티티에 대한 새로운 접속이 존재하는지를 판정하는 단계와,
    상기 엔티티에 대응하는 상기 부가적인 변경 통지 정보 아이템을 상기 새로운 접속을 이용하여 제공하는 단계와;
    상기 엔티티가 지속형 엔티티로 등록되어 있으면, 상기 엔티티에 대한 상기 엔티티 등록 정보를 복수의 세션에 걸쳐 지속적으로 유지하는 단계와;
    상기 엔티티가 비지속형 엔티티로 등록되어 있으면, 상기 엔티티 등록 정보가 생성된 세션의 종료 후에 상기 엔티티에 대한 상기 엔티티 등록을 제거하는 단계
    를 수행하는
    컴퓨터 판독가능한 저장 매체.
  9. 제8항에 있어서,
    상기 변경 통지 데이터는 시점(point in time)을 식별하는 시간 데이터를 더 포함하고,
    상기 특정 타입의 변경을 나타내는 정보는 특정 시간 범위 내에서의 데이터의 변경을 포함하며
    상기 부가적인 변경 통지 정보 아이템 각각에 대한 상기 시간 데이터는 상기 특정 시간 범위에 포함되고,
    상기 데이터 변경의 통지의 요청은 상기 큐에 대한 대기(wait-for) 요청이며,
    상기 컴퓨터 판독가능한 인스트럭션은, 엔티티가 상기 데이터 변경의 통지를 요청하는 엔티티 중의 하나로서 등록할 수 있게 하는 API(application programming interface) 메소드를 제공하도록 구성되는
    컴퓨터 판독가능한 저장 매체.
  10. 제8항에 있어서,
    상기 컴퓨터 판독가능한 인스트럭션은 상기 데이터 변경의 통지를 요청하는 엔티티 중의 하나가 자신에게 해당되는 변경 정의를 등록할 수 있게 하는 API를 제공하는 단계를 더 수행하는
    컴퓨터 판독가능한 저장 매체.
  11. 제8항에 있어서,
    상기 데이터 변경에 관한 변경 통지 데이터를 상기 엔티티 중 하나에 제공하는 상기 단계는, 상기 엔티티 중 상기 하나가 상기 변경 통지 데이터로의 액세스 권한을 갖는지 판정한 후에만 실행되는
    컴퓨터 판독가능한 저장 매체.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020087001535A 2005-08-25 2006-08-04 데이터 변경 통지 KR101203306B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/211,869 US7543003B2 (en) 2005-08-25 2005-08-25 Providing change notifications to an entity-regarding a change of a specific type to data in a relational database
US11/211,869 2005-08-25
PCT/US2006/030279 WO2007024438A1 (en) 2005-08-25 2006-08-04 Data change notifications

Publications (2)

Publication Number Publication Date
KR20080047346A KR20080047346A (ko) 2008-05-28
KR101203306B1 true KR101203306B1 (ko) 2012-11-20

Family

ID=37771918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087001535A KR101203306B1 (ko) 2005-08-25 2006-08-04 데이터 변경 통지

Country Status (7)

Country Link
US (1) US7543003B2 (ko)
KR (1) KR101203306B1 (ko)
CN (1) CN101243445B (ko)
BR (1) BRPI0614928A2 (ko)
MX (1) MX2008002506A (ko)
RU (1) RU2421803C2 (ko)
WO (1) WO2007024438A1 (ko)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392259B2 (en) * 2004-12-14 2008-06-24 Electronics And Telecommunications Research Institute Method and system for supporting XQuery trigger in XML-DBMS based on relational DBMS
US20090055511A1 (en) * 2007-08-20 2009-02-26 International Business Machines Corporation Non-programmatic access to data and to data transfer functions
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US20100077324A1 (en) * 2008-09-23 2010-03-25 Microsoft Corporation Pluggable presentation and domain coupling
JP5360978B2 (ja) * 2009-05-22 2013-12-04 株式会社日立製作所 ファイルサーバ、及びファイルサーバにおけるファイル操作通知方法
US8495044B2 (en) * 2009-09-02 2013-07-23 Microsoft Corporation File system node updates
US8825731B2 (en) 2010-05-18 2014-09-02 International Business Machines Corporation Mobile device workload management for cloud computing using SIP and presence to control workload and method thereof
US9471700B2 (en) * 2010-05-18 2016-10-18 Tksn Holdings, Llc System and method for monitoring changes in databases and websites
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
WO2013009337A2 (en) 2011-07-08 2013-01-17 Arnold Goldberg Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
WO2013062599A1 (en) 2011-10-26 2013-05-02 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
GB2498047B (en) * 2011-11-16 2015-09-30 Box Inc Managing updates at clients used by a user to access a cloud-based collaboration service
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US8332349B1 (en) * 2012-01-06 2012-12-11 Advent Software, Inc. Asynchronous acid event-driven data processing using audit trail tools for transaction systems
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US10754710B1 (en) * 2012-06-20 2020-08-25 Amazon Technologies, Inc. Transactional watch mechanism
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9473532B2 (en) 2012-07-19 2016-10-18 Box, Inc. Data loss prevention (DLP) methods by a cloud service including third party integration architectures
US10122598B2 (en) 2012-07-25 2018-11-06 International Business Machines Corporation Subscription watch lists for event handling
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
GB2507191B (en) 2012-10-17 2015-03-04 Box Inc Remote key management in a cloud-based environment
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US8886671B1 (en) 2013-08-14 2014-11-11 Advent Software, Inc. Multi-tenant in-memory database (MUTED) system and method
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US9619581B2 (en) 2013-12-20 2017-04-11 Microsoft Technology Licensing, Llc Constructing queries for execution over multi-dimensional data structures
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9852221B1 (en) 2015-03-26 2017-12-26 Amazon Technologies, Inc. Distributed state manager jury selection
US10356157B2 (en) * 2015-04-16 2019-07-16 Google Llc Systems and methods for notifying users of changes to files in cloud-based file-storage systems
US20170161288A1 (en) * 2015-12-02 2017-06-08 OSNEXUS Corporation Data analytics engine for facilitating real-time subscriber based data analysis
US10817512B2 (en) 2016-04-01 2020-10-27 Arista Networks, Inc. Standing queries in memory
US10642844B2 (en) 2016-04-01 2020-05-05 Arista Networks, Inc. Non-materialized tables with standing queries
US10284673B2 (en) * 2016-04-01 2019-05-07 Arista Networks, Inc. Interface for a client of a network device
US10783147B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Query result flow control in a network switch
US10783144B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Use of null rows to indicate the end of a one-shot query in network switch
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
WO2019158975A1 (en) * 2018-02-16 2019-08-22 Pratik Sharma Notification mechanism for cloud administrator
EP3687133B1 (en) * 2019-01-22 2021-12-15 Advanced Digital Broadcast S.A. System and method for synchronization of media objects between devices operating in a multiroom system
US11966959B2 (en) 2020-09-23 2024-04-23 International Business Machines Corporation Subscription of marketplace content based on search queries
KR102406979B1 (ko) * 2021-12-30 2022-06-10 한국전자기술연구원 다수 데이터 플랫폼 분산 환경에서 캐싱된 데이터 플랫폼 정보 기반 데이터 요청 처리 방법
WO2023128141A1 (ko) * 2021-12-30 2023-07-06 한국전자기술연구원 다수 데이터 플랫폼 분산 환경에서 분산 데이터 취합을 위한 데이터 조회 요청 중복 방지 방법
WO2023128006A1 (ko) * 2021-12-30 2023-07-06 한국전자기술연구원 다수 데이터 플랫폼 분산 환경에서 캐싱된 데이터 플랫폼 정보 기반 데이터 요청 처리 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046479A1 (en) 2001-09-01 2003-03-06 International Business Machines Corp. Data storage system having a unified container layer for an active data store

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493679A (en) * 1993-10-29 1996-02-20 Hughes Aircraft Company Automated logistical relational database support system for engineering drawings and artwork
US6301584B1 (en) * 1997-08-21 2001-10-09 Home Information Services, Inc. System and method for retrieving entities and integrating data
US6292803B1 (en) * 1997-11-18 2001-09-18 Honeywell International Inc. Object state change and history management mechanism
US6041327A (en) * 1997-12-12 2000-03-21 Telefonaktiebolaget Lm Ericsson Implementation of notification capabilities in relational databases
US6721740B1 (en) * 1998-05-29 2004-04-13 Sun Microsystems, Inc. Method and apparatus of performing active update notification
KR20010059593A (ko) * 1999-12-30 2001-07-06 이계철 웹기반 중개자 서버를 이용한 데이터베이스간 연동정보현행화방법
US7031437B1 (en) * 2000-10-30 2006-04-18 Nortel Networks Limited Method and system for providing remote access to previously transmitted enterprise messages
US7315863B2 (en) * 2001-09-20 2008-01-01 Oracle International Corp Method and apparatus for automatic notification of database events
WO2003051014A2 (en) * 2001-12-11 2003-06-19 British Telecommunications Public Limited Company Event notification over a communications network
EP1476827A2 (en) * 2002-02-22 2004-11-17 Iplocks, Inc. Method and apparatus for monitoring a database system
US6721907B2 (en) * 2002-06-12 2004-04-13 Zambeel, Inc. System and method for monitoring the state and operability of components in distributed computing systems
US7412436B2 (en) * 2002-07-20 2008-08-12 Microsoft Corporation System and interface for manipulating a database
US20040205048A1 (en) 2003-03-28 2004-10-14 Pizzo Michael J. Systems and methods for requesting and receiving database change notifications
US7162472B2 (en) 2003-06-24 2007-01-09 Microsoft Corporation System and method for database change notification
US7644376B2 (en) * 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
US20060155581A1 (en) * 2005-01-10 2006-07-13 George Eisenberger Systems with user selectable data attributes for automated electronic search, identification and publication of relevant data from electronic data records at multiple data sources

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046479A1 (en) 2001-09-01 2003-03-06 International Business Machines Corp. Data storage system having a unified container layer for an active data store

Also Published As

Publication number Publication date
US20070050392A1 (en) 2007-03-01
CN101243445B (zh) 2013-01-16
WO2007024438A1 (en) 2007-03-01
RU2008106952A (ru) 2009-08-27
US7543003B2 (en) 2009-06-02
BRPI0614928A2 (pt) 2011-04-19
KR20080047346A (ko) 2008-05-28
MX2008002506A (es) 2008-04-07
CN101243445A (zh) 2008-08-13
RU2421803C2 (ru) 2011-06-20

Similar Documents

Publication Publication Date Title
KR101203306B1 (ko) 데이터 변경 통지
US9015315B2 (en) Identification and monitoring of distributed business transactions
US8356288B2 (en) Method and apparatus for monitoring runtime of persistence applications
US10908977B1 (en) Efficient message queuing service
US7653913B2 (en) Method and apparatus for creating templates
US6594675B1 (en) Method, system for using file name to access application program where a logical file system processes pathname to determine whether the request is a file on storage device or operation for application program
EP1267550A2 (en) System and method for determining and manipulating configuration information of servers in a distributed objet environment
US20110154226A1 (en) Chip model of an extensible plug-in architecture for enterprise mashups
US11630695B1 (en) Dynamic reassignment in a search and indexing system
US20070226231A1 (en) Systems and methods for managing business issues
KR20050001422A (ko) 캐시 엔트리를 무효화시키는 데 사용될 수 있는데이터베이스 테이블 변경 정보의 등록 및 검색
US7805422B2 (en) Change notification query multiplexing
US20060129660A1 (en) Method and computer system for queue processing
CN112364110A (zh) 元数据管理方法、装置、设备及计算机存储介质
EP2674868A1 (en) Database update notification method
US7275250B1 (en) Method and apparatus for correlating events
US20040122871A1 (en) Fail over resource manager access in a content management system
US8949432B2 (en) Identity management
CN110737510A (zh) 块设备管理系统
US11714683B1 (en) Information technology and security application automation architecture
US20220044144A1 (en) Real time model cascades and derived feature hierarchy
US11321198B2 (en) Event failover service
RU2316043C2 (ru) Механизм и способ предоставления информации событий в системе доступа
US11902081B1 (en) Managing collection agents via an agent controller
KR20110065352A (ko) 포털 인프라구조에서 포틀릿을 태깅하는 방법, 장치, 데이터 처리 프로그램 및 컴퓨터 프로그램 제품

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: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7