KR20110010736A - 계층적 데이터의 페이징 - Google Patents
계층적 데이터의 페이징 Download PDFInfo
- Publication number
- KR20110010736A KR20110010736A KR1020107026315A KR20107026315A KR20110010736A KR 20110010736 A KR20110010736 A KR 20110010736A KR 1020107026315 A KR1020107026315 A KR 1020107026315A KR 20107026315 A KR20107026315 A KR 20107026315A KR 20110010736 A KR20110010736 A KR 20110010736A
- Authority
- KR
- South Korea
- Prior art keywords
- row
- client
- rows
- computer
- hierarchical
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2393—Updating materialised views
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/26—Visual data mining; Browsing structured data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
계층적 뷰의 보기 동작을 통하여 계층적 데이터 집합을 지능적으로 페이징(슬라이싱)하는 기능을 제공하는 아키텍처. 이것은 또한, 레코드 집합 전체를 클라이언트로 전송하거나 레코드 집합 전체를 다시 서버로 수신하지 않고, 계층적 뷰에 대한 추가/그로부터의 삭제를 하고 뷰 레코드들의 부모/자식 관계를 관리하는 기능도 제공함으로써, 계층적 데이터 집합에 대한 동작 성능을 최적화시킨다.
Description
네트워크와 데이터 시스템의 유비쿼터스 성질은 대량의 데이터에의 광범위한 액세스를 용이하게 해준다. 예를 들면, 기업들은 현재, 예를 들어, 재정, 매출, 제품, 프로젝트 관리, 인적 자원 등등에 관련된 모든 종류의 데이터를 저장하는 로컬 데이터 시스템 뿐만 아니라 분산 데이터 시스템도 제공한다. 따라서, 사용자가 서버 시스템으로부터의 데이터에 액세스할 수 있는 것이 서버, 네트워크, 및 클라이언트 시스템의 성능에 영향을 미칠 수 있다.
종래의 데이터 시스템은 통상적으로 큰 데이터 집합의 쿼리와 검색을 수반한다. 클라이언트/서버 시스템에서 긍정적인 사용자 경험을 증진시키는 방식으로 큰 계층적 데이터 집합을 상호작용적으로 보면서 편집하는 것을 지원하기가 어렵다. 데이터 집합 전체를 요구하는 정렬 동작, 그룹화 동작, 및 기타 보기 동작은 리소스를 아주 많이 사용하고 사용자들의 수가 증가함에 따라 서버에서 제대로 확장되지 못한다. 게다가, 계층 구조의 레벨들에 레코드들이 추가될 때, 이러한 레코드들이 또한 상기한 동작들에서 고려되어야만 한다. 이러한 제약들이 계층적 데이터 집합(예를 들어, 여러 레벨의 작업들을 포함하는 프로젝트)의 부가된 복잡성과 결합될 때, 문제의 복잡성이 증가되고 클라이언트 및/또는 서버의 성능이 떨어진다.
<발명의 요약>
이하에서는 본 명세서에 기술되는 몇몇 새로운 실시예들에 대한 기본적인 이해를 제공하기 위해 간략화된 요약을 제공한다. 이 요약은 전반적인 개요가 아니며, 본 발명의 주요/필수 구성요소를 확인하거나 본 발명의 범위를 한정하기 위한 것이 아니다. 이 요약의 유일한 목적은 나중에 제공되는 보다 상세한 설명에 대한 서문으로서 몇몇 개념들을 간략화된 형태로 제공하는 데 있다.
개시된 아키텍처는 계층적 데이터 집합을 읽거나 편집할 때 클라이언트와 서버 사이에서 전송되는 데이터의 양을 최소화함으로서 클라이언트/서버 환경에서 계층적 데이터 집합에 대한 동작들의 성능을 최적화한다. 이 아키텍처는 보기 동작들(예를 들어, 정렬, 필터링, 그룹화)을 통하여 계층적 데이터 집합(dataset)을 지능적으로 페이징할 수 있는 것, 계층 구조에 추가/계층 구조로부터 삭제할 수 있는 것, 그리고, 클라이언트로 또는 다시 서버로 레코드 집합(recordset) 전체를 전송하지 않고, 데이터 집합 레코드들의 부모/자식 관계를 관리할 수 있는 것을 용이하게 해준다. 이 제어가 읽기 동작에 최적화될 수 있지만, 편집 동작 동안에도 처리되는 데이터를 최소화한다.
상기한 목적 및 관련 목적을 달성하기 위해, 특정의 예시적인 측면들이 이하의 설명 및 첨부 도면과 관련하여 본 명세서에 기술되어 있다. 이러한 측면들이 본 명세서에 개시된 원리들이 실시될 수 있는 다양한 방식들을 나타내고 있으며, 이들의 모든 측면들과 등가물들이 청구된 발명 요지의 범위 내에 속하는 것으로 보아야 한다. 다른 이점들 및 새로운 특징들이, 도면들과 관련하여 살펴볼 때, 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1은 개시된 아키택처에 따른 컴퓨터-구현 데이터 처리 시스템을 나타낸 도면.
도 2는 계층적 데이터를 페이징하는 클라이언트-서버 시스템을 나타낸 도면.
도 3은 계층적 뷰(hierarchical view)에 대해 수행되는 동작들과 협력하여 클라이언트에서 이용되는 추적 메커니즘을 나타낸 도면.
도 4는 행의 확장된 뷰(expanded view) 및 축소된 뷰(collapsed view)와, 위치 변환기 색인(position converter index) 및 축소된 집합 목록(collapsed set list)에서 정보를 추적하는 것을 나타낸 도면.
도 5는 데이터를 처리하는 방법을 나타낸 도면.
도 6은 클라이언트측 보기 동작을 추적하는 방법을 나타낸 도면.
도 7은 개시된 아키텍처에 따라 페이징 프로세스 및 보기 프로세스를 실행하는 동작을 하는 컴퓨팅 시스템의 블록도.
도 8은 페이징 프로세스 및 보기 프로세스를 실행하는 예시적인 컴퓨팅 환경의 개략 블록도.
도 2는 계층적 데이터를 페이징하는 클라이언트-서버 시스템을 나타낸 도면.
도 3은 계층적 뷰(hierarchical view)에 대해 수행되는 동작들과 협력하여 클라이언트에서 이용되는 추적 메커니즘을 나타낸 도면.
도 4는 행의 확장된 뷰(expanded view) 및 축소된 뷰(collapsed view)와, 위치 변환기 색인(position converter index) 및 축소된 집합 목록(collapsed set list)에서 정보를 추적하는 것을 나타낸 도면.
도 5는 데이터를 처리하는 방법을 나타낸 도면.
도 6은 클라이언트측 보기 동작을 추적하는 방법을 나타낸 도면.
도 7은 개시된 아키텍처에 따라 페이징 프로세스 및 보기 프로세스를 실행하는 동작을 하는 컴퓨팅 시스템의 블록도.
도 8은 페이징 프로세스 및 보기 프로세스를 실행하는 예시적인 컴퓨팅 환경의 개략 블록도.
개시된 아키텍처는 클라이트에서 계층적 뷰의 보기 동작을 통하여 계층적 데이터 집합을 지능적으로 페이징(슬라이싱)하는 기능을 제공하는 클라이언트-서버 구현이다. 이것은 또한, 레코드 집합 전체를 클라이언트로 전송하거나 레코드 집합 전체를 다시 서버로 수신하지 않고, 클라이언트에서 계층적 뷰에 대한 추가/그로부터의 삭제를 하고 뷰 레코드들의 부모/자식 관계를 관리하는 기능도 제공함으로써, 계층적 데이터 집합에 대한 동작 성능을 최적화시킨다. 이 아키텍처는 페이징될 수 있는 데이터의 양을 최대화하고, 페이징될 수 없는 데이터를 최소화시킨다.
"뷰(view)"와 관련된 이하의 용어들이 상세한 설명 전체에 걸쳐 사용된다. 데이터 집합 뷰(dataset view)는 필드들의 부분집합, 행들의 부분집합, 행 필터링 조건, 그룹화 조건, 정렬 조건에 의해 정의되는 큰 데이터 집합의 부분집합이며, 데이터 집합 뷰는 서버에만 존재한다. 행 뷰(row view)는 정확히 말하면 데이터 집합 뷰에서 언급된 행들의 부분집합이다. 이러한 행들의 목록은 다른 곳에서 참조되는 '완전히 확장된' 목록('fully expanded' list)이다. 이 목록에 대한 색인(index)은 다른 곳에서 '데이터 위치(data position)'로서 참조되는 것이다. 행 뷰는 서버 및 클라이언트에 존재한다.
클라이언트 뷰(client view)는 축소된 행들의 자식들을 포함하지 않는 행 뷰의 부분집합이다. 이 목록에 대한 색인은 다른 곳에서 '뷰 위치(view position)'로서 참조되는 것이다. 클라이언트 뷰 집합(client viewset)은 클라이언트 뷰의 부분집합이고, 사용자가 주어진 순간에 클라이언트 상에서 물리적으로 볼 수 있는 것이다. 즉, 클라이언트 뷰가 100개의 행을 포함하고, 그 행들 중 30개가 클라이언트로 다운로드되었지만, 처음 10개의 행만이 스크롤 없이 스크린 상에서 볼 수 있는 경우, 클라이언트 뷰 집합은 크기가 10이다.
이제부터 도면들을 참조하며, 도면들 전체에 걸쳐 유사한 참조 번호가 유사한 구성요소를 참조하는 데 사용된다. 이하의 설명에서, 설명의 목적상, 본 발명에 대한 완전한 이해를 제공하기 위해 수많은 구체적인 상세 사항들이 기술되어 있다. 그렇지만, 새로운 실시예들이 이들 구체적인 상세를 사용하지 않고도 실시될 수 있다는 것이 명백할 수 있다. 다른 경우들에, 본 발명의 설명을 용이하게 해주기 위해 공지의 구조들 및 장치들이 블록도 형태로 도시되어 있다. 의도하는 바는 청구된 발명 요지의 사상 및 범위 내에 속하는 모든 수정들, 등가물들 및 대안들을 포함하는 것이다.
도 1은 개시된 아키택처에 따른 컴퓨터-구현 데이터 처리 시스템(100)을 나타낸 것이다. 시스템(100)은 계층적 클라이언트 뷰 집합(110) 내의 하나 이상의 행들(108)에 대한 행 동작(106)에 기초하여 계층적 데이터 집합(104)을 페이징하는(부분집합을 획득하는) 페이징 구성요소(102)를 포함한다. 시스템(100)은 또한 행 변경 동작(114)에 따라 계층적 클라이언트 뷰 집합(110)을 업데이트하는 업데이트 구성요소(112)도 포함한다. 클라이언트 뷰 집합(110)에 대한 업데이트는 행 뷰의 행 키들(row keys)에 기초할 수 있으며, 이 행 키들은 계층적 데이터 집합(104)의 페이지와 연관되어 있다. 페이징 구성요소(102)는 행 변경 동작(114)에 기초하여 비동기적으로 계층적 데이터 집합(104)을 페이징할 수 있다.
유의할 점은, 행 변경 동작(114)이 데이터 집합 뷰(206)에 존재하는 계층구조에 대해 편집 성질을 갖는 행 동작이라는 것이다. 행 변경 동작(114)은 행의 삽입, 행의 삭제, 또는 행의 들여쓰기(indent) 또는 내어쓰기(outdent)이다. 행 변경 동작(114)에 의해, 예를 들어, 행 삭제의 결과로서 스크롤되어 보이게 된 행들로 클라이언트 뷰 집합(110)을 업데이트할 필요가 있게 되는 경우, 후속하는 행 동작(106)이 일어날 수 있다.
시스템(100)은 행 뷰 전체를 재계산하기 보다는 행 뷰 내의 관련 행들만을 처리함으로써 처리되는 데이터의 양을 최소화시킨다. 그를 위해, 행 동작(106)은 계층적 클라이언트 뷰 집합(110)의 후손 행들을 축소된 행으로 축소시키고 계층적 클라이언트 뷰 집합(110)에 하나 이상의 새로운 후손 행들을 보여주기 위해 축소된 행을 확장시키며 또 계층적 클라이언트 뷰 집합(110)을 스크롤하는 것에 기초하여 행들을 추가하거나 제거하는 읽기 동작일 수 있다. 계층적 데이터가 읽기 전용으로 클라이언트로 전송되는 읽기 모드 동안에 읽기 동작이 수행될 수 있다. 이 모드에서는 편집이 허용되지 않으며, 이 때문에, 그리드(grid)가 클라이언트로 전송하는 페이징되지 않은 데이터(예를 들어, 필터링되지 않은 계층구조)의 볼륨에 관해 그리드가 더 경제적일 수 있다. 그리드는 로컬 및/또는 분산 데이터 시스템의 많은 양의 데이터를 노출시키는 컴퓨팅 프레임워크이다.
스크롤에 의해, 행들이 클라이언트 뷰 집합(110)에 첨부되거나 클라이언트 뷰 집합(110)으로부터 제거될 수 있다. 예를 들어, 위로 스크롤할 때, 행들이 클라이언트 뷰 집합(110)의 상부에 추가되고 클라이언트 뷰 집합(110)의 하부로부터 제거될 것이다. 클라이언트 뷰 집합(110)의 상부에 행들을 추가하는 것에 의해, 원하는 새로운 행들에 대한 데이터 집합(104)을 페이징하기 위한 새로운 쿼리(또는 요청)가 페이징 구성요소(102)로 보내진다.
행 동작은 계층적 클라이언트 뷰 집합(110)에서의 행의 삽입, 행의 삭제, 행의 들여쓰기(indent), 및/또는 행의 내어쓰기(outdent)와 연관된 편집 동작일 수 있다. 편집 동작은 계층적 데이터가 행들에 대한 편집 동작들을 지원하는 형식으로 클라이언트로 보내지는 편집 모드에 있는 동안에 수행될 수 있다. 들여쓰기는 행을 다른 행의 자식으로 만들기 위해 행의 아웃라인 레벨(outline level)을 증가시키는 동작이다. 내어쓰기는 행을 그의 부모 행의 피어(peer)로 만들기 위해 행의 아웃라인 레벨(outline level)을 감소시키는 동작이다.
페이징 구성요소(102)는, 예를 들어, 필터링, 정렬, 행 확장, 및 행 축소에 기초하여 행 동작과 관련된 행들에 대한 계층적 데이터 집합(104)을 페이징한다.
도 2는 계층적 데이터를 페이징하는 클라이언트-서버 시스템(200)을 나타낸 것이다. 시스템(200)은 서버 시스템의 계층적 데이터 집합(104)을 페이징하기 위한 서버 시스템(202)의 일부로서 페이징 구성요소(102) 및 업데이트 구성요소(112)를 구현하고, 계층적 클라이언트 뷰 집합(110), 뷰 행(들)(108), 행 동작(106) 및 행 변경 동작(114)을 클라이언트(204) 상에 있는 것으로 구현한다. 업데이트 구성요소(112)는 편집 모드와 연관된 행 동작들에 기초하여 필터링되지 않은 계층구조를 업데이트한다.
시스템(200)은 또한 클라이언트(204) 및 서버(202) 각각에서 발생되어 저장되는 데이터도 나타내고 있다. 페이징 구성요소(102)는 데이터 집합 뷰(206) 및 서버측 행 뷰(208)를 발생한다. 그렇지 않았으면 서버(202)와 클라이언트(204) 사이에서 전송될 필요가 있을 데이터의 양을 최소화하기 위해, 행 뷰(208)의 사본이 이어서 클라이언트측 행 뷰(210)로서 클라이언트(204)로 보내진다. 이어서, 클라이언트측 행 뷰(210)로부터 클라이언트 뷰(212)가 획득될 수 있다.
페이징 구성요소(102)는 행 동작(106) 및/또는 행 변경 동작(114)과 관계되어 있는 계층적 클라이언트 뷰 집합(110)에서의 행들의 부모-자식 관계를 관리한다. 페이징 구성요소(102)는 또한 행 키들과 부모 키들의 정렬된 매핑(ordered mapping)에 의해 정의되는 계층 구조 색인(hierarchy structure index)[서버측 행 뷰(208)]을 생성한다. 이어서, 이 색인이 계층적 클라이언트 뷰 집합(110)의 행 동작[예를 들어, 행 동작(106), 행 변경 동작(114)]에 기초하여 클라이언트(204)로 보내진다. 이들 및 기타 측면들에 대해 본 명세서에서 이하에 더 상세히 기술할 것이다.
도 3은 계층적 클라이언트 뷰 집합(110)에 대해 수행되는 동작들과 협력하여 클라이언트(204)에서 이용되는 추적 메커니즘을 나타낸 것이다. 여기서, 클라이언트 뷰 집합(110)의 행(들)(108)에 대해 서로 다른 유형의 행 동작들(300)(예를 들어, 읽기 전용, 편집)이 수행될 수 있다. 클라이언트-기반 클라이언트 뷰 집합(110)에서의 행 동작을 추적하기 위해, 위치 변환기 색인(position converter index)(302) 및 축소된 집합 목록(collapsed set list)(304)이 이용된다. 위치 변환기 색인(302)은 계층적 클라이언트 뷰 집합(110)의 확장된/축소된 상태를 추적하고 뷰 위치(view position)와 데이터 위치(data position) 간의 변환을 수행하는 데 사용되는 행들의 정렬된 색인(ordered index)이다. 뷰 위치는 확장된/축소된 행들에 대한 클라이언트 뷰 집합(110) 내에서의 행의 서수 위치(ordinal position)이다. 데이터 위치[행 색인(row index)이라고도 함]은, 행들이 확장되어 있는지 여부에 상관없이, 모든 행들을 포함하는 클라이언트 뷰 집합(110) 내에서의 행의 서수 위치이다. 축소된 집합 목록(304)은 행이 축소될 것인지 확장될 것인지를 그리드가 알 수 있게 해주는 축소된 행들의 목록이다. 축소된 집합 목록(304)이 처음에는 비어 있지만, 행들이 클라이언트(106) 상에서 확장/축소됨에 따라, 이 목록(304)이 업데이트된다.
도 4는 행들의 확장된 뷰(400) 및 축소된 뷰(402)와, 위치 변환기 색인 및 축소된 집합 목록에서 정보를 추적하는 것을 나타낸 것이다. 이 아키텍처는 계층적 데이터 집합을 읽거나 편집할 때 클라이언트와 서버 사이에서 전송되는 데이터의 양을 최소화시킨다. 예시된 일례는 읽기 동작을 기술하고 있지만, 편집 동작 동안에 처리되는 데이터도 최소화될 수 있다. 읽기 동작 및 편집 동작 둘다는 클라이언트가 그리드에 렌더링될 데이터를 서버에 요청하는 것으로 시작한다. 서버는 그의 데이터베이스를 쿼리하고 클라이언트에 의해 정의되는 정렬, 필터링, 또는 그룹화 중 하나 이상을 적용하여 행들의 컬렉션을 생성한다. 이어서, 그 행들의 컬렉션이 처리되어, 클라이언트로 전송할 데이터 집합을 생성한다.
필터링되지 않은 계층구조(unfiltered hierarchy)는, 순서대로, 행 키들과 부모 키들의 매핑으로서 역할하는 완전한 계층 구조이다. 수식어 "필터링되지 않은"이 의미하는 바를 이해하기 위해서, 3개의 행, A, B 및 C의 일례를 생각해보자. B는 A의 자식이고, C는 B의 자식이다. 행 필터링 동안에, B가 행 뷰에 포함되지 않고 따라서 C가 행 뷰에서 부모(직계 조상)를 갖지 않을 수 있다. 필터링되지 않은 계층구조는 A, B 및 C 간의 계층적 관계이다. 스크롤/확장/축소할 때 C의 부모를 확인할 필요가 없지만, 들여쓰기/내어쓰기/삽입/삭제를 할 때는 이것이 필요하다. 따라서, 편집 동작 동안에, 필터링되지 않은 계층구조가 사용되는데, 그 이유는 각각의 행 뷰 레코드의 부모 식별자를 검사하는 것으로부터 원하는 정보가 구성될 수 없기 때문이다.
필터링되지 않은 계층 구조는 단지 편집 동안에 클라이언트로 전송되고, 들여쓰기/내어쓰기를 지원하기 위해, 행의 아웃라인 레벨, 행이 부모인지 여부, 어느 행들이 자식 행인지, 및 어느 행이 이 행의 이전의 형제인지를 비롯한, 클라이언트 상에서 필요하게 되는 행들에 관한 질문에 답변하는 데 사용된다. 편집 모드에서는, 계층 구조가 페이징 없이 클라이언트로 전송된다. 계층구조에 영향을 미치는 동작들(예를 들어, 행을 들여쓰기/내어쓰기, 삽입 또는 삭제)을 지원하기 위해 계층 구조 전체가 노출된다.
행들은 페이징된 행 키들 및 연관된 데이터의 집합이다(프로젝트의 경우에, 이것은 ID별 작업들의 컬렉션일 수 있다). 이하에서 기술하는 바와 같이, 이것은 다음과 같은 필드들을 포함한다. 아웃라인 레벨(outline level): 읽기-전용 모드에서는, 이 필드만이 필터링되지 않은 계층 구조를 가질 필요성을 완화시켜 주며, 편집 모드에서는, 시스템이 필터링되지 않은 계층구조를 사용한다. 부모 행 키(parent row key): 읽기-전용 모드에서는, 이 필드만이 필터링되지 않은 계층 구조를 가질 필요성을 완화시켜 주며, 편집 모드에서는, 시스템이 필터링되지 않은 계층 구조를 사용한다. 자손 수(descendent count): 읽기-전용 모드에서는, 이것이 서버 상에서 계산되어 클라이언트로 보내지며, 편집 모드에서는, 자손 수를 계산하는 데 필터링되지 않은 계층 구조 및 행 뷰가 사용된다. 시스템에 유용한 것으로 생각되는 기타 데이터 필드들도 이용될 수 있다.
유의할 점은, 계층적 데이터 집합 전체가 상기한 목록에 포함되어 있지는 않다는 것이다. 행들의 총 목록이 클라이언트로 전송되지 않는다. 필터링, 정렬 및 확장된/축소된 계층구조와 관련하여 클라이언트 뷰 집합에서 필요로 하는 관련 행들만이 클라이언트로 전송된다.
도시된 바와 같이, 확장된 뷰(400)는 식별자(ID), 이름, 아웃라인 레벨, 뷰 위치, 데이터 위치, 및 자손 수에 대한 열들을 포함하고 있다. 자손 수는 현재의 행 뷰와 관련하여 볼 수 있는 자식 행들의 총수이다. 환언하면, 필터링 후에, 이것은 어쩌면 클라이언트로 전송될 수 있는 자식, 손자, 기타 행들의 수이다. 요약 행(summary row)은 자식을 갖는 계층구조 내의 행이다. 확장된 뷰(400)에서, T1은 자식 행들(CHILD A 및 CHILD B)을 갖기 때문에 요약 행이다. 하나의 행을 축소시키는 일례에서의 바로 이전 및 이후의 스냅샷인 뷰(400) 및 뷰(402) 둘다가 클라이언트 뷰라는 것을 잘 알 것이다. 행 뷰가 포함하는 바로 그 일련의 행들을 뷰(400)가 포함하는 일이 동시에 있을 수 있다.
앞서 살펴본 바와 같이, 뷰 위치(VIEW POS)는 확장된/축소된 행들에 대한 현재의 확장된 뷰(400) 내에서의 행의 서수 위치이고, 데이터 위치(DATA POS)는, 행들이 확장되어 있는지 여부에 상관없이, 모든 행들을 포함하는 현재의 뷰(400) 내에서의 행의 서수 위치이다. 아웃라인 레벨은 레벨(예를 들어, 1, 2, 3, ...)에 따라 정의된다. 여기서, T1은 최좌측 아웃라인 레벨 1이고, CHILD A는 아웃라인 레벨 2로서 표시되어 있으며, CHILD C1은 아웃라인 레벨 3으로 더욱 들여쓰기 되어 있고, 기타 등등이다. 확장된 뷰(400)에는 8개의 행이 있으며, 따라서 뷰 위치 번호 1-8이 대응하는 ID 1-8에 할당된다. 데이터 위치 번호가 행에 할당되고, 확장되어 있든 축소되어 있든 간에 행 다음에 온다. T1을 축소시키는 것에 의해 뷰 위치들이 어떻게 변했는지에 주목해야 하지만, 행들에 대한 데이터 위치는 변경되지 않은 채로 있다.
행 ID 1이 2개의 자식 행(ID 2 및 ID 3)을 갖는 것으로 인해, 행 ID 1에 대한 자손 수는 2이다. 자식 행(ID 2 및 ID 3)은 자식 행을 갖지 않으며, 따라서 이들 행(ID 2 및 ID 3) 각각에 대해 자손 수는 0이다.
위치 변환기 색인(404) 및 축소된 집합 목록(406)은 효율성을 위해 클라이언트 상에 유지된다. 위치 변환기 색인(404)은 계층구조의 확장된/축소된 상태를 추적하고 뷰 위치와 데이터 위치 간의 변환을 수행하는 데 사용되는 행들의 정렬된 색인이다. 위치 변환기 색인(404)은 데이터베이스에서 행을 식별해주는 GUID(globally unique ID)인 행 키 필드, 임의의 확장된/축소된 행과 관련하여 뷰의 상부로부터의 이 행의 위치인 뷰 위치 필드, 및 뷰의 상부로부터의 이 행의 절대 위치(축소된 행들을 무시함)인 데이터 위치를 포함하고 있다. 위치 변환기 색인(404)은 클라이언트 뷰 집합에 있는 행들만이 서버로부터 검색되도록 또 행들이 올바른 시각적 순서로 위치되도록 뷰 위치와 데이터 위치 간의 빠른 변환을 가능하게 해준다. 이 데이터 구조는 런타임 시에 클라이언트 상에 생성되고 행들이 축소될 때 추가된다. 이 표의 초기 상태가 행들을 갖지 않는데, 그 이유는 기본값으로 계층구조가 확장되어 있기 때문이다.
축소된 집합 목록(406)은 행이 축소될 것인지 확장될 것인지를 그리드가 알 수 있게 해주는 축소된 행들의 목록이다. 이 목록(406)이 처음에는 비어 있지만, 행들이 클라이언트 상에서 확장/축소됨에 따라, 이 목록이 업데이트된다.
이 일례에서, 행 키들(ID들)이 1-8이고, 뷰 위치가 1-8이며 데이터 위치가 1-8이도록, 위치 변환기 색인(404) 및 축소된 집합 목록(406)에서의 대응하는 값들은 확장된 뷰(400)를 추적한다. 확장된 (전체적인) 뷰(400)에서 축소된 행들이 없기 때문에, 축소된 집합 목록은 비어 있다.
계속하여 축소된 뷰(402)에서, 행 ID 1은 이제 축소되어 있다("+" 기호로 표시되어 있음). 위치 변환기 색인(408) 및 축소된 집합 목록(410)에서의 대응하는 값들이 축소된 뷰(402)를 추적한다. 자식 행들(ID 2 및 ID3)의 축소에 의해, 행 키들(ID들)은 1-8로서, 그 뷰 위치는 행 키 ID 2 및 ID 3를 자식 행들이 축소되어 있는 행 ID 1에 매핑하고, 또한 나머지 행 키 ID들에 대한 다른 뷰 위치들을 현재의 뷰 위치에 매핑하도록 하는 변환 값들을 산출한다(The collapse of the child rows (ID 2 and ID 3) result in converter values of the row keys (IDs) as 1-8, the view position as mapping the row key IDs 2 and 3 to the row ID 1 in which the child rows collapse and also mapping the other view positions for the remaining row key IDs to the current view position). 데이터 위치는 이전과 같이 1-8이다. 이제 뷰(402)에는 축소된 행들이 있기 때문에, 축소된 집합 목록(410)은 행 ID 1을 축소된 행으로 열거하고 있다.
이러한 컬렉션들 중 일부 또는 그 전부가 클라이언트로 전송된다. 읽기 모드에서, 다른 행들에 대한 그의 계층적 관계를 정의하는 3개의 추가 필드들을 포함하는 행 뷰 및/또는 페이징된 행들의 부분집합이 전송될 수 있다. 편집 모드에서, 필터링되지 않은 계층 구조, 행 뷰, 및/또는 페이징된 행들의 부분집합(다른 행들에 대한 그의 계층적 관계를 정의하는 3개의 추가 필드들을 포함하지 않는데, 그 이유는 이 필드들이 제공하는 정보가 필터링되지 않은 계층 구조로부터 도출될 수 있기 때문임)이 전송될 수 있다.
이어서, 클라이언트는 다음의 읽기 모드 및 편집 모드 이벤트에서 클라이언트 뷰 집합을 채우기 위해 서버에 어느 행들을 요청할지를 결정할 수 있다. 읽기 모드에서, 축소와 관련하여, 축소된 집합이 표시된 행 키를 포함하도록 업데이트되고, 이어서 위치 변환기가 새로운 뷰 위치들을 포함하도록 업데이트된다. 읽기 모드에서, 확장과 관련하여, 확장된 행이 축소된 집합으로부터 제거되고, 이어서 위치 변환기가 새로운 뷰 위치들을 포함하도록 업데이트된다. 이어서, 클라이언트는 클라이언트가 클라이언트 뷰 집합으로부터 아직 가지고 있지 않은 행들을 요청한다. 노드가 축소되고 노드가 하나 이상의 축소된 자식들을 포함할 때, 축소된 집합 내의 그 목록 항목들이 축소된 집합 내의 새로 축소된 행의 항목에 첨부된다. 읽기 모드에서, (위로/아래로) 스크롤하는 것과 관련하여, 그리드는 클라이언트 뷰 집합 내의 요청된 위치를 사용하여 클라이언트에 페이징된 행들의 집합을 요청한다.
편집 모드에서, 삽입과 관련하여, 필터링되지 않은 계층구조가 표시된 위치에 새로운 행을 포함하도록 업데이트되어, 그 새로운 행에 적절한 부모 ID 및 그의 형제들 내에서의 순서를 부여한다. 위치 변환기가 업데이트되고, 모든 후속하는 뷰 위치들이 1씩 증가된다. 이어서, 그리드는 그 변화를 서버에 저장한다. 서버는 필터링되지 않은 계층구조 업데이트를 아래로 전송할 필요가 없는데, 그 이유는 클라이언트 버전이 추가를 비롯하여 서버가 필터링되지 않은 계층구조로서 유지하는 것과 일치하기 때문이다.
편집 모드에서, 삭제와 관련하여, 필터링되지 않은 계층구조가 표시된 행을 제거하도록 업데이트된다. 위치 변환기가 업데이트되고, 모든 후속하는 뷰 위치들이 1씩 감소된다. 상기한 바와 같이, 클라이언트 상의 필터링되지 않은 계층 구조가 정확하다. 편집 모드에서, 들여쓰기와 관련하여, 필터링되지 않은 계층 구조가 트리이기 때문에, 그리드는 표시된 행을 탐색하고 행을 트리 내의 정확한 위치로 이동시킨다. 뷰 위치가 변하지 않으며, 따라서 위치 변환기를 업데이트할 필요가 없다. 유의할 점은, 자손 수가 필요에 따라 평가된다는 것이며, 그리드는 행에 그의 자식을 카운트하도록 요청하고 다음에 그 정보가 요구될 때 즉각 탐색할 수 있도록 그 데이터를 캐싱한다. 편집 모드에서, 내어쓰기와 관련하여, 필터링되지 않은 계층 구조가 트리이기 때문에, 그리드는 표시된 행을 탐색하고 행을 트리 내의 정확한 위치로 이동시킨다.
그룹화는 계층구조의 특별한 경우이다. 그룹화하기 위해, 서버는 모든 데이터를 정렬하고, 인위적 계층구조(artificial hierarchy)를 발생하며, 헤더들을 그룹화하기 위해 가상의 요약 행들을 삽입한다. 새로운 행 뷰가 임의의 다른 뷰로서 클라이언트로 전송된다. 그룹화된 뷰에서, 아웃라인 레벨은 그룹화 절(grouping clause)의 수와 동등하다.
이하는 개시된 아키텍처의 새로운 측면들을 수행하는 예시적인 방법을 나타내는 일련의 플로우차트이다. 설명의 간단함을 위해, 예를 들어, 플로우차트 또는 흐름도의 형태로 본 명세서에 도시된 하나 이상의 방법들이 일련의 동작들로서 도시되고 기술되어 있지만, 어떤 동작들이, 그 방법들에 따라, 본 명세서에 도시되고 기술된 것과 다른 순서로 및/또는 다른 동작들과 동시에 행해질 수 있기 때문에, 이들 방법이 동작들의 순서에 의해 제한되지 않는다는 것을 잘 알 것이다. 예를 들어, 당업자라면 다른 대안으로서 방법이, 상태도에서와 같이, 일련의 상호관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 잘 알 것이다. 게다가, 방법에 설명된 동작들 모두가 새로운 구현에 꼭 필요하지 않을 수도 있다.
도 5는 데이터를 처리하는 방법을 나타낸 것이다. 500에서, 클라이언트 행 동작에 기초하여 계층적 클라이언트 뷰 집합에 렌더링될 관련 데이터에 대한 요청이 클라이언트로부터 수신된다. 502에서, 그 요청에 기초하여 관련 데이터에 대한 계층적 데이터 집합이 페이징된다. 504에서, 계층적 클라이언트 뷰 집합의 업데이트를 위해 관련 데이터가 클라이언트로 전송된다. 계층적 데이터 집합이 그 요청에 기초하여 비동기적으로 페이징될 수 있다.
게다가, 이 방법은 행 동작에 기초하여 부모-자식 관계를 관리하는 것을 더 포함할 수 있다. 계층적 데이터 집합의 페이징은, 계층적 클라이언트 뷰 집합의 행들을 축소된 행으로 축소시키고 계층적 클라이언트 뷰 집합 내의 하나 이상의 새로운 행들을 보여주기 위해 축소된 행을 확장시키며 또 계층적 클라이언트 뷰 집합을 스크롤하는 것에 기초하여 행들을 추가하거나 제거하는 읽기 동작에 응답한 것일 수 있다. 다른 대안으로서, 계층적 데이터 집합의 페이징은, 계층적 행 뷰에서의 행의 삽입, 행의 삭제, 행의 들여쓰기, 또는 행의 내어쓰기와 연관된 편집 동작에 응답한 것일 수 있다.
이 방법은 행 부모 지위(row parentage), 행 아웃라인 레벨, 자식 행들, 및 들여쓰기/내어쓰기 동작과 관계되어 있는 관련 데이터를 정의하는 필터링되지 않은 계층 구조를 생성하는 것과, 관련 데이터를 수신하기 위해 필터링, 정렬 또는 그룹화 중 하나 이상을 적용하는 것을 포함할 수 있다.
도 6은 클라이언트측 보기 동작을 추적하는 방법을 나타낸 것이다. 600에서, 클라이언트는 계층적 클라이언트 뷰 집합에서의 행들의 편집과 관계되어 있는 요청을 서버로 전송한다. 602에서, 필터링되지 않은 계층 구조가 서버로부터 수신된다. 604에서, 클라이언트는 위치 변환기 색인을 사용하여 계층 구조에 대한 변경들에 기초하여 행 키 정보, 뷰 위치 정보, 및 데이터 위치 정보를 추적한다. 606에서, 클라이언트는 축소된 집합 목록을 사용하여 계층 구조에 대한 변경들에 기초하여 행 축소 동작들을 추적한다. 608에서, 클라이언트는 계층적 데이터 집합으로부터의 행 동작에 대한 관련 행들만을 요청하기 위해 위치 변환기 색인 및 축소된 집합 목록을 처리한다.
본 출원에서 사용되는 바와 같이, 용어 "구성요소" 및 "시스템"은 컴퓨터-관련 엔터티, 예를 들어, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 말하기 위한 것이다. 예를 들어, 구성요소는 프로세서 상에서 실행 중인 프로세스, 프로세서, 하드 디스크 드라이브, (광 및/또는 자기 저장 매체의) 다수의 저장 장치 드라이브, 개체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이들로 제한되지 않는다. 예시로서, 서버 상에서 실행 중인 응용 프로그램 및 그 서버 둘다가 구성요소일 수 있다. 하나 이상의 구성요소가 프로세스 및/또는 실행 스레드 내에 존재할 수 있고, 구성요소가 하나의 컴퓨터 상에 로컬화되어 있을 수 있고 및/또는 2개 이상의 컴퓨터 간에 분산되어 있을 수 있다. "예시적인"이라는 단어는 본 명세서에서 일례, 실례 또는 예시로서 역할한다는 것을 의미하기 위해 사용될 수 있다. 본 명세서에서 "예시적인" 것으로 기술된 임의의 측면 또는 설계가 꼭 다른 측면들 또는 설계들보다 양호하다거나 이점이 있는 것으로 해석되어야 하는 것은 아니다.
이제 도 7을 참조하면, 개시된 아키텍처에 따라 페이징 프로세스 및 보기 프로세스를 실행하는 동작을 하는 컴퓨팅 시스템(700)의 블록도가 도시되어 있다. 개시된 아키텍처의 다양한 측면들에 대한 부가적인 상황을 제공하기 위해, 도 7 및 이하의 설명은 이 다양한 측면들이 구현될 수 있는 적당한 컴퓨팅 시스템(700)에 대한 간략하고 개괄적인 설명을 제공하기 위한 것이다. 이상의 설명이 일반적으로 하나 이상의 컴퓨터 상에서 실행될 수 있는 컴퓨터 실행가능 명령들과 관련하여 기술되어 있지만, 당업자라면 새로운 실시예도 역시 다른 프로그램 모듈들과 관련하여 및/또는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다는 것을 잘 알 것이다.
일반적으로, 프로그램 모듈들은 특정의 작업들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 루틴, 프로그램, 구성요소, 데이터 구조, 및 기타 등등을 포함한다. 게다가, 당업자라면 본 발명의 방법들이 단일-프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론, 퍼스널 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 기타 등등(이들 각각은 하나 이상의 연관된 장치들과 결합되어 동작할 수 있음)을 비롯한 다른 컴퓨터 시스템 구성들에서도 실시될 수 있다는 것을 잘 알 것이다.
예시된 측면들은 또한 어떤 작업들이 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서도 실시될 수 있다. 분산 컴퓨팅 환경에서는, 프로그램 모듈들이 로컬 메모리 저장 장치들 및 원격 메모리 저장 장치들 둘다에 위치할 수 있다.
컴퓨터는 통상적으로 각종의 컴퓨터-판독가능 매체를 포함하고 있다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 이용가능한 매체라면 어느 것이라도 될 수 있고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 제한이 아닌 일례로서, 컴퓨터-판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체로는 컴퓨터-판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체가 있다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital video disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다.
다시 도 7을 참조하면, 다양한 측면들을 구현하는 예시적인 컴퓨팅 시스템(700)은 컴퓨터(702)를 포함하고, 이 컴퓨터(702)는 처리 장치(704), 시스템 메모리(706) 및 시스템 버스(708)를 포함하고 있다. 시스템 버스(708)는 시스템 메모리(706)(이것으로 제한되지 않음)를 비롯한 시스템 구성요소들의 처리 장치(704)에 대한 인터페이스를 제공한다. 처리 장치(704)는 다양한 상용 프로세서들 중 어느 것이라도 될 수 있다. 듀얼 마이크로프로세서 및 기타 멀티-프로세서 아키텍처도 처리 장치(704)로서 이용될 수 있다.
시스템 버스(708)는 메모리 버스(메모리 제어기를 갖거나 갖지 않음), 주변 장치 버스, 및 각종의 상용 버스 아키텍처 중 어느 것이라도 사용하는 로컬 버스와 추가적으로 상호연결될 수 있는 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리(706)는 비휘발성 메모리(NON-VOL)(710) 및/또는 휘발성 메모리(712)[예를 들어, RAM(random access memory)]를 포함할 수 있다. 기본 입/출력 시스템(BIOS)은 비휘발성 메모리(710)(예를 들어, ROM, EPROM, EEPROM, 기타)에 저장될 수 있으며, 이 BIOS는 시동 중과 같은 때에 컴퓨터(702) 내의 구성요소들 간의 정보 전송을 돕는 기본 루틴들이다. 휘발성 메모리(712)는 또한 데이터를 캐싱하기 위한 정적 RAM 등의 고속 RAM도 포함할 수 있다.
컴퓨터(702)는 내장형 하드 디스크 드라이브(HDD)(714)(예를 들어, EIDE, SATA) - 이 내장형 HDD(714)는 또한 적당한 새시(chassis)에 넣어 외장용으로도 구성될 수 있음 -, 자기 플로피 디스크 드라이브(FDD)(716)[예를 들어, 이동식 디스켓(718)으로부터 판독을 하거나 그에 기록을 함] 및 광 디스크 드라이브(720)[예를 들어, CD-ROM 디스크(722)를 판독하거나, 또는 DVD 등의 기타 대용량 광 매체로부터 판독을 하거나 그에 기록을 함]를 더 포함하고 있다. HDD(714), FDD(716) 및 광 디스크 드라이브(720)는 각각 HDD 인터페이스(724), FDD 인터페이스(726) 및 광 드라이브 인터페이스(728)에 의해 시스템 버스(708)에 연결될 수 있다. 외장형 드라이브 구현을 위한 HDD 인터페이스(724)는 USB(Universal Serial Bus) 및 IEEE 1394 인터페이스 기술들 중 적어도 하나 또는 둘다를 포함할 수 있다.
이들 드라이브 및 연관된 컴퓨터-판독가능 매체는 데이터, 데이터 구조, 컴퓨터-실행가능 명령, 기타 등등의 비휘발성 저장을 제공한다. 컴퓨터(702)의 경우, 이들 드라이브 및 매체는 임의의 데이터를 적당한 디지털 형식으로 저장하기 위한 것이다. 컴퓨터 판독가능 매체에 대한 이상의 설명에서 HDD, 이동식 자기 디스켓(예를 들어, FDD), 및 CD나 DVD 등의 이동식 광 매체에 대해 언급하고 있지만, 당업자라면 컴퓨터에 의해 판독가능한 기타 유형의 매체(zip 드라이브, 자기 카세트, 플래시 메모리 카드, 카트리지, 기타 등등)도 이 예시적인 운영 환경에서 사용될 수 있다는 것과 또한 임의의 이러한 매체가 개시된 아키텍처의 새로운 방법을 수행하는 컴퓨터 실행가능 명령을 포함하고 있을 수 있다는 것도 잘 알 것이다.
운영 체제(730), 하나 이상의 응용 프로그램(732), 기타 프로그램 모듈(734) 및 프로그램 데이터(736)를 비롯한 다수의 프로그램 모듈들이 이들 드라이브 및 휘발성 메모리(712)에 저장될 수 있다. 클라이언트 컴퓨팅 시스템으로서, 하나 이상의 응용 프로그램(732), 기타 프로그램 모듈(734),및 프로그램 데이터(736)는, 예를 들어, 계층적 클라이언트 뷰 집합(110), 행들(108), 행 동작(106), 행 변경 동작(114), 클라이언트(204), 행 뷰(210), 클라이언트 뷰(212), 행 동작들(300), 위치 변환기 색인(302), 축소된 집합 목록(304), 확장된 뷰(400), 축소된 뷰(402), 위치 변환기 색인들(404 및 408), 축소된 집합 목록들(406 및 410), 및 도 6의 방법을 포함할 수 있다. 컴퓨터(702)가 서버 시스템으로서 이용되는 경우, 하나 이상의 응용 프로그램(732), 기타 프로그램 모듈(734), 및 프로그램 데이터(736)가, 예를 들어, 페이징 구성요소(102), 업데이트 구성요소(112), 계층적 데이터 집합(104), 서버(202), 데이터 집합 뷰(206), 행 뷰(208), 및 도 5의 방법을 포함할 수 있다.
운영 체제, 응용 프로그램, 모듈 및/또는 데이터의 전부 또는 일부도 역시 비휘발성 메모리(712)에 캐싱될 수 있다. 개시된 아키텍처가 다양한 상용 운영 체제 또는 운영 체제들의 조합에서 구현될 수 있다는 것을 잘 알 것이다.
사용자는 하나 이상의 유선/무선 입력 장치, 예를 들어, 키보드(738) 및 마우스(740) 등의 포인팅 장치를 통해 컴퓨터(702)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치들(도시 생략)로는 마이크, IR 리모콘, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린, 기타 등등이 있을 수 있다. 이들 및 기타 입력 장치들은 종종 시스템 버스(708)에 연결되어 있는 입력 장치 인터페이스(742)를 통해 처리 장치(704)에 연결되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스, 기타 등등의 다른 인터페이스들에 의해 연결될 수 있다.
모니터(744) 또는 기타 종류의 디스플레이 장치도 비디오 어댑터(746) 등의 인터페이스를 통해 시스템 버스(708)에 연결되어 있다. 모니터(744) 이외에, 컴퓨터는 통상적으로 스피커, 프린터, 기타 등등의 기타 주변 출력 장치들(도시 생략)도 포함하고 있다.
컴퓨터(702)는 원격 컴퓨터(들)(748) 등의 하나 이상의 원격 컴퓨터들과의 유선 및/또는 무선 통신을 통한 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(748)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 오락 기기, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(702)와 관련하여 기술된 구성요소들 중 다수 또는 그 전부를 포함하고 있지만, 간략함을 위해 메모리/저장 장치(750)만이 도시되어 있다. 도시된 논리적 접속은 근거리 통신망(LAN)(752) 및/또는 보다 대규모의 네트워크, 예를 들어, 원거리 통신망(WAN)(754)에의 유선/무선 연결을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경은 사무실 및 회사에서 흔하게 볼 수 있고 인트라넷 등의 전사적 컴퓨터 네트워크를 용이하게 해주며, 이들 네트워크 전부는 전세계 통신 네트워크, 예를 들어, 인터넷에 접속할 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(702)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(756)를 통해 LAN(752)에 연결된다. 어댑터(756)는 LAN(752)과의 유선 및/또는 무선 통신을 용이하게 해줄 수 있으며, 이 LAN(752)은 또한 어댑터(756)의 무선 기능과 통신하기 위해 그에 배치되어 있는 무선 액세스 포인트도 포함하고 있을 수 있다.
WAN 네트워킹 환경에서 사용될 때, 컴퓨터(702)는 모뎀(758)을 포함할 수 있거나, WAN(754) 상의 통신 서버에 연결되어 있거나, WAN(754)을 통해, 예를 들어, 인터넷을 통해 통신을 설정하는 기타 수단을 갖는다. 내장형이거나 외장형이고 유선 및/또는 무선 장치일 수 있는 모뎀(758)은 입력 장치 인터페이스(742)를 통해 시스템 버스(708)에 연결된다. 네트워크 환경에서, 컴퓨터(702) 또는 그의 일부와 관련하여 도시된 프로그램 모듈들은 원격 메모리/저장 장치(750)에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이고 컴퓨터들 간에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다.
컴퓨터(702)는, 예를 들어, 프린터, 스캐너, 데스크톱 및/또는 휴대용 컴퓨터, PDA(personal digital assistant), 통신 위성, 무선 검출가능 태그와 연관된 임의의 장비 또는 장소(예를 들어, 키오스크, 신문 가판대, 휴게실), 그리고 전화와의 무선 통신[예를 들어, IEEE 802.11 공중파(over-the-air) 변조 기법]으로 배치되어 동작하는 무선 장치들 등의 IEEE 802 계열의 표준들을 사용하는 유선 및 무선 장치들 또는 개체들과 통신하는 동작을 한다. 이것은 적어도 Wi-Fi(Wireless Fidelity), WiMax 및 블루투스™ 무선 기술들을 포함한다. 따라서, 이 통신은 종래의 네트워크 또는 단지 적어도 2개의 장치들 간의 애드혹 통신(ad hoc communication)에서와 같이 미리 정의된 구조일 수 있다. Wi-Fi 네트워크들은 안전하고 신뢰성있는 고속의 무선 연결을 제공하기 위해 IEEE 802.11x(a, b, g, 기타)라고 불리우는 무선 기술들을 사용한다. Wi-Fi 네트워크는 컴퓨터들을 서로 연결시키고, 인터넷에 연결시키며, 또 유선 네트워크들(IEEE 802.3-관련 매체 및 기능을 사용함)에 연결시키는 데 사용될 수 있다.
이제 도 8을 참조하면, 페이징 프로세스 및 보기 프로세스를 실행하는 예시적인 컴퓨팅 환경(800)의 개략 블록도가 도시되어 있다. 환경(800)은 하나 이상의 클라이언트(들)(802)를 포함하고 있다. 클라이언트(들)(802)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 클라이언트(들)(802)는, 예를 들어, 쿠키(들) 및/또는 연관된 컨텍스트 정보(contextual information)를 가지고 있을 수 있다.
환경(800)은 또한 하나 이상의 서버(들)(804)도 포함하고 있다. 서버(들)(804)도 역시 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 서버(들)(804)는, 예를 들어, 본 아키텍처를 이용하여 변환을 수행하는 스레드를 가지고 있을 수 있다. 클라이언트(802)와 서버(804) 간의 한가지 가능한 통신은 2개 이상의 컴퓨터 프로세스들 간에 전송되도록 구성되어 있는 데이터 패킷의 형태로 되어 있을 수 있다. 이 데이터 패킷은, 예를 들어, 쿠키 및/또는 연관된 컨텍스트 정보를 포함할 수 있다. 환경(800)은 클라이언트(들)(802)와 서버(들)(804) 간의 통신을 용이하게 해주는 데 이용될 수 있는 통신 프레임워크(806)(예를 들어, 인터넷 등의 전세계 통신 네트워크)를 포함하고 있다.
유선(광 섬유를 포함함) 및/또는 무선 기술을 통해 통신이 용이하게 될 수 있다. 클라이언트(들)(802)는 클라이언트(들)(802)에 로컬인 정보(예를 들어, 쿠키(들) 및/또는 연관된 컨텍스트 정보)를 저장하는 데 이용될 수 있는 하나 이상의 클라이언트 데이터 저장소(들)(808)에 연결되어 동작한다. 이와 유사하게, 서버(들)(804)는 서버(들)(804)에 로컬인 정보를 저장하는 데 이용될 수 있는 하나 이상의 서버 데이터 저장소(들)(810)에 연결되어 동작한다.
클라이언트(들)(802)는 클라이언트(204) 및 도 6의 방법을 포함할 수 있고, 서버(들)는 서버(202) 및 도 5의 방법을 포함할 수 있다.
개시된 아키텍처의 일례들에 대해 이상에서 설명하였다. 물론, 구성요소들 및/또는 방법들의 모든 생각가능한 조합을 다 기술할 수는 없지만, 당업자라면 많은 추가의 조합 및 치환이 가능하다는 것을 잘 알 수 있다. 따라서, 이 새로운 아키텍처가 첨부된 특허청구범위의 사상 및 범위 내에 속하는 모든 이러한 변경, 수정 및 변형을 포괄하는 것으로 보아야 한다. 게다가, "포함한다"라는 용어가 상세한 설명 또는 특허청구범위에서 사용되는 한, 이러한 용어는 "포함하는"이라는 용어가 청구항에서 전이구(transitional word)로 이용될 때 해석되는 것과 유사한 방식으로 포함적(inclusive)인 것으로 보아야 한다.
Claims (20)
- 컴퓨터-구현 데이터 처리 시스템(100)으로서,
클라이언트 뷰 집합(client viewset)의 하나 이상의 행들(rows)에 대한 행 동작에 기초하여 계층적 데이터 집합(hierarchical dataset)을 페이징하는 페이징 구성요소(paging component)(102), 및
행 변경 동작에 응답하여 상기 클라이언트 뷰 집합을 업데이트하는 업데이트 구성요소(update component)(112)를 포함하며, 상기 클라이언트 뷰 집합에 대한 업데이트가 페이징된 상기 계층적 데이터 집합과 연관된 행 키들(row keys)에 기초하는 것인 컴퓨터-구현 데이터 처리 시스템. - 제1항에 있어서, 상기 페이징 구성요소가 상기 클라이언트 뷰 집합에서의 행들의 부모-자식 관계(parent-child relationship)를 관리하고, 상기 행들이 상기 행 동작에 관련되어 있는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 페이징 구성요소가 행 키들 및 부모 키들의 정렬된 매핑(ordered mapping)에 의해 정의되는 계층 구조 색인을 생성하고, 상기 클라이언트 뷰 집합의 행 동작에 응답하여 상기 색인이 클라이언트로 전송되는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 행 동작이 계층적 뷰의 행들을 축소된 행(collapsed row)으로 축소시키고(collapse) 상기 계층적 뷰 내의 하나 이상의 새로운 행들을 보여주기 위해 축소된 행을 확장시키며 또 상기 클라이언트 뷰 집합을 스크롤하는 것에 기초하여 행들을 추가하거나 제거하는 읽기 동작인 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 행 동작이 클라이언트 뷰 집합에서의 행의 삽입, 행의 삭제, 행의 들여쓰기(indent), 또는 행의 내어쓰기(outdent)와 연관된 편집 동작인 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 페이징 구성요소가 필터링, 정렬, 행 확장, 및 행 축소에 기초하여 상기 행 동작과 관련된 행들에 대한 계층적 데이터 집합을 페이징하는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 업데이트 구성요소가 편집 모드와 연관된 행 동작들에 기초하여 필터링되지 않은 계층구조(unfiltered hierarchy)를 업데이트하는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제1항에 있어서, 상기 페이징 구성요소가 상기 행 변경 동작에 기초하여 비동기적으로 상기 계층적 데이터 집합을 페이징하는 것인 컴퓨터-구현 데이터 처리 시스템.
- 컴퓨터-구현 데이터 처리 시스템(200)으로서,
클라이언트의 클라이언트 뷰 집합에서의 행 동작에 응답하여 계층적 데이터 집합의 페이지를 획득하는 서버의 페이징 구성요소(102), 및
행 변경 동작에 따라 상기 클라이언트 뷰 집합을 업데이트하는 상기 서버의 업데이트 구성요소(112)를 포함하고, 상기 페이지가 상기 행 변경 동작과 관련된 행들만을 포함하는 것인 컴퓨터-구현 데이터 처리 시스템. - 제9항에 있어서, 상기 페이징 구성요소가 상기 클라이언트 뷰 집합에서의 행들의 부모-자식 관계를 관리하는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제9항에 있어서, 상기 페이징 구성요소가 행 키들 및 부모 키들의 정렬된 매핑(ordered mapping)에 의해 정의되는 계층 구조 색인을 생성하고, 행 편집 동작에 기초하여 업데이트된 상기 클라이언트 뷰 집합과 함께 상기 색인을 클라이언트로 전송하는 것인 컴퓨터-구현 데이터 처리 시스템.
- 제9항에 있어서, 상기 행 동작이 상기 클라이언트 뷰 집합의 행들을 축소된 행으로 축소시키는 것, 상기 클라이언트 뷰 집합 내의 하나 이상의 새로운 행들을 보여주기 위해 행을 확장시키는 것 또는 상기 클라이언트 뷰 집합을 스크롤하는 것에 기초하여 행들을 추가하거나 제거하는 것과 연관된 읽기 동작인 것인 컴퓨터-구현 데이터 처리 시스템.
- 제9항에 있어서, 상기 행 동작이 상기 클라이언트 뷰 집합에서의 행의 삽입, 행의 삭제, 행의 들여쓰기, 또는 행의 내어쓰기와 연관된 편집 동작인 것인 컴퓨터-구현 데이터 처리 시스템.
- 데이터를 처리하는 컴퓨터-구현 방법으로서,
클라이언트 행 동작에 기초하여 클라이언트 뷰 집합에 렌더링될 관련 데이터에 대한 요청을 클라이언트로부터 수신하는 단계(500),
상기 요청에 응답하여 상기 관련 데이터에 대한 계층적 데이터 집합의 페이지를 획득하는 단계(502), 및
상기 클라이언트 뷰 집합의 업데이트를 위해 상기 관련 데이터를 상기 클라이언트로 전송하는 단계(504)를 포함하는 컴퓨터-구현 방법. - 제14항에 있어서, 상기 행 동작에 기초하여 부모-자식 관계를 관리하는 단계를 더 포함하는 컴퓨터-구현 방법.
- 제14항에 있어서, 상기 클라이언트 뷰 집합의 행들을 축소된 행으로 축소시키고 상기 클라이언트 뷰 집합 내의 하나 이상의 자식 행들을 보여주기 위해 축소된 행을 확장시키며 또 상기 클라이언트 뷰 집합을 스크롤하는 것에 기초하여 행들을 보여주고/감추는 읽기 동작에 응답하여 상기 계층적 데이터 집합을 페이징하는 단계를 더 포함하는 컴퓨터-구현 방법.
- 제14항에 있어서, 상기 클라이언트 뷰 집합에서의 행의 삽입, 행의 삭제, 행의 들여쓰기, 또는 행의 내어쓰기와 연관된 편집 동작에 응답하여 상기 계층적 데이터 집합의 페이지를 획득하는 단계를 더 포함하는 컴퓨터-구현 방법.
- 제14항에 있어서, 상기 관련 데이터를 수신하기 위해 필터링, 정렬 또는 그룹화 중 하나 이상을 적용하는 단계를 더 포함하는 컴퓨터-구현 방법.
- 제14항에 있어서, 행 부모 지위(parentage), 행 아웃라인 레벨(row outline level), 자식 행들, 및 들여쓰기/내어쓰기 동작과 관련하여 상기 관련 데이터를 정의하는 필터링되지 않은 계층 구조를 생성하는 단계를 더 포함하는 컴퓨터-구현 방법.
- 제14항에 있어서, 상기 계층적 데이터 집합의 페이지가 상기 요청에 기초하여 비동기적으로 획득되는 것인 컴퓨터-구현 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/127,006 | 2008-05-26 | ||
US12/127,006 US8825700B2 (en) | 2008-05-26 | 2008-05-26 | Paging hierarchical data |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110010736A true KR20110010736A (ko) | 2011-02-07 |
KR101581980B1 KR101581980B1 (ko) | 2015-12-31 |
Family
ID=41342840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107026315A KR101581980B1 (ko) | 2008-05-26 | 2009-04-13 | 계층적 데이터의 페이징 |
Country Status (15)
Country | Link |
---|---|
US (2) | US8825700B2 (ko) |
EP (1) | EP2304609B1 (ko) |
JP (1) | JP2011524047A (ko) |
KR (1) | KR101581980B1 (ko) |
CN (1) | CN102047252B (ko) |
AU (1) | AU2009258015B2 (ko) |
BR (1) | BRPI0911183A2 (ko) |
CA (1) | CA2722320C (ko) |
IL (1) | IL208488A (ko) |
MX (1) | MX2010012866A (ko) |
MY (1) | MY162124A (ko) |
RU (1) | RU2507574C2 (ko) |
SG (1) | SG191597A1 (ko) |
WO (1) | WO2009151763A1 (ko) |
ZA (1) | ZA201007131B (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8001155B2 (en) * | 2008-06-20 | 2011-08-16 | Microsoft Corporation | Hierarchically presenting tabular data |
US20100199223A1 (en) * | 2009-02-03 | 2010-08-05 | Oracle International Corporation | Hierarchy display |
US8965866B2 (en) * | 2009-12-17 | 2015-02-24 | Business Objects Software Limited | Optimizing data transfer time on graphics processor units |
JP5337745B2 (ja) * | 2010-03-08 | 2013-11-06 | 株式会社日立製作所 | データ処理装置 |
WO2013168222A1 (ja) * | 2012-05-08 | 2013-11-14 | 1stホールディングス株式会社 | データ処理システム、サーバ、クライアント、データ管理用プログラム |
WO2014056201A1 (en) * | 2012-10-12 | 2014-04-17 | Mediatek Inc. | Layout module for printed circuit board |
US20150223169A1 (en) * | 2014-02-06 | 2015-08-06 | Nokia Corporation | Method, apparatus, and computer program product for initial indication of block allocation within page for wireless networks |
US10262075B2 (en) * | 2014-12-05 | 2019-04-16 | Sap Se | Efficient navigation through hierarchical mappings |
EP3035179A1 (en) * | 2014-12-19 | 2016-06-22 | Thomson Licensing | Data processing apparatus and method for rendering a tree structure |
JP6606436B2 (ja) * | 2016-01-19 | 2019-11-13 | ウイングアーク1st株式会社 | 情報可視化システム |
CN110519842B (zh) * | 2016-02-19 | 2022-05-31 | 大唐移动通信设备有限公司 | 一种通信方法及装置 |
US10353980B2 (en) | 2016-11-30 | 2019-07-16 | Sap Se | Client-side paging for hierarchy data structures in restful web services |
US11455079B2 (en) * | 2018-11-05 | 2022-09-27 | Sigma Computing, Inc. | Nested pagination for presenting a data set in a graphical user interface |
CN111190912B (zh) * | 2019-12-27 | 2023-06-20 | 山大地纬软件股份有限公司 | 一种基于行变更的面向大事务的分片执行方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696927A (en) * | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US20070106853A1 (en) * | 2005-11-07 | 2007-05-10 | International Business Machines Corporation | Multistage virtual memory paging system |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4430701A (en) * | 1981-08-03 | 1984-02-07 | International Business Machines Corporation | Method and apparatus for a hierarchical paging storage system |
US5615325A (en) * | 1994-09-29 | 1997-03-25 | Intel Corporation | Graphical viewer for heirarchical datasets |
US5724577A (en) * | 1995-06-07 | 1998-03-03 | Lockheed Martin Corporation | Method for operating a computer which searches a relational database organizer using a hierarchical database outline |
US6028602A (en) * | 1997-05-30 | 2000-02-22 | Telefonaktiebolaget Lm Ericsson | Method for managing contents of a hierarchical data model |
US5974407A (en) | 1997-09-29 | 1999-10-26 | Sacks; Jerome E. | Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus |
US6356920B1 (en) * | 1998-03-09 | 2002-03-12 | X-Aware, Inc | Dynamic, hierarchical data exchange system |
US6430574B1 (en) * | 1999-07-22 | 2002-08-06 | At&T Corp. | Method and apparatus for displaying and header scrolling a hierarchical data structure |
US6711715B1 (en) * | 1999-08-27 | 2004-03-23 | Microsoft Corporation | Method and system for efficient storage and restoration of display state data |
US6559871B1 (en) * | 1999-09-29 | 2003-05-06 | International Business Machines Corporation | Asynchronous tree navigator graphical user interface and associated methods |
AU2912701A (en) | 1999-12-20 | 2001-07-03 | Acta Technologies, Inc. | Data restructurer for flattening hierarchies |
US6859217B2 (en) * | 2000-07-19 | 2005-02-22 | Microsoft Corporation | System and method to display and manage data within hierarchies and polyarchies of information |
US6816061B1 (en) * | 2000-09-15 | 2004-11-09 | Keith K. Wong | Communication system for communicating common data to a plurality of reception devices |
US20020083073A1 (en) * | 2000-12-22 | 2002-06-27 | Vaidya Neelam N. | Managing a layered hierarchical data set |
US6961909B2 (en) * | 2001-01-05 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | System for displaying a hierarchical directory |
US6898593B1 (en) | 2001-07-10 | 2005-05-24 | I2 Technologies Us, Inc. | Sorted-paged retrieval of hierarchical data from relational databases |
CA2489236C (en) | 2002-06-12 | 2014-01-14 | Jena Jordahl | Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view |
AU2002953555A0 (en) * | 2002-12-23 | 2003-01-16 | Canon Kabushiki Kaisha | Method for presenting hierarchical data |
US7305396B2 (en) * | 2002-12-31 | 2007-12-04 | Robert Bosch Gmbh | Hierarchical system and method for on-demand loading of data in a navigation system |
US7289990B2 (en) | 2003-06-26 | 2007-10-30 | International Business Machines Corporation | Method and apparatus for reducing index sizes and increasing performance of non-relational databases |
US7360175B2 (en) * | 2003-10-03 | 2008-04-15 | Lexisnexis, A Division Of Reed Elsevier Inc. | Hierarchical, multilevel, expand and collapse navigation aid for hierarchical structures |
US7827591B2 (en) * | 2003-10-08 | 2010-11-02 | Fmr Llc | Management of hierarchical reference data |
US7664727B2 (en) * | 2003-11-28 | 2010-02-16 | Canon Kabushiki Kaisha | Method of constructing preferred views of hierarchical data |
US20050182775A1 (en) * | 2003-12-01 | 2005-08-18 | George Fitzgerald | Method of storing fast throughput experimentation information in a database |
US7640497B1 (en) * | 2003-12-22 | 2009-12-29 | Apple Inc. | Transforming a hierarchical data structure according to requirements specified in a transformation template |
US20050154974A1 (en) * | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method, apparatus and program storage device for inline controlling of row and column sets in tabular displays |
US7277885B2 (en) | 2004-02-18 | 2007-10-02 | Microsoft Corporation | Systems and methods for filter processing using hierarchical data and data structures |
US7360167B2 (en) * | 2004-03-05 | 2008-04-15 | International Business Machines Corporation | User interface expander and collapser |
EP1870814B1 (en) * | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
GB2413655A (en) * | 2004-04-30 | 2005-11-02 | Hewlett Packard Development Co | Method and system for updating hierarchical data structures |
US7769770B2 (en) * | 2004-07-14 | 2010-08-03 | Microsoft Corporation | Secondary index and indexed view maintenance for updates to complex types |
GB2418747A (en) * | 2004-09-29 | 2006-04-05 | Siemens Ag | A data structure distributed over a number of pages |
US7499939B2 (en) * | 2004-10-18 | 2009-03-03 | International Business Machines Corporation | Method for efficiently managing membership in a hierarchical data structure |
US7519923B2 (en) * | 2004-10-20 | 2009-04-14 | International Business Machines Corporation | Method for generating a tree view of elements in a graphical user interface (GUI) |
US7827499B2 (en) * | 2004-10-29 | 2010-11-02 | Hewlett-Packard Development Company, L.P. | Hierarchical dataset dashboard view |
US8296646B2 (en) * | 2005-02-02 | 2012-10-23 | International Business Machines Corporation | Focusing on areas of the display of tabular data through hierarchical collapsing and expanding of cell areas |
US7383516B2 (en) | 2005-04-13 | 2008-06-03 | Microsoft Corporation | Systems and methods for displaying and editing hierarchical data |
US20070050697A1 (en) * | 2005-08-23 | 2007-03-01 | International Business Machines Corporation | Integrated spreadsheet expanding table with collapsable columns |
RU2313824C2 (ru) | 2005-09-26 | 2007-12-27 | Михаил Васильевич Беляев | Информационная система клиент - сервер и способ предоставления графического пользовательского интерфейса |
US7533112B2 (en) | 2006-03-27 | 2009-05-12 | Microsoft Corporation | Context hierarchies for address searching |
GB0610571D0 (en) * | 2006-05-27 | 2006-07-05 | Ibm | Managing distributed hierarchical data |
US20090024590A1 (en) * | 2007-03-15 | 2009-01-22 | Sturge Timothy | User contributed knowledge database |
US9317494B2 (en) * | 2007-04-03 | 2016-04-19 | Sap Se | Graphical hierarchy conversion |
-
2008
- 2008-05-26 US US12/127,006 patent/US8825700B2/en active Active
-
2009
- 2009-04-13 SG SG2013039748A patent/SG191597A1/en unknown
- 2009-04-13 BR BRPI0911183A patent/BRPI0911183A2/pt not_active IP Right Cessation
- 2009-04-13 KR KR1020107026315A patent/KR101581980B1/ko active IP Right Grant
- 2009-04-13 WO PCT/US2009/040296 patent/WO2009151763A1/en active Application Filing
- 2009-04-13 MY MYPI2010005034A patent/MY162124A/en unknown
- 2009-04-13 JP JP2011511671A patent/JP2011524047A/ja not_active Withdrawn
- 2009-04-13 CA CA2722320A patent/CA2722320C/en active Active
- 2009-04-13 EP EP09763055.2A patent/EP2304609B1/en active Active
- 2009-04-13 AU AU2009258015A patent/AU2009258015B2/en active Active
- 2009-04-13 CN CN200980119899.6A patent/CN102047252B/zh active Active
- 2009-04-13 RU RU2010148134/08A patent/RU2507574C2/ru not_active IP Right Cessation
- 2009-04-13 MX MX2010012866A patent/MX2010012866A/es active IP Right Grant
-
2010
- 2010-10-05 IL IL208488A patent/IL208488A/en active IP Right Grant
- 2010-10-06 ZA ZA2010/07131A patent/ZA201007131B/en unknown
-
2014
- 2014-07-25 US US14/340,753 patent/US20140344218A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696927A (en) * | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US20070106853A1 (en) * | 2005-11-07 | 2007-05-10 | International Business Machines Corporation | Multistage virtual memory paging system |
Also Published As
Publication number | Publication date |
---|---|
AU2009258015B2 (en) | 2014-06-05 |
AU2009258015A1 (en) | 2009-12-17 |
CN102047252B (zh) | 2014-07-02 |
MX2010012866A (es) | 2010-12-14 |
EP2304609A4 (en) | 2016-08-17 |
CN102047252A (zh) | 2011-05-04 |
CA2722320C (en) | 2015-06-30 |
KR101581980B1 (ko) | 2015-12-31 |
RU2010148134A (ru) | 2012-05-27 |
SG191597A1 (en) | 2013-07-31 |
MY162124A (en) | 2017-05-31 |
US8825700B2 (en) | 2014-09-02 |
IL208488A0 (en) | 2010-12-30 |
EP2304609B1 (en) | 2020-10-14 |
US20090292718A1 (en) | 2009-11-26 |
BRPI0911183A2 (pt) | 2015-10-13 |
IL208488A (en) | 2016-07-31 |
ZA201007131B (en) | 2012-01-25 |
RU2507574C2 (ru) | 2014-02-20 |
WO2009151763A1 (en) | 2009-12-17 |
EP2304609A1 (en) | 2011-04-06 |
US20140344218A1 (en) | 2014-11-20 |
CA2722320A1 (en) | 2009-12-17 |
JP2011524047A (ja) | 2011-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101581980B1 (ko) | 계층적 데이터의 페이징 | |
US10459892B2 (en) | Filesystem hierarchical aggregate metrics | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
US9898545B2 (en) | Path-caching mechanism to improve performance of path-related operations in a repository | |
JP5373846B2 (ja) | リレーショナルシステムにおける階層的に編成された情報にアクセスするための階層的インデックス付け | |
KR100946055B1 (ko) | 주석 관리 방법, 컴퓨터 판독가능 매체 및 주석 관리시스템 | |
JP4406609B2 (ja) | 単一のインターフェイスからのデータの多重階層を管理するための手法 | |
US8356050B1 (en) | Method or system for spilling in query environments | |
JP4944008B2 (ja) | ファイルシステム内での効率的なファイルコンテンツをサーチするためのシステム、方法及びコンピュータアクセス可能な記録媒体 | |
JP2006114045A (ja) | スキーマデータ(schemadata)からデータ構造へのマッピング | |
WO2017151194A1 (en) | Atomic updating of graph database index structures | |
JP2006012146A (ja) | 影響分析のためのシステムおよび方法 | |
US20080313209A1 (en) | Partition/table allocation on demand | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
US7844596B2 (en) | System and method for aiding file searching and file serving by indexing historical filenames and locations | |
US20080005292A1 (en) | Systems Management Navigation and Focus Collection | |
US7627547B2 (en) | Processing path-based database operations | |
US7672945B1 (en) | Mechanism for creating member private data in a global namespace | |
JP4825504B2 (ja) | データ登録・検索システムおよびデータ登録・検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181129 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191127 Year of fee payment: 5 |