KR20120106863A - 스케일러블 데이터 구조를 이용하기 위한 방법 및 장치 - Google Patents
스케일러블 데이터 구조를 이용하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20120106863A KR20120106863A KR1020127019339A KR20127019339A KR20120106863A KR 20120106863 A KR20120106863 A KR 20120106863A KR 1020127019339 A KR1020127019339 A KR 1020127019339A KR 20127019339 A KR20127019339 A KR 20127019339A KR 20120106863 A KR20120106863 A KR 20120106863A
- Authority
- KR
- South Korea
- Prior art keywords
- profile
- field
- access control
- search
- user
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
Abstract
스케일러블 데이터 구조를 이용하기 위한 접근법이 제공된다. 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의가 수신된다. 검색은, 적어도 부분적으로, 데이터 구조의 프로파일 인덱스의 엔티티 식별자에 기초하여 검색이 야기되고, 각각의 데이터 구조는 검색 결과를 산출하기 위해 액세스 제어 필드와 연관되어 있는 프로파일 필드를 특정한다. 요청된 콘텐츠에 대한 액세스 권한은 엔티티 식별자에 대해 표시된다. 데이터 구조는 또한 프로파일 필드 및 액세스 제어 필드를 포함한다.
Description
서비스 제공자(예를 들면, 무선, 셀룰러 등) 및 디바이스 제조자는, 예를 들면, 강제적인 네트워크 서비스를 제공함으로써 소비자에게 가치 및 편의를 전달하도록 계속해서 도전받고 있다. 이 산업에서 중요한 차별화 요인은 애플리케이션 및 네트워크 서비스뿐만 아니라 이들 서비스를 지원하고 스케일링하는 것이다. 특히, 이들 애플리케이션 및 서비스는, 예를 들면, 소셜 서비스에 의해 이용되는 데이터를 액세스하고 관리하는 것을 포함할 수 있다. 이들 서비스는 데이터 액세스에 관계되는 거대한 양의 사용자 프로파일을 관리하는 것을 수반한다. 전통적으로, 데이터가 조직되는 방식 및 액세스를 제어하기 위한 개별적인 메커니즘이 존재한다.
사용자들의 수가 증가함에 따라, 이들 메커니즘은 스케일링을 잘하지 못하고, 그 결과 정보 검색에 있어서 점점 더 큰 지연을 초래할 수 있다.
따라서, 스케일러블(scalable) 데이터 구조를 이용하여 프로파일(예를 들면, 사용자 프로파일, 엔티티 프로파일 등)을 검색하는 접근법이 필요하다.
일 실시예에 따라, 방법은 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하는 단계를 포함한다. 이 방법은 또한, 적어도 부분적으로, 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 엔티티 식별자에 적어도 부분적으로 기초하여 검색하도록 하는 단계를 포함한다. 이 방법은 또한, 엔티티 식별자를 위해 요청된 콘텐츠에 대한 액세스 권한을 표시하는 단계를 포함한다. 데이터 구조들은 또한 프로파일 필드 및 액세스 제어 필드를 포함한다.
또 다른 실시예에 따라, 적어도 하나의 프로세서 및 컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하는 장치가 제공되고, 적어도 하나의 메모리 및 컴퓨터 프로그램 코드는, 적어도 하나의 프로세서와 함께, 상기 장치로 하여금 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하게 한다. 이 장치는 또한 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 적어도 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 엔티티 식별자에 적어도 부분적으로 기초하여 검색하도록 한다. 이 장치는 또한 엔티티 식별자를 위해 요청된 콘텐츠에 대한 액세스 권한을 표시하는 것을 수행하도록 한다. 데이터 구조들은 또한 프로파일 필드 및 액세스 제어 필드를 포함한다.
또 다른 실시예에 따라, 하나 이상의 프로세서에 의해 실행될 때, 적어도 부분적으로, 장치로 하여금 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하게 한다. 이 장치는 또한 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 적어도 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 엔티티 식별자에 적어도 부분적으로 기초하여 검색하도록 한다. 이 장치는 또한 엔티티 식별자를 위해 요청된 콘텐츠에 대한 액세스 권한을 표시하는 것을 수행하도록 한다. 데이터 구조들은 또한 프로파일 필드 및 액세스 제어 필드를 포함한다.
또 다른 실시예에 따라, 장치는 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하기 위한 수단을 포함한다. 이 장치는 또한, 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 적어도 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 엔티티 식별자에 적어도 부분적으로 기초하여 검색하도록 한다. 이 장치는 또한 엔티티 식별자를 위해 요청된 콘텐츠에 대한 액세스 권한을 표시하는 것을 수행하도록 한다. 데이터 구조들은 또한 프로파일 필드 및 액세스 제어 필드를 포함한다.
본 발명의 또 다른 양태, 특징 및 이점은 본 발명을 실행하기 위해 예정된 최선 모드를 포함하는, 다수의 특정 실시예 및 구현예를 간단히 설명함으로써, 다음의 상세한 설명으로부터 자명해진다. 본 발명은 또한 다른 상이한 실시예가 가능하고, 그 세부 사항 중 몇몇은 본 발명의 사상 및 범위를 벗어나지 않고 모두 다양한 관점에서 수정될 수 있다. 따라서, 도면 및 설명은 예시적인 것으로 간주되어야 하고 제한적인 것으로 간주되어서는 안된다.
본 발명의 실시예는 첨부 도면에서 예로서 도시된 것이고 제한적인 것은 아니다.
도 1a는 일 실시예에 따른 스케일러블 데이터 구조를 이용할 수 있는 시스템의 도면이다.
도 1b는 일 실시예에 따른 분산형 인덱스 엔진의 컴포넌트의 도면이다.
도 1c는 일 실시예에 따른 분산형 키 값 스토어의 컴포넌트의 도면이다.
도 2는 일 실시예에 따른 스케일러블 데이터 구조의 사용을 예시하는 도면이다.
도 3은 일 실시예에 따라, 분산형 키 값 스토어에서 이용될 수 있는 예시적인 데이터 구조의 도면이다.
도 4는 일 실시예에 따라, 프로파일을 생성하고 인덱싱하는 프로세스의 흐름도이다.
도 5는 일 실시예에 따라, 스케일러블 데이터 구조를 이용하여 프로파일을 검색하는 프로세스의 흐름도이다.
도 6은 본 발명의 실시예를 구현하는데 사용될 수 있는 하드웨어의 도면이다.
도 7은 본 발명의 실시예를 구현하는데 사용될 수 있는 칩 셋의 도면이다.
도 8은 본 발명의 실시예를 구현하는데 사용될 수 있는 이동 단말(예를 들면, 핸드셋)의 도면이다.
도 1a는 일 실시예에 따른 스케일러블 데이터 구조를 이용할 수 있는 시스템의 도면이다.
도 1b는 일 실시예에 따른 분산형 인덱스 엔진의 컴포넌트의 도면이다.
도 1c는 일 실시예에 따른 분산형 키 값 스토어의 컴포넌트의 도면이다.
도 2는 일 실시예에 따른 스케일러블 데이터 구조의 사용을 예시하는 도면이다.
도 3은 일 실시예에 따라, 분산형 키 값 스토어에서 이용될 수 있는 예시적인 데이터 구조의 도면이다.
도 4는 일 실시예에 따라, 프로파일을 생성하고 인덱싱하는 프로세스의 흐름도이다.
도 5는 일 실시예에 따라, 스케일러블 데이터 구조를 이용하여 프로파일을 검색하는 프로세스의 흐름도이다.
도 6은 본 발명의 실시예를 구현하는데 사용될 수 있는 하드웨어의 도면이다.
도 7은 본 발명의 실시예를 구현하는데 사용될 수 있는 칩 셋의 도면이다.
도 8은 본 발명의 실시예를 구현하는데 사용될 수 있는 이동 단말(예를 들면, 핸드셋)의 도면이다.
스케일러블 데이터 구조를 이용하여 사용자 프로파일을 검색하는 방법, 장치 및 컴퓨터 프로그램의 예가 개시된다. 다음의 설명에서, 설명의 목적으로, 본 발명의 실시예의 철저한 이해를 제공하기 위해 다수의 특정 세부사항이 설명된다. 그러나, 본 발명의 실시예가 이들 특정 세부사항없이 또는 균등의 배치로 실행될 수 있다는 것은 당업자에게는 자명하다. 다른 예에서, 본 발명의 실시예를 불필요하게 모호하게 하는 것을 피하기 위해 공지된 구조 및 디바이스는 블록도 형태로 도시되어 있다.
도 1a는 일 실시예에 따라 스케일러블 데이터 구조를 이용할 수 있는 시스템의 도면이다. 네트워크 서비스(특히, 소셜 네트워킹 서비스)에 대한 요구가 증가함에 따라, 예를 들면, 사용자 콘택 데이터, 프로파일 데이터, 및 사용자들의 접속 데이터의 액세스를 적절히 관리할 필요가 최고의 관심사가 되었다. 소셜 네트워크 서비스의 통합 부분은 이들 데이터의 계속적인 검색 및 업데이트이다. 결과적으로, 이들 검색 및 탐색 기능은 더욱더 큰 데이터베이스를 초래하였다. 데이터베이스의 크기, 효율 및 레이턴시는 데이터가 어떻게 저장되는지에 기초하여 제한될 수 있다.
이 문제를 해결하기 위해, 도 1의 시스템(100)은 스케일러블 데이터 구조를 이용하는 능력을 도입한다. 데이터 구조는 사람, 회사, 조직, 그룹 등과 같은 하나 이상의 엔티티에 관한 정보를 저장할 수 있다. 몇몇 실시예에서, 데이터 구조는 액세스 제어 필드, 프로파일 식별자, 프로파일 데이터(예를 들면, 어드레스 데이터, 이메일 데이터, 전화번호 데이터 등과 같은 컨택 정보, 이름 데이터, 다른 식별자, 친구 데이터, 코멘트 데이터와 같은 프로파일과 연관된 다른 데이터, 엔티티에 관한 다른 데이터)와 연관된 하나 이상의 필드, 또는 그들의 조합을 포함할 수 있다. 더욱이, 다른 데이터가 이용될 수 있다. 예를 들면, 액세스 제어 필드는 하나 이상의 엔티티 식별자 또는 식별자가 프로파일 식별자 및 하나 이상의 연관 필드를 액세스한다는 것을 나타내는 다른 식별자와 연관될 수 있다. 임의의 실시예에서, 엔티티 식별자는 사용자, 그룹, 조직 등과 연관된 식별자이다. 사용자 식별자에 대하여 다양한 실시예가 설명되지만, 여기서 설명되는 식별자는 그룹 식별자, 조직 식별자, 멤버 식별자, 고용인 식별자 등을 포함하는 다른 엔티티 식별자와 사용될 수 있다는 것이 예상된다. 또한, 엔티티 또는 엔티티에 속하는 사용자는 엔티티 식별자 또는 엔티티 식별자에 링크되는 또 다른 식별자를 제공함으로써 시스템(100)으로 인증할 수 있다. 환언하면, 사용자 식별자는 사용자 식별자의 사용자와 연관된 다수의 엔티티 식별자(예를 들면, 고용주 식별자, 그룹 식별자 등)에 링크될 수 있다. 하나의 시나리오 하에서, 사용자는, 통신 네트워크(105)를 통해 소셜 서비스 플랫폼(103)과 상호작용하는 자신의 사용자 장비(UE)(101a-101n)를 사용하여 서비스를 이용할 수 있다. UE(101a-101n) 각각은 하나 이상의 애플리케이션(107)을 이용하여 소셜 서비스 플랫폼(103)을 사용함으로써 데이터 구조를 이용하는 엔티티에 관한 정보를 검색할 수 있다.
또한, 일 실시예에서, 데이터 구조의 액세스 제어 필드는 텍스트 인덱싱 버전을 이용하여 인덱싱될 수 있다. 텍스트 인덱싱에서, 변수(예를 들면, 다큐먼트 또는 프로파일)은 참(true)인 변수 내에 포함된 각각의 워드에 기초하여 인덱싱될 수 있다. 예를 들면, 스트링 변수 "this is the first versionm, not the beta version"은 워드 "this", "is", "the", "first", "version", "not", 및 "beta"를 포함한다. 또한, 몇몇 워드들을 여러번 포함할 뿐만 아니라 임의의 공통 워드를 포함한다. 하나의 시나리오에서, 각각의 워드가 사용자 식별자 또는 엔티티 식별자인 액세스 제어 필드가 인덱싱될 수 있다. 더욱이, 데이터 구조는 역 인덱스(inverted index)를 생성하는데 사용될 수 있다. 역 인덱스는 콘텐츠(예를 들면, 사용자 프로파일과 함께 저장된 숫자 및 워드)로부터 데이터베이스 파일, 다큐먼트, 다큐먼트의 세트 등에서의 자신의 위치로의 매핑을 저장할 수 있는 인덱스 데이터 구조이다. 임의의 시나리오에서, 각각의 엔티티 식별자에 대해, 사용자 또는 엔티티의 프로파일과 연관된 데이터의 위치들에 대한 상이한 가시성(visibilities)을 정의하는 다수의 라인(line)이 있다. 부가하여, 데이터 구조를 인덱싱하기 위한 역 인덱스 대신 또는 그에 부가하여 다른 인덱스들(예를 들면, 해시 테이블 데이터 구조 또는 B-트리 인덱스 같은 트리 데이터 구조)이 이용될 수 있다. B-트리는 이진 검색 트리와 유사한 트리 데이터 구조이지만, 하나의 노드로부터 분기하는 하나보다 많은 경로를 갖는 능력이 있다. B-트리 인덱스는 데이터베이스의 세그먼트의 제1 레코드를 포함한다. 따라서, B-트리 인덱스는 데이터 구조의 데이터베이스 중 어떤 세그먼트를 검색할지를 결정하는데 이용될 수 있다. 해시 테이블은 식별자 또는 키(예를 들면, 이름)를 값(예를 들면, 숫자)에 매핑하는데 부가적으로 이용될 수 있다. 그러면, 이 값들은 키를 검색하기 위해 해시를 이용하여 인덱싱될 수 있다. 또한, 해시 인덱싱의 예시적인 구현예의 세부사항이 도 1c에 논의되어 있다.
또한, 서비스 플랫폼(109)은 소셜 서비스 플랫폼(103)과 정기적으로 상호작용할 수 있다. 서비스 플랫폼(109)은 소셜 서비스, 메시징 서비스, 보험 서비스, 소매 서비스, 음악 서비스, 또는 소셜 서비스 플랫폼(103)에 저장된 데이터를 이용할 수 있는 다른 유사한 서비스를 제공할 수 있다. 예를 들면, 서비스들 중 몇몇은 소셜 서비스 플랫폼(103)을 액세스하여 하나 이상의 사용자의 프로파일 데이터를 액세스하고 그 정보를 자신들 각각의 UE(101) 상에 애플리케이션(107)을 이용하여 서비스 플랫폼(109)의 하나 이상의 사용자에게 제공할 수 있다. 더욱이, 서비스 플랫폼(109)의 하나 이상의 서비스는 소셜 서비스 플랫폼(103)을 이용하여 저장된 프로파일 정보를 갖는 엔티티일 수 있다.
소셜 네트워킹 애플리케이션(107)을 이용하는 서비스 또는 사용자는 소셜 서비스 플랫폼(103)으로 요청을 보냄으로써 프로파일을 생성, 관리, 업데이트, 검색, 또는 탐색할 수 있다. 소셜 서비스 플랫폼(103)은 소셜 애플리케이션 프로그래밍 인터페이스(API)(111)를 이용하여 요청을 수신한다. 몇몇 실시예에서, 소셜 API(111)는 하나 이상의 플랫폼(예를 들면, 서버, 컴퓨터, 전자 머신 등) 상에 구현되고, REST(representational state transfer), SOAP, XMPP(Extensible Messaging and Presence Protocol), JavaScript API, 다른 유사한 API, 또는 그들의 조합을 이용할 수 있다. 임의의 실시예에서, 사용자는 XMPP를 통해 서비스 플랫폼(109) 상의 서비스를 콘택하고, 서비스 플랫폼(109)은 UE(101)와 소셜 서비스 플랫폼(103) 간의 매개자로서의 역할을 한다.
예를 들면, 시스템(100)의 통신 네트워크(105)는 데이터 네트워크(도시 생략), 무선 네트워크(도시 생략), 전화 네트워크(도시 생략)와 같은 하나 이상의 네트워크, 또는 그들의 임의의 조합을 포함한다. 데이터 네트워크는 임의의 LAN(local area network), MAN(metropolitan area network), WAN(wide area network), 공공 데이터 네트워크(예를 들면, 인터넷), 또는 상업적으로 소유된 사설 패킷 스위칭 네트워크, 예를 들면, 사설 케이블 또는 광섬유 네트워크와 같은 임의의 다른 적절한 패킷 스위치 네트워크일 수 있다는 것이 예상된다. 부가하여, 무선 네트워크는, 예를 들면, 셀룰러 네트워크일 수 있고, EDGE(enhanced data rates for global evolution), GPRS(general packet radio service), GSM(global system for mobile communications), IMS(Internet protocol multimedia subsystem), UMTS(universal mobile telecommunications system), 등을 포함하는 다양한 기술뿐만 아니라 임의의 다른 적절한 무선 매체, 예를 들면, WiMAX(worldwide interoperability for microwave access), LTE(Long Term Evolution) 네트워크, CDMA(code division multiple access), WCDMA(wideband code division multiple access), WiFi(wireless fidelity), 위성, MANET(mobile ad-hoc network) 등을 이용할 수 있다.
UE(101)는 모바일 터미널, 고정 터미널, 또는 모바일 핸드셋을 포함하는 휴대용 터미널, 스테이션, 유닛, 디바이스, 멀티미디어 컴퓨터, 멀티미디어 태블릿, 인터넷 노드, 커뮤니케이터, 데스크톱 컴퓨터, 랩톱 컴퓨터, PDA(Personal Digital Assistant)의 임의의 유형이거나, 또는 그들의 임의의 조합이다. 또한, UE(101)는 ("착용식" 회로 등과 같은) 사용자에 대한 임의의 유형의 인터페이스를 지원할 수 있다.
예를 들면, UE(101), 서비스 플랫폼(109), 및 소셜 서비스 플랫폼(103)은 공지되거나, 새로운 또는 여전히 개발중인 프로토콜을 이용하여 서로 그리고 통신 네트워크(105)의 다른 컴포넌트와 통신한다. 이 문맥에서, 프로토콜은 통신 네트워크(105) 내의 네트워크 노드들이 통신 링크들을 통해 보내지는 정보에 기초하여 서로 어떻게 상호작용하는지를 정의하는 규칙의 집합을 포함한다. 프로토콜은, 다양한 유형의 물리 신호를 생성하고 수신하는 것에서부터, 이들 신호를 전달하기 위한 링크를 선택하는 것, 이들 신호에 의해 표시되는 정보의 포맷, 컴퓨터 시스템 상에서 실행되는 어떤 소프트웨어 애플리케이션이 정보를 보내거나 수신하는지를 식별하는 것까지 각각의 노드 내의 상이한 동작 계층에서 유효하다. 네트워크를 통해 정보를 교환하기 위한 프로토콜들의 개념적으로 상이한 계층은 OSI(Open Systems Interconnection) 참조 모델에 설명되어 있다.
네트워크 노드들 간의 통신은 전형적으로 데이터의 개별 패킷들을 교환함으로써 유효하게 된다. 각각의 패킷은 전형적으로 (1) 특정 프로토콜과 연관된 헤더 정보, 및 (2) 헤더 정보에 이어지고, 그 특정 프로토콜과 독립적으로 처리될 수 있는 정보를 포함하는 페이로드 정보를 포함한다. 몇몇 프로토콜에서, 패킷은 (3) 페이로드에 이어지고, 페이로드 정보의 끝을 나타내는 트레일러 정보를 포함한다. 헤더는 패킷의 소스, 자신의 목적지, 페이로드의 길이, 및 프로토콜에 의해 사용되는 다른 특성과 같은 정보를 포함한다. 종종, 특정 프로토콜에 대한 페이로드 내의 데이터는 OSI 참조 모델의 상이하고 상위인 계층과 연관된 상이한 프로토콜을 위한 페이로드 및 헤더를 포함한다. 특정 프로토콜에 대한 헤더는 전형적으로 자신의 페이로드에 포함되는 다음 프로토콜에 대한 유형을 나타낸다. 상위 계층의 프로토콜은 하위 계층의 프로토콜 내에 인캡슐레이팅된다고 말한다. 인터넷과 같은 패킷 트래버싱 다중의 이종 네트워크(packet traversing multiple heterogeneous network)에 포함되는 헤더는 전형적으로 물리(계층 1) 헤더, 데이터-링크(계층 2) 헤더, 인터넷워크(계층 3) 헤더 및 트랜스포트(계층 4) 헤더, 및 OSI 참조 모델에 의해 정의되는 다양한 애플리케이션 헤더(계층 5, 계층 6, 및 계층 7)을 포함한다.
일 실시예에서, 소셜 네트워킹 애플리케이션(107) 및 소셜 서비스 플랫폼(103)은 클라이언트-서버 모델에 따라 상호작용한다. 클라이언트-서버 모델에 따라, 클라이언트 프로세스는 요청을 포함하는 메시지를 서버 프로세스로 보내고, 서버 프로세스는 서비스를 제공하는 것으로 응답한다. 서버 프로세스는 또한 응답을 갖는 메시지를 클라이언트 프로세스로 리턴할 수 있다. 종종, 클라이언트 프로세스 및 서버 프로세스는 상이한 컴퓨터 디바이스들 상에서 실행되고, 호스트들을 호출하고, 네트워크 통신을 위한 하나 이상의 프로토콜을 이용하여 네트워크를 통해 통신한다. 용어 "서버"는 일반적으로 서비스를 제공하는 프로세스, 또는 프로세스가 동작하는 호스트 컴퓨터를 지칭하는 것으로 사용된다. 유사하게, 용어 "클라이언트"는 일반적으로 요청을 하는 프로세스, 또는 프로세스가 동작하는 호스트 컴퓨터를 지칭하는 것으로 사용된다. 여기서 사용되는 바와 같이, 용어 "클라이언트" 및 "서버"는, 문맥상 명백히 달리 지정하지 않는다면, 호스트 컴퓨터보다는 프로세스를 지칭한다. 부가하여, 서버에 의해 수행되는 프로세스는, 특히, 신뢰성, 스케일러빌리티(scalability), 및 리던던시를 포함한다는 이유로 다수의 호스트 상에서 다수의 프로세스(종종 층(tiers)으로 불림)로서 실행하도록 분리될 수 있다.
하나의 시나리오 하에서, 소셜 API(111)는 프로파일을 생성하는데 요구되는 정보를 수집하고 분산형 키 값 스토어(113)를 이용하여 프로파일을 저장할 수 있다. 분산형 키 값 스토어(113)에 대해 다양한 실시예가 설명되지만, 여기서 설명되는 접근법은 다른 데이터베이스(예를 들면, 데이터베이스 관리 시스템의 제어 하의 분산형 데이터베이스, 여기서 스토리지 디바이스는 공통 프로세서 또는 비분산형 데이터베이스에 모두 부착되는 것은 아님)와 함께 사용될 수 있다는 것이 예상된다. 프로파일을 생성하는데 요구되는 정보는 하나 이상의 인증 정보(예를 들면, 사용자 이름 및 패스워드), 사용자 식별자, 프로파일과 연관된 서비스, 하나 이상의 프로파일 필드에 대한 프로파일 데이터 등을 포함할 수 있다. 소셜 API(111) 및/또는 분산형 키 값 스토어(113)는 분산형 인덱스 엔진(115)에게 프로파일의 생성을 통지할 수 있다.
분산형 인덱스 엔진(115)은 프로파일 내의 정보를, 그 프로파일과 연관될 수 있는 데이터 구조의 인덱스에 부가할 수 있다. 인덱싱되면, 프로파일은 데이터 구조를 통해 액세스 제어를 구현하는 동안 이롭게도 검색될 수 있다. 임의의 시나리오 하에서는 모든 프로파일이 인덱싱되고, 다른 시나리오에서는 프로파일의 단지 일부(예를 들면, 텍스트 부분)만이 인덱싱된다. 그러나, 데이터 구조는 이러한 인덱싱되지 않은 정보를 위한 위치 마커(place marker)를 포함할 수 있다. 전술한 바와 같이, 인덱스는 프로파일 내의 파라미터 세트(예를 들면, 연관 서비스, 컨택 리스트, 영역과 같은 지역 또는 프로파일과 연관된 어드레스 등)에 기초하여 프로파일과 연관될 수 있다. 인덱스는 데이터 구조의 하나 이상의 인스턴스를 포함할 수 있다. 소셜 서비스 플랫폼(103)에 의해 이용될 수 있는 데이터 구조의 예시적인 인덱스는 도 2에 상세히 도시되어 있다. 또한, 분산형 인덱스 엔진(115)은 인덱스와 연관된 데이터 필드를 업데이트하는데 이용될 수 있다.
도 1b는 일 실시예에 따른 분산형 인덱스 엔진(115)의 컴포넌트의 도면이다. 예를 들면, 분산형 인덱스 엔진(115)은 서비스를 인덱싱하고 검색하여 소셜 서비스 플랫폼(103)의 사용자에게 제공하는 하나 이상의 컴포넌트를 포함한다. 이들 컴포넌트의 기능은 하나 이상의 컴포넌트에 결합될 수 있거나 또는 등가의 기능을 갖는 다른 컴포넌트에 의해 수행될 수 있다. 이 실시예에서, 분산형 인덱스 엔진(115)은 하나 이상의 인덱스 엔진(120a-120n)을 포함하며, 이들 인덱스 엔진 각각은 질의에 기초하여 정보를 인덱싱 및/또는 검색 및 탐색하는데 이용될 수 있다. 각각의 인덱스 엔진(120)은 API(121), 데이터 구조의 인덱스를 저장, 검색 및 이용하기 위한 메모리, 인덱스를 생성, 검색 및 업데이트하기 위한 인덱싱 모듈(125), 및 분산형 키 값 스토어(113)로부터 정보를 검색하는데 이용되는 스토리지 인터페이스(127)를 포함할 수 있다.
임의의 실시예에서, 분산형 인덱스 엔진(115)은 컴퓨팅 클라우드를 이용하여 구현될 수 있다. 따라서, 분산형 인덱스 엔진(115)은 상이한 지리적 위치에 대응하는 인덱스 엔진(120)을 포함할 수 있다. 인덱스 엔진(120)은 소셜 서비스 플랫폼(103) 외부의 클라이언트 및 서비스와 인터페이싱할 수 있는, 예를 들면, 소셜 API(111)와 통신하는데 사용되는 API(121)를 포함할 수 있다. 임의의 시나리오 하에서, API(121)는 소셜 API(111)의 사용없이 클라이언트 및 서비스와 직접 통신할 수 있거나 또는 API(121)는 소셜 API(111)를 포함할 수 있다.
임의의 시나리오에서, 스토리지 인터페이스(127)는 분산형 키 값 스토어(113)에 생성되고 저장된 프로파일을 인덱싱하기 위한 요청을 수신하도록 분산형 키 값 스토어(113)와 상호작용할 수 있다. 인덱스 엔진(120)이 프로파일을 인덱싱하라는 요청을 수신하는 경우, 인덱스 엔진(120)의 인덱싱 모듈(125)은 프로파일에 대한 하나 이상의 데이터 구조를 인스턴스화(instantiate)할 수 있고, 데이터 구조 인스턴스를 메모리(123) 내의 연관된 인덱스에 부가할 수 있는데, 이것은 도 4의 프로세스에서 더 상세히 설명된다. 전술한 바와 같이, 데이터 구조는 액세스 제어 필드 및 데이터 필드를 포함할 수 있다. 임의의 실시예에서, 데이터 구조가 인덱스에 부가되면, 인스턴스화된 데이터 구조는 다른 인덱스 엔진과 통신하여 복제(replicated) 인덱스를 업데이트한다. 하나보다 많은 인덱스가 존재하기 때문에, 특정 인덱스 엔진(120a)이 과부하되거나 장애가 발생하면, 부하는 다른 인덱스 엔진(예를 들면, 인덱스 엔진(120n)으로 분산될 수 있다.
또한, 스토리지 인터페이스(127)는 하나 이상의 인터페이스를 이용하여 분산형 키 값 스토어(113)와 통신할 수 있다. 예를 들면, 스토리지 인터페이스(127)는 특정 프로파일을 사용하여 인덱스를 생성하기 위한 새로운 프로파일에 관한 데이터를 수신하고, 또 다른 인터페이스를 이용하여 저장된 정보를 검색할 수 있다. 예를 들면, 저장된 정보를 검색하기 위해, 스토리지 인터페이스(127)는 겟 커맨드(get command), 풋 커맨드(put command), 삭제 커맨드(delete command) 및 스캔 커맨드(scan command)를 이용하는 간단한 인터페이스를 이용할 수 있다. 대안으로 또는 부가하여, 스토리지 인터페이스(127)는 또 다른 API를 이용하여, 통신을 간단한 인터페이스로 변환할 수 있는 분산형 키 값 스토어(113)와 통신할 수 있다.
도 1c는 일 실시예에 따른 분산형 키 값 스토어(113)의 컴포넌트의 도면이다. 예를 들면, 키 값 스토어(113)는 인덱싱, 저장, 검색 및 탐색될 수 있는 데이터의 스토리지를 제공하는 하나 이상의 컴포넌트를 포함한다. 따라서, 새로운 프로파일이 분산형 키 값 스토어(113)에 저장될 수 있다. 이들 컴포넌트의 기능은 하나 이상의 컴포넌트에서 결합되거나 또는 동일한 기능의 다른 컴포넌트에 의해 수행될 수 있다는 것이 예상된다. 또한, 데이터베이스의 다른 형태가 분산형 키 값 스토어(113)를 대신하여 또는 그에 부가하여 이용될 수 있다는 것이 예상된다. 본 실시예에서, 분산형 키 값 스토어(113)는 서버(143)와 통신하는데 사용될 수 있는 클라이언트 라이브러리(141), 및 데이터베이스(145a-145n)를 포함한다.
인덱스 엔진(120a-120n) 및 소셜 API(111)의 스토리지 인터페이스(127)는 클라이언트 라이블러리(141)를 이용하여 분산형 키 값 스토어(113)와 통신할 수 있다. 임의의 실시예에서, 인덱스 엔진(120a-120n) 및 소셜 API(111)는 분산형 키 값 스토어(113)로부터 데이터베이스 서비스를 수신하는 클라이언트로 고려될 수 있다. 클라이언트 라이브러리(141)는 데이터베이스(145)로부터 콘텐츠를 검색하기 위해 어떤 서버(143)가 통신할 수 있는지를 결정할 수 있는 인터페이스를 포함할 수 있다. 임의의 실시예에서, 데이터베이스(145)는 키 및 그 키를 이용하여 저장할 수 있는 값 메커니즘을 이용하여 저장된다. 각각의 데이터베이스의 부분(예를 들면, 부분 A-I)은 키로 링크될 수 있다. 일 실시예에서, 키는 키의 어떤 부분이 링크되는지를 결정하기 위해 해싱된다. 키는 예를 들면, 링 방법을 이용하여 해싱될 수 있다. 링을 사용하여, 각각의 키 및 부분은 (예를 들면, 번호 k로 해싱되는 식별자를 갖는 키에 기초하여) 제1 위치뿐만 아니라 하나 이상의 백업 위치로 해싱될 수 있다. 백업 위치는 해시와 연관된 다음 서버 또는 호스트와 연관된 위치일 수 있다. 클라이언트 라이브러리(141)는 어떤 서버(143)가 키 해시를 이용하여 정보를 판독하고 기록할지를 결정한다. 클라이언트 라이브러리(141) 및 서버(143)는 각각 어떤 부분이 어떤 서버(143)에 속한다는 것을 포함하는 룩업 테이블을 포함할 수 있다.
임의의 실시예에서, 부분(예를 들면, 부분 A(147a-147c)는 다수의 데이터베이스(145)를 통해 다수의 서버를 사용하여 저장될 수 있다. 일 구현예에서, 부분들은 리던던시, 장애극복(failover)을 위해 그리고 레이턴시(latency)를 줄이기 위해 서버 및 데이터베이스(145)의 n개의 번호에 걸쳐 복제될 수 있다(예를 들면, 복제=3). 더욱이, 부분들은 클라이언트 라이브러리(141)에 의해 동시에 기록되고 판독될 수 있다. 데이터베이스(145)로부터 판독할 때, 클라이언트 라이브러리는 임의의 일관성 이슈(예를 들면, 부분(147a)이 부분(175b)와 정합하지 않음)가 있는지 결정할 수 있다. 더욱이, 임의의 실시예에서, 예시적인 스토리지 기법은, 기록 또는 판독을 수행할 때, 성공적으로 기록하거나 판독되도록 부분들의 적어도 임의의 수(예를 들면, 요구 기록=2, 요구 판독=2 등)가 필요하다는 것을 요구할 수 있다. 이것은 리던던시 및 정족수 일관성을 가능하게 한다. 데이터베이스(145a)가 실패하거나 또는 무능해지면, 데이터베이스(145a)와 연관된 부분(147a)은, 복제 부분(147a, 147c)을 갖는 서버(143)에 의해 포함해야하는 콘텐츠와 함께 나중에 업데이트될 수 있다.
소셜 API(111)는 새로운 프로파일이 분산형 키 값 스토어(113)에 저장되어야 한다는 것을 요청할 수 있다. 새로운 프로파일에는 그 새로운 파일과 연관된 계정 식별자에 기초한 키가 할당될 수 있다. 다음에, 키는 새로운 파일을 저장하기 위한 부분(예를 들면, 부분 A(147))을 결정하도록 해싱될 수 있다. 다음에, 프로파일은 제1 데이터베이스뿐만 아니라 백업 데이터베이스에 저장된다. 프로파일은 키와 연관된 값으로 고려될 수 있다. 프로파일을 나중에 검색하기 위해, 키의 해시는 부분과 연관된 서버로부터 프로파일을 요청하는데 사용될 수 있다. 다음에, 키는 프로파일에 대한 부분을 검색하는데 사용될 수 있다. 프로파일이 분산형 키 값 스토어(113)에 저장되면, 클라이언트 라이브러리(141)는 인덱스 엔진(120)에게 프로파일이 인덱스에 부가될 것이라는 것을 통지한다.
인덱스가 생성되고 프로파일이 분산형 키 값 스토어(113)에 저장되면, 소셜 API(111)는 UE(101) 또는 서비스로부터 질의를 수신하여, 인덱스 엔진(120)이 사용자 식별자 및 요청된 콘텐츠에 기초하여 정보를 검색하고 탐색할 수 있게 한다. 그러면, 인덱스 엔진(120)은 질의와 연관된 인덱스를 검색하고 액세스 제어 필드에서 사용자 식별자에 대한 인덱스를 검색할 수 있다. 검색은 텍스트 기반 검색일 수 있다. 또한, 요청된 콘텐츠는, 질의가 관심이 있거나 그 질의가 관심이 있는 콘텐츠의 유형(예를 들면, 기본 프로파일 정보)인 프로파일들의 하나 이상의 프로파일 식별자들을 지정할 수 있다. 분산형 인덱스 엔진(115)은 요청된 콘텐츠를 소셜 API(111)로 리턴한다. 콘텐츠를 검색하기 위한 프로세스가 도 2 및 도 5의 프로세스에 더 상세히 설명되어 있다.
도 2는 일 실시예에 따른 스케일러블 데이터 구조(200)의 사용을 예시하는 도면이다. 데이터 구조는 액세스 제어 필드(201), 프로파일 식별자(ID)(203), 기본 프로파일(205), 확장 프로파일(207a-207n) 및 콘택 정보(209)와 같은 데이터 필드를 포함할 수 있다. 전술한 바와 같이, 액세스 제어 필드는 하나 이상의 사용자 식별자(예를 들면, 사용자 식별자 1-5), 유니버설 사용자 식별자* 등)와 연관될 수 있다. 임의의 실시예에서, 데이터 구조는 액세스 제어 필드(201) 내의 엔티티 식별자(예를 들면, 사용자 식별자)가 프로파일 ID(203)와 단지 한번 연관되게 할 수 있다. 몇몇 시나리오에서, 프로파일 ID(203)는 콘텐츠fmf 사용자 또는 엔티티 프로파일과 연관시키는데 사용될 수 있는 세계적으로 고유한 식별자이다. 부가하여, 사용자 식별자는 질의를, 프로파일을 갖거나 갖지 않을 수 있는 특정 사용자와 연관시키는 식별자일 수 있다. 액세스 제어 필드는 어떤 사용자 또는 엔티티 식별자가 프로파일과 연관된 사용자와 관련하여 친구, 가족, 동료, 친지, 원 웨이 팔로워(one way follower), 고용인, 멤버 등과 같은 컨택 또는 접속일 것으로 고려되는 것에 기초할 수 있다. 사용자는 이들 접속을 소셜 네트워킹 애플리케이션(107) 및 소셜 API(111)를 통해 입력할 수 있다.
액세스 제어 필드(201)를 사용하여 다수의 액세스 레벨이 제공될 수 있다. 예를 들면, 프로파일 ID1은 액세스 제어 권한에 기초하여 상이한 콘텐츠 액세스를 상이한 사용자 식별자에게 가능하게 할 수 있다. 이 예에서, 사용자 식별자 2, 3, 및 4는 프로파일 ID 1의 기본 프로파일(205), 확장 프로파일(207a 및 207n), 및 콘택 정보(209)로의 액세스가 허여된다. 이 액세스는 그룹의 상태(예를 들면, 각자가 친구로 고려됨) 때문에 제공될 수 있다. 그러나, 사용자 식별자 5는 그 사용자 식별자 5가 친지로 고려되기 때문에 기본 프로파일(205) 및 제1 확장 프로파일(207)로의 액세스만 할 수 있다. 게스트 사용자를 포함하는 모든 사용자는 프로파일 ID 1의 기본 프로파일(205)에 액세스할 수 있다. 프로파일 ID(203)와 연관된 사용자 또는 엔티티는 프로파일을 생성하는 동안 또는 프로파일을 업데이트함으로써 이들 액세스 제어를 결정할 수 있다. 프로파일 ID 1의 경우, 인덱스 엔진(120)는 프로파일 ID 1을 인덱스에 부가할 때 세 개의 데이터 구조(211, 213, 215)(행으로 도시됨)를 생성한다. 데이터 구조(211, 213, 215) 각각은 데이터를 표시한 필드에 데이터를 포함할 수 있다. 임의의 실시예에서, 이 데이터는 검색가능하다. 또한, 프로파일 ID 2는 그와 연관된 두 개의 데이터 구조(217, 219)를 가질 수 있고, 프로파일 ID 3은 그와 연관된 단지 하나의 데이터 구조(221)를 가질 수 있으며, 각각은 임의의 정보로의 액세스를 가능하게 하는 액세스 제어 필드를 갖는다. 하나의 시나리오 하에서, 프로파일 ID 3의 데이터 구조(221)는 게스트 사용자에게 제공될 수 있는 임의의 정보를 포함하지 않고, 단지 사용자 식별자 4에 대한 기본 프로파일 데이터로의 액세스를 가능하게 한다. 더욱이, (행으로 표시된) 각각의 데이터 구조는 어떤 엔티티가 (예를 들면, 엔티티 식별자 또는 사용자 식별자를 통해) 특정 데이터 구조 행으로 액세스하는지를 결정하기 위해 액세스 제어(201) 필드를 사용하여 인덱싱될 수 있다.
하나의 시나리오 하에서, 소셜 API(111)는 인덱스에 대해 실행될 질의를 요청하는 사용자 또는 서비스로부터의 요청을 수신한다. 소셜 API(111)는 사용자 식별자가 질의와 연관되는 것으로 결정하기 위해 사용자 또는 서비스를 인증할 수 있다. 임의의 실시예에서, 서비스 또는 사용자는 게스트로서 로그인하고 게스트 지위를 수신한다. 다른 실시예에서, 사용자 이름 및 패스워드가 사용자 식별자에 매핑된다. 사용자의 인증은 또한 또 다른 서비스를 통해 통과될 수 있다. 사용자 또는 서비스는 그 사용자 또는 서비스가 검색하고자 하는 콘텐츠를 질의에서 특정할 수 있다.
일 실시예에서, 사용자는 사용자가 검색할 수 있는 모든 정보에 대해 검색 질의를 개시할 수 있다. 소셜 API(111)는 질의에 대한 사용자 식별자가 사용자 식별자 4라는 것을 결정한다. 질의는 분산형 인덱스 엔진(115)으로 통과되고, 데이터 구조(200)의 인덱스에 대해 검색을 시작한다. 분산형 인덱스 엔진(115)은 사용자 식별자 4가 프로파일 ID 1의 기본 프로파일(205), 제1 확장 프로파일(207a), 제2 확장 프로파일(207n), 및 콘택 정보(209)뿐만 아니라, 프로파일 ID 2의 기본 프로파일(205), 제1 확장 프로파일(207a), 및 콘택 정보(209), 및 프로파일 ID 3의 기본 프로파일(205)을 액세스한다고 결정한다. 이 데이터는 사용자로의 전송을 위해 소셜 API(111)에 값으로서 리턴될 수 있다. 또 다른 시나리오에서, 질의에 대한 사용자 식별자는 사용자 식별자 5이다. 분산형 인덱스 엔진(115)은 데이터 구조(213 및 219)에 포함된 정보를 리턴한다. 분산형 인덱스 엔진(115)은, 사용자 식별자가 기껏해야 프로파일 ID 1에 대한 데이터 구조(213)를 액세스하고 적어도 프로파일 ID 2에 대한 게스트 레벨 액세스(모든 요청자들에게 허여된 액세스)를 하지만, 프로파일 ID 3에 대한 액세스는 하지 않기 때문에 이 데이터를 리턴할 수 있다. 선택적으로, 질의를 형성하는 사용자 또는 서비스는 질의가 단지 사용자가 단순히 공공 액세스를 하기보다는 고레벨 액세스(예를 들면, 친구 액세스, 친지 액세스, 동료 액세스 등)을 갖는 프로파일을 통해 검색하는 것을 요청할 수 있다.
임의의 시나리오에서, 요청된 콘텐츠는 키워드와 같은 하나 이상의 검색 용어를 포함할 수 있다. 이들 시나리오에서, 프로파일 ID(203), 기본 프로파일(205), 확장 프로파일(207), 및 콘택 정보(209)는 간단하고 가능하게 검색가능하다. 분산형 인덱스 엔진(115)은 검색 용어에 대한 콘텐츠 필드(203, 205, 207, 209)를 검색할 수 있다. 대안으로, 또는 부가적으로, 콘텐츠 필드(203, 205, 207, 209)와 연관된 데이터는 분산형 키 값 스토어(113) 또는 다른 검색불가능 콘텐츠로의 포인터(예를 들면, 키)를 포함할 수 있다. 몇몇 실시예에서, 질의가 액세스하는 프로파일 정보만 검색된다. 이것은 프로파일 정보를 검색할 때 낮은 레이턴시를 가능하게 한다. 또한, 이 방법은 수많은 검색 및 거대한 양의 인덱스 콘텐츠가 그 검색에 포함되게 할 수 있다.
도 3은 일 실시예에 따라 분산형 키 값 스토어에 이용될 수 있는 예시적인 데이터 구조의 도면이다. 더욱이, 데이터 구조(300)의 부분들이 인덱스에 이용될 수 있다. 데이터 구조(300)는 프로파일 ID 또는 계정 ID와 연관될 수 있는 키(301)를 특정할 수 있다. 키(301)는 분산형 키 스토어(113)로부터 프로파일을 검색하는데 사용될 수 있다. 또한, 키(301)는 기본 프로파일(305), 제1 확장 프로파일(307), 및 다른 콘텐츠 필드를 포함하는 값(303)과 연관된다. 더욱이, 값은 인덱스에 포함되지 않을 수 있는 정보를 부가적으로 포함할 수 있다. 예를 들면, 제3 확장 프로파일(309)은 검색될 수 없고 따라서 인덱스에 저장될 필요가 없는 픽처 데이터(311)를 포함할 수 있다. 따라서, 인덱스 내의 제3 확장 프로파일(309)은 분산형 인덱스 엔진(115)에게 콘텐츠가 분산형 키 값 스토어(113)에서 이용가능하다는 것을 통지하는 플래그 또는 다른 데이터를 포함할 수 있다.
도 4는 일 실시예에 따라, 프로파일을 생성하고 인덱싱하는 프로세스의 흐름도이다. 일 실시예에서, 소셜 API(111) 및 분산형 인덱스 엔진(115)은 프로세서(400)를 실행하고, 예를 들면, 도 7에 도시된 바와 같이, 프로세서와 메모리를 포함하는 칩셋에 구현된다. 따라서, 소셜 API(111) 및/또는 분산형 인덱스 엔진(115)은 프로세스(400)의 단계 및/또는 여기서 설명되는 다른 프로세스를 수행하기 위한 수단을 제공할 수 있다. 단계(401)에서, 소셜 API(111)는 클라이언트(예를 들면, 서비스, 사용자, 엔티티 등)로부터 프로파일을 생성하기 위한 요청을 수신한다. 다음에, 소셜 API(111)은 사용자가 사용자의 인증을 제공하여 인증 신임장을 요청함으로써 프로파일을 계정에 연관시키도록 요청할 수 있다. 다음에, 사용자는 신임장을 보내고 소셜 API(111)는 그 신임장을 수신하며, 소셜 API(111)는 프로파일의 사용자 생성기의 인증을 유효화할 수 있다(단계 403).
다음에, 단계(405)에서, 소셜 API는, 액세스 제어 필드, 사용자 식별자, 및 다른 데이터 필드를 포함할 수 있는 프로파일을 생성할 수 있다. 소셜 API(111)는 무슨 정보가 프로파일에 저장되어야 하는지에 대한 부가 정보를 위해 사용자에게 질의할 수 있다. 사용자는 데이터 필드 및 프로파일로의 다른 커스터마이즈가능(customizable) 데이터를 입력할 수 있다. 프로파일을 완성하는데에는 다수의 질의 횟수가 필요할 수 있다. 다음에, 단계(407)에서, 소셜 API(111)는 도 1b 및 도 1c의 설명에서 설명된 바와 같이 분산형 키 값 스토어(113)에 프로파일을 저장할 수 있다.
프로파일이 저장되면, 소셜 API(111)는, 적어도 부부적으로, 분산형 인덱스 엔진(115)이 인덱스 구조에 프로파일을 인덱싱하도록 할 수 있다(단계 409). 분산형 인덱스 엔진(115)은 프로파일을 인덱스에 부가할 수 있다. 프로파일은 하나 이상의 사용자 입력에 기초하여, 프로파일의 연관성(예를 들면, 위치, 연관된 서비스, 콘택 접속 등)에 기초하여 인덱스와 연관될 수 있다. 다음에, 프로파일과 연관된 하나 이상의 필드가 사용자에 의해 설정될 수 있는 액세스 제어 피처(feature)에 기초하여 인덱싱된다. 액세스 제어 필드(201)는 임의의 사용자가 검색 및/또는 탐색할 수 있는 정보를 분리하는데 이용될 수 있다. 각각의 분리된 그룹에 대해 새로운 데이터 구조가 인스턴스화될 수 있다. 임의의 실시예에서, 사용자는 (예를 들면, 프로파일 ID(203)에 기초하여) 주어진 프로파일에 대해 인스턴스화된 데이터 구조들 중 기껏해야 하나에 위치된다. 부가하여, 인스턴스화된 데이터 구조(예를 들면, 데이터 구조(215))는 공공(예를 들면, 게스트, 모든 사용자 등)에게 액세스가능할 수 있다.
또한, 단계(411)에서, 프로파일 및 인덱스 구조가 업데이트될 수 있다. 사용자는 단계(401) 내지 (407)에 설명된 바와 같이 사용자의 프로파일을 생성하는 것 대신 인증 및 업데이트할 수 있다. 프로파일이 업데이터되면, 분산형 인덱스 엔진(115)은 변경된 프로파일에 기초하여 인덱스를 업데이트하는 것을 시작하게 할 수 있다. 프로파일에 대한 변경은, 액세스 제어 리스트를 통해 임의의 엔티티로의 액세스를 부가하거나 제거하는 것, 콘텐츠를 부가하거나 빼는 것, 임의의 엑새스 제어 필드 그룹에서 사용자들에게 이용가능한 콘텐츠를 수정하는 것, 인스턴스화된 데이터 구조를 부가하거나 빼는 것, 인스턴스화된 데이터 구조를 결합하는 것, 그들의 조합 등을 포함할 수 있다.
도 5는 일 실시예에 따라 검색 프로파일에 대한 스케일러블 데이터 구조를 이용하기 위한 프로세스의 흐름도이다. 일 실시예에서, 분산형 인덱스 엔진(115)은 프로세스(500)를 수행하고, 예를 들면, 도 7에 도시된 바와 같이, 프로세서와 메모리를 포함하는 칩셋에 구현된다. 따라서, 분산형 인덱스 엔진(115)은 프로세스(500)과 연관된 단계들을 구현하기 위한 수단일 수 있다. 단계(501)에서, 분산형 인덱스 엔진(115)은 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신한다. 사용자는 요청된 콘텐츠를 입력함으로써 키워드 검색을 시작할 수 있고, 사용자 식별자를 검색 질의에 포함할 수 있다. 전술한 바와 같이, 질의는 소셜 API(111)를 경유하여 UE(101) 또는 서비스로부터 수신될 수 있다. 엔티티 식별자(예를 들면, 사용자 식별자)는 요청하는 사용자를 특정할 수 있고, 인증 프로세스를 통해 소셜 API(111)을 경유하여 얻어질 수 있다. 인증 프로세스는 사용자 이름 및 패스워드, 토큰, 또는 사용자 식별자에 대한 다른 인증 메커니즘을 연관시키는 것을 포함할 수 있다. 요청된 콘텐츠는 하나 이상의 필드 이름(예를 들면, 액세스 제어(201), 프로파일 ID(203), 기본 프로파일(205), 확장 프로파일(207a-207n), 콘택 정보(209) 등)을 포함할 수 있거나, 또는 필드에 제공될 수 있는 하나 이상의 검색 용어를 포함할 수 있다.
다음에, 단계(503)에서, 분산형 인덱스 엔진(115)은, 적어도 부분적으로, 데이터 구조의 프로파일 인덱스의 사용자 식별자에 기초하여 검색을 야기하며, 각각의 데이터 구조는 액세스 제어 필드(201)와 연관된 프로파일 필드를 특정하여 검색 결과를 산출한다. 따라서, 분산형 인덱스 엔진(115)은 단계(503)를 구현하기 위한 수단을 제공할 수 있다. 데이터 구조는 프로파일 필드(예를 들면, 프로파일 ID(203), 기본 프로파일(205), 확장 프로파일(207a-207n), 콘택 정보(209) 등) 및 액세스 제어 필드(201)를 또한 포함할 수 있다. 검색은 사용자 식별자를 인덱스의 액세스 제어 필드(201)에 비교함으로써 사용자 식별자에 대한 요청 콘텐츠에 액세스 권한을 표시함으로써 시작할 수 있다. 따라서, 분산형 인덱스 엔진(115)은 사용자 식별자에 대한 요청 콘텐츠에 액세스 권한을 표시하기 위한 수단을 제공한다. 또한, 요청 콘텐츠는 키워드와 같은 검색어를 포함할 수 있다. 검색어(또는 하나보다 많은 용어)에 대한 텍스트형식의 검색은 사용자 식별자가 액세스하는 임의의 데이터 구조의 프로파일 필드 상에서 실행될 수 있다. 이러한 텍스트형식의 검색은 액세스 제어 필드에 기초하여 사용사를 검색하기 위한 반전 인덱스 또는 또 다른 인덱스(예를 들면, 해시 또는 B-트리)를 전개하고 저장하는 것을 통해 구현될 수 있다. 반전 인덱스 액세스 제어 필드는, 게스트 또는 "*" 식별자를 포함할 수 있는 하나 이상의 사용자 식별자와 연관된 "워드"를 포함할 수 있다. 따라서, 반전 인덱스는 사용자 식별자가 액세스하는 데이터의 행을 빠르게 찾을 수 있다. 또한, 이것은 사용자 모두 액세스하고 텍스트형식의 검색의 일부인 검색 결과를 산출할 수 있다. 이 방식에서, 텍스트형식의 검색은 정상적인 검색의 사이드 효과(side effect)로서 액세스 제어를 구현하는데 사용된다.
더욱이, 단계(507)에서, 요청 콘텐츠는 액세스 권한에 기초하여 검색될 수 있다. 전술한 바와 같이, 분산형 인덱스 엔진(115)은 단계(507)를 구현하기 위한 수단을 제공할 수 있다. 임의의 실시예에서, 요청 콘텐츠는 프로파일 내에서 인덱싱되지 않은 정보가 요청된다는 것을 나타낼 수 있다. 데이터 구조는 연관된 콘텐츠가 있지만, 그 콘텐츠는 풀(full) 프로파일에 저장되어 있다는 것을 나타내는 데이터(예를 들면, 플래그 또는 포인터)를 제공할 수 있다. 따라서, 콘텐츠는, 프로파일에 대한 요청을 생성하고, 적어도 부분적으로, 분산형 키 값 스토어(113)에 요청을 전송하기 위해, 키 식별자로서 요청 콘텐츠의 프로파일 ID(203)를 사용하여 분산형 키 값 스토어(113)로부터 검색된다. 다음에, 프로파일이 검색되고 전달될 수 있다. 다른 실시예에서, 요청 콘텐츠는, 인덱스로부터 직접 검색될 수 있는 하나 이상의 프로파일 필드일 수 있다. 임의의 시나리오에서, 요청 콘텐츠는 인게스로부터 또는 프로파일로부터의 데이터 구조(300)일 수 있다. 다음에, 단계(509)에서와 같이, 요청 콘텐츠는, 적어도 부분적으로, 소셜 API(111)를 경유하여 요청자에게 전송된다.
상기 접근법 및 예는 이롭게도 스케일러블한 데이터 구조의 사용을 상세히 설명한다. 데이터 구조는 상기 인덱싱 접근법을 이용하여 낮은 레이턴시 검색을 부가적으로 제공할 수 있다. 이것은 데이터 구조의 인덱스에 텍스트 검색가능 프로파일 필드와 결합하여 액세스 제어 필드를 저장하는 것을 통해 구현될 수 있다. 또한, 인덱스는 데이터 구조와 연관된 고유 프로파일 ID를 사용하여 분산형 데이터 스토어(예를 들면, 도 1의 스토어)로부터 콘텐츠를 빠르게 검색함으로써 더 많은 데이터 콘텐츠를 포함하도록 확장될 수 있다. 더욱이, 데이터 구조가 분산형 아키텍처에서 사용될 수 있기 때문에, 데이터 구조를 사용하여 저장된 정보의 사용의 이용가능성이 상당히 이용가능하다. 이 기능은 데이터를 포함하는 다수의 부분이 다수의 물리적 머신에 걸쳐 확산되기 때문에 구현될 수 있다.
스케일러블 데이터 구조를 이용하기 위해 여기서 설명된 프로세스는 소프트웨어, 하드웨어(예를 들면, 일반적인 프로세서, DSP(Digital Signal Processing) 칩, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Arrays) 등), 펌 웨어 또는 그들의 조합을 통해 이롭게도 구현될 수 있다. 설명된 기능을 수행하기 위한 이러한 예시의 하드웨어는 이하에서 구체화된다.
도 6은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(600)을 도시한다. 컴퓨터 시스템(600)이 특정 디바이스 또는 장비에 대하여 도시되어 있지만, 도 6 내의 다른 디바이스 또는 장비(예를 들면, 네트워크 구성요소, 서버 등)이 시스템(600)의 도시된 하드웨어 및 컴포넌트를 배치할 수 있다는 것이 예상된다. 컴퓨터 시스템(600)은 여기서 설명된 바와 같은 스케일러블 데이터 구조를 이용하도록 (예를 들면, 컴퓨터 프로그램 코드 또는 명령어를 통해) 프로그래밍되고, 컴퓨터 시스템(600)의 다른 내부 컴포넌트와 외부 컴포넌트 간 정보를 통과시키기 위한 버스(610) 같은 통신 메커니즘을 포함한다. (소위 데이터로 불리는) 정보는 측정가능한 현상, 전형적으로는 전기 전압의 물리적 표현으로 표현되지만, 다른 실시예에서, 자기, 전자기, 압력, 화학적, 생물학적, 분자, 원자, 소립자 및 양자 상호작용과 같은 현상을 포함한다. 예를 들면, 남북 자기장, 또는 제로 및 비제로 전기 전압은 이진수(비트)의 두 개의 상태(0, 1)을 나타낸다. 다른 현상은 더 높은 베이스의 디지트를 나타낼 수 있다. 측정 전 다수의 동시 양자 상태의 중첩(superposition)은 양자 비트(qubit)를 나타낸다. 하나 이상의 디지트의 시퀀스는 숫자 또는 문자를 위한 코드를 나타내는데 사용되는 디지털 데이터를 구성한다. 몇몇 실시예에서, 아날로그 데이터로 불리는 정보는 특정 범위 내의 측정가능한 값의 근접 연속체(near continuum)에 의해 표시된다. 컴퓨터 시스템(600) 또는 그의 일부는 스케일러블 데이터 구조를 사용하는 하나 이상의 단계를 수행하기 위한 수단을 구성한다.
버스(610)는 정보가 버스(610)에 연결된 디바이스들 사이에서 빠르게 전달되도록 하나 이상의 병렬로 된 정보의 전도체를 포함한다. 정보를 처리하는 하나 이상의 프로세서(602)는 버스(610)와 연결된다.
프로세서(602)는 스케일러블 데이터 구조를 사용하는 것과 관련된 컴퓨터 프로그램 코드로 규정된 바와 같은 정보에 대해 일련의 동작을 수행한다. 컴퓨터 프로그램 코드는 특정한 기능을 수행하는 프로세서 및/또는 컴퓨터 시스템의 동작을 위한 일련의 명령어 또는 명령어를 제공하는 명령문(statements)이다. 코드는, 예를 들면, 프로세서의 고유 명령어 집합으로 컴파일된 컴퓨터 프로그래밍 언어로 작성될 수 있다. 코드는 또한 직접 고유 명령어 집합(예컨대, 기계어)을 이용하여 작성될 수 있다. 일련의 동작들은 버스에서 나온 정보를 가져오는 것과 정보를 버스(610)에 싣는 것을 포함한다. 이러한 일련의 동작들은 또한 전형적으로 두 단위 이상의 정보를 비교하는 것, 정보 단위의 위치를 이동하는 것, 및 두 단위 이상의 정보를 조합하는 것, 이를 테면 가산 또는 승산 또는 OR, 배타적 OR(XOR), 및 AND와 같은 논리 연산을 포함한다. 프로세서에 의해 수행될 수 있는 일련의 동작들의 각 동작은 하나 이상의 숫자로된 동작 코드와 같은 명령어라 불리는 정보로 프로세서에게 제공된다. 프로세서(602)에 의해 실행될 동작들의 시퀀스, 이를테면 동작 코드들의 시퀀스는 컴퓨터 시스템 명령어 또는 간략히 컴퓨터 명령어라고도 불리우는 프로세서 명령어를 구성한다. 프로세서는 그 중에서도 기계, 전기, 자기, 광학, 화학 또는 양자 컴포넌트로서 단독으로 또는 조합으로 구현될 수 있다.
컴퓨터 시스템(600)은 또한 버스(610)에 연결된 메모리(604)를 포함한다. 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 장치와 같은 메모리(604)는 스케일러블 데이터 구조를 이용하기 위한 프로세서 명령어를 포함하는 정보를 저장한다. 동적 메모리는 내부에 저장된 정보가 컴퓨터 시스템(600)에 의해 변경되도록 하는 것이 가능하다. RAM은 메모리 어드레스라고 불리우는 장소에 저장된 정보의 단위가 이웃 어드레스에 있는 정보와 무관하게 저장 및 검색하게 하는 것이 가능하다. 메모리(604)는 또한 프로세서(602)에 의해 사용되어 프로세서 명령어의 실행 중에 임시 값을 저장한다. 컴퓨터 시스템(600)은 또한 버스(610)에 연결되어 컴퓨터 시스템(600)에 의해 변경되지 않는 명령어를 포함하는 정적인 정보를 저장하는 판독 전용 메모리(ROM)(606) 또는 다른 정적 저장 장치를 포함한다. 어떤 메모리는 전원이 소실될 때 저장된 정보를 잃는 휘발성 스토리지로 이루어진다. 또한 버스(610)는 자기 디스크, 광학 디스크 또는 플래시 카드와 같은, 컴퓨터 시스템(600)이 꺼질 때 또는 그렇지 않고 전원이 소실될 때에도 지속하는 명령어를 포함하는 정보를 저장하는 비휘발성(영구) 저장 장치(608)이다.
스케일러블 데이터 구조를 이용하기 위한 명령어를 포함하는 정보는 인간 사용자에 의해 동작되는 영숫자 키를 포함하는 키보드와 같은 외부 입력 장치(612), 또는 센서로부터 프로세서에 의해 사용하기 위해 버스(610)에 제공된다. 센서는 그의 주변의 상황을 검출하고 그러한 검출 상황을 컴퓨터 시스템(600)에서 정보를 나타내는데 사용된 계측가능한 현상과 호환가능한 물리적 표현으로 변환한다. 버스(610)에 연결되고, 기본적으로 인간과의 상호작용을 위해 사용하는 다른 외부 디바이스는 음극선관(CRT) 또는 액정 디스플레이(LCD), 또는 플라즈마 스크린 또는 프린터와 같이 텍스트 또는 이미지를 표시해 주는 디스플레이 디바이스(614), 및 마우스 또는 트랙볼 또는 커서 방향키, 또는 모션 센서와 같이 디스플레이(614)에 표시된 작은 커서 이미지의 위치를 제어하고 디스플레이(614)에 표시된 그래픽 요소들과 연관된 명령을 발행하는 포인팅 디바이스(616)를 포함한다. 일부 실시예에서, 예를 들면, 컴퓨터 시스템(600)이 인간의 입력 없이도 모든 기능을 자동으로 수행하는 실시예에서, 외부 입력 장치(612), 디스플레이 디바이스(614) 및 포인팅 디바이스(616) 중 하나 이상이 생략된다.
예시된 실시예에서, 주문형 반도체(ASIC)(620)와 같은 특수 목적 하드웨어가 버스(610)에 연결된다. 특수 목적 하드웨어는 프로세서(602)에 의해 수행되지 않는 동작을 특수 목적에 맞게 충분히 빨리 수행하도록 구성된다. 주문형 반도체의 예는 디스플레이(614)에 필요한 이미지를 생성하는 그래픽스 가속기 카드, 네트워크를 통해 송신된 메시지를 암호화 및 암호해독하는 암호 보드, 음성 인식, 및 더 효과적으로 하드웨어로 구현된 몇몇 복잡한 시퀀스의 동작들을 반복적으로 수행하는 로봇팔 및 의료 스캐닝 장비와 같은 특수 외부 장치와의 인터페이스를 포함한다.
컴퓨터 시스템(600)은 또한 버스(610)에 연결된 하나 이상의 예의 통신 인터페이스(670)를 포함한다. 통신 인터페이스(670)는 프린터, 스캐너 및 외부 디스크와 같은 자신의 프로세서와 동작하는 각종 외부 디바이스와의 일방향 또는 양방향 통신 커플링을 제공한다. 일반적으로, 이러한 커플링은 그 자체의 프로세서를 갖는 각종 외부 장치가 연결된 로컬 네트워크(680)에 연결된 네트워크 링크(678)와의 커플링이다. 예를 들면, 통신 인터페이스(670)는 퍼스널 컴퓨터의 병렬 포트 또는 직렬 포트 또는 범용 직렬 버스(USB) 포트일 수 있다. 일부 실시예에서, 통신 인터페이스(670)는 종합 정보 통신망(ISDN) 카드 또는 디지털 가입자 회선(DSL) 카드 또는 정보 통신 접속을 대응 형태의 전화 회선으로 제공하는 전화 모뎀이다. 일부 실시에에서, 통신 인터페이스(670)는 버스(610) 상의 신호를 동축 케이블을 통하는 통신 접속용 신호로 또는 광섬유 케이블을 통하는 통신 접속용 광신호로 변환하는 케이블 모뎀이다. 다른 예로서, 통신 인터페이스(670)는 데이터 통신 접속을 이더넷과 같은 호환가능한 LAN에 제공하는 근거리 네트워크(LAN) 카드일 수 있다. 무선 링크 역시 구현될 수 있다. 무선 링크의 경우, 통신 인터페이스(670)는 디지털 데이터와 같은 정보 스트림을 운반하는 적외선 및 광학 신호를 포함하여 전기, 음향 또는 전자기 신호를 송신 또는 수신하거나 또는 송신 및 수신한다. 예를 들면, 무선 휴대 기기, 이를 테면 셀폰과 같은 이동 전화에서, 통신 인터페이스(670)는 무선 송수신기라고 불리는 무선 대역 전자기 송신기 및 수신기를 포함한다. 어떤 실시예에서, 통신 인터페이스(670)는 UE(101)를 위해 통신 네트워크(105)와의 연결을 가능하게 해준다.
본 명세서에서 컴퓨터 판독가능 매체라는 용어는 실행을 위한 명령어를 비롯한 정보를 프로세서(602)에 제공할 때 참여하는 모든 매체를 지칭하는데 사용된다. 그러한 매체는 이것으로 제한되지 않지만 비휘발성 매체, 휘발성 매체 및 전송 매체를 비롯하여 많은 형태를 취할 수 있다. 비휘발성 매체는, 예를 들면, 광학 또는 자기 디스크, 이를 테면, 저장 장치(608)를 포함한다. 휘발성 매체는, 예를 들면, 동적 메모리(604)를 포함한다. 전송 매체는, 예를 들면, 동축 케이블, 구리 와이어, 광섬유 케이블, 및 전파, 광학 및 적외선파를 비롯하여 와이어 또는 케이블 없이 공간을 통해 이동하는 음향파 및 전자기파와 같은 반송파를 포함한다. 신호는 전송 매체를 통해 전송된 진폭, 주파수, 위상, 분극 또는 다른 물리적 특성의 인공적인 과도적 변동(transient variations)을 포함한다. 컴퓨터 판독가능 매체의 일반적인 형태는, 예를 들면, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 어떤 다른 자기 매체, CD-ROM, CDRW, DVD, 어떤 다른 광학 매체, 펀치 카드, 종이 테이프, 광학 마크 시트, 홀 또는 다른 광학적으로 인식가능한 표식의 패턴을 갖는 어떤 다른 물리적 매체, RAM, PROM, EPROM, 플래시-EPROM, 어떤 다른 메모리 칩 또는 카트리지, 반송파, 또는 컴퓨터가 판독할 수 있는 어떤 다른 매체 형태를 포함한다. 본 명세서에서 컴퓨터 판독가능 매체라는 용어는 전송 매체를 제외한 모든 컴퓨터 판독가능 매체를 지칭하는 것으로 사용된다.
하나 이상의 유형의 매체에서 인코딩된 로직은 컴퓨터 판독가능 매체 및 ASIC(620)과 같은 특수 목적 하드웨어 중 하나 또는 둘 다의 프로세서 명령어를 포함한다.
네트워크 링크(678)는 전형적으로 정보 통신을 전송 매체를 이용하여 하나 이상의 네트워크를 통해 다른 장치에 제공하여 그 정보를 이용하거나 처리하게 한다. 예를 들면, 네트워크 링크(678)는 로컬 네트워크(680)를 통해 호스트 컴퓨터(682)와의 접속을 제공하거나 또는 인터넷 서비스 제공자(ISP)에 의해 동작된 장비(684)와의 접속을 제공할 수 있다. ISP 장비(684)는 다시 네트워크들 중에서 인터넷(690)이라 통칭되는 공중의 전세계 패킷 교환통신 네트워크를 통해 데이터 통신 서비스를 제공한다.
인터넷에 연결된 서버 호스트(692)라 불리우는 컴퓨터는 인터넷을 통해 수신한 정보에 응답하여 서비스를 제공하는 프로세스를 호스팅한다. 예를 들면, 서버 호스트(692)는 디스플레이(614)에서 상연을 위한 비디오 데이터를 나타내는 정보를 제공하는 프로세스를 호스팅한다. 시스템(600)의 컴포넌트는 다른 컴퓨터 시스템, 예를 들면, 호스트(682) 및 서버(692) 내의 다양한 구성에서 배치될 수 있다는 것이 예상된다.
본 발명의 적어도 일부의 실시예는 본 명세서에서 기술된 기술 중 일부 또는 모두를 구현하기 위한 컴퓨터 시스템(600)의 사용과 관련된다. 본 발명의 일 실시예에 따르면, 이러한 기술은 메모리(604)에 포함된 하나 이상의 프로세서 명령어의 하나 이상의 시퀀스를 실행하는 프로세서(602)에 응답하여 컴퓨터 시스템(600)에 의해 실행된다. 컴퓨터 명령어, 소프트웨어 및 프로그램 코드라고도 불리는 그러한 명령어는 저장 장치(608) 또는 네트워크 링크(678)와 같은 다른 컴퓨터 판독가능 매체로부터 메모리(604) 내로 읽어들일 수 있다. 메모리(604)에 포함된 명령어들의 시퀀스를 실행하면 프로세서(602)가 본 명세서에 기술된 하나 이상의 방법 단계들을 수행하게 된다. 대안의 실시예에서, ASIC(620)과 같은 하드웨어는 본 발명을 구현하기 위해 소프트웨어 대신 사용될 수 있거나 또는 소프트웨어와 조합으로 사용될 수 있다. 따라서, 본 발명의 실시예는 본 명세서에서 달리 명시적으로 언급하지 않는 한 하드웨어 및 소프트웨어의 어떤 특정한 조합으로 제한되지 않는다.
통신 인터페이스(670)를 통해 네트워크 링크(678) 및 다른 네트워크를 경유하여 전송된 신호는 정보를 컴퓨터 시스템(600)으로 및 그 컴퓨터 시스템으로부터 전달한다. 컴퓨터 시스템(600)은 프로그램 코드를 비롯한 정보를 네트워크(680, 690)를 통해, 그 중에서도, 네트워크 링크(678) 및 통신 인터페이스(670)를 통해 송신하고 수신할 수 있다. 인터넷(690)을 사용하는 일예로, 서버 호스트(692)는 컴퓨터(600)로부터 송신된 메시지를 통해 요청된 특정 애플리케이션에 필요한 프로그램 코드를 인터넷(690), ISP 장비(684), 로컬 네트워크(680) 및 통신 인터페이스(670)를 통해 전송한다. 수신된 코드는 이것이 수신될 때 프로세서(602)에 의해 실행될 수 있거나, 또는 나중의 실행을 위해 메모리(604) 또는 저장 장치(608) 또는 다른 비휘발성 스토리지, 또는 둘 다에 저장될 수 있다. 이러한 방식으로, 컴퓨터 시스템(600)은 애플리케이션 프로그램 코드를 반송파 상의 신호 형태로 얻을 수 있다.
다양한 형태의 컴퓨터 판독가능 매체는 명령어 또는 데이터 또는 둘 다의 하나 이상의 시퀀스를 실행을 위해 프로세서(602)에 전달할 때 동반될 수 있다. 예를 들면, 명령어 및 데이터는 초기에 호스트(682)와 같은 원격 컴퓨터의 자기 디스크를 통해 전달될 수 있다. 원격 컴퓨터는 명령어 및 데이터를 그의 동적 메모리에 로드하고 그 명령어 및 데이터를 모뎀을 이용하여 전화 회선을 통해 송신한다. 컴퓨터 시스템(600)에 대해 로컬인 모뎀은 전화 회선을 통해 명령어 및 데이터를 수신하고 적외선 송신기를 이용하여 그 명령어 및 데이터를 네트워크 링크(678)로서 기능하는 적외선 반송파 상의 신호로 변환한다. 통신 인터페이스(670)로서 기능하는 적외선 검출기는 적외선 신호에 실려 전달된 명령어 및 데이터를 수신하고 그 명령어 및 데이터를 나타내는 정보를 버스(610)에 싣는다. 버스(610)는 그 정보를 메모리(604)에 전달하고 프로세서(602)는 그 메모리로부터 그 명령어와 함께 송신된 일부의 데이터를 이용하여 명령어를 검색하고 실행한다. 메모리(604)에서 수신된 명령어 및 데이터는 프로세서(602)에 의한 실행 이전 또는 이후에 선택적으로 저장 장치(608)에 저장될 수 있다.
도 7은 본 발명의 일 실시예가 구현될 수 있는 칩셋(700)을 예시한다. 칩셋(700)은 본 명세서에서 기술된 바와 같이 스케일러블 데이터 구조를 이용하도록 프로그래밍되고, 예컨대, 하나 이상의 물리적 패키지(예컨대, 칩) 내에 통합된 도 6에 대해 기술된 프로세서 및 메모리 컴포넌트를 포함한다. 예를 들면, 물리적 패키지는 물리적 강도, 크기의 보존, 및/또는 전기적 상호작용의 제한과 같은 하나 이상의 특징을 제공하기 위해 구조적인 어셈블리(예컨대, 베이스보드) 상에 하나 이상의 물질, 컴포넌트, 및/또는 와이어를 배치한 것을 포함한다. 어떤 실시예에서 칩셋은 단일 칩셋으로 구현될 수 있을 것으로 생각된다. 칩셋(700) 또는 그의 일부는 스케일러블 데이터 구조를 이용하기 위한 하나 이상의 단계를 수행하기 위한 수단을 구성한다.
일 실시예에서, 칩셋(700)은 버스(701)와 같이 칩셋(700)의 컴포넌트들 사이에서 정보를 전달하는 통신 메커니즘을 포함한다. 프로세서(703)는 버스(701)와 연결되어 명령어를 실행하고, 예를 들면, 메모리(705)에 저장된 정보를 처리한다. 프로세서(703)는 각각의 프로세싱 코어가 독립적으로 수행하도록 구성된 하나 이상의 프로세싱 코어를 포함할 수 있다. 다중 코어 프로세서는 단일 물리적 패키지 내에서 다중 처리를 가능하게 한다. 다중 코어 프로세서의 예는 2, 4, 8, 또는 그 보다 많은 개수의 프로세싱 코어를 포함한다. 대안으로 또는 그에 부가하여, 프로세서(703)는 명령어의 독립적인 실행, 파이프라이닝(pipelining), 및 멀티스레딩(multhreading)을 가능하도록 하기 위해 버스(701)를 경유하여 탠덤 방식(tandem)으로 구성된 하나 이상의 마이크로프로세서를 포함할 수 있다. 프로세서(703)는 또한 하나 이상의 디지털 신호 프로세서(DSP)(707), 또는 하나 이상의 주문형 집적회로(ASIC)(709)와 같이 어떤 처리 기능 및 작업을 수행하는 하나 이상의 특수한 컴포넌트를 수반할 수 있다. DSP(707)는 전형적으로 프로세서(703)와 독립적으로 실세계 신호(예컨대, 사운드)를 실시간으로 처리하도록 구성된다. 유사하게, ASIC(709)은 범용 프로세서에 의해 가능하게 수행되지 않는 특수한 기능을 처리하도록 구성될 수 있다. 본 명세서에서 기술된 본 발명의 기능을 수행하는데 도움을 주는 다른 특수한 컴포넌트는 하나 이상의 현장 프로그램가능 게이트 어레이(FPGA)(도시되지 않음), 하나 이상의 컨트롤러(도시되지 않음), 또는 하나 이상의 다른 특수 목적 컴퓨터 칩을 포함한다.
프로세서(703) 및 그에 동반하는 컴포넌트는 버스(701)를 통해 메모리(705)와 연결된다. 메모리(705)는 실행될 때 본 명세서에서 기술된 본 발명의 단계들을 수행하여 스케일러블 데이터 구조를 이용하는 실행가능한 명령어를 저장하는 동적 메모리(예컨대, RAM, 자기 디스크, 기록가능한 광 디스크 등) 및 정적 메모리(예컨대, ROM, CD-ROM 등) 둘 다를 포함한다. 메모리(705)는 또한 본 발명의 단계들의 실행과 연관되거나 실행에 의해 생성된 데이터를 저장한다.
도 8은 일 실시예에 따라서 도 1의 시스템에서 동작할 수 있는 이동국(예컨대, 핸드셋)의 예시적인 컴포넌트들의 도면이다. 몇몇 실시예에서, 이동국(800) 또는 그 일부는 스케일러블 데이터 구조를 이용하는 플랫폼으로부터 콘텐츠를 요청하는 하나 이상의 단계를 수행하기 위한 수단을 구성한다. 일반적으로, 무선 수신기는 종종 프론트-엔드(front-end) 및 백-엔드(back-end) 특징 면에서 규정된다. 수신기의 프론트-엔드는 모든 무선 주파수(RF) 회로를 포함하는 반면, 백-엔드는 모든 베이스-밴드 처리 회로를 포함한다. 본원에서 사용된 바와 같이, "회로"라는 용어는 (1) (아날로그 및/또는 디지털 회로만으로 된 구현물과 같은) 하드웨어 단독 구현물, 및 (2) (함께 동작하여 모바일 폰 또는 서버와 같은 장치로 하여금 각종 기능을 수행하게 하는 디지털 신호 프로세서(들)를 비롯한 프로세서(들), 소프트웨어, 및 메모리(들)의 조합과 같이) 회로와 소프트웨어(및/또는 펌웨어)의 조합을 지칭한다. 이러한 "회로"의 정의는 모든 청구범위를 비롯한 본원에서 이 용어를 사용하는 모든 곳에 적용한다. 다른 예로서, 본원에서 사용된 바와 같이 그리고 특정 문맥에 적용가능하다면, "회로"라는 용어는 또한 프로세서(또는 다중 프로세서) 및 그의(또는 이들의) 동반 소프트웨어 및/또는 펌웨어만으로 구성된 구현물을 커버할 것이다. "회로"라는 용어는 또한, 특정 문맥에 적용가능하다면, 예를 들면, 모바일 폰 내 베이스밴드 집적 회로 또는 애플리케이션 프로세서 또는 셀룰러 네트워크 디바이스 또는 다른 네트워크 디바이스 내 유사 집적 회로를 커버할 것이다.
전화의 적절한 내부 컴포넌트는 주 제어 유닛(MCU)(803), 디지털 신호 프로세서(DSP)(805), 및 마이크로폰 이득 제어 유닛 및 스피커 이득 제어 유닛을 비롯한 수신기/송신기 유닛을 포함한다. 주 디스플레이 유닛(807)은 각종 애플리케이션 및 스케일러블 데이터 구조를 이용하는 플랫폼으로부터 콘텐츠를 요청하는 단계를 수행하거나 지원하는 이동국 기능을 지원하여 사용자에게 디스플레이를 제공한다. 디스플레이(807)는 이동국(예를 들면, 이동 전화)의 사용자 인터페이스의 적어도 일부를 디스플레이하도록 구성된 디스플레이 회로를 포함한다. 부가하여, 디스플레이(807) 및 디스플레이 회로는 이동국의 적어도 일부 기능의 사용자 제어를 가능하게 하도록 구성된다. 오디오 기능 회로(809)는 마이크로폰(811) 및 마이크로폰(811)으로부터 출력된 음성 신호를 증폭하는 마이크로폰 증폭기를 포함한다. 마이크로폰(811)으로부터 출력된 증폭된 음성 신호는 코더/디코더(CODEC)(813)에 공급된다.
무선 섹션(815)은 안테나(817)를 통해 이동 통신 시스템에 포함된 기지국과 통신하기 위해 전력을 증폭하고 주파수를 변환한다. 전력 증폭기(PA)(819) 및 송신기/변조 회로는 본 기술 분야에서 공지된 바와 같이 듀플렉서(821) 또는 서큘레이터 또는 안테나 스위치에 연결된 PA(819)로부터의 출력에 따라 동작가능하게 MCU(803)에 응답한다. PA(819)는 또한 배터리 인터페이스와 전원 제어 유닛(820)에 연결된다.
사용시, 이동국(801)의 사용자는 마이크로폰(811)에 대고 말을 하고, 사용자의 음성은 어떤 검출된 배경 잡음과 함께 아날로그 전압으로 변환된다. 그 다음에, 아날로그 전압은 아날로그-디지털 변환기(ADC)(823)를 통해 디지털 신호로 변환된다. 제어 유닛(803)은 디지털 신호를 DSP(805)로 라우팅하고, 이 DSP에서 음성 인코딩, 채널 인코딩, 암호화, 및 인터리빙이 처리된다. 일 실시예에서, 처리된 음성 신호는 셀룰러 전송 프로토콜, 이를 테면, EDGE(enhanced data rates for global evolution), 일반 패킷 무선 서비스(general packet radio service: GPRS), 이동 통신 세계화 시스템(global system for mobile communications: GSM), 인터넷 프로토콜 멀티미디어 서브시스템(Internet protocol multimedia subsystem: IMS), 범용 이동 통신 시스템(universal mobile telecommunications system: UMTS) 등뿐만 아니라, 어떤 다른 적합한 무선 매체, 예컨대, 마이크로웨이브 액세스(microwave access: WiMAX), 롱텀 에볼루션(Long Term Evolution: LTE) 네트워크, 코드분할 다중 접속(code division multiple access: CDMA), 광대역 코드 분할 다중 접속(wideband code division multiple access: WCDMA), 와이파이(wireless fidelity: WiFi), 및 위성 등을 이용하여 별개로 도시되지 않은 유닛에 의해 인코딩된다.
다음에, 인코딩된 신호는 대기를 통해 전송하는 동안 발생하는 위상 및 진폭 왜곡과 같은 임의의 주파수-의존 장애를 보상하기 위해 이퀄라이저(825)로 라우팅된다. 비트 스트림을 이퀄라이징한 후, 변조기(827)는 이 신호를 RF 인터페이스(829)에서 생성된 RF 신호와 결합한다. 변조기(827)는 주파수 또는 위상 변조에 의해 사인파를 생성한다. 이 신호의 전송을 준비하기 위하여, 업-컨버터(831)는 변조기(827)에서 출력된 사인파를 합성기(833)에 의해 생성된 다른 사인파와 결합하여 전송에 필요한 주파수를 획득한다. 다음에, 이 신호는 PA(819)를 통해 송신되고 그 신호를 적절한 전력 레벨로 증가시킨다. 실제 시스템에서, PA(819)는 네트워크 기지국으로부터 수신된 정보에 따라 DSP(805)에 의해 이득이 제어되는 가변 이득 증폭기로서 동작한다. 다음에, 이 신호는 듀플렉서(821) 내에서 필터링되고 선택적으로 안테나 커플러(835)에 송신되어 최대 전력 전송을 제공하도록 임피던스 매칭된다. 마지막으로, 이 신호는 안테나(817)를 통해 로컬 기지국으로 전송된다. 자동 이득 제어기(AGC)는 수신기의 최종 단계의 이득을 제어하기 위해 제공될 수 있다. 이 신호는 이곳에서 다른 셀룰러 전화일 수 있는 원격 전화, 다른 모바일 폰 또는 공중 교환 전화망(PSTN), 또는 다른 전화망에 연결된 일반 전화(land-line)로 전달될 수 있다.
이동국(801)으로 전송된 음성 신호는 안테나(817)를 통해 수신되고 바로 저잡음 증폭기(LNA)(837)에 의해 증폭된다. 다운-컨버터(839)는 캐리어 주파수를 낮추는 반면, 복조기(1241)는 RF를 제거하여 디지털 비트 스트림만을 남긴다. 다음에, 이 신호는 이퀄라이저(825)를 통과하고 DSP(805)에 의해 처리된다. 디지털-아날로그 변환기(DAC)(843)는 이 신호를 변환하고 결과적인 출력은 중앙 처리 유닛(CPU)(도시되지 않음)으로서 구현될 수 있는 주 제어 유닛(MCU)(803)의 전반적인 제어 하에 스피커(845)를 통해 사용자에게 전송된다.
MCU(803)는 키보드(847)로부터의 입력 신호를 비롯한 각종 신호를 수신한다. 키보드(847) 및/또는 MCU(803)는 다른 사용자 입력 컴포넌트(예컨대, 마이크로폰(811))과 결합하여 사용자 입력을 관리하는 사용자 인터페이스 회로를 포함한다. MCU(803)는 스케일러블 데이터 구조를 이용하는 플랫폼으로부터 콘텐츠를 요청하기 위해 이동국(801)의 적어도 일부 기능의 사용자 제어를 가능하게 하도록 사용자 인터페이스 소프트웨어를 실행한다. MCU(803)는 또한 디스플레이 명령 및 스위치 명령을 각기 디스플레이(807) 및 음성 출력 스위칭 제어기에 전달한다. 또한, MCU(803)는 정보를 DSP(805)와 교환하며 선택적으로 통합된 SIM 카드(849) 및 메모리(851)를 액세스할 수 있다. 게다가, MCU(803)는 이동국의 필요로 하는 각종 제어 기능을 실행한다. DSP(805)는 구현예에 따라서 각종의 통상의 디지털 처리 기능 중 임의의 기능을 음성 신호에 대해 수행한다. 부가적으로, DSP(805)는 마이크로폰(811)에 의해 검출된 신호로부터 로컬 환경의 배경 잡음 레벨을 결정하고 마이크로폰(811)의 이득을 이동국(801)의 사용자의 본연의 성향을 보상하기 위해 선택된 수준으로 설정한다.
CODEC(813)은 ADC(823) 및 DAC(843)를 포함한다. 메모리(851)는 호 인입 톤 데이터를 포함한 각종 데이터를 저장하며, 예컨대, 글로벌 인터넷을 통해 수신된 음악 데이터를 포함한 다른 데이터를 저장할 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, 레지스터, 또는 본 기술 분야에서 공지된 어떤 다른 형태의 기록가능한 저장 매체에 상주할 수 있다. 메모리 소자(851)는, 이것으로 제한되지 않지만, 단일 메모리, CD, DVD, ROM, EEPROM, 광 스토리지, 또는 디지털 데이터를 저장할 수 있는 어떤 다른 비휘발성 저장 매체일 수 있다.
선택적으로 통합된 SIM 카드(849)는, 예를 들면, 중요 정보, 이를 테면, 셀룰러 전화 번호, 캐리어 공급 서비스, 가입 세부사항, 및 보안 정보를 담고 있다. SIM 카드(849)는 기본적으로 무선 네트워크 상의 이동국(801)을 식별하는 역할을 한다. 카드(849)는 또한 개인 전화번호 레지스트리, 문자 메시지, 및 사용자 특정이동국 설정값을 저장하는 메모리를 포함한다.
본 발명이 다수의 실시예 및 구현예와 관련하여 기술되었지만, 본 발명은 그와 같이 제한되지 않고 첨부의 청구항들의 범위 내에 속하는 여러 가지 명백한 변경 및 등가 구성을 커버한다. 비록 본 발명의 특징이 청구항들 중 임의의 조합으로 표현될지라도, 이러한 특징은 임의의 조합 또는 순서로도 배열될 수 있다고 생각된다.
Claims (21)
- 엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하는 단계와 처리하는 단계 중 적어도 하나와,
적어도 부분적으로, 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 적어도 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 상기 엔티티 식별자에 적어도 부분적으로 기초하여 검색을 유도하는 단계와,
상기 엔티티 식별자를 위해 상기 요청된 콘텐츠에 대한 액세스 권한을 표시하는 단계를 포함하고,
상기 데이터 구조들은 상기 프로파일 필드 및 상기 액세스 제어 필드를 더 포함하는
방법.
- 제1항에 있어서,
상기 액세스 권한에 기초하여 상기 요청된 콘텐츠를 검색하는 단계를 더 포함하고, 상기 검색은 액세스하도록 표시된 검색 결과들만을 산출하는
방법.
- 제1항 또는 제2항에 있어서,
상기 프로파일 인덱스는 상기 엔티티 식별자와 상기 액세스 제어 필드의 비교에 기초하여 검색되는
방법.
- 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 액세스 제어 필드는 복수의 엔티티 식별자를 포함하는
방법.
- 제4항에 있어서,
상기 프로파일 필드는 기본 프로파일 필드이고, 상기 데이터 구조는 확장 프로파일 필드를 더 포함하고, 상기 액세스 제어 필드는 상기 기본 프로파일 필드 및 상기 확장 프로파일 필드에 대한 액세스 권한을 특정하는데 이용되는
방법.
- 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 요청된 콘텐츠는 키워드를 포함하고, 상기 검색은 상기 키워드에 기초하여 상기 프로파일 필드의 텍스트 형식의 검색을 포함하고,
상기 방법은 적어도 부분적으로, 상기 검색 결과의 전송을 유도하는 단계를 더 포함하는
방법.
- 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 프로파일 필드는 하나 이상의 데이터 구조에 대응하는 프로파일 식별자와 더 연관되고, 상기 프로파일 인덱스는 상기 엔티티 식별자 및 상기 액세스 제어 필드의 비교에 기초하여 검색되며, 상기 프로파일 식별자는 상기 데이터 구조들 중 하나에 있는 상기 엔티티 식별자와만 유일하게 연관되는
방법.
- 장치로서,
적어도 하나의 프로세서와,
컴퓨터 프로그램 코드를 포함하는 적어도 하나의 메모리를 포함하고,
상기 적어도 하나의 메모리 및 상기 컴퓨터 프로그램 코드는, 적어도 하나의 프로세서와 함께, 상기 장치로 하여금 적어도,
엔티티 식별자 및 요청된 콘텐츠를 특정하는 질의를 수신하는 것 및 처리하는 것 중 적어도 하나를 수행하는 것,
적어도 부분적으로, 검색 결과를 산출하기 위해 각각 액세스 제어 필드와 연관된 적어도 프로파일 필드를 특정하는 데이터 구조들의 프로파일 인덱스의 상기 엔티티 식별자에 적어도 부분적으로 기초하여 검색을 유도하는 것,
상기 엔티티 식별자를 위해 상기 요청된 콘텐츠에 대한 액세스 권한을 표시하는 것을 수행하도록 유도하며,
상기 데이터 구조들은 상기 프로파일 필드 및 상기 액세스 제어 필드를 더 포함하는
장치.
- 제8항에 있어서,
상기 장치는, 적어도 부분적으로, 상기 액세스 권한에 기초하여 상기 요청된 콘텐츠를 검색하도록 더 유도되며, 상기 검색은 액세스하도록 표시된 상기 검색 결과들만을 산출하는
장치.
- 제8항 또는 제9항에 있어서,
상기 프로파일 인덱스는 상기 엔티티 식별자와 상기 액세스 제어 필드의 비교에 기초하여 검색되는
장치.
- 제8항 내지 제10항 중 어느 한 항에 있어서,
상기 액세스 제어 필드는 복수의 엔티티 식별자를 포함하는
장치.
- 제11항에 있어서,
상기 프로파일 필드는 기본 프로파일 필드이고, 상기 데이터 구조는 확장 프로파일 필드를 더 포함하고, 상기 액세스 제어 필드는 상기 기본 프로파일 필드 및 상기 확장 프로파일 필드에 대한 액세스 권한을 특정하는데 이용되는
장치.
- 제8항 내지 제12항 중 어느 한 항에 있어서,
상기 요청 콘텐츠는 키워드를 포함하고, 상기 검색은 상기 키워드에 기초하여 상기 프로파일 필드의 텍스트 형식의 검색을 포함하고,
상기 장치는, 또한 적어도 부분적으로, 상기 검색 결과의 전송을 행하도록 유도되는
장치.
- 제8항 내지 제13항 중 어느 한 항에 있어서,
상기 프로파일 필드는 하나 이상의 데이터 구조에 대응하는 프로파일 식별자와 더 연관되고, 상기 프로파일 인덱스는 상기 엔티티 식별자 및 상기 액세스 제어 필드의 비교에 기초하여 검색되며, 상기 프로파일 식별자는 상기 데이터 구조들 중 하나에 있는 엔티티 식별자와만 유일하게 연관되는
장치.
- 제8항 내지 제14항 중 어느 한 항에 있어서,
상기 장치는 이동 전화이고, 상기 이동 전화는,
디스플레이의 사용을 통해 상기 이동 전화의 적어도 몇몇 기능의 사용자 제어를 가능하게 하도록 구성되고, 사용자 입력에 응답하도록 구성된 사용자 인터페이스 회로 및 사용자 인터페이스 소프트웨어와,
상기 이동 전화의 사용자 인터페이스의 적어도 일부를 디스플레이하도록 구성된 디스플레이 및 디스플레이 회로 - 상기 디스플레이 및 디스플레이 회로는 상기 이동 전화의 적어도 몇몇 기능의 사용자 제어를 가능하게 하도록 구성됨 -를 더 포함하는 장치.
- 하나 이상의 프로세서에 의해 실행될 때, 장치로 하여금 제1항 내지 제7항 중 어느 한 항의 방법을 적어도 수행하게 하도록 하는 하나 이상의 명령어의 하나 이상의 시퀀스를 포함하는
컴퓨터 판독가능 저장 매체.
- 하나 이상의 프로세서에 의해 실행될 때, 장치로 하여금 제1항 내지 제7항 중 어느 한 항의 방법의 단계들을 적어도 수행하게 하도록 하는 하나 이상의 명령어의 하나 이상의 시퀀스를 포함하는
컴퓨터 프로그램 제품.
- 제1항 내지 제7항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는
장치.
- 제18항에 있어서,
상기 장치는 이동 전화이고, 상기 이동 전화는,
디스플레이의 사용을 통해 상기 이동 전화의 적어도 몇몇 기능의 사용자 제어를 가능하게 하도록 구성되고, 사용자 입력에 응답하도록 구성된 사용자 인터페이스 회로 및 사용자 인터페이스 소프트웨어와,
상기 이동 전화의 사용자 인터페이스의 적어도 일부를 디스플레이하도록 구성된 디스플레이 및 디스플레이 회로 - 상기 디스플레이 및 디스플레이 회로는 상기 이동 전화의 적어도 몇몇 기능의 사용자 제어를 가능하게 하도록 구성됨 - 를 더 포함하는
장치.
- 제1항 내지 제7항 중 어느 한 항의 방법을 수행하도록 구성된 적어도 하나의 서비스에 액세스가능하도록 구성된 적어도 하나의 인터페이스로의 액세스를 가능하게 하는 단계를 포함하는
방법.
- 제1항 내지 제7항 중 어느 한 항의 방법으로부터 유도되는 데이터 및 제1항 내지 제7항 중 어느 한 항의 방법으로부터 유도되는 적어도 하나의 신호 중 적어도 하나에 적어도 부분적으로 기초하여 적어도 하나의 디바이스 사용자 인터페이스 구성요소 및 기능 중 적어도 하나를 생성하는 것을 가능하게 하는 단계 및 그러한 적어도 하나의 디바이스 사용자 인터페이스 구성요소 및 기능 중 적어도 하나를 수정하는 것을 가능하게 하는 단계 중 적어도 하나를 포함하는
방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/645,115 | 2009-12-22 | ||
US12/645,115 US20110153644A1 (en) | 2009-12-22 | 2009-12-22 | Method and apparatus for utilizing a scalable data structure |
PCT/FI2010/050919 WO2011076986A1 (en) | 2009-12-22 | 2010-11-16 | Method and apparatus for utilizing a scalable data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120106863A true KR20120106863A (ko) | 2012-09-26 |
KR101445950B1 KR101445950B1 (ko) | 2014-11-03 |
Family
ID=44152558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127019339A KR101445950B1 (ko) | 2009-12-22 | 2010-11-16 | 스케일러블 데이터 구조를 이용하기 위한 방법 및 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20110153644A1 (ko) |
EP (1) | EP2517126A4 (ko) |
JP (1) | JP5544431B2 (ko) |
KR (1) | KR101445950B1 (ko) |
CN (1) | CN102713904B (ko) |
BR (1) | BR112012015717A2 (ko) |
CA (1) | CA2784778C (ko) |
WO (1) | WO2011076986A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102121975B1 (ko) * | 2018-12-26 | 2020-06-11 | 주식회사 엘지씨엔에스 | 동기화 테이블을 통한 실제 데이터 제공 방법 및 데이터 관리 시스템 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8712968B1 (en) * | 2009-07-15 | 2014-04-29 | Symantec Corporation | Systems and methods for restoring images |
US8898318B2 (en) * | 2010-06-03 | 2014-11-25 | Microsoft Corporation | Distributed services authorization management |
US20120278124A1 (en) * | 2010-10-28 | 2012-11-01 | Albert Cecchini | Methods and systems for obtaining and processing information for interrelated processes |
CN103782571A (zh) * | 2011-07-07 | 2014-05-07 | 思科技术公司 | 用于提供基于消息和事件的视频服务控制平面的系统和方法 |
US10038927B2 (en) * | 2011-12-22 | 2018-07-31 | Cisco Technology, Inc. | Out-of-band signaling and device-based content control |
CA2764283A1 (en) * | 2012-01-16 | 2013-07-16 | Giovanni J. Morelli | Mobile device control application for improved security and diagnostics |
US9177171B2 (en) * | 2012-03-11 | 2015-11-03 | International Business Machines Corporation | Access control for entity search |
US8706739B1 (en) * | 2012-04-26 | 2014-04-22 | Narus, Inc. | Joining user profiles across online social networks |
US9208179B1 (en) * | 2012-05-25 | 2015-12-08 | Narus, Inc. | Comparing semi-structured data records |
US20140004960A1 (en) * | 2012-06-27 | 2014-01-02 | Zynga Inc. | Dynamic player match-making for social games |
EP2680171A3 (en) * | 2012-06-29 | 2014-01-22 | Orange | Intelligent index scheduling |
US8997008B2 (en) | 2012-07-17 | 2015-03-31 | Pelicans Networks Ltd. | System and method for searching through a graphic user interface |
US20140244618A1 (en) * | 2013-02-26 | 2014-08-28 | Dropbox, Inc. | Search interface for an online content management system |
US9965302B2 (en) | 2013-03-28 | 2018-05-08 | Sphere 3D Inc. | Systems and methods for providing an emulator |
US20150006571A1 (en) * | 2013-06-28 | 2015-01-01 | LGS Innovations LLC | Method And Apparatus For Enabling Queries In An Information-Centric Network |
US20150229718A1 (en) * | 2014-02-11 | 2015-08-13 | Apple Inc. | Protocol for exchanging data between two devices |
CN105490999A (zh) * | 2014-12-23 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种基于xmpp协议的分布式存储系统 |
EP4386577A3 (en) | 2017-03-10 | 2024-08-14 | Visa International Service Association | Techniques for in-memory data searching |
US10437807B1 (en) * | 2017-07-06 | 2019-10-08 | Palantir Technologies Inc. | Selecting backing stores based on data request |
FR3074592B1 (fr) * | 2017-12-01 | 2019-10-25 | Idemia Identity And Security | Procede de partage d'une cle servant a deriver des cles de session pour crypter et authentifier des communications entre un objet et un serveur |
RU2755196C1 (ru) * | 2018-04-05 | 2021-09-14 | Нокиа Текнолоджиз Ой | Управление унифицированными идентификаторами подписки в системах связи |
CN110401618A (zh) * | 2018-04-24 | 2019-11-01 | 中国移动通信集团广东有限公司 | 区块链数据访问控制的方法及装置 |
US11017028B2 (en) * | 2018-10-03 | 2021-05-25 | The Toronto-Dominion Bank | Systems and methods for intelligent responses to queries based on trained processes |
US11714826B2 (en) | 2020-02-27 | 2023-08-01 | Intuitive Data Analytics, LLC | Generation and adaptation of visualizations from one or more data sets stored using a single-branch approach |
US11379408B2 (en) * | 2020-05-04 | 2022-07-05 | International Business Machines Corporation | Pointer-based dynamic data structures in key-value stores |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6460036B1 (en) * | 1994-11-29 | 2002-10-01 | Pinpoint Incorporated | System and method for providing customized electronic newspapers and target advertisements |
US6493702B1 (en) * | 1999-05-05 | 2002-12-10 | Xerox Corporation | System and method for searching and recommending documents in a collection using share bookmarks |
US20030014394A1 (en) * | 2001-03-22 | 2003-01-16 | Shinji Fujiwara | Cell-level data access control using user-defined functions |
US20020143961A1 (en) * | 2001-03-14 | 2002-10-03 | Siegel Eric Victor | Access control protocol for user profile management |
US7155425B2 (en) * | 2001-05-15 | 2006-12-26 | Nokia Corporation | Mobile web services |
EP1288795A1 (en) * | 2001-08-24 | 2003-03-05 | BRITISH TELECOMMUNICATIONS public limited company | Query systems |
AU2002366902A1 (en) * | 2001-12-21 | 2003-07-09 | Nokia Corporation | Location-based novelty index value and recommendation system and method |
US7240046B2 (en) * | 2002-09-04 | 2007-07-03 | International Business Machines Corporation | Row-level security in a relational database management system |
US7165119B2 (en) * | 2003-10-14 | 2007-01-16 | America Online, Inc. | Search enhancement system and method having rankings, explicitly specified by the user, based upon applicability and validity of search parameters in regard to a subject matter |
US20070276801A1 (en) * | 2004-03-31 | 2007-11-29 | Lawrence Stephen R | Systems and methods for constructing and using a user profile |
US20060047725A1 (en) * | 2004-08-26 | 2006-03-02 | Bramson Steven J | Opt-in directory of verified individual profiles |
US7882122B2 (en) * | 2005-03-18 | 2011-02-01 | Capital Source Far East Limited | Remote access of heterogeneous data |
US20060248592A1 (en) * | 2005-04-28 | 2006-11-02 | International Business Machines Corporation | System and method for limiting disclosure in hippocratic databases |
WO2007002820A2 (en) * | 2005-06-28 | 2007-01-04 | Yahoo! Inc. | Search engine with augmented relevance ranking by community participation |
US10769215B2 (en) * | 2005-07-14 | 2020-09-08 | Conversant Wireless Licensing S.A R.L. | Method, apparatus and computer program product providing an application integrated mobile device search solution using context information |
US7747612B2 (en) * | 2005-10-31 | 2010-06-29 | Yahoo! Inc. | Indication of exclusive items in a result set |
US7716180B2 (en) * | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
JP4838610B2 (ja) * | 2006-03-24 | 2011-12-14 | キヤノン株式会社 | 文書管理装置、文書管理方法、プログラム |
US9141704B2 (en) * | 2006-06-28 | 2015-09-22 | Microsoft Technology Licensing, Llc | Data management in social networks |
US20080147633A1 (en) * | 2006-12-15 | 2008-06-19 | Microsoft Corporation | Bringing users specific relevance to data searches |
US8024328B2 (en) * | 2006-12-18 | 2011-09-20 | Microsoft Corporation | Searching with metadata comprising degree of separation, chat room participation, and geography |
JP5138970B2 (ja) * | 2006-12-20 | 2013-02-06 | リプレックス株式会社 | システム、サーバ、情報端末、オペレーティングシステム、ミドルウェア、情報通信機器、認証方法、システム及びアプリケーションソフトウェア |
JP2008177713A (ja) * | 2007-01-17 | 2008-07-31 | Nec Corp | 携帯端末装置、移動通信システム及びそれらに用いる多人数コミュニケーション促進方法 |
JP2008197839A (ja) * | 2007-02-09 | 2008-08-28 | Fujifilm Corp | 情報管理装置、方法およびプログラム |
US20080235189A1 (en) * | 2007-03-23 | 2008-09-25 | Drew Rayman | System for searching for information based on personal interactions and presences and methods thereof |
JP5190921B2 (ja) * | 2007-07-24 | 2013-04-24 | 日本電信電話株式会社 | コミュニティ通信ネットワーク、通信制御方法、コミュニティ管理サーバ、コミュニティ管理方法、およびプログラム |
US7809751B2 (en) * | 2007-08-27 | 2010-10-05 | Sap Ag | Authorization controlled searching |
AU2008295996B2 (en) * | 2007-09-07 | 2012-09-06 | Facebook, Inc. | Dynamically updating privacy settings in a social network |
JP5267062B2 (ja) * | 2007-11-16 | 2013-08-21 | ソニー株式会社 | 情報処理装置、情報処理方法、コンテンツ視聴装置、コンテンツ表示方法、プログラム及び情報共有システム |
JP2009140051A (ja) * | 2007-12-04 | 2009-06-25 | Sony Corp | 情報処理装置、情報処理システム、推薦装置、情報処理方法および記憶媒体 |
US8799264B2 (en) * | 2007-12-14 | 2014-08-05 | Microsoft Corporation | Method for improving search engine efficiency |
US20090171690A1 (en) * | 2007-12-28 | 2009-07-02 | Humanbook, Inc. | System and method for a web-based people directory |
US20090178131A1 (en) * | 2008-01-08 | 2009-07-09 | Microsoft Corporation | Globally distributed infrastructure for secure content management |
JP2009211403A (ja) * | 2008-03-04 | 2009-09-17 | Hitachi Software Eng Co Ltd | ファイル検索プログラム |
JP5266841B2 (ja) * | 2008-03-31 | 2013-08-21 | 富士通株式会社 | 仮想共同体管理システム、仮想共同体管理方法、およびコンピュータプログラム |
US8229911B2 (en) * | 2008-05-13 | 2012-07-24 | Enpulz, Llc | Network search engine utilizing client browser activity information |
US8364659B2 (en) * | 2008-05-14 | 2013-01-29 | Enpulz, L.L.C. | Network server employing client favorites information and profiling |
US20090327054A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Personal reputation system based on social networking |
US20100088364A1 (en) * | 2008-10-08 | 2010-04-08 | International Business Machines Corporation | Social networking architecture in which profile data hosting is provided by the profile owner |
US20100114897A1 (en) * | 2008-10-17 | 2010-05-06 | Ricardo Polo-Malouvier | Indexing and searching a network of multi-faceted entity data |
US8032508B2 (en) * | 2008-11-18 | 2011-10-04 | Yahoo! Inc. | System and method for URL based query for retrieving data related to a context |
US8386519B2 (en) * | 2008-12-30 | 2013-02-26 | Expanse Networks, Inc. | Pangenetic web item recommendation system |
US20100169338A1 (en) * | 2008-12-30 | 2010-07-01 | Expanse Networks, Inc. | Pangenetic Web Search System |
US8255403B2 (en) * | 2008-12-30 | 2012-08-28 | Expanse Networks, Inc. | Pangenetic web satisfaction prediction system |
US8108406B2 (en) * | 2008-12-30 | 2012-01-31 | Expanse Networks, Inc. | Pangenetic web user behavior prediction system |
-
2009
- 2009-12-22 US US12/645,115 patent/US20110153644A1/en not_active Abandoned
-
2010
- 2010-11-16 JP JP2012545363A patent/JP5544431B2/ja not_active Expired - Fee Related
- 2010-11-16 KR KR1020127019339A patent/KR101445950B1/ko active IP Right Grant
- 2010-11-16 CN CN201080058434.7A patent/CN102713904B/zh not_active Expired - Fee Related
- 2010-11-16 EP EP10838736.6A patent/EP2517126A4/en not_active Ceased
- 2010-11-16 BR BR112012015717A patent/BR112012015717A2/pt not_active IP Right Cessation
- 2010-11-16 CA CA2784778A patent/CA2784778C/en not_active Expired - Fee Related
- 2010-11-16 WO PCT/FI2010/050919 patent/WO2011076986A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102121975B1 (ko) * | 2018-12-26 | 2020-06-11 | 주식회사 엘지씨엔에스 | 동기화 테이블을 통한 실제 데이터 제공 방법 및 데이터 관리 시스템 |
Also Published As
Publication number | Publication date |
---|---|
EP2517126A4 (en) | 2016-10-12 |
EP2517126A1 (en) | 2012-10-31 |
WO2011076986A1 (en) | 2011-06-30 |
US20110153644A1 (en) | 2011-06-23 |
JP2013515308A (ja) | 2013-05-02 |
BR112012015717A2 (pt) | 2016-05-17 |
KR101445950B1 (ko) | 2014-11-03 |
CA2784778A1 (en) | 2011-06-30 |
CN102713904B (zh) | 2016-11-09 |
CA2784778C (en) | 2016-01-19 |
JP5544431B2 (ja) | 2014-07-09 |
CN102713904A (zh) | 2012-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101445950B1 (ko) | 스케일러블 데이터 구조를 이용하기 위한 방법 및 장치 | |
US10387438B2 (en) | Method and apparatus for integration of community-provided place data | |
US9122532B2 (en) | Method and apparatus for executing code in a distributed storage platform | |
US9305002B2 (en) | Method and apparatus for eventually consistent delete in a distributed data store | |
US8341185B2 (en) | Method and apparatus for context-indexed network resources | |
US8930374B2 (en) | Method and apparatus for multidimensional data storage and file system with a dynamic ordered tree structure | |
US8549010B2 (en) | Method and apparatus for providing distributed key range management | |
US8799228B2 (en) | Method and apparatus for providing a list-based interface to key-value stores | |
US20120117067A1 (en) | Method and apparatus for providing a range ordered tree structure | |
US20150149469A1 (en) | Methods and apparatus for associating interest tags with media items based on social diffusions among users | |
US20120136835A1 (en) | Method and apparatus for rebalancing data | |
US8417720B2 (en) | Method and apparatus for accessing content based on user geolocation | |
CA2802458C (en) | Synchronizing endpoint data stores having disparate schemas | |
US20150160791A1 (en) | Method and apparatus for a virtual desktop | |
US20100235394A1 (en) | Method and apparatus for accessing content based on user geolocation | |
CN107103011B (zh) | 终端数据搜索的实现方法和装置 | |
CN108370385B (zh) | 通过网络传输容器文件的系统、方法和计算机可读介质 | |
US20120078905A1 (en) | Manipulating non-schema attributes for objects in a schema based directory | |
KR20130055633A (ko) | 페이징된 업데이트 프로토콜 방법 및 장치 | |
US8949664B2 (en) | Method and apparatus for providing information consistency in distributed computing environments | |
US9536105B2 (en) | Method and apparatus for providing data access via multi-user views | |
EP4170517B1 (en) | Integrating data with different configuration models | |
US8918379B1 (en) | Method and system for managing versioned structured documents in a database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170818 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180903 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190829 Year of fee payment: 6 |