KR20190008673A - File indexing apparatus and method thereof using asynchronous method - Google Patents
File indexing apparatus and method thereof using asynchronous method Download PDFInfo
- Publication number
- KR20190008673A KR20190008673A KR1020170090330A KR20170090330A KR20190008673A KR 20190008673 A KR20190008673 A KR 20190008673A KR 1020170090330 A KR1020170090330 A KR 1020170090330A KR 20170090330 A KR20170090330 A KR 20170090330A KR 20190008673 A KR20190008673 A KR 20190008673A
- Authority
- KR
- South Korea
- Prior art keywords
- index
- file
- index information
- list
- indexed
- 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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명은 파일 관리기술에 관한 것으로, 보다 상세하게는 다수의 파일에 따른 처리속도 및 조작성을 향상시키기 위한 기술에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a file management technique, and more particularly, to a technique for improving processing speed and operability according to a plurality of files.
디스크 등의 기록매체에 기록한 다수의 파일로부터 색인(index)을 생성하고 이 색인을 이용하여 파일을 검색(searching)할 수 있다. 다수의 파일에서 원하는 내용을 빠르게 검색하고자 할 때 디스크 내 파일을 색인하고 검색하기 좋은 형태로 변환해 색인으로 만들어두는 처리 과정을 인덱싱(indexing)이라 하고, 이 과정을 거친 결과물을 색인(index)이라 한다.An index can be generated from a plurality of files recorded on a recording medium such as a disk and the file can be searched using the index. When you want to quickly search for desired contents in a large number of files, the process of indexing the files in the disk and converting them into a searchable index is called indexing, and the result of this process is referred to as an index do.
일 실시 예에 따라, 색인 시간을 단축하기 위한 파일 색인장치 및 그 방법을 제안한다.According to one embodiment, a file indexing apparatus and method for shortening the indexing time are proposed.
일 실시 예에 따른 파일 색인장치는, 색인 대상인 폴더 내 파일들의 색인 리스트를 생성하는 색인 리스트 생성부와, 생성된 색인 리스트로부터 파일의 색인정보를 추출하는 색인정보 추출부와, 생성된 색인 리스트를 이용하여 색인이 필요한 대상인지 여부를 판단하고 색인이 필요한 파일의 색인정보를 이용하여 색인을 생성하되, 색인정보 추출부가 색인정보를 추출하는 동안에, 색인정보 추출이 이루어진 다른 파일에 대한 색인 생성을 동시에 수행하는 색인 처리부를 포함한다.According to an embodiment of the present invention, there is provided a file indexing apparatus including an index list generating unit for generating an index list of files in a folder to be indexed, an index information extracting unit for extracting file index information from the generated index list, And an index is generated using the index information of the file that requires indexing. While the index information extracting unit extracts the index information, the indexing of another file in which the index information is extracted is simultaneously performed And an index processing unit for performing the processing.
색인 리스트는 파일의 최종 수정날짜와 파일 경로 정보를 포함할 수 있다.The index list can include the file's last modified date and file path information.
색인 리스트 생성부는, 폴더 단위로 색인 리스트를 생성하고 생성된 색인 리스트를 폴더 단위로 저장하는 다수의 스레드를 포함하는 스레드 풀을 포함할 수 있다. 이때, 색인 리스트 생성부는 스레드 풀을 구성하는 스레드의 수를 관리하고 스레드의 수가 미리 설정된 수를 넘으면 대기상태로 진입시킬 수 있다.The index list generating unit may include a thread pool including a plurality of threads for generating an index list on a folder basis and storing the generated index list on a folder basis. At this time, the index list generation unit manages the number of threads constituting the thread pool, and can enter the waiting state when the number of threads exceeds a predetermined number.
색인정보 추출부는 색인할 파일의 파일 특성을 분석하여 어떤 색인정보를 추출할 것인지를 결정하고 파일 특성에 맞는 색인정보를 추출할 수 있다. 색인정보 추출부는 색인정보를 추출하고 추출된 색인정보를 색인 처리부에 제공하는 다수의 생산자 스레드를 포함하는 생산자 스레드 풀을 포함할 수 있다. 이때, 색인정보 추출부는 생산자 스레드 풀을 구성하는 생산자 스레드의 수를 관리하고 스레드 수가 미리 설정된 수를 넘어가면 대기상태로 진입시킬 수 있다.The index information extracting unit analyzes the file characteristics of the file to be indexed, determines which index information to extract, and extracts index information corresponding to the file characteristics. The index information extracting unit may include a producer thread pool including a plurality of producer threads for extracting the index information and providing the extracted index information to the index processing unit. At this time, the index information extracting unit manages the number of producer threads constituting the producer thread pool, and can enter the waiting state when the number of threads exceeds the preset number.
색인 처리부는, 색인정보 추출부에서 추출된 적어도 하나의 색인정보가 저장되는 대기 큐와, 대기 큐 내에 색인정보가 있는지 여부를 감시하고 색인정보가 존재하면 색인정보를 가져다가 색인 처리를 수행하여 색인을 생성하며 생성된 색인을 색인 DB에 저장하는 소비자 스레드를 포함할 수 있다.The index processor monitors a wait queue in which at least one index information extracted by the index information extractor is stored, and whether there is index information in the wait queue. If the index information exists, the index processor fetches the index information and performs index processing, And storing the generated index in the index DB.
색인 처리부는, 임시 폴더를 생성하고 임시 폴더 내에 색인할 내용을 레코드에 추가하고, 추가 레코드 수가 미리 설정된 수를 넘으면 색인 쿼리를 호출하여 일괄 색인을 수행하며, 쿼리 실행이 성공하면 임시 폴더를 삭제하고 추가 레코드 수를 초기화할 수 있다.The index processing unit creates a temporary folder, adds contents to be indexed in the temporary folder to the record, and if the number of additional records exceeds a preset number, the index processing unit calls the index query to perform a batch index. If the query execution is successful, The number of additional records can be initialized.
색인 처리부는, 색인 DB 내 테이블에 접근 가능한 핸들을 읽기용 핸들과 쓰기용 핸들로 분리하고 쿼리의 사용목적에 맞는 핸들을 사용하여 색인 처리할 수 있다.The index processor can separate the handle that is accessible to the table in the index DB into a read handle and a write handle, and index it using a handle that is appropriate for the purpose of the query.
일 실시 예에 따르면, 디스크 내의 파일을 검색하는 솔루션에 적용하기 위한 효율적인 색인 기술을 제공할 수 있다. 특히, 색인과 관련된 각각의 과정이 가지는 속도 저하는 문제를 비동기적 방법을 사용해서 개선할 수 있다.According to one embodiment, an efficient indexing technique may be provided for application to a solution for searching files in a disc. In particular, the slowing down of each process associated with the index can improve the problem using asynchronous methods.
도 1은 본 발명의 일 실시 예에 따른 파일 색인장치의 구성도,
도 2는 본 발명의 일 실시 예에 따른 파일 색인방법을 도시한 흐름도이다.1 is a configuration diagram of a file indexing apparatus according to an embodiment of the present invention;
2 is a flowchart illustrating a file indexing method according to an embodiment of the present invention.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of the invention to those skilled in the art. Is provided to fully convey the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout the specification.
본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이며, 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In the following description of the present invention, detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. , Which may vary depending on the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램인스트럭션들(실행 엔진)에 의해 수행될 수도 있으며, 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다.Each block of the accompanying block diagrams and combinations of steps of the flowcharts may be performed by computer program instructions (execution engines), which may be stored in a general-purpose computer, special purpose computer, or other processor of a programmable data processing apparatus The instructions that are executed through the processor of the computer or other programmable data processing equipment will generate means for performing the functions described in each block or flowchart of the block diagram.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory It is also possible for the instructions stored in the block diagram to produce an article of manufacture containing instruction means for performing the functions described in each block or flowchart of the flowchart.
그리고 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명되는 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.And computer program instructions may be loaded onto a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible that the instructions that perform the data processing equipment provide the steps for executing the functions described in each block of the block diagram and at each step of the flowchart.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능들을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있으며, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하며, 또한 그 블록들 또는 단계들이 필요에 따라 해당하는 기능의 역순으로 수행되는 것도 가능하다.Also, each block or step may represent a portion of a module, segment, or code that includes one or more executable instructions for executing the specified logical functions, and in some alternative embodiments, It should be noted that functions may occur out of order. For example, two successive blocks or steps may actually be performed substantially concurrently, and it is also possible that the blocks or steps are performed in the reverse order of the function as needed.
이하, 첨부 도면을 참조하여 본 발명의 실시 예를 상세하게 설명한다. 그러나 다음에 예시하는 본 발명의 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시 예에 한정되는 것은 아니다. 본 발명의 실시 예는 이 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공된다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the following embodiments of the present invention may be modified into various other forms, and the scope of the present invention is not limited to the embodiments described below. The embodiments of the present invention are provided to enable those skilled in the art to more fully understand the present invention.
도 1은 본 발명의 일 실시 예에 따른 파일 색인장치의 구성도이다.1 is a configuration diagram of a file indexing apparatus according to an embodiment of the present invention.
도 1을 참조하면, 파일 색인장치(1)는 폴더 관리부(10), 색인 리스트 생성부(12), 색인정보 추출부(14), 색인 처리부(16) 및 색인 DB(18)를 포함한다.1, the file indexing apparatus 1 includes a
파일 색인장치(1)는 기록 매체, 예를 들어 디스크에 기록된 파일을 대상으로 색인을 생성하고 이를 관리한다. 파일 색인장치(1)는 컴퓨터에 소정의 처리를 실행시킴으로써 색인 생성 및 관리를 수행하는 프로그램으로서 구현될 수 있다. 또는 색인 생성 및 관리를 수행하는 프로그램을 기록하는 기록 매체로서 구현될 수 있다.The file indexing device 1 indexes and manages files recorded on a recording medium, for example, a disk. The file indexing device 1 can be implemented as a program for performing indexing and management by executing predetermined processing on a computer. Or a recording medium for recording a program that performs indexing and management.
폴더 관리부(10)는 기록매체, 예를 들어 디스크 내에서 색인해야 할 폴더들을 관리한다. 디스크에는 색인 대상이 되는 다양한 폴더들이 존재하고, 폴더들은 상하 계층 구조를 가지며, 각 폴더는 파일들로 구성된다. 폴더 관리부(10)는 색인할 폴더들에 대한 리스트인 폴더 리스트, 예를 들어, 도 1의 폴더 리스트 1,2,…,n를 생성하며, 폴더 리스트는 관리자에 의해 설정될 수 있다. 파일은 텍스트, 이미지, 음성, 동영상 데이터 중 하나 이상의 정보를 포함한다.The
색인 리스트 생성부(12)는 폴더 관리부(10)가 관리하는 폴더들을 대상으로 색인해야 할 폴더와 그 하위에 있는 모든 폴더 내 파일들의 색인 리스트를 생성한다. 각 색인 리스트에는 파일의 생성/수정시간과 파일 경로가 포함될 수 있다.The index
색인 리스트는 파일 시스템에 임시 저장될 수 있다. 그 이유는 색인이 완료된 이후 추후 다시 색인할 때, 기존 색인 리스트와 새롭게 생성된 색인 리스트를 비교하여 색인이 필요한 대상인지 여부를 파악할 때 사용하기 위함이다. 파일 경로는 알파벳 순으로 저장될 수 있다. 파일 경로를 알파벳 순으로 저장하는 이유는, 기존 색인 리스트와 새로운 색인 리스트를 서로 비교할 때, 순차적으로 진행을 용이하게 하기 위함이다.The index list can be stored temporarily in the file system. The reason is that when the index is re-indexed after the completion of the index, it is used to compare the existing index list with the newly created index list to determine whether or not the index is needed. File paths can be stored in alphabetical order. The reason for storing the file paths in alphabetical order is to facilitate sequential progression when comparing an existing index list with a new index list.
색인정보 추출부(14)는 색인 리스트 생성부(12)를 통해 생성된 색인 리스트를 이용하여 파일로부터 색인정보를 추출한다. 색인정보는 색인할 파일에 대한 정보로서, 파일 속성이 포함될 수 있고, 파일 내용이 더 포함될 수 있다.The index
색인정보는 파일들에 공통인 공통 색인정보와, 파일마다 고유한 고유 색인정보를 포함할 수 있다. 공통 색인정보는 파일의 특성에 상관없이 공통된 정보이고, 고유 색인정보는 파일의 특성에 따라 상이한 정보를 포함한다. 예를 들어, 공통 색인정보는 파일 타입, 파일명, 파일의 키워드, 파일 상세설명, 파일 제목 및 파일을 생성한 사용자 정보 등일 수 있다. 고유 색인정보의 예로는, 오디오 파일의 경우, 가수, 앨범명, 쟝르, 재생시간, 재생 빈도, 앨범 제작년도, 가사, 저작권, 포맷 중 하나 이상의 정보를 포함할 수 있다.The index information may include common index information common to files and unique index information unique to each file. The common index information is common information regardless of the characteristics of the file, and the unique index information includes different information depending on the characteristics of the file. For example, the common index information may be a file type, a file name, a keyword of the file, a detailed description of the file, a file title, and user information that generated the file. Examples of the unique index information may include at least one of an artist name, an album name, a genre, a reproduction time, a reproduction frequency, an album production year, a lyrics, a copyright, and a format in the case of an audio file.
파일의 특성은 색인 리스트 내 파일 경로의 확장자와 해당 파일의 헤더를 확인해서 얻어질 수 있다. 이 경우, 색인정보 추출부(14)는 색인할 파일의 파일 특성을 분석하여 어떤 색인정보를 추출할 것인지를 결정하고, 파일 특성에 맞는 색인정보를 추출할 수 있다. 파일 경로의 확장자는 예를 들어, 동영상 관련 확장명(AVI, MP4, MPEG, MKV), 이미지 확장명(BMP, JPG, PNG) 등이 있다.The characteristics of a file can be obtained by checking the extension of the file path in the index list and the header of the file. In this case, the index
새로 생성된 색인 리스트를 가져와서 색인이 필요하다면 해당 요소를 추가(Insert) 또는 갱신(Update)하게 되는데, 이를 위해 파일의 색인정보를 가져온다. 이때, 색인할 파일의 특성을 파악하고 파악한 특성에 알맞은 색인정보를 가져오도록 한다. 색인할 파일의 특성은 색인 리스트 내 파일 경로의 확장자와 해당 파일의 헤더를 확인해서 파악할 수 있다. 색인정보로서 파일 내용은 문서의 바디(Body)에 해당하는 부분으로서, 이 경우 문서 내용의 앞의 일부만을 색인정보로 가져올 수 있다. 바디 내용도 색인이 되기 때문이다.If you need to get a list of newly created indexes and you need to index them, you can insert or update them. At this time, the characteristics of the file to be indexed are grasped and the index information suitable for the identified characteristics is obtained. The characteristics of the file to be indexed can be identified by checking the extension of the file path in the index list and the header of the file. As the index information, the file content corresponds to the body of the document. In this case, only a part of the document content can be fetched as the index information. Body content is also indexed.
색인 처리부(16)는 생성된 색인 리스트를 이용하여 색인이 필요한 대상인지 여부를 파악하고, 색인이 필요한 파일의 색인정보를 이용하여 색인을 생성한다. 색인 처리부(16)의 색인 처리과정은 전술한 기술을 바탕으로 아래와 같이 진행된다.The
색인 처리부(16)는 색인할 폴더 리스트에서 색인 리스트들을 가져온다. 더 이상 가져올 색인 리스트가 없다면, 색인을 종료한다.The
색인할 폴더에 대해서는 아래와 같은 절차를 진행한다. 색인 리스트를 생성하고, 폴더 리스트 내에 생성된 색인 리스트만 존재할 경우에는 생성된 모든 색인 리스트를 Insert로 수행한다.For folders to be indexed, proceed as follows. If an index list is generated and only the index list generated in the folder list exists, the created list of all the indexes is inserted.
생성된 색인 리스트와, 기존 색인 리스트가 모두 존재할 경우에는 아래와 같이 처리한다. 즉, 생성된 색인 리스트를 가져오고 기존 색인 리스트를 가져와서 두 색인 리스트의 파일 경로를 비교하게 되는데, 결과는 아래와 같이 숫자로 리턴된다.If both the generated index list and the existing index list exist, proceed as follows. In other words, it takes a list of indexes created and takes a list of existing indexes and compares the file paths of two index lists. The result is returned as a number as shown below.
생성된 색인 리스트의 파일 경로 > 기존 색인 리스트의 파일 경로 : 양수가 리턴File path of the generated index list> File path of the existing index list: Return positive number
생성된 색인 리스트의 파일 경로 < 기존 색인 리스트의 파일 경로 : 음수가 리턴File path of the generated index list <File path of the existing index list: Returns a negative number
생성된 색인 리스트의 파일 경로 = 기존 색인 리스트의 파일 경로 : 0을 리턴File path of generated index list = Return file path of existing index list: 0
위의 결과 값을 통해서 아래와 같이 색인이 필요한지 여부를 결정한다.The above result value determines whether the index is needed as follows.
두 파일 경로를 비교한 결과 값이 양수인 경우, 기존 색인 리스트를 Delete 처리하고, 다른 기존 색인 리스트를 가져와, 전술한 프로세스를 다시 수행한다.If the result of comparing the two file paths is a positive value, the existing index list is deleted, another existing index list is obtained, and the above-described process is performed again.
두 파일 경로를 비교한 결과 값이 음수인 경우, 생성된 색인 리스트를 Insert 처리하고, 다른 생성된 색인 리스트를 가져와, 전술한 프로세스를 다시 수행한다.If the result of comparing the two file paths is negative, insert the generated index list, fetch another generated index list, and perform the above-described process again.
두 파일 경로를 비교한 결과 값이 0일 경우, 생성된 색인 리스트와 기존 색인 리스트의 파일 최종 수정날짜를 비교해서 서로 다르면 Update 처리한다.If the result of comparing the two file paths is 0, compare the created index list with the last modification date of the existing index list, and update them if they are different.
생성된 색인 리스트들을 모두 처리했을 경우, 나머지 기존 색인 리스트들은 Delete 처리한다. 기존 색인 리스트들을 모두 처리했을 경우, 나머지 생성된 색인 리스트들은 Insert 처리한다. 색인할 폴더 리스트 내 모든 색인 리스트를 대상으로 전술한 작업을 반복 수행한다.If all the generated index lists have been processed, the remaining existing index lists are deleted. If all the existing index lists are processed, the remaining index lists are inserted. The above-described operation is repeated for all the index lists in the folder list to be indexed.
위의 과정들 중에서 속도 저하를 가져다줄 수 있는 요인은 아래와 같다.Among the above processes, the following factors may cause the speed decrease.
1. 색인할 폴더의 수가 많아지면 색인 리스트 생성 시에 소요되는 시간이 길어진다.1. As the number of folders to be indexed increases, the time required to create the index list becomes longer.
2. 각각의 색인할 파일의 색인정보를 가져오는 과정에서의 소요 시간이 길다. 텍스트 파일인 경우에는 단순히 데이터를 읽기만 하는 것으로 충분하지만, 대부분의 파일 양식들은 그렇지 못하다. 대부분의 파일은 저마다 고유의 형식을 가지므로 이를 색인이 가능한 형태로 변환하는 작업이 필요하여 소요 시간이 길어질 수밖에 없다.2. It takes a long time to fetch the index information of each file to be indexed. For text files, it is sufficient to simply read the data, but most file formats do not. Since most files have their own format, it is necessary to convert them into a form that can be indexed.
3. 색인 DB에 색인된 내용을 반영할 때, 단순히 1건마다 쿼리(Query)를 실행하는 방식으로 접근하면 소요 시간이 오래 걸린다. 색인 DB 입장에서는 실제로 색인하는 과정 이외에, 테이블에 잠금(Lock)을 걸었다가 풀고, DB 로그 또한 쿼리 마다 작성하는 과정이 포함되므로 성능에 영향을 준다.3. When indexed contents are reflected in the index database, it takes a long time to approach by simply executing a query in each case. In addition to the actual indexing process, index DB affects performance because it involves locking and unlocking tables, and DB log also being created for each query.
본 발명은 전술한 바와 같이 색인속도를 저하하는 요인들을 제거하는 방안으로 아래와 같은 방법을 제시한다.The present invention proposes the following method as a method for eliminating the factors that lower the index speed as described above.
첫째, 색인 리스트 생성부(12)가 색인 리스트를 생성할 때, 스레드 풀(Thread Pool)(120)을 이용한다. 이때, 폴더 별로 스레드에 맡겨서 색인 리스트를 생성한다. 스레드 수가 많아지면 시스템을 불안정하게 할 수 있으므로, 스레드 수가 미리 설정된 수를 넘어서면, 대기 상태에 들어가는 방식으로 접근할 수 있다. 이를 스레드 풀(120)을 통해 관리하도록 한다.First, when the index
색인 리스트 생성부(12)가 생성된 색인 리스트를 보관할 때, 하나의 파일에 보관하는 것이 아니라, 각 스레드가 담당한 폴더 별로 보관한다. 하나의 파일에 색인 리스트를 보관하려는 경우에 비동기적인 방법을 사용하게 되면 경합 조건(Race Condition) 문제가 발생하여 보관 순서의 일정함을 항상 보장할 수 없다. 적어도 폴더 별로는 보관 순서가 일정하기 때문에 하나의 파일로 보관할 게 아니라, 폴더 별로 파일을 보관하도록 한다.When the index
둘째, 색인정보 추출부(14) 및 색인 처리부(16)가 비동기적인 방식으로 작업을 수행한다. 색인정보 추출부(14)가 색인할 파일의 색인정보를 획득하는 동안에, 색인 처리부(16)가 다른 색인할 파일에 대한 처리를 동시에 수행할 수 있으면 색인 성능이 향상될 것이다. 두 개의 작업 간에는 연관 관계가 전혀 없으므로 충분히 비동기적인 방식으로 접근이 가능하다.Second, the index
일 실시 예에 따른 비동기적인 방식에 따르면, 색인정보 추출부(14)는 다수의 생산자 스레드로 구성된 스레드 풀(140)을 통해 작업을 수행하고, 색인 처리부(16)는 하나의 소비자 스레드(162)를 통해 작업을 수행한다. 파일의 색인정보를 획득하는 시간이 균일하지 못하기 때문에, 이 작업을 별도의 생산자 스레드들을 통해 수행한다. 색인정보 생성 작업이 완료되면, 각 생산자 스레드는 색인 처리부(16)에서 제공하는 대기 큐(Queue)(160)에 색인정보를 보관한다. 색인 처리부(16)는 자체 대기 큐(160)를 가지고 있으며, 소비자 스레드(162)가 주기적으로 대기 큐(160) 안에 내용이 있는지 감시한다. 만약 대기 큐(160) 내에 색인정보가 들어와 있으면 해당 색인정보를 가져다가 색인 처리를 진행한다. 생산자 스레드가 너무 많아지면 시스템을 불안정하게 만들 수 있으므로, 색인정보 추출부(14)는 생산자 스레드 풀(140)을 관리한다. 즉, 생산자 스레드 풀(140)을 구성하는 생산자 스레드의 수가 미리 설정된 수를 넘어가면 대기상태로 진입시킨다.According to the asynchronous method according to the embodiment, the index
셋째, 색인 처리부(16)는 일괄 색인 기능을 가진 색인 쿼리를 사용한다. 색인 처리부(16)는 임시 폴더를 생성하고 임시 폴더 내에 색인할 내용을 레코드에 추가한다. 이때, 추가 레코드 수가 1 증가한다. 추가 레코드 수는 메모리에서 관리하도록 한다. 추가한 레코드 수가 미리 설정된 수를 넘으면, 색인 처리부(16)는 색인 쿼리를 호출하여 일괄 색인을 수행한다. 쿼리 실행이 성공하면, 임시 폴더를 삭제하고, 추가한 레코드 수를 초기화한다.Third, the
넷째, 색인 처리부(16)는 색인 DB(18)에 접근하기 위한 핸들을 읽기 전용 및 쓰기 전용으로 나누어서 사용한다. 일괄 색인이, 1건당 색인 쿼리를 호출하여 처리하는 방법에 비하면 비약적으로 속도가 빠르지만, 한꺼번에 여러 레코드를 처리하기 때문에 즉각 처리되진 않는다. 그러므로 만약 하나의 핸들에서 읽기와 쓰기 모두 처리하도록 설정했을 경우, 검색 목적으로 호출된 쿼리가 일괄 색인이 끝날 때까지 기다리게 된다. 그래서 색인 DB(18) 내 테이블에 접근 가능한 핸들을 읽기 전용, 쓰기 전용으로 따로 분리하고, 쿼리의 목적에 따라서 알맞은 핸들을 사용하도록 한다.Fourth, the
도 2는 본 발명의 일 실시 예에 따른 파일 색인방법을 도시한 흐름도이다.2 is a flowchart illustrating a file indexing method according to an embodiment of the present invention.
도 1 및 도 2를 참조하면, 파일 색인장치(1)는 디스크 내 색인할 폴더들에 폴더 리스트를 생성한다(210). 이어서, 파일 색인장치(1)는 폴더 내 파일들의 색인 리스트를 생성한다(220). 색인 리스트에는 파일의 최종 수정날짜와 파일 경로 정보가 포함될 수 있다. 색인 리스트 생성 시에, 파일 색인장치(1)는 스레드 풀을 구성하는 다수의 스레드를 통해 폴더 단위로 색인 리스트를 생성하고, 생성된 색인 리스트를 폴더 단위로 저장할 수 있다. 이때, 스레드 풀을 구성하는 스레드의 수를 관리하고, 스레드의 수가 미리 설정된 수를 넘으면 대기상태로 진입시킬 수 있다.Referring to FIGS. 1 and 2, the file indexing device 1 creates a folder list in folders to be indexed in the disc (210). Subsequently, the file indexing device 1 generates an index list of files in the folder (220). The index list can include the file's last modified date and file path information. In generating an index list, the file indexing device 1 can generate an index list on a folder basis through a plurality of threads constituting the thread pool, and store the generated index list in a folder unit. At this time, the number of threads constituting the thread pool is managed, and when the number of threads exceeds a preset number, it is possible to enter the waiting state.
이어서, 파일 색인장치(1)는 생성된 색인 리스트로부터 파일의 색인정보를 추출한다(230). 파일 색인장치(1)는 색인할 파일의 파일 특성을 분석하여 어떤 색인정보를 추출할 것인지를 결정하고 파일 특성에 맞는 색인정보를 추출할 수 있다. 일 실시 예에 따른 파일 색인장치(1)는 다수의 생산자 스레드를 포함하는 생산자 스레드 풀을 통해 색인정보를 추출하고, 추출된 색인정보를 소비자 스레드가 관리하는 대기 큐에 저장한다. 이때, 생산자 스레드 풀을 구성하는 생산자 스레드의 수를 관리하고 스레드 수가 미리 설정된 수를 넘어가면 대기상태로 진입시킬 수 있다.Subsequently, the file indexing device 1 extracts the index information of the file from the generated index list (230). The file indexing device 1 analyzes file characteristics of a file to be indexed, determines which index information to extract, and extracts index information matching the file characteristics. The file indexing device 1 according to an embodiment extracts index information through a producer thread pool including a plurality of producer threads, and stores the extracted index information in a waiting queue managed by a consumer thread. At this time, the number of producer threads constituting the producer thread pool is managed, and when the number of threads exceeds the preset number, the processor can enter the waiting state.
이어서, 파일 색인장치(1)는 색인이 필요한 파일의 색인정보를 이용하여 색인을 생성한다(240). 이때, 파일 색인장치(1)는 생산자 스레드들이 색인정보를 추출하는 동안에, 소비자 스레드가 색인정보 추출이 이루어진 다른 파일에 대한 색인 생성을 동시에 수행한다. 일 실시 에에 따른 파일 색인장치(1)는 대기 큐 내에 색인정보가 있는지 여부를 감시하고 색인정보가 존재하면 색인정보를 가져다가 색인 처리를 수행하여 색인을 생성한다. 생성된 색인은 색인 DB에 저장된다.Subsequently, the file indexing device 1 generates an index using the index information of the file requiring indexing (240). At this time, while the file indexing device 1 extracts the index information by the producer thread, the consumer thread simultaneously performs the indexing on the other file in which the index information extraction is performed. The file indexing device 1 according to an embodiment monitors whether or not index information is present in a waiting queue and, if index information exists, obtains index information and performs an index process to generate an index. The generated index is stored in the index DB.
일 실시 예에 따른 파일 색인장치(1)는 임시 폴더를 생성하고 임시 폴더 내에 색인할 내용을 레코드에 추가하며 추가 레코드 수를 1 증가한다. 이때, 추가 레코드 수가 미리 설정된 수를 넘으면 색인 쿼리를 호출하여 일괄 색인을 수행하며, 쿼리 실행이 성공하면 임시 폴더를 삭제하고 추가 레코드 수를 초기화한다.The file indexing device 1 according to the embodiment creates a temporary folder, adds contents to be indexed in the temporary folder to the record, and increases the number of additional records by one. At this time, if the number of additional records exceeds the preset number, the index query is called to perform the indexing. If the query is successful, the temporary folder is deleted and the number of additional records is initialized.
일 실시 예에 따른 파일 색인장치(1)는 색인 DB 내 테이블에 접근 가능한 핸들을 읽기용 핸들과 쓰기용 핸들로 분리하고 쿼리의 사용목적에 맞는 핸들을 사용하여 색인 처리한다.The file indexing device 1 according to the embodiment separates the handles which can be accessed in the table in the index DB into the handles for reading and the handles for writing, and indexes them by using the handles corresponding to the purpose of the query.
이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The embodiments of the present invention have been described above. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.
1: 파일 색인장치 10: 폴더 관리부
12: 색인 리스트 생성부 14: 색인정보 추출부
16: 색인 처리부 18: 색인 DB1: file indexing device 10: folder managing part
12: Index list generation unit 14: Index information extraction unit
16: Index processor 18: Index DB
Claims (10)
생성된 색인 리스트로부터 파일의 색인정보를 추출하는 색인정보 추출부; 및
생성된 색인 리스트를 이용하여 색인이 필요한 대상인지 여부를 판단하고 색인이 필요한 파일의 색인정보를 이용하여 색인을 생성하되, 상기 색인정보 추출부가 색인정보를 추출하는 동안에, 색인정보 추출이 이루어진 다른 파일에 대한 색인 생성을 동시에 수행하는 색인 처리부;
를 포함하는 것을 특징으로 하는 파일 색인장치.An index list generating unit for generating an index list of files in a folder to be indexed;
An index information extracting unit for extracting index information of the file from the generated index list; And
The index information extracting unit extracts the index information of the file that is to be indexed by using the generated index list and determines whether or not the index file is an object to be indexed. An index processing unit for simultaneously performing indexing on the indexes;
The file indexing device comprising:
상기 색인 리스트는 파일의 최종 수정날짜와 파일 경로 정보를 포함하는 것을 특징으로 하는 파일 색인장치.The method according to claim 1,
Wherein the index list includes a file last modification date and file path information.
폴더 단위로 색인 리스트를 생성하고 생성된 색인 리스트를 폴더 단위로 저장하는 다수의 스레드를 포함하는 스레드 풀;
을 포함하는 것을 특징으로 하는 파일 색인장치.The apparatus of claim 1, wherein the index list generation unit
A thread pool including a plurality of threads for generating an index list on a folder basis and storing the generated index list on a folder basis;
The file indexing device comprising:
상기 스레드 풀을 구성하는 스레드의 수를 관리하고 스레드의 수가 미리 설정된 수를 넘으면 대기상태로 진입시키는 것을 특징으로 하는 파일 색인장치.4. The apparatus of claim 3, wherein the index list generation unit
And manages the number of threads constituting the thread pool, and enters the waiting state when the number of threads exceeds a predetermined number.
색인할 파일의 파일 특성을 분석하여 어떤 색인정보를 추출할 것인지를 결정하고 파일 특성에 맞는 색인정보를 추출하는 것을 특징으로 하는 파일 색인장치.The apparatus of claim 1, wherein the index information extracting unit
Wherein the file indexing device analyzes the file characteristics of the file to be indexed to determine which index information is to be extracted and extracts index information corresponding to the file property.
색인정보를 추출하고 추출된 색인정보를 상기 색인 처리부에 제공하는 다수의 생산자 스레드를 포함하는 생산자 스레드 풀;
을 포함하는 것을 특징으로 하는 파일 색인장치.The apparatus of claim 1, wherein the index information extracting unit
A producer thread pool including a plurality of producer threads for extracting index information and providing the extracted index information to the index processor;
The file indexing device comprising:
상기 생산자 스레드 풀을 구성하는 생산자 스레드의 수를 관리하고 스레드 수가 미리 설정된 수를 넘어가면 대기상태로 진입시키는 것을 특징으로 하는 파일 색인장치.7. The apparatus of claim 6, wherein the index information extracting unit
And manages the number of producer threads constituting the producer thread pool and enters the waiting state when the number of threads exceeds a predetermined number.
상기 색인정보 추출부에서 추출된 적어도 하나의 색인정보가 저장되는 대기 큐; 및
상기 대기 큐 내에 색인정보가 있는지 여부를 감시하고 색인정보가 존재하면 색인정보를 가져다가 색인 처리를 수행하여 색인을 생성하며 생성된 색인을 색인 DB에 저장하는 소비자 스레드;
를 포함하는 것을 특징으로 하는 파일 색인장치.The image processing apparatus according to claim 1, wherein the index processing unit
A waiting queue storing at least one index information extracted by the index information extracting unit; And
A consumer thread monitoring whether or not index information exists in the waiting queue, fetching index information if index information exists, generating an index by performing index processing, and storing the generated index in an index DB;
The file indexing device comprising:
임시 폴더를 생성하고 임시 폴더 내에 색인할 내용을 레코드에 추가하고, 추가 레코드 수가 미리 설정된 수를 넘으면 색인 쿼리를 호출하여 일괄 색인을 수행하며, 쿼리 실행이 성공하면 임시 폴더를 삭제하고 추가 레코드 수를 초기화하는 것을 특징으로 하는 파일 색인장치.The image processing apparatus according to claim 1, wherein the index processing unit
If the number of additional records exceeds the preset number, the index query is called to perform batch indexing. If the query execution is successful, the temporary folder is deleted and the number of additional records is incremented And initializes the file indexing device.
색인 DB 내 테이블에 접근 가능한 핸들을 읽기용 핸들과 쓰기용 핸들로 분리하고 쿼리의 사용목적에 맞는 핸들을 사용하여 색인 처리하는 것을 특징으로 하는 파일 색인장치.The image processing apparatus according to claim 1, wherein the index processing unit
A file indexing device for separating a handle accessible to a table in the index DB into a read handle and a write handle and using the handle corresponding to the purpose of the query.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170090330A KR101992631B1 (en) | 2017-07-17 | 2017-07-17 | File indexing apparatus and method thereof using asynchronous method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170090330A KR101992631B1 (en) | 2017-07-17 | 2017-07-17 | File indexing apparatus and method thereof using asynchronous method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190008673A true KR20190008673A (en) | 2019-01-25 |
KR101992631B1 KR101992631B1 (en) | 2019-06-25 |
Family
ID=65280551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170090330A KR101992631B1 (en) | 2017-07-17 | 2017-07-17 | File indexing apparatus and method thereof using asynchronous method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101992631B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021025265A1 (en) * | 2019-08-06 | 2021-02-11 | 삼성전자 주식회사 | Electronic device for performing media scan, and media scan method therefor |
CN112965805A (en) * | 2021-03-25 | 2021-06-15 | 兴业数字金融服务(上海)股份有限公司 | Cross-process asynchronous task processing method and system based on memory mapping file |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004185214A (en) * | 2002-12-02 | 2004-07-02 | Renesas Technology Corp | File management device |
KR20040062393A (en) * | 2002-12-31 | 2004-07-07 | 인터내셔널 비지네스 머신즈 코포레이션 | Dynamic thread pool tuning techniques |
JP2008009918A (en) * | 2006-06-30 | 2008-01-17 | Fujitsu Ltd | Program, device and method for creating index |
KR100885527B1 (en) | 2007-10-24 | 2009-02-26 | 주식회사 코난테크놀로지 | Apparatus for making index-data based by context and for searching based by context and method thereof |
KR100929688B1 (en) * | 2007-02-12 | 2009-12-03 | 주식회사 이지씨앤씨 | System and method for generating indexing information of a multimedia data file using voice data System and method for retrieving indexing information of a multimedia data file |
KR20150025326A (en) | 2013-08-29 | 2015-03-10 | 건국대학교 산학협력단 | Index-based data process system |
-
2017
- 2017-07-17 KR KR1020170090330A patent/KR101992631B1/en active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004185214A (en) * | 2002-12-02 | 2004-07-02 | Renesas Technology Corp | File management device |
KR20040062393A (en) * | 2002-12-31 | 2004-07-07 | 인터내셔널 비지네스 머신즈 코포레이션 | Dynamic thread pool tuning techniques |
JP2008009918A (en) * | 2006-06-30 | 2008-01-17 | Fujitsu Ltd | Program, device and method for creating index |
KR100929688B1 (en) * | 2007-02-12 | 2009-12-03 | 주식회사 이지씨앤씨 | System and method for generating indexing information of a multimedia data file using voice data System and method for retrieving indexing information of a multimedia data file |
KR100885527B1 (en) | 2007-10-24 | 2009-02-26 | 주식회사 코난테크놀로지 | Apparatus for making index-data based by context and for searching based by context and method thereof |
KR20150025326A (en) | 2013-08-29 | 2015-03-10 | 건국대학교 산학협력단 | Index-based data process system |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021025265A1 (en) * | 2019-08-06 | 2021-02-11 | 삼성전자 주식회사 | Electronic device for performing media scan, and media scan method therefor |
CN112965805A (en) * | 2021-03-25 | 2021-06-15 | 兴业数字金融服务(上海)股份有限公司 | Cross-process asynchronous task processing method and system based on memory mapping file |
CN112965805B (en) * | 2021-03-25 | 2023-12-05 | 兴业数字金融服务(上海)股份有限公司 | Cross-process asynchronous task processing method and system based on memory mapping file |
Also Published As
Publication number | Publication date |
---|---|
KR101992631B1 (en) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7130867B2 (en) | Information component based data storage and management | |
US6794566B2 (en) | Information type identification method and apparatus, e.g. for music file name content identification | |
US8468146B2 (en) | System and method for creating search index on cloud database | |
US8775435B2 (en) | Ordered index | |
JP6598996B2 (en) | Signature-based cache optimization for data preparation | |
JP2016536659A (en) | System and method for content-based medical macro sorting and retrieval system | |
JP4233564B2 (en) | Data processing apparatus, data processing program and recording medium | |
JP6598997B2 (en) | Cache optimization for data preparation | |
KR101992631B1 (en) | File indexing apparatus and method thereof using asynchronous method | |
Simmons et al. | Hybrid. media: High velocity video ingestion in an in-memory scalable analytical polystore | |
US9720997B2 (en) | Method and apparatus for prioritizing metadata | |
CN111045994B (en) | File classification retrieval method and system based on KV database | |
KR101440475B1 (en) | Method for creating index for mixed query process, method for processing mixed query, and recording media for recording index data structure | |
Snasel et al. | Fuzzy signatures organized using S-Tree | |
CN117349401B (en) | Metadata storage method, device, medium and equipment for unstructured data | |
JP5906810B2 (en) | Full-text search device, program and recording medium | |
CN117648399A (en) | Data searching method and device based on merging index | |
WO2017007511A1 (en) | Data management using index change events | |
KR20030006638A (en) | Apparatus And Method of Cell-based Indexing of High-dimensional Data | |
CN116304156A (en) | Picture retrieval method, device, electronic equipment and storage medium | |
CN117076743A (en) | Log retrieval method, device, system and medium based on full text retrieval database | |
JP2004046906A (en) | Information retrieval system, information retrieval method, and recording medium recording program for information retrieval | |
JP2005011048A (en) | Database management method, execution device and processing program | |
KR20040053081A (en) | Method and system for managing files and data based on association information |
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 |