KR102347887B1 - 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치 - Google Patents

검색 엔진을 이용한 타임라인 관리 방법 및 그 장치 Download PDF

Info

Publication number
KR102347887B1
KR102347887B1 KR1020150151783A KR20150151783A KR102347887B1 KR 102347887 B1 KR102347887 B1 KR 102347887B1 KR 1020150151783 A KR1020150151783 A KR 1020150151783A KR 20150151783 A KR20150151783 A KR 20150151783A KR 102347887 B1 KR102347887 B1 KR 102347887B1
Authority
KR
South Korea
Prior art keywords
data
storage unit
temporary storage
unit
search
Prior art date
Application number
KR1020150151783A
Other languages
English (en)
Other versions
KR20170050347A (ko
Inventor
권세형
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020150151783A priority Critical patent/KR102347887B1/ko
Publication of KR20170050347A publication Critical patent/KR20170050347A/ko
Application granted granted Critical
Publication of KR102347887B1 publication Critical patent/KR102347887B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

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

Abstract

본 발명의 일 태양에 따른 검색 엔진을 이용한 타임라인 관리 방법은, 입력부가 사용자의 단말로부터 데이터의 저장 요청을 수신하는 단계와 제어부가 상기 데이터를 임시 저장부에 저장하는 단계와 상기 제어부가 상기 데이터를 데이터 저장부에 저장하는 단계 및 상기 데이터 저장부가 상기 데이터를 역색인 구조로 변환하는 단계를 포함할 수 있다.

Description

검색 엔진을 이용한 타임라인 관리 방법 및 그 장치 {Method and apparatus for managing timeline using search engine}
본 발명은 검색 엔진을 이용하여 타임라인을 관리하는 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 사용자가 작성하는 글을 다양한 검색 조건으로 조회할 수 있도록 검색 엔진을 이용하여 역색인을 구축하는 방법 및 그 방법을 수행하는 장치에 관한 것이다.
기존의 소셜 네트워크 서비스(SNS; social network service)에서 타임라인(timeline)을 구성하는 방식은 크게 푸시(push) 방식과 풀(pull) 방식으로 나뉜다. 푸시 방식은 개인의 저장소에 데이터(data)를 미리 저장한 후 조회시 바로 조회하는 방식이고, 풀 방식은 단일 저장소에 데이터를 저장하되, 조회 시점마다 검색 조건에 맞는 데이터를 읽어오는 방식이다.
푸시 방식은 데이터의 저장시에는 부하가 많이 걸리는 단점이 있으나 조회시에는 빠른 장점이 있다. 반대로, 풀 방식은 데이터 저장시에는 빠른 장점이 있으나 조회시에는 부하가 많이 걸리는 단점이 있다. 이에, 푸시 방식과 풀 방식의 각각의 장점만을 취해 데이터의 저장시에도 속도가 빠르면서, 조회시에도 속도가 빠른 타임라인 관리 방법이 필요하다.
본 발명이 해결하고자 하는 과제는 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 태양에 따른 검색 엔진을 이용한 타임라인 관리 방법은, 입력부가 사용자의 단말로부터 데이터의 저장 요청을 수신하는 단계와 제어부가 상기 데이터를 임시 저장부에 저장하는 단계와 상기 제어부가 상기 데이터를 데이터 저장부에 저장하는 단계 및 상기 데이터 저장부가 상기 데이터를 역색인 구조로 변환하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제어부가 상기 데이터를 임시 저장부에 저장하는 단계는, 상기 제어부가 상기 데이터의 저장 완료에 대한 안내 메시지를 표현부에 전달하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 제어부가 상기 데이터를 데이터 저장부에 저장하는 단계는, 상기 제어부가 상기 데이터를 일괄 처리부에 전달하는 단계 및 상기 일괄 처리부가 상기 데이터를 상기 데이터 저장부에 저장하는 단계를 포함할 수 있다
또 다른 실시예에서, 상기 데이터 저장부가 상기 데이터를 역색인 구조로 변환하는 단계는, 상기 제어부가 상기 역색인 구조로 변환된 데이터와 중복되는 데이터를 상기 임시 저장부에서 삭제하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 태양에 따른 검색 엔진을 이용한 타임라인 관리 방법은, 입력부가 사용자의 단말로부터 검색 조건과 데이터의 조회 요청을 수신하는 단계와 제어부가 상기 검색 조건으로 임시 저장부를 조회하는 단계와 상기 제어부가 상기 검색 조건으로 역색인 구조의 데이터 저장부를 조회하는 단계 및 상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계를 포함할 수 있다.
일 실시예에서, 상기 검색 조건은, 데이터의 작성자를 기준으로 하는 것이다.
다른 실시예에서, 상기 검색 조건은, 데이터에 포함된 키워드를 기준으로 하는 것이다
또 다른 실시예에서, 상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계는, 상기 제어부가 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 제외하고 조합하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계는, 상기 제어부가 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 상기 임시 저장부에서 삭제하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 태양에 따른 검색 엔진을 이용한 타임라인 관리 장치는, 사용자의 단말로부터 데이터의 저장 요청을 수신하는 입력부와 상기 데이터를 역색인 구조로 변환하기 전까지만 저장하기 위한 임시 저장부와 상기 데이터를 상기 임시 저장부와 데이터 저장부에 저장하는 제어부 및 상기 데이터를 역색인 구조로 변환하는 데이터 저장부를 포함할 수 있다.
일 실시예에서, 상기 제어부가 상기 데이터를 상기 임시 저장부와 상기 데이터 저장부에 저장한 후에, 상기 데이터의 저장 완료에 대한 안내 메시지를 전달받아 상기 사용자의 단말에 제공하는 표현부를 더 포함할 수 있다.
다른 실시예에서, 상기 제어부가 상기 데이터를 상기 데이터 저장부에 저장하기 전에, 상기 데이터를 모아서 상기 데이터 저장부에 저장하기 위한 일괄 처리부를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 태양에 따른 검색 엔진을 이용한 타임라인 관리 장치는, 사용자의 단말로부터 검색 조건과 데이터의 조회 요청을 수신하는 입력부와데이터를 역색인 구조로 변환하기 전까지만 저장하기 위한 임시 저장부와 데이터를 역색인 구조로 변환하여 저장하고 있는 데이터 저장부 및 상기 검색 조건으로 상기 임시 저장부와 상기 데이터 저장부를 조회하여, 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하는 제어부를 포함할 수 있다.
일 실시예에서, 상기 조합된 결과를 전달받아 상기 사용자의 단말에 제공하는 표현부를 더 포함할 수 있다.
다른 실시예에서, 상기 제어부는, 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 제외하고 조합하는 것이다.
또 다른 실시예에서, 상기 제어부는, 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 상기 임시 저장부에서 삭제하는 것이다.
상기와 같은 본 발명에 따르면, 풀 방식과 유사하게 하나의 저장소에 데이터를 저장함으로써, 데이터의 저장시 빠른 속도로 사용자에게 응답을 할 수 있다. 또한 미리 정해진 조건에 맞는 데이터만을 사용자의 각각의 저장소에 쌓는 푸시 방식과는 다르게, 검색 엔진을 활용하여 데이터를 색인화하고(indexing), 조회하는 시점에 동적으로 조회 쿼리(query)를 생성하여 타임라인을 구성함으로써, 빠른 속도로 검색 조건에 맞는 데이터를 조회하여 사용자에게 타임라인을 제공할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1a 내지 도 1b는 종래의 풀 방식에 따른 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 2a 내지 도 2b는 종래의 푸시 방식에 따른 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 3a 내지 도 3b는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 4는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 장치의 블록도이다.
도 5는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터를 저장하는 과정의 순서도이다.
도 6은 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터를 조회하는 과정의 순서도이다.
도 7a 내지 도 7b는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 캐시를 이용한 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 8a 내지 도 8c는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법을 사용자에게 제공하기 위한 그래픽 사용자 인터페이스 화면의 예시도이다.
도 9는 본 발명의 일 실시예에 따른 검색 엔진을 이용한 타임라인 관리 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1a 내지 도 1b는 종래의 풀 방식에 따른 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 1a를 참고하면, 사용자 A(101a)와 사용자 B(101b)가 각각 글을 작성하고 있는 것을 볼 수 있다. 사용자 A(101a)가 작성하는 글(111a)은 우상향 줄무늬(▨)의 글이고, 사용자 B(101b)가 작성하는 글(111b)은 좌상향 줄무늬(▧)의 글이다. 이하 이해를 돕기 위해 사용자 A(101a)가 작성한 글은 우상향 줄무늬(▨)로 표시하고, 사용자 B(101b)가 작성한 글은 좌상향 줄무늬(▧)로 표시하기로 한다. 풀 방식에서는 사용자(101a, 101b)들이 작성한 글은 하나의 데이터 저장소(569)에 순차적으로 저장한다.
도 1a의 예시에서는, 사용자 B(101b)가 작성한 글(111b)이 먼저 저장되고, 그 다음에 사용자 A(101a)가 작성한 글(111a)이 저장되어 있는 것을 볼 수 있다. 특히, 두 글이 작성자의 구분없이 하나의 데이터 저장소(569)에 저장되어 있는 것을 볼 수 있다. 물론 두 글(111a, 111b) 이전에도 사용자 A(101a)와 사용자 B(101b)가 작성한 글이 하나의 데이터 저장소(569)에 순차적으로 차곡차곡 저장되어 있는 것도 볼 수 있다.
이처럼 풀 방식에서는 데이터를 특별한 구분없이 순차적으로 저장하기 때문에 저장시 발생하는 추가적인 부하가 없다. 그러므로, 사용자(101a, 101b)들이 글을 작성하면, 바로 글을 데이터 저장소(569)에 저장할 수 있고, 저장이 완료되었다는 안내 메시지도 사용자에게 제공할 수 있다. 이처럼 풀 방식에서는 글을 저장할 때 빠르게 저장할 수 있다는 장점이 있다.
도 1b를 참고하면, 사용자 A(101a)와 사용자 B(101b)가 데이터 저장소(569)에 저장된 글을 조회하는 것을 볼 수 있다. 이 때의 검색 조건은 작성자를 기준으로, 사용자 A(101a)는 자신이 작성한 글들만, 사용자 B(101b)도 자신이 작성한 글들만 조회하고 있다. 물론 검색 조건은 작성자를 기준으로 하는 것 외에도 특정 키워드가 들어간 글이라던지, 자신이 댓글을 단 글들이라던지 등으로 다양한 검색 조건이 있을 수 있다.
풀 방식에서는 데이터가 하나의 데이터 저장소(569)에 저장되어 있기 때문에 데이터를 조회할 때마다, 검색 조건에 맞는 조회 쿼리(query)를 생성하여 사용자(101a, 101b)가 원하는 타임라인 화면을 동적으로 생성하여야 한다. 도 1b의 예시에서는, 작성자를 기준으로 쿼리를 생성하게 될 것이다. 예를 들면, "select * from 데이터 저장소 where 작성자 = A" 또는 "select * from 데이터 저장소 where 작성자 = B"와 같은 식의 데이터 조회 쿼리를 생성하여 이용할 것이다.
풀 방식에서는 조회 속도를 다소 높이기 위하여, 데이터를 데이터베이스(database)에 저장할 때, 검색 조건이 될 수 있는 주요 항목들은 정규화를 통해 별도의 컬럼(column)으로 저장하고 해당 컬럼에 색인(index)를 생성하여 조회 속도를 높이기도 한다. 그러나 이처럼 색인을 이용한 검색이 모든 경우에 효과적인 것은 아니여서, 색인이 생성되지 않은 항목을 검색 조건으로 하거나, 색인의 생성이 불가능한 항목을 검색 조건으로 하는 경우에는 데이터의 조회시 문제가 발생할 수 있다.
예를 들면, 내용에 특정 키워드가 포함된 글만 따로 조회해서 보고 싶은 경우라면 "select * from 데이터 저장소 where 내용 like %키워드%"와 같은 식의 질의어 쿼리(SQL; Structured Query Language)를 생성하여 데이터를 조회하게 된다. 이 때, 대부분의 데이터베이스에서는 색인이 생성되지 않은 항목에 Like 검색을 수행하는 경우, 데이터베이스를 풀 스캔(full scan)해야하기 때문에 데이터의 조회시 데이터베이스에 상당한 부하를 일으키기도 한다.
다시 도 1b의 예로 돌아가서 하나의 데이터 저장소(569)에 저장된 글들을 사용자 A(101a)는 자신이 작성한 글들만 조회한 화면(113a)를 보고 싶고, 사용자 B(101b)도 자신이 작성한 글들만 조회한 화면(113b)를 보고 싶다면, 데이터 저장소(569)에 작성자를 검색 조건으로 한 조회 쿼리를 생성하여 각 화면을 제공하기 위한 데이터를 필터링하게 된다. 이를 통해서 사용자 A(101a)가 원하는 화면(113a)과 사용자 B(101b)가 원하는 화면(113b)를 제공할 수 있다. 다만, 데이터를 조회하는 과정에서 검색 조건에 맞는 조회 쿼리를 생성하고 이를 이용하여 데이터를 필터링하는 과정에서 앞서 설명한 것처럼 부하가 걸릴 수 있다. 즉, 풀 방식에서는 글을 조회할 때, 부하가 발생할 수 있는 단점이 있다.
도 2a 내지 도 2b는 종래의 푸시 방식에 따른 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 2a를 참고하면, 도 1a와 마찬가지로 사용자 A(101a)와 사용자 B(101b)가 각각 글을 작성하고 있는 것을 볼 수 있다. 사용자 A(101a)가 작성하는 글(111a)은 우상향 줄무늬(▨)의 글이고, 사용자 B(101b)가 작성하는 글(111b)은 좌상향 줄무늬(▧)의 글로 각각 데이터 저장소 A(569a)와 또 다른 데이터 저장소 B(569b)에 저장된다. 즉 푸시 방식에서는 풀 방식과 다르게 데이터를 저장할 때부터 각각의 저장소에 저장한다.
도 2a는 저장소의 기준이 작성자별 저장소로 데이터 저장소 A(569a)와 데이터 저장소 B(569b)가 도시된 것 일뿐 그 외에 다양한 검색 기준에 대응되는 저장소가 추가적으로 더 존재할 수 있다. 예를 들면 각 사용자가 댓글을 단 글들만 모아서 저장하는 저장소가 추가로 더 있을 수도 있고, 각 사용자가 좋아요를 누른 글들만 모아서 저장하는 저장소가 추가로 더 있을 수도 있다. 푸시 방식에서는 이렇게 하나의 글을 저장할 때 각각의 조회 조건에 맞는 여러 저장소에 글을 저장해야하기 때문에 글을 저장할 때, 상당히 많은 부하가 발생한다. 그렇기 때문에, 글의 저장시 시간이 오래 걸리는 단점이 있다.
대신 반대로 푸시 방식에서는 글을 조회할 때, 조회하려는 조회 조건에 맞게 이미 저장소가 생성되어 있기 때문에 해당 저장소에서 데이터를 조회하여 사용자에게 제공하면 충분하다. 도 2b를 참고하면, 데이터 저장소 A(569a)와 데이터 저장소 B(569b)에서 각각의 데이터를 조회하여 사용자가 원하는 화면(113a, 113b)를 각 사용자에게 제공하는 것을 볼 수 있다. 즉, 풀 방식처럼 조회시에 동적으로 조회 쿼리를 복잡하게 생성하여 하나의 데이터 저장소(569)에 저장된 데이터들을 필터링하여 화면을 구성하는 것이 아니라, 이미 그렇게 필터링되어 저장된 각각의 데이터 저장소(569a, 569b)에서 데이터를 조회하여 화면을 구성하는 것으로 충분하다. 이처럼 푸시 방식에서는 데이터의 조회시 시간을 단축시킬 수 있는 장점이 있다.
지금까지 도 1a 내지 도 2b를 통해서 풀 방식과 푸시 방식에서 글을 작성할 때와 조회할 때의 차이점을 살펴보았다. 이를 표로 정리하면 다음의 표 1과 같다.
구분 작성 조회
풀 방식 저장이 빠름 조회가 느림
푸시 방식 저장이 느림 조회가 빠름
표 1을 참고하면 풀 방식은 글을 작성하여 저장할 때는 강점을 보이나, 이를 조회할 때 약점이 있고, 반대로 푸시 방식은 글을 작성하여 저장할 때는 약점이 있으나, 대신 빠른 조회가 가능하다는 장점이 있다. 만약 이 두 방식의 장점만을 혼합하여, 글을 작성할 때 저장을 빨리 할 수 있으면서도, 글을 조회할 때도 빨리 조회할 수 있는 방법이 있다면 매우 좋을 것이다. 이에 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에 대해서 살펴보도록 하자.
도 3a 내지 도 3b는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 3a를 참고하면, 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서 데이터의 저장 과정을 살펴볼 수 있다. 본 발명에서는 풀 방식과 비슷하게 데이터를 하나의 데이터 저장소(569)에 저장한다. 대신 이렇게 하나의 데이터 저장소(569)에 모든 데이터를 저장하면 저장 속도는 빠를지 몰라도 조회 속도가 느리므로 이를 보완하기 위해 검색 엔진에서 사용하는 역색인(inverted index)를 구축한다. 사용자 A(101a)가 작성하는 글(111a)은 우상향 줄무늬(▨)의 글이고, 사용자 B(101b)가 작성하는 글(111b)은 좌상향 줄무늬(▧)의 글로, 이를 하나의 데이터 저장소(569)에 저장하되, 역색인(561)을 추가로 생성하면 조회시 푸시 방식 만큼이나 빠르게 데이터를 조회할 수 있는 장점이 있다.
역색인이란 검색 엔진에서 주로 사용하는 것으로서 데이터에 대해 색인을 구축하는 것이 아니라 거꾸로 검색 조건에 대해 색인을 구축하는 것을 말한다. 즉 풀 방식에서 하나의 데이터 저장소(569)에 저장된 각 글들에 대해서 작성자를 기준으로 색인을 한 것이 기존의 색인 방식이라면, 역색인은 저장소에 저장된 글에 식별자를 부여하고, 거꾸로 작성자 별로 식별자를 정리해서 색인을 하는 것을 말한다.
도 3a를 참고하면, 하나의 데이터 저장소(569)에 가장 예전부터 작성되어 저장된 글은 식별자가 1로, 가장 최근에 사용자 A(101a)가 작성하여 저장된 글(111a)은 식별자 11로 각각의 식별자를 가지고 데이터가 차곡차곡 저장이 되어 있는 것을 볼 수 있다. 여기서 하나의 데이터 저장소(569)에 저장된 데이터들에 대해서 작성자 별로 역색인을 구축하면, 사용자 A(101a)가 작성한 글들의 식별자를 하나로 모으고, 사용자 B(101b)가 작성한 글들의 식별자를 하나로 모으는 방식으로 역색인을 구축할 수 있다.
실제로 역색인 저장소(561)에 저장된 역색인을 보면 사용자 A(101a)가 작성한 글들은 식별자 2, 5, 6, 8, 9, 11로 역색인 되어 있고, 사용자 B(101b)가 작성한 글들은 식별자 1, 3, 4, 7, 10으로 역색인 되어 있다. 또한 그 아래에는 키워드를 중심으로 역색인이 구축되어 있는 것을 볼 수 있다. 즉, 글의 내용에 "빈대떡"이라는 키워드가 들어간 글은 1, 2, 6으로 역색인 되어 있고, "매운탕"이라는 키워드가 들어간 글은 3, 8, 10으로 역색인 되어 있고, "김지영"이라는 키워드가 들어간 글은 4, 5, 7, 9로 역색인 되어 있다. 그 외에도 다양한 키워드에 대해서 역색인이 구축될 수 있다. 뿐만 아니라 사용자가 검색 조건으로 사용할 수 있는 다양한 검색 조건들에 대해서 역색인이 구축될 수 있다.
보통 검색 엔진에서는 하나의 글을 저장하면, 해당 글에서 키워드나 작성자, 작성일시 등 다양한 정보들을 추출하여 이러한 정보를 기준으로 역색인을 구축한다. 이렇게 역색인이 구축되고 나면 풀 방식처럼 하나의 데이터 저장소(569)에 모든 데이터가 저장되어 있다고 하더라도 사용자의 다양한 검색 조건에 따른 조회 요청에 대해 빠르고 간편하게 조회 화면을 제공할 수 있는 장점이 있다. 즉 기존의 풀 방식의 저장시 빠르다는 장점과 함께 푸시 방식의 조회시 빠르다는 장점 모두를 발명의 특징으로 가져갈 수 있는 것이다.
도 3b를 참고하면, 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서 데이터의 조회 과정을 살펴볼 수 있다. 사용자의 작성자별 조회 요청에 대해 하나의 데이터 저장소(569)에 저장된 데이터를 조회하되, 데이터 저장소(569)에 저장된 각 데이터를 역색인(561)을 참고하여 조회한다. 작성자별로 데이터를 조회한 화면을 구성하기 위해서는 작성자별로 데이터의 목록을 역색인을 한 것을 참고하여야 한다. 도 3b의 예에서는 사용자 A(101a)가 작성한 글이 2, 5, 6, 8, 9, 11 로 역색인 되어 있으므로 이를 이용하여 사용자 A(101a)가 필요한 화면(113a)를 제공할 수 있다. 마찬가지로 사용자 B(101b)가 작성한 글이 1, 3, 4, 7, 10 으로 역색인 되어 있으므로 이를 이용하여 사용자 B(101b)가 필요한 화면(113b)를 제공할 수 있다.
지금까지 살펴본 것처럼 검색 엔진의 역색인을 풀 방식에 적용하면 데이터의 저장도 신속하게 하면서도 데이터의 조회도 신속하게 할 수 있다. 하지만, 실제로는 검색 엔진의 역색인도 푸시 방식처럼 역색인을 구축하기까지 다소 시간이 걸리기 때문에, 대부분의 검색 엔진은 역색인이 생성되기까지, 실제 데이터는 저장되어 있으나 조회가 되지 않는 시간을 가진다. 흔히들 이를 갱신 시간(refresh time)이라고 한다. 즉, 실제로 데이터 저장소(569)에 데이터를 저장하였지만, 해당 데이터에 대한 역색인(561)을 구축하기 전까지는, 검색 조건에 의해 데이터를 조회하여 사용자에게 제공할 때, 해당 데이터가 누락될 수 있는 위험이 있다. 본 발명에서는 이러한 문제점을 해결하기 위해 검색 엔진의 역색인과 함께 임시 저장소(cache storage)를 이용하기로 한다.
도 4는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 장치의 블록도이다.
도 4를 참고하면, 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 장치(200)는 표현부 및 입력부(210)를 포함할 수 있다. 또한 제어부(220)을 포함할 수 있으며, 임시 저장부(230)과 일괄 처리부(240) 및 데이터 저장부(250)을 포함할 수 있다.
여기서 표현부 및 입력부(210)는 사용자의 단말, 즉 클라이언트(100)와 데이터를 주고 받는 기능을 수행한다. 즉 글을 작성하고 조회하기 위한 그래픽 사용자 환경(GUI; Graphic User Interface)를 제공하는 기능을 담당한다. 그래픽 사용자 환경은 개인용 컴퓨터(personal computer)에 설치 형태로 제공되는 프로그램(program)일 수도 있고, 브라우저(broswer)를 통해서 접근할 수 있는 일반적인 웹(web)일 수도 있고, 모바일(mobile)의 어플리케이션(application) 등 다양한 형태로 사용자에게 제공될 수 있다. 이를 통해서 사용자들은 글을 작성하고 또 작성된 글을 조회해서 볼 수 있다.
제어부(220)는 사용자들이 작성한 글, 즉 데이터를 저장하고 조회하기 위해 역색인을 구축하는 기능들을 수행한다. 사용자들이 입력한 데이터를 바로 데이터 저장부(250)에 저장하고 역색인을 구축할 수도 있지만, 아까 도 3a 내지 도 3b에 대한 설명을 하면서, 역색인을 구축하는 과정도 비용의 소모가 있으므로 실제로 데이터가 저장되어 있어도 역색인이 구축되기 전까지는 조회가 불가능할 수 있는 단점이 있음을 언급하였다. 이를 해결하기 위해 데이터 저장부(250)에 데이터를 저장하기에 앞서 임시 저장부(230)에 먼저 사용자들이 작성한 글을 저장한다.
제어부(220)은 우선 임시 저장부(230)에 데이터를 저장하고, 추후에 이를 데이터 저장부(250)으로 옮긴다. 이 과정에서 필요에 따라 일괄 처리부(240)가 이용될 수 있다. 임시 저장부(230)가 일종의 캐시(cache) 기능을 수행한다면, 일괄 처리부(240)는 일종의 버퍼(buffer) 기능을 수행한다. 즉, 임시 저장부(230)가 데이터가 데이터 저장부(250)에 저장되고 역색인이 구축되기까지 조회에서 누락되는 것을 방지하기 위한 것이라면, 일괄 처리부(240)는 임시 저장부(230)에 저장된 데이터를 데이터 저장부(250)에 넘기기 전에 모아서 전달하는 기능을 수행한다. 예를 들면, 10초 단위로 일괄 처리부(240)에 모인 데이터를 데이터 저장부(250)으로 전달한다거나, 일괄 처리부(240)에 쌓인 데이터의 건수가 10건이 되면 이를 데이터 저장부(250)으로 전달하는 방식으로 일괄 처리부(240)는 버퍼의 기능을 수행한다.
제어부(220)를 통해 일괄 처리부(240)로부터 모아진 데이터를 전달받은 데이터 저장부(250)은 우선 데이터를 저장하고 새롭게 저장된 데이터에 대해 역색인을 구축한다. 이렇게 역색인을 구축하고 나면, 풀 방식처럼 하나의 데이터 저장소(569)에 데이터가 저장되어 있어도 조회를 빠르게 수행할 수 있다. 추후에 입력부(210)를 통해서 사용자(100)로부터 데이터의 조회 요청이 오면 데이터 저장부(250)에 저장된 데이터와 역색인 데이터를 이용하여 사용자가 설정한 조회 조건에 따른 검색 결과를 제공할 수 있는 것이다.
도 5는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터를 저장하는 과정의 순서도이다.
도 5를 참고하면, 표현부(210)가 사용자(100)에게 글을 작성하기 위한 그래픽 사용자 인터페이스를 제공하고, 입력부(210)가 사용자(100)로부터 글 작성을 위한 데이터를 수신한다(S1100). 이렇게 수신한 데이터는 최종적으로는 데이터 저장부(250)에 전달되어 역색인을 구축하여야 하지만, 그 중간 단계로, 제어부(220)는 우선 사용자(100)로부터 수신한 데이터를 임시 저장부(230) 저장한다(S1200). 임시 저장부(230)에 저장된 데이터는 추후에 데이터 저장부(250)에 해당 데이터가 저장되고 역색인이 구축되면 적절한 시점에 삭제가 될 것이다(S1700).
제어부(220)가 임시 저장부(230)에 데이터를 저장한 후에는 해당 데이터를 데이터 저장부(250)에 전달하기 위해서 데이터를 일괄 처리부(240)에 전달한다(S1400). 물론 이 과정에서 사용자(100)에게 데이터의 저장이 완료되었다는 안내 메시지를 추가적으로 제공할 수 있다(S1300). 사용자는 내부적으로 임시 저장부(230)에 데이터가 저장되어 있는지, 데이터 저장부(250)에 저장되어 있는지는 알 필요가 없으며, 그저 조회가 잘 되면 충분하다. 즉, 푸시 방식처럼 데이터 저장에 오랜 시간이 걸리는 것은 아니므로 이처럼 안내 메시지를 제공하는 과정(S1300)도 의미가 있다 할 것이다.
사용자에게 안내 메시지(S1300)를 전달하고, 일괄 처리부(240)에도 데이터를 저장했다면, 일괄 처리부(240)는 일정한 조건에 의해 정기적 또는 비정기적으로 일괄 처리부(240)에 쌓인 데이터를 데이터 저장부(250)에 저장한다(S1500). 이 때 적용될 수 있는 조건은 시간을 기준으로 주기적으로 데이터를 데이터 저장부(250)에 저장하는 것과, 반대로 건수를 기준으로 일괄 처리부(240)에 쌓인 데이터의 건수에 따라 이를 데이터 저장부(250)에 비정기적으로 저장할 수도 있다.
제어부(220)가 임시 저장부(230)에 저장된 데이터를 바로 바로 데이터 저장부(250)에 저장하고 역색인을 구축하는 것이 아니라 일괄 처리부(240)를 통해서 어느 정도 모은 다음에 데이터 저장부(250)에 전달하는 것은 검색 엔진에서 역색인을 구축할 때 이 방법이 더 효율적이기 때문이다. 물론 일괄 처리부(240)를 이용하여 데이터를 모았다가 데이터 저장부(250)에 저장하는 과정은 필수적인 과정은 아니므로 생략도 가능하다.
데이터 저장부(250)에 데이터가 저장되고 나면, 데이터 저장부는 해당 데이터를 역색인 구조의 데이터로 변환하는 작업을 수행한다(S1600). 이렇게 역색인이 구축되면, 추후에 다양한 검색 조건에 대응할 수 있다. 즉 검색 엔진을 이용한 타임라인 관리 방법은 푸시 방식처럼 사용자가 설정한 검색 조건만 저장소를 생성하여 대응하는 것이 아니라, 사용자가 설정할 수 있는 대부분의 검색 조건에 대해 역색인을 구축하여 미리 대비한다. 역색인의 구축이 완료되면, 즉 데이터의 변환이 완료되면 캐시로 들고 있던 임시 저장부(230)의 데이터를 삭제해도 무방하다. 즉, 제어부(220)는 변환이 완료된 데이터를 임시 저장부(230)에서 삭제한다(S1700). 물론 저장 완료시 외에도 데이터의 조회 시에도 임시 저장부(230)에 저장된 데이터를 삭제할 수 있다. 이에 대해서는 추후에 자세하게 설명하기로 한다.
도 6은 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 데이터를 조회하는 과정의 순서도이다.
도 6을 참고하면, 입력부(210)가 사용자(100)로부터 데이터 조회 요청을 수신한다(S2100). 데이터 조회 요청은 다양한 검색 조건과 함께 올 수 있다. 작성자를 기준으로 필터링해서 데이터를 조회하거나, 내가 댓글을 단 글들만 필터링해서 조회하거나, 글에 "@김지영"와 같이 수신인을 지정한 경우 해당 수신인이 포함된 글만 필터링해서 조회할 수도 있다. 또는 글에 "#막걸리"와 같이 태그를 지정한 경우 해당 태그만 포함된 글만 필터링해서 조회할 수도 있다. 또는 특정 키워드만 들어간 글을 필터링해서 조회할 수도 있다. 이렇게 검색 조건이 다양하게 지정되더라도 이러한 검색 조건에 대해 역색인이 이미 구축되어 있으므로 걱정할 필요는 없다.
입력부(210)가 사용자(100)로부터 데이터 조회 요청을 수신하면(S2100), 제어부(220)가 조회 요청에 맞는 조회 쿼리를 생성한다(S2200). 이 때 생성되는 조회 쿼리는 풀 방식처럼 복잡하게 생성될 필요는 없다. 해당 검색 조건에 맞는 역색인을 조회하고 역색인에 있는 데이터의 식별자를 취합하는 것만으로도 조회를 위한 준비는 모두 끝나기 때문이다. 다만, 임시 저장부(230)의 경우에는 기존의 풀 방식처럼 조회 쿼리를 생성할 필요가 있을 수 있다. 임시 저장부(230)는 데이터 저장부(250)에 저장된 데이터가 아직 역색인이 구축되기 전에 누락되는 것을 방지하기 위한 저장 공간이기 때문이다.
제어부(220)는 조회 쿼리를 생성한 다음에 해당 조회 쿼리로 임시 저장부(230)와 데이터 저장부(250)을 조회한다. 앞서 데이터 저장부(250)의 데이터 변환이 완료되면 임시 저장부(230)의 데이터를 삭제할 수도 있지만, 경우에 따라서는 조회 시점에 삭제할 수도 있다. 즉, 만약 임시 저장부(230)와 데이터 저장부(250)를 조회했는데 양쪽에 중복된 데이터가 조회된다면, 데이터 저장부(250)에 역색인이 구축된 후에 아직 임시 저장부(230)에서 삭제되지 않은 데이터일 것이다. 이 외에는 대부분 데이터 저장부(250)에서 데이터가 조회되고, 아직 역색인이 구축되지 않은 데이터만 임시 저장부(230)에서 조회가 될 것이다.
만약 임시 저장부(230)와 데이터 저장부(250)의 데이터가 중복되는 데이터가 있는지 확인한 후에 중복된 데이터가 있는 경우에는(S2500), 중복된 데이터를 임시 저장부(230)에서 삭제하여야 한다(S2600). 이는 데이터 저장부(250)에 역색인이 구축된 후에 아직 임시 저장부(220)에서 삭제되지 않은 데이터들이므로 삭제해도 무방하기 때문이다. 중복된 데이터를 삭제하고 난 후에는 임시 저장부(230)와 데이터 저장부(250)에 저장된 데이터 중에서 검색된 데이터를 조합한다(S2700). 이렇게 조합된 데이터가 사용자의 검색 조건에 의해 필터링된 데이터들로 제어부(220)는 이를 표현부(210)로 전달하여 사용자(100)에게 제공한다(S2800).
지금까지 도 5 내지 도 6을 통해서 본 발명의 일 실시예에 따른 검색 엔진을 이용한 타임라인 관리 방법에 대해서 살펴보았다. 이를 간단히 정리해보면, 기존의 풀 방식이나 푸시 방식의 장점만을 취하여 검색 엔진과 역색인을 이용한 타임라인 관리가 본 발명의 특징이다. 이 과정에서 역색인이 구축되기 전까지 데이터들이 조회에서 누락되는 것을 방지하기 위해 캐시로서 임시 저장부(230)를 이용하고, 검색 엔진의 효율을 높이기 위해 버퍼로서 일괄 처리부(240)를 이용하는 것까지 살펴보았다. 이제 도 3a 내지 도 3b에서 살펴본 예시에 임시 저장부(230)가 결합된 새로운 예시를 살펴보도록 하자.
도 7a 내지 도 7b는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법에서, 캐시를 이용한 데이터의 저장과 조회 과정을 설명하기 위한 예시도이다.
도 7a를 참고하면, 도 3a의 예시와는 다르게 역색인(561)에 아직 사용자 A(101a)와 사용자 B(101b)가 막 작성한 글(111a, 111b)에 대한 역색인이 구축되지 않은 것을 확인할 수 있다. 즉 사용자 A(101a)가 막 작성한 글(111a)은 데이터 저장소(569)에 11의 식별자를 가지고 저장되어 있고, 사용자 B(101b)가 막 작성한 글(111b)도 데이터 저장소(569)에 10의 식별자를 가지고 저장되어 있으나, 역색인(561)에는 아직 식별자 10과 식별자 11에 대한 색인이 구축되어 있지는 않은 상황이다.
도 7a를 참고하면, 사용자 A(101a)와 사용자 B(101b)가 글을 작성하면 해당 데이터는 데이터 저장소(569)에 바로 저장되는 것이 아니라 우선 임시 저장소(567)에 저장이 된다. 추후에 임시 저장소(567)에 저장된 데이터는 적절할 시점에 일괄 처리부(240)에 의해 정기적 또는 비정기적으로 데이터 저장소(569)에 저장된다. 데이터 저장소(569)에 저장된 데이터는 역색인 구축 과정을 통해 역색인(561)에 작성자 별로, 키워드 별로 기타 다양한 검색 조건별로 역색인이 만들어진다. 도 7a의 예시에서는 임시 저장소(567)에 저장된 데이터가 데이터 저장소(569)로는 옮겨졌으나 아직 역색인(561)은 구축되지 않은 상황이다. 비록 역색인이 아직 만들어지지는 않았으나, 사용자가 데이터를 조회하는데는 무리가 없으므로, 임시 저장소(567)에 데이터가 저장이 되면 사용자(100)에게는 작성 완료를 안내하는 메시지가 제공될 수 있다. 도 7a의 예시는 종국적으로는 임시 저장소(567)의 데이터는 모두 삭제가 되고, 역색인(561)은 도 3a와 같이 식별자 10의 글(111b)과 식별자 11의 글(111a)에 대한 역색인까지 구축이 될 것이다.
도 7b를 참고하면, 임시 저장소(567)와 데이터 저장소(569)를 이용하여 데이터를 조회하는 과정을 볼 수 있다. 사용자 A(101a)는 자신이 작성한 글만 조회하는 요청을, 사용자 B(101b)도 자신이 작성한 글만 조회하는 요청을 하였다. 이때 아직 최근에 작성된 글(111a, 111b)에 대한 역색인(561)이 생성되지 않은 상황에서는 데이터 저장소(569)와 역색인(561)만으로는 최근에 사용자 A(101a)가 작성한 글(111a)와 사용자 B(101b)가 작성한 글(111b)는 누락이 될 수 있다. 이때, 임시 저장소(567)을 이용해서, 식별자 10과 식별자 11의 글을 조회해서, 데이터 저장소에서 조회한, 사용자 A(101a)가 작성한 글 2, 5, 6, 8, 9와 사용자 B(101b)가 작성한 글 1, 3, 4, 7과 함께 조합하여 사용자(101a, 101b)들에게 각각의 화면(113a, 11b)를 제공할 수 있다.
도 8a 내지 도 8c는 본 발명의 일 실시예에 따른 검색 엔진을 이용하여 타임라인을 관리하는 방법을 사용자에게 제공하기 위한 그래픽 사용자 인터페이스 화면의 예시도이다.
도 8a를 참고하면, 글을 작성하고 조회할 수 있는 기본적인 그래픽 사용자 화면(210)의 예시를 볼 수 있다. 도 8a에 예시된 화면은 그룹웨어(groupware) 내에서, 동료들과 협업을 하기 위한 도구로 제공되는 것으로서 SNS 형식을 이용하여 정보 등을 공유하기 위한 솔루션의 일화면이다. 사용자들은 포스트를 올릴 수도 있고 사진이나 동영상을 올릴 수도 있고 투표를 안건에 붙일 수도 있다. SNS처럼 필요한 정보들을 가볍게 입력하고 게시 버튼(211)을 클릭하면 그 아래에 목록으로 간단히 조회할 수가 있다.
도 8a의 예시에서는 작성자 "김지영"이 "2015년 10월 27일"에 작성한 팀 회식에 대한 공지 글도 볼 수 있고, 작성자 "권세형"이 "2015년 10월 26일"에 작성한 개발 환경 설정에 관한 글도 볼 수 있다. 도 8a의 예시처럼 각 글에 대해 사용자들이 댓글을 달 수도 있고, 좋아요를 누를 수도 있으며, 첨부된 파일을 다운로드 받을 수도 있다. 이렇게 글이 특정한 조건에 따라 순차적으로 제공되는 화면을 타임라인이라고 부르며 SNS에서는 흔히 제공되는 기능이다. 도 8a의 예시에서는 타임라인의 검색 조건으로 내가 작성한 글들만 볼 수 있는 "내 스트림"과 내가 받은 글들만 볼 수 있는 "내가 받은" 및 내가 보낸 글들만 볼 수 있는 "내가 보낸"과 같은 타임라인은 이미 생성되어 있다.
만약 사용자가 이 외의 다양한 검색 조건으로 타임라인을 동적으로 구성하여 조회하고 싶다면 좌측의 스마트 스트림 메뉴에서 "+추가" 버튼(215)를 클릭하면 새로운 검색 조건을 설정하여 타임라인을 구성할 수 있을 것이다.
도 8b를 참고하면, 도 8a에서 사용자가 스마트 스트림 메뉴에서 "+추가" 버튼(215)를 클릭한 경우 사용자에게 제공되는 화면을 볼 수 있다. 도 8b의 예시에서는 타임라인을 스마트 스트림(smart stream)이라는 기능으로 명명하여 서비스를 제공하고 있다. 사용자가 스트림의 이름을 입력하고, 스트림 조건을 설정한다. 여기서 설정하는 스트림 조건이 바로 검색 조건에 해당한다.
도 8b의 예시에서 검색 조건을 살펴보면, 특정 작성자가 작성한 글만 모아서 볼 수도 있고, 내가 팔로우한 파일이 첨부된 글만 모아서 볼 수도 있고, 내가 팔로우한 사람들의 글만 모아서 볼 수도 있고, 내가 언급된 글만 모아서 볼 수도 있고, 내가 좋아요를 누른 글만 모아서 볼 수도 있고, 내가 댓글을 작성한 글만 모아서 볼 수도 있고, 특정 키워드만 포함한 글만 모아서 볼 수도 있다.
도 8b의 예시에 나오는 검색 조건은 본 발명의 이해를 돕기 위한 예시일뿐 실제로는 이 외에도 다양한 검색 조건이 있을 수도 있다. 예를 들면, 작성일시를 기준으로 최근 작성된지 일주일 이내의 글과 같은 조건도 얼마든지 생각해 볼 수 있을 것이다. 또는 좋아요가 일정 개수 이상인 글들만 조회해서 볼 수도 있다.
사용자가 검색 조건을 설정하고 저장 버튼(221)을 클릭하면, 해당 검색 조건에 따른 타임라인을 조회하기 위한 준비는 모두 마치게 된다. 이처럼 사용자는 수많은 글 들중에서 관심이 있는 글들을 다양한 검색 조건으로 필터링해서 조회할 수 있다. 또한, 이 과정에서 데이터의 저장과 조회를 빠르게 수행하기 위해서 검색 엔진을 이용하면, 기존의 풀 방식 또는 푸시 방식의 타임라인 구성에 비해서 보다 효과적으로 타임라인을 구성할 수 있다.
도 8c를 참고하면 앞서 도 8b에서 설정한 검색 조건에 따라 타임라인을 조회하는 것을 볼 수 있다. 현재 생성된 검색 조건은 총 3가지가 설정되어 있다. 스마트 스트림이라는 기능의 제목으로 유추해보건대, 팀 회식과 관련된 키워드가 포함된 글을 조회하기 위한 "팀 회식 공지"와, 서버 환경과 관련된 키워드가 포함된 글을 조회하기 위한 "서버 환경" 및 작성자가 김지영인 글을 조회하기 위한 "김지영 작성 글"의 스트림이 생성되어 있다. 이 중에서 팀 회식 공지(231)가 선택된 상황이여서 사용자 화면(210)에는 팀 회식과 관련된 데이터들이 검색되어서 사용자에게 제공되고 있다. 보면 기본 설정에서 조회되던 2015년 10월 팀 회식 공지 외에도 2015년 09월 팀회식 공지도 스마트 스트림 설정으로 간편하게 조회할 수 있다.
기존의 이메일이나 게시판과 같은 서비스를 통해서 정보를 공유하는 경우에는 풀 방식 또는 푸시 방식으로 조회 결과를 제공하여도 어느 정도는 성능상의 이슈가 적었지만, SNS의 타임라인처럼 많은 정보가 생성되고 공유되는 가운데서 사용자가 필요한 정보만 공유할 수 있으려면 저장 속도 못지 않게 조회 속도도 빨라야 하고 이럴 때는 본 발명의 일 실시예처럼 검색 엔진을 이용하여 데이터를 저장하고 역색인을 구축한다면 보다 효과적으로 동적인 타임라인을 구성할 수 있을 것이다.
도 9는 본 발명의 일 실시예에 따른 검색 엔진을 이용한 타임라인 관리 장치의 하드웨어 구성도이다.
도 9를 참고하면, 검색 엔진을 이용한 타임라인 관리 장치(200)는 하나 이상의 프로세서(510), 메모리(520), 스토리지(560) 및 네트워크 인터페이스(570)을 포함할 수 있다. 프로세서(510), 메모리(520), 스토리지(560) 및 인터페이스(570)는 시스템 버스(550)를 통하여 데이터를 송수신한다.
프로세서(510)는 메모리(520)에 로드 된 컴퓨터 프로그램을 실행하고, 메모리(520)는 상기 컴퓨터 프로그램을 스토리지(560)에서 로드(load) 한다. 상기 컴퓨터 프로그램은, 입력/표현부 관리 오퍼레이션(521), 임시 저장부 관리 오퍼레이션(523), 일괄 처리부 관리 오퍼레이션(525) 및 데이터 저장부 관리 오퍼레이션(527)을 포함할 수 있다.
입력/표현부 관리 오퍼레이션(521)은 네트워크를 통해 클라이언트(100)로부터 데이터 작성 요청을 수신하거나 데이터 조회 요청을 수신할 수 있다. 입력/표현부 관리 오퍼레이션(521)은 클라이언트(100)로부터 데이터 작성 요청을 수신한 경우에는, 수신한 데이터를 임시 저장부 관리 오퍼레이션(523)에 전달하여 데이터 저장부에 저장하고 역색인을 구축하기 위한 준비를 할 수 있다. 또한, 데이터 조회 요청을 수신한 경우에는 해당 요청을 임시 정장부 관리 오퍼레이션(523)과 데이터 저장부 관리 오퍼레이션(527)에 전달하여 임시 저장부와 데이터 저장부에 저장된 데이터를 조회 요청에 포함된 검색 조건에 맞게 조회하여 이를 다시 사용자(100)에게 제공할 수 있다.
임시 저장부 관리 오퍼레이션(523)은 입력/표현부 관리 오퍼레이션(521)으로부터 사용자의 데이터 작성 요청을 전달받은 경우에는 해당 데이터를 시스템 버스(550)를 통해 스토리지(560)의 임시 저장소(567)로 저장할 수 있다. 이렇게 저장된 임시 데이터는 추후 데이터 저장소(569)의 역색인(561)이 구축되면 그 후에는 삭제될 수 있다. 임시 저장부 관리 오퍼레이션(523)은 임시 저장소(567)를 일괄 처리부 관리 오퍼레이션(525)로 전달한다. 또한, 임시 저장부 관리 오퍼레이션(523)은 입력/표현부 관리 오퍼레이션(521)으로부터 사용자의 데이터 조회 요청을 전달받은 경우에는 데이터 저장소(569)에는 저장되었으나, 아직 역색인(561)이 생성되지 않은 데이터들이 조회에서 누락되는 것을 방지하기 위해 동일한 검색 조건으로 임시 저장소(567)를 조회할 수 있다. 이 때 조회된 데이터는 추후 데이터 저장소(569)의 조회된 데이터와 조합되어 사용자에게 제공된다.
일괄 처리부 관리 오퍼레이션(525)은 임시 저장부 관리 오퍼레이션(523)이 전달한 데이터를 정기적 또는 비 정기적으로 데이터 저장부 관리 오퍼레이션(527)에 전달하는 역할을 한다. 즉, 일정 시간을 주기로 데이터를 전달하거나, 일정 건수를 주기로 데이터를 전달할 수 있다. 이렇게 버퍼를 추가하여 데이터를 모아서 검색 엔진에 전달하면, 검색 엔진에서 역색인을 구축을 좀 더 효율적으로 수행할 수 있다.
데이터 저장부 관리 오퍼레이션(527)은 데이터의 저장시에는 일괄 처리부 관리 오퍼레이션(525)으로부터 전달 받은 데이터를 역색인을 구축한다. 역색인의 구축이 완료된 데이터는 임시 저장소(567)에서 삭제한다. 이 때 생성된 역색인은 시스템 버스(550)를 통해 스토리지(560)의 역색인(561)에 저장될 수 있다. 데이터 저장부 관리 오퍼레이션(527)은 데이터의 조회시에는 사용자(100)가 입력한 검색 조건을 시스템 버스(550)를 통해 스토리지(560)의 검색 조건(563)으로 저장한다. 또한, 검색 조건에 맞는 데이터를 조회하기 위하여 역색인(561)를 참고하여 데이터 저장소(569)에 저장된 데이터를 조회한다. 이렇게 조회된 데이터는 임시 저장부 관리 오퍼레이션(523)에서 조회한 데이터와 조합되어 사용자에게 제공된다. 또한, 데이터 저장부 관리 오퍼레이션(527)은 데이터 저장소(529)와 임시 저장소(567)에 중복된 데이터가 존재하는 경우에는 이미 역색인(561)이 완료된 데이터이므로 해당 데이터를 삭제할 수도 있다. 이를 통해서 임시 저장소(566)에는 아직 역색인(561)이 생성되지 않은 데이터만 존재하도록 할 수 있다.
도 9의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (18)

  1. 입력부가 사용자의 단말로부터 데이터의 저장 요청을 수신하는 단계;
    제어부가 상기 데이터를 임시 저장부에 저장하는 단계;
    상기 제어부가 상기 데이터를 데이터 저장부에 저장하는 단계;
    상기 데이터 저장부가 상기 데이터를 역색인 구조로 변환하는 단계;
    상기 제어부가, 상기 역색인 구조로의 변환이 완료된 데이터를 상기 임시 저장부로부터 삭제하는 단계; 및
    검색 조건과 상기 데이터의 조회 요청을 수신하는 것에 응답하여, 상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계를 포함하되,
    상기 임시 저장부는, 상기 역색인 구조로 변환되지 않은 데이터를 포함하며,
    상기 임시 저장부의 조회 결과는, 상기 역색인 구조가 이용되지 않은 데이터 조회 결과이고,
    상기 데이터 저장부의 조회 결과는, 상기 역색인 구조가 이용된 데이터 조회 결과인,
    검색 엔진을 이용한 타임라인 관리 방법.
  2. 제1항에 있어서,
    상기 제어부가 상기 데이터를 임시 저장부에 저장하는 단계는,
    상기 제어부가 상기 데이터의 저장 완료에 대한 안내 메시지를 표현부에 전달하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  3. 제1항에 있어서,
    상기 제어부가 상기 데이터를 데이터 저장부에 저장하는 단계는,
    상기 제어부가 상기 데이터를 일괄 처리부에 전달하는 단계; 및
    상기 일괄 처리부가 상기 데이터를 상기 데이터 저장부에 저장하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  4. 제3항에 있어서,
    상기 일괄 처리부가 상기 데이터를 상기 데이터 저장부에 저장하는 단계는,
    상기 일괄 처리부가 일정 주기마다 상기 데이터를 상기 데이터 저장부에 저장하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  5. 제3항에 있어서,
    상기 일괄 처리부가 상기 데이터를 상기 데이터 저장부에 저장하는 단계는,
    상기 일괄 처리부가 일정 건수마다 상기 데이터를 상기 데이터 저장부에 저장하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  6. 삭제
  7. 입력부가 사용자의 단말로부터 검색 조건과 데이터의 조회 요청을 수신하는 단계;
    제어부가 상기 검색 조건으로 임시 저장부를 조회하는 단계;
    상기 제어부가 상기 검색 조건으로 역색인 구조의 데이터 저장부를 조회하는 단계; 및
    상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계를 포함하되,
    상기 임시 저장부는, 상기 역색인 구조로 변환되지 않은 데이터를 포함하며,
    상기 임시 저장부의 조회 결과는, 상기 역색인 구조가 이용되지 않은 데이터 조회 결과이고,
    상기 데이터 저장부의 조회 결과는, 상기 역색인 구조가 이용된 데이터 조회 결과인,
    검색 엔진을 이용한 타임라인 관리 방법.
  8. 제7항에 있어서,
    상기 검색 조건은,
    데이터의 작성자를 기준으로 하는 것인,
    검색 엔진을 이용한 타임라인 관리 방법.
  9. 제7항에 있어서,
    상기 검색 조건은,
    데이터에 포함된 키워드를 기준으로 하는 것인,
    검색 엔진을 이용한 타임라인 관리 방법.
  10. 제7항에 있어서,
    상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계는,
    상기 제어부가 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 제외하고 조합하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  11. 제7항에 있어서,
    상기 제어부가 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하여 표현부에 전달하는 단계는,
    상기 제어부가 상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 상기 임시 저장부에서 삭제하는 단계를 포함하는,
    검색 엔진을 이용한 타임라인 관리 방법.
  12. 사용자의 단말로부터 데이터의 저장 요청 및 검색 조건과 데이터의 조회 요청을 수신하는 입력부;
    상기 데이터를 역색인 구조로 변환하기 전까지만 저장하기 위한 임시 저장부;
    상기 데이터를 상기 임시 저장부와 데이터 저장부에 저장하는 제어부; 및
    상기 데이터를 역색인 구조로 변환하는 데이터 저장부를 포함하되,
    상기 제어부는,
    상기 검색 조건으로 상기 임시 저장부와 상기 데이터 저장부를 조회하여, 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하고,
    상기 임시 저장부는, 상기 역색인 구조로 변환되지 않은 데이터를 포함하며,
    상기 임시 저장부의 조회 결과는, 상기 역색인 구조가 이용되지 않은 데이터 조회 결과이고,
    상기 데이터 저장부의 조회 결과는, 상기 역색인 구조가 이용된 데이터 조회 결과인,
    검색 엔진을 이용한 타임라인 관리 장치.
  13. 제12항에 있어서,
    상기 제어부가 상기 데이터를 상기 임시 저장부와 상기 데이터 저장부에 저장한 후에,
    상기 데이터의 저장 완료에 대한 안내 메시지를 전달받아 상기 사용자의 단말에 제공하는 표현부를 더 포함하는,
    검색 엔진을 이용한 타임라인 관리 장치.
  14. 제12항에 있어서,
    상기 제어부가 상기 데이터를 상기 데이터 저장부에 저장하기 전에,
    상기 데이터를 모아서 상기 데이터 저장부에 저장하기 위한 일괄 처리부를 더 포함하는,
    검색 엔진을 이용한 타임라인 관리 장치.
  15. 사용자의 단말로부터 검색 조건과 데이터의 조회 요청을 수신하는 입력부;
    데이터를 역색인 구조로 변환하기 전까지만 저장하기 위한 임시 저장부;
    데이터를 역색인 구조로 변환하여 저장하고 있는 데이터 저장부; 및
    상기 검색 조건으로 상기 임시 저장부와 상기 데이터 저장부를 조회하여, 상기 임시 저장부의 조회 결과와 상기 데이터 저장부의 조회 결과를 조합하는 제어부를 포함하되,
    상기 임시 저장부는, 상기 역색인 구조로 변환되지 않은 데이터를 포함하며,
    상기 임시 저장부의 조회 결과는, 상기 역색인 구조가 이용되지 않은 데이터 조회 결과이고,
    상기 데이터 저장부의 조회 결과는, 상기 역색인 구조가 이용된 데이터 조회 결과인,
    검색 엔진을 이용한 타임라인 관리 장치.
  16. 제15항에 있어서,
    상기 조합된 결과를 전달받아 상기 사용자의 단말에 제공하는 표현부를 더 포함하는,
    검색 엔진을 이용한 타임라인 관리 장치.
  17. 제15항에 있어서,
    상기 제어부는,
    상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 제외하고 조합하는 것인,
    검색 엔진을 이용한 타임라인 관리 장치.
  18. 제15항에 있어서,
    상기 제어부는,
    상기 임시 저장부의 조회 결과 중에서 상기 데이터 저장부의 조회 결과와 중복되는 데이터를 상기 임시 저장부에서 삭제하는 것인,
    검색 엔진을 이용한 타임라인 관리 장치.
KR1020150151783A 2015-10-30 2015-10-30 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치 KR102347887B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150151783A KR102347887B1 (ko) 2015-10-30 2015-10-30 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150151783A KR102347887B1 (ko) 2015-10-30 2015-10-30 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20170050347A KR20170050347A (ko) 2017-05-11
KR102347887B1 true KR102347887B1 (ko) 2022-01-05

Family

ID=58741493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150151783A KR102347887B1 (ko) 2015-10-30 2015-10-30 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102347887B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080059420A1 (en) 2006-08-22 2008-03-06 International Business Machines Corporation System and Method for Providing a Trustworthy Inverted Index to Enable Searching of Records
JP2009140302A (ja) 2007-12-07 2009-06-25 Hitachi Ltd 転置インデックス作成装置及びフォワードインデックス作成装置
WO2014136810A1 (ja) * 2013-03-07 2014-09-12 日本電気株式会社 類似データ検索装置、類似データ検索方法、及びコンピュータ読み取り可能な記録媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100254803B1 (ko) * 1997-09-19 2000-05-01 윤덕용 컴퓨터 시스템 상에서 한국어 전문 정보 검색을위한 시스템
KR100952298B1 (ko) * 2008-04-30 2010-04-12 한양대학교 산학협력단 중복문서 핸들링을 위한 블로그 서비스 장치 및 방법
KR101049984B1 (ko) * 2008-12-31 2011-07-19 주식회사 엔씨소프트 기분석 사전 갱신장치 및 그 방법
EP3614277B1 (en) * 2012-05-24 2022-08-03 Nant Holdings IP LLC Event archiving, systems and methods
CN104603776B (zh) * 2012-08-08 2020-05-12 亚马逊技术股份有限公司 归档数据存储系统
US8935271B2 (en) * 2012-12-21 2015-01-13 Facebook, Inc. Extract operator

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080059420A1 (en) 2006-08-22 2008-03-06 International Business Machines Corporation System and Method for Providing a Trustworthy Inverted Index to Enable Searching of Records
JP2009140302A (ja) 2007-12-07 2009-06-25 Hitachi Ltd 転置インデックス作成装置及びフォワードインデックス作成装置
WO2014136810A1 (ja) * 2013-03-07 2014-09-12 日本電気株式会社 類似データ検索装置、類似データ検索方法、及びコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
KR20170050347A (ko) 2017-05-11

Similar Documents

Publication Publication Date Title
US11023858B2 (en) System and method for generating desktop focus work areas
US11308032B2 (en) Suggesting content items to be accessed by a user
US8676913B1 (en) Discussion-topic, social network systems
KR100905494B1 (ko) 파일 관리 시스템 및 파일 관리를 실행하기 위한프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
US11226976B2 (en) Systems and methods for graphical exploration of forensic data
US6782383B2 (en) System and method to implement a persistent and dismissible search center frame
US9842113B1 (en) Context-based file selection
US20160078114A1 (en) Virtual repository management
US20050223027A1 (en) Methods and systems for structuring event data in a database for location and retrieval
US20090157801A1 (en) System and method for integrating external system data in a visual mapping system
EP3044695A1 (en) Sharing artifacts in permission-protected archives
US11625526B2 (en) Systems and methods for displaying digital forensic evidence
US11106739B2 (en) Document structures for searching within and across messages
KR102347887B1 (ko) 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치
EP3457294A1 (en) Systems and methods for graphical exploration of forensic data
US9542457B1 (en) Methods for displaying object history information
Khuzadi Knowledge capture and collaboration-current methods
US20230334015A1 (en) Systems and Methods for Sending Notes to Electronic Folders using Metadata Tags
US8239401B2 (en) System for sharing network accessible data sets
JP4969153B2 (ja) 記事管理装置、記事提供方法、コンピュータプログラムおよびコンピュータ読み取り可能な記憶媒体
Dong Design and Implementation of Internet-oriented News Management System
CN114281758A (zh) 电子文档管理易存系统
CN117891373A (zh) 信息展示方法、装置、存储介质及电子设备
KR101047380B1 (ko) 커뮤니티 기반의 검색 서비스 시스템 및 이를 이용한 검색 서비스 방법
JP2000268041A (ja) 文書ファイル共有システム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant