KR102570481B1 - 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치 - Google Patents

멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치 Download PDF

Info

Publication number
KR102570481B1
KR102570481B1 KR1020200184831A KR20200184831A KR102570481B1 KR 102570481 B1 KR102570481 B1 KR 102570481B1 KR 1020200184831 A KR1020200184831 A KR 1020200184831A KR 20200184831 A KR20200184831 A KR 20200184831A KR 102570481 B1 KR102570481 B1 KR 102570481B1
Authority
KR
South Korea
Prior art keywords
queue
memory
data
database
processors
Prior art date
Application number
KR1020200184831A
Other languages
English (en)
Other versions
KR20220093774A (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 KR1020200184831A priority Critical patent/KR102570481B1/ko
Publication of KR20220093774A publication Critical patent/KR20220093774A/ko
Application granted granted Critical
Publication of KR102570481B1 publication Critical patent/KR102570481B1/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
    • G06F16/2219Large Object storage; Management thereof
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Abstract

본 명세서는 멀티 프로세스를 통해 파일을 저장하기 위한 파이썬 장치에 관한 것이다.
보다 구체적으로, 파이썬 장치는 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 소정 크기의 텍스트 파일을 수신하는 메모리; 상기 메모리에서 처리된 데이터를 저장하는 데이터베이스; 및 상기 메모리 및 상기 데이터베이스와 기능적으로 연결된 제어부를 포함하며, 상기 제어부에 포함되는 적어도 하나의 제1 프로세서, 적어도 하나의 제2 프로세서 및 적어도 하나의 제3 프로세서는 동시에 동작될 수 있다.
이를 통해, 본 명세서는 파이썬 프로그램을 통해 대용량의 파일을 저장할 수 있는 효과가 있다.

Description

멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치{ Method for storing files through multi-process and apparatus therefor}
본 명세서는 파일을 저장하기 위한 방법에 관한 것으로서, 보다 상세하게는 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 지원하는 장치에 관한 것이다.
파이썬(paython)은 프로그램 언어의 한 종류로서, 컴퓨터 프로그래밍 교육뿐만 아니라, 구글 등 기업의 실무를 위해서도 최근 많이 사용되는 프로그램 언어이다. 온라인 사진 공유 서비스 인스타그램(Instagram), 파일 동기화 서비스 드롭박스(Dropbox)등은 파이썬으로 개발된 응용 프로그램에 해당한다.
또한, 파이썬 프로그램의 특징은 공동 작업과 유지 보수가 매우 쉽고 편하다. 이런 이유로, 이미 다른 언어로 작성된 많은 프로그램과 모듈이 파이썬으로 재구성되고 있다.
파이썬은 시스템 유틸리티 제작, GUI 프로그래밍, C/C++과의 결합, 웹 프로그래밍, 수치 연산 프로그래밍, 데이터베이스 프로그래밍, 데이터 분석, 사물 인터넷 등을 위해 수행될 수 있다.
다만, 파이썬은 컴퓨터 하드웨어 제한 등으로 인해 램(RAM)과 같은 메모리의 용량보다 큰 용량의 파일 즉, 대용량 파일을 처리하는데 한계가 있었다.
즉, 종래의 파이썬은 대용량 파일을 데이터베이스에 저장하기 위해 대용량 파일을 모두 읽은 다음에 데이터베이스에 저장하기 때문에 속도가 느리거나, 대용량 파일을 분할하여 처리함으로 인해 2개 이상의 메모리를 사용해야 하는 등의 문제가 있었다.
따라서, 본 명세서는 상기와 같은 파이썬의 한계를 해결하기 위해 복수의 프로세서들이 탑재된 디바이스에서 각 프로세서 별로 복수의 프로세스를 동시에 수행하도록 함으로써, 파이썬에서 대용량의 파일을 처리하는 방법을 제공함에 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서는 멀티 프로세스를 통해 파일을 저장하기 위한 파이썬 장치에 있어서, 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 소정 크기의 텍스트 파일을 수신하는 메모리; 상기 메모리에서 처리된 데이터를 저장하는 데이터베이스; 및 상기 메모리 및 상기 데이터베이스와 기능적으로 연결된 제어부를 포함하되, 상기 메모리는, 복수의 제1 서브 큐들을 포함하는 제1 큐; 상기 제1 큐의 데이터를 상기 데이터베이스의 포맷에 맞게 변환하는 데이터 변환부; 및 복수의 제2 서브 큐들을 포함하는 제2 큐를 포함하며, 상기 제어부는, 상기 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 상기 소정 크기의 텍스트 파일을 파싱하여, 파싱된 텍스트 파일을 상기 제1 큐에 전달하도록 설정되는 복수의 제1 프로세서; 상기 데이터베이스의 포맷에 맞게 변환된 데이터를 상기 제2 큐로 전달하도록 설정되는 복수의 제2 프로세서; 상기 제2 큐의 데이터를 상기 데이터베이스에 저장하도록 설정되는 수의 제3 프로세서를 포함하며, 상기 파싱된 텍스트 파일이 상기 제1 큐로 전달되는 경우 및 상기 변환된 데이터가 상기 제2 큐로 전달되는 경우에 있어서, 상기 제1 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되고, 상기 제2 큐의 데이터가 상기 데이터베이스로 전달되는 경우에 있어서, 상기 제2 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되는 것을 특징으로 한다.
또한, 본 명세서에서 상기 복수의 제1 서브 큐들은 상기 적어도 하나의 제1 프로세서에 각각 할당되며, 상기 복수의 제2 서브 큐들은 상기 적어도 하나의 제3 프로세서에 각각 할당되는 것을 특징으로 한다.
또한, 본 명세서에서 상기 파싱된 텍스트 파일은 상기 복수의 제1 서브 큐들에 순차적으로 또는 동시에 수신되는 것을 특징으로 한다.
또한, 본 명세서에서 상기 복수의 제1 프로세서, 상기 복수의 제2 프로세서 및 상기 복수의 제3 프로세서는 동시에 동작하는 것을 특징으로 한다.
또한, 본 명세서에서 상기 제어 명령은 readlines() 함수인 것을 특징으로 한다.
또한, 본 명세서에서 상기 소정 크기는 상기 메모리의 용량의 크기보다 큰 것을 특징으로 한다.
또한, 본 명세서에서 상기 복수의 제1 프로세서는 상기 제1 큐에 상기 소정의 텍스트 파일의 마지막까지 수신되었음을 감지한 경우, 상기 제1 큐의 데이터에 상기 소정의 텍스트 파일의 마지막임을 나타내는 엔드 마커(end marker)를 추가하도록 설정되는 것을 특징으로 한다.
또한, 본 명세서에서 상기 특정 시간 단위는 0초에서 1초 사이의 값을 가지는 것을 특징으로 한다.
또한, 본 명세서는 멀티 프로세스를 통해 파일을 저장하기 위한 방법에 있어서, 복수의 제1 프로세서가 메모리의 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 소정 크기의 텍스트 파일을 파싱하는 단계; 상기 복수의 제1 프로세서가 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 상기 파싱된 텍스트 파일을 상기 제1 큐로 전달하는 단계; 상기 메모리의 데이터 변환부가 상기 제1 큐의 데이터를 데이터베이스의 포맷에 맞게 변환하는 단계; 복수의 제2 프로세서가 상기 변환된 데이터를 상기 메모리의 제2 큐로 전달하는 단계; 및 복수의 제3 프로세서가 상기 제2 큐의 데이터를 데이터베이스에 저장하는 단계를 포함하고, 상기 제1 큐로 전달하는 단계, 상기 변환하는 단계 및 상기 제2 큐로 전달하는 단계에 있어서, 상기 제1 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되고, 상기 데이터베이스에 저장하는 단계에 있어서, 상기 제2 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되는 것을 특징으로 한다.
본 명세서는 복수의 프로세서들이 탑재된 디바이스에서 각 프로세서 별로 복수의 프로세스를 동시에 수행하도록 함으로써, 파이썬에서 대용량의 파일을 적은 비용으로 신속하게 처리할 수 있는 효과가 있다.
도 1은 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하기 위한 파이썬 장치의 내부 블록도의 일례를 나타낸다.
도 2는 본 명세서에서 제안하는 메모리의 내부 블록도의 일례를 나타낸 도이다.
도 3은 본 명세서에서 제안하는 제어부의 내부 블록도의 일례를 나타낸 도이다.
도 4는 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하는 방법의 일례를 나타낸 도이다.
도 5는 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하는 방법의 일례를 나타낸 순서도이다.
본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 명세서에 개시된 기술의 사상을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 명세서에서 사용되는 기술적인 용어가 본 명세서에 개시된 기술의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는, 본 명세서에 개시된 기술이 속하는 분야에서 통상의 지식을 가진 자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 명세서에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥 상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
본 명세서에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예들을 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 명세서에 개시된 기술을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 기술의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 기술의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 그 기술의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
본 명세서에서 제안하는 방법이 적용되거나 파이썬 장치를 포함하는 디바이스는 무선 통신이 가능한 디바이스로서, 스마트 폰을 포함한 휴대폰, 태블릿 PC, 데스크탑 컴퓨터, 노트북, 스마트 TV, IPTV 등을 포함한 텔레비전 등이 가능하다.
파이썬(Phython) 장치 내부 블록도
도 1은 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하기 위한 파이썬 장치의 내부 블록도의 일례를 나타낸다.
도 1을 참고하면, 파이썬 장치(100)은 메모리(110), 제어부(120) 및 데이터베이스(130)를 포함하여 구성될 수 있다.
도 1에 도시된 구성요소들이 필수적인 것은 아니어서, 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 갖는 파이썬 장치가 구현될 수도 있다.
이하, 상기 파이썬 장치의 각 구성요소들에 대해 차례대로 살펴본다.
먼저, 메모리(110)는 상기 제어부(또는 프로세서)의 동작을 위한 프로그램을 저장할 수 있고, 입/출력되는 데이터들을 임시 저장할 수도 있다. 상기 메모리는 디바이스의 각종 정보를 저장하는 매체로서, 상기 제어부 또는 프로세서와 연결되어 상기 제어부 또는 프로세서의 동작을 위한 프로그램, 어플리케이션(application), 일반파일 및 입/출력되는 데이터들을 저장할 수 있다.
상기 메모리는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(ReadOnly Memory, ROM), EEPROM(Electrically Erasable Programmable ReadOnly Memory), PROM(Programmable ReadOnly Memory), 자기 메모리(Magnetic Random Access Memory, MRAM), 자기 디스크(magnetic disk), 광디스크(optical disk) 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
상기 메모리는 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 소정 크기의 텍스트 파일을 수신할 수 있다.
여기서, 상기 제어 명령은 readlines() 함수일 수 있으며, 상기 소정 크기의 텍스트 파일은 대용량 파일을 의미하는 것으로, 상기 메모리의 용량의 크기보다 큰 파일일 수 있다.
상기 메모리는 복수의 제1 서브 큐들을 포함하는 제1 큐, 상기 제1 큐의 데이터를 상기 데이터베이스의 포맷에 맞게 변환하는 데이터 변환부 및 복수의 제2 서브 큐들을 포함하는 제2 큐를 포함하여 구성될 수 있으며, 상기 메모리의 각 구성요소에 대해서는 도 2에서 보다 구체적으로 살펴보기로 한다.
상기 제어부(120)는 상기 파이썬 장치의 전반적인 동작을 제어하는 모듈을 말하며, 여러 통신 인터페이스로 메시지를 전송 또는 요청 및 수신받은 메시지를 처리하도록 제어할 수 있다.
상기 제어부는 어플리케이션 프로세서(Application Processor:AP), 프로세서, 제어 모듈, 컨트롤러(controller), 마이크로 컨트롤러(micro controller), 마이크로프로세서(microprocessor)등으로 호칭 될 수 있으며, 상기 프로세서는 하드웨어(hardware), 펌웨어(firmware), 소프트웨어, 또는 이들의 결합에 의해 구현될 수 있다.
상기 제어부는 ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로 및/또는 데이터 처리 장치를 포함할 수 있다.
상기 제어부는 적어도 하나의 제1 프로세서, 적어도 하나의 제2 프로세서 및 적어도 하나의 제3 프로세서를 포함하여 구성될 수 있다.
상기 제어부는 상기 메모리 및 상기 데이터베이스와 기능적으로 연결되어 상기 메모리 및 데이터베이스의 전반적인 동작을 제어할 수 있다.
상기 제어부의 각 구성요소에 대해서는 도 3에서 보다 구체적으로 살펴보기로 한다.
상기 데이터베이스(130)는 하드 디스크와 같이 영구적으로 데이터를 저장하는 매체를 의미할 수 있으며, 이런 의미에서 일시적으로 데이터를 저장하는 상기 메모리와 구별될 수 있다.
다만, 상기 데이터베이스 및 상기 메모리는 동일한 매체일 수 있으며, 이 경우 데이터베이스 및 메모리는 각각 제1 저장부 및 제2 저장부 또는 제1 데이터베이스 및 제2 데이터베이스 또는 제1 메모리 및 제2 메모리로 표시될 수 있다.
따라서, 상기 데이터베이스는 앞서 살핀 메모리에서와 같이 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(ReadOnly Memory, ROM), EEPROM(Electrically Erasable Programmable ReadOnly Memory), PROM(Programmable ReadOnly Memory) 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
상기 데이터베이스는 상기 메모리에서 처리되는 데이터를 저장할 수 있다.
이외에도, 상기 파이썬 장치(100)는 무선 통신부를 더 포함할 수 있다.
무선 통신부는 파이썬 장치와 무선 통신 시스템 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다.
즉, 무선 통신부는 근거리 통신 모듈, 이동통신 모듈, 무선 인터넷 모듈 등을 포함할 수 있다.
메모리 내부 블록도
도 2는 본 명세서에서 제안하는 메모리의 내부 블록도의 일례를 나타낸 도이다.
본 명세서에서 제안하는 방법을 구현하기 위해, 메모리(110)는 제1 큐(111), 데이터 변환부(112) 및 제2 큐(113)를 포함하여 구성될 수 있다.
도 2에 도시된 구성요소들이 필수적인 것은 아니어서, 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 갖는 메모리가 구현될 수도 있다.
이하, 상기 메모리의 각 구성요소들에 대해 차례대로 살펴본다.
먼저, 상기 제1 큐(111)는 복수의 제1 서브 큐들을 포함할 수 있다. 상기 복수의 제1 서브 큐들은 제어부에 포함되는 적어도 하나의 제1 프로세서에 각각 할당되는 큐(queue)를 의미할 수 있으며, 이런 의미에서 제1 서브 큐는 제1 세그먼트(segment) 큐로 호칭될 수도 있다. 또는, 상기 제1 큐는 리드 큐(read queue)로 호칭될 수도 있다.
각 제1 서브 큐는 서로 다른 제1 프로세서들에 의해 공유될 수 있으나, 특정 제1 프로세서에 의해 특정 제1 서브 큐가 제어되는 동안에는 다른 제1 프로세서가 사용 중인 특정 제1 서브 큐를 제어할 수 없다. 따라서, 사용 중인 제1 서브 큐를 상기 제1 서브 큐에 할당된 제1 프로세서 이외 다른 제1 프로세서가 제어하는 것을 방지하기 위해 제1 서브 큐의 락(lock), 언락(unlock)의 기능이 수행될 수 있다. 상기 언락(unlock)은 릴리스(release)로 표현될 수도 있다.
상기 제1 큐는 특정 시간 단위에 따라 파싱되는 소정 크기의 텍스트 파일을 수신할 수 있다. 상기 파싱되는 소정 크기의 텍스트 파일은 편의상 '파싱 데이터'로 표현될 수도 있다. 보다 구체적으로, 상기 파싱 데이터는 상기 제1 큐의 복수의 제1 서브 큐들에 순차적으로 또는 동시에 수신될 수 있다.
여기서, 상기 특정 시간 단위는 상기 제1 큐의 길이에 기초하여 결정될 수 있으며, 그 값은 0초에서 1초 사이의 값일 수 있다.
다음으로, 상기 데이터 변환부(112)는 상기 제1 큐의 데이터를 데이터베이스(130)의 포맷에 맞도록 변환할 수 있다. 즉, 상기 제1 큐의 데이터는 상기 데이터 변환부에 의해 디바이스가 인식할 수 있는 데이터로 변환된다. 상기 데이터 변환부에 의한 동작은 파이썬 프로그램 언어로 만들어진 응용 프로그램(또는 파일)을 실행할 때 수행될 수도 있다.
다음으로, 상기 제2 큐(113)는 복수의 제2 서브 큐들을 포함할 수 있다. 상기 복수의 제2 서브 큐들은 제어부에 포함되는 적어도 하나의 제3 프로세서에 각각 할당되는 큐(queue)를 의미할 수 있으며, 이런 의미에서 제2 서브 큐는 제2 세그먼트(segment) 큐로 호칭될 수도 있다. 또는, 상기 제2 큐는 세이브 큐(save queue)로 호칭될 수도 있다.
상기 복수의 제2 서브 큐들은 앞서 살핀 복수의 제1 서브 큐들과 연관될 수 있다.
제어부 내부 블록도
도 3은 본 명세서에서 제안하는 제어부의 내부 블록도의 일례를 나타낸 도이다.
본 명세서에서 제안하는 방법을 구현하기 위해, 제어부(120)는 적어도 하나의 제1 프로세서(121), 적어도 하나의 제2 프로세서(122) 및 적어도 하나의 제3 프로세서(123)를 포함하여 구성될 수 있다.
도 3에 도시된 구성요소들이 필수적인 것은 아니어서, 그보다 많은 구성요소들을 갖거나 그보다 적은 구성요소들을 갖는 제어부가 구현될 수도 있다.
이하, 상기 제어부의 각 구성요소들에 대해 차례대로 살펴본다.
먼저, 상기 제1 프로세서(121)는 메모리에 포함되는 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 소정 크기의 텍스트 파일을 파싱하도록 설정될 수 있다. 여기서, 파싱되는 소정 크기의 텍스트 파일은 '파싱 데이터'로 호칭될 수 있다.
다음으로, 상기 제2 프로세서(122)는 메모리에 포함되는 데이터 변환부에 의해 데이터베이스의 포맷에 맞게 변환된 데이터를 상기 메모리에 포함되는 제2 큐로 전달하도록 설정될 수 있다.
다음으로, 상기 제3 프로세서(123)은 상기 제2 큐의 데이터를 상기 데이터베이스에 저장하도록 설정될 수 있다.
상기 제3 프로세서는 복수의 제2 서브 큐들을 각각 할당 받을 수 있다.
상기 제1 프로세서, 상기 제2 프로세서 및 상기 제3 프로세서는 본 명세서에서 제안하는 대용량 파일을 저장하기 위해 동시에(또는 병렬적으로) 동작할 수 있다.
파일 저장 방법
도 4는 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하는 방법의 일례를 나타낸 도이다.
도 4를 참고하면, 파이썬 장치는 readlines() 함수를 실행하여 대용량(메모리의 용량보다 큰) 텍스트 파일을 메모리의 제1 큐로 전달한다. 해당 과정은 제어부의 제1 프로세서에 의해 수행될 수 있다. 여기서, 메모리가 텍스트 파일을 수신한다는 의미는 메모리가 텍스트 파일을 읽어온다는 것과 동일한 의미로 해석될 수 있다.
다음, 상기 파이썬 장치는 상기 제1 큐의 데이터를 데이터베이스의 포맷에 맞게 변환하고, 상기 변환된 데이터를 제2 큐로 전달한다. 해당 과정은 제어부의 제2 프로세서에 의해 수행될 수 있다.
다음, 상기 파이썬 장치는 상기 제2 큐의 데이터를 데이터베이스에 저장한다. 해당 과정은 제어부의 제3 프로세서에 의해 수행될 수 있다.
도 4의 과정은 제1 프로세서, 제2 프로세서 및 제3 프로세서에 의해 동시에 처리될 수 있다.
도 5는 본 명세서에서 제안하는 멀티 프로세스를 통해 파일을 저장하는 방법의 일례를 나타낸 순서도이다.
도 5를 참고하면, 파이썬 장치는 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 상기 소정 크기의 텍스트 파일을 파싱한다(S510). 여기서, 파싱되는 소정 크기의 텍스트 파일은 간략히 '파싱 데이터'로 표현될 수 있다.
상기 파싱 데이터는 메모리에 포함되는 복수의 제1 서브 큐들에 순차적으로 또는 동시에 수신될 수 있다.
상기 소정 크기는 상기 메모리의 용량의 크기보다 큼을 의미할 수 있다.
상기 특정 시간 단위는 0초에서 1초 사이의 값을 가질 수 있다.
다음, 상기 파이썬 장치는 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 상기 파싱된 텍스트 파일을 상기 제1 큐로 전달한다(S520). 상기 제어 명령은 readlines() 함수일 수 있다.
다음, 상기 파이썬 장치는 상기 제1 큐의 데이터를 데이터베이스의 포맷에 맞게 변환한다(S530).
다음, 상기 파이썬 장치는 상기 변환된 데이터를 제2 큐로 전달한다(S540).
다음, 상기 파이썬 장치는 상기 제2 큐의 데이터를 데이터베이스에 저장한다(S550).
추가적으로, 상기 파이썬 장치는 상기 제1 큐에 상기 소정의 텍스트 파일의 마지막까지 수신되었음을 감지한 경우, 상기 제1 큐의 데이터에 상기 소정의 텍스트 파일의 마지막임을 나타내는 엔드 마커(end marker)를 추가할 수 있다.
프로세서 동작 방법
추가적으로, 본 명세서에서 제안하는 방법을 수행하는 파이썬 장치의 제어부에 포함되는 프로세서들 각각의 동작 방법에 대해 살펴본다.
먼저, 제1 프로세서의 동작 방법에 대해 살펴본다.
상기 제1 프로세서는 소정 크기의 텍스트 파일(예: N lines, N은 자연수)을 readlines() 함수를 실행하여 읽는다.
다음, 상기 제1 프로세서는 상기 제1 프로세서에 할당된 제1 큐의 공간이 풀(full)인지 여부를 확인한다.
만약 상기 제1 큐의 공간이 full인 경우, 상기 제1 프로세서는 상기 제1 큐를 슬립(sleep)으로 유지한다. 여기서, 슬립이란 상기 제1 큐에 데이터를 읽어오지 못하는 상태를 의미할 수 있다.
만약 상기 제1 큐의 공간이 full이 아닌 경우, 상기 제1 프로세서는 상기 텍스트 파일의 마지막까지 읽어왔는지 여부를 확인한다. 만약 상기 제1 큐에 상기 텍스트 파일의 마지막까지 수신된 경우, 상기 제1 프로세서는 상기 제1 큐의 데이터에 마지막임을 나타내는 엔드 마커(end marker)를 추가한다.
만약 상기 텍스트 파일의 마지막까지 수신되지 않은 경우, 상기 제1 프로세서는 상기 제1 큐에 상기 텍스트 파일을 전달한다.
다음으로, 제2 프로세서의 동작 방법에 대해 살펴본다.
먼저, 상기 제2 프로세서는 제1 큐를 락(lock)하고, 상기 제1 큐의 데이터를 획득한다. 여기서, 제1 큐를 락하는 이유는 상기 제1 큐에 새로운 데이터가 수신되어 기 수신된 제1 큐의 데이터가 없어지는 것을 방지하기 위함에 있다.
다음, 상기 제2 프로세서는 상기 제1 큐가 비워있는지 여부를 확인한다. 만약 상기 제1 큐가 비워 있는 경우, 상기 제2 프로세서는 상기 제1 큐를 슬립으로 유지하고, 일정 시간 이후 상기 제1 큐를 해지하고(또는 언락(unlock)), 또 일정 시간 이후 상기 제1 큐를 락한다. 이후, 앞서 살핀 과정을 반복하여 수행한다. 만약 상기 제1 큐가 비워 있지 않은 경우 즉, 상기 제1 큐에 데이터가 있는 경우, 상기 제2 프로세서는 상기 제1 큐의 데이터를 데이터베이스의 포맷에 맞게 변환한다.
다음, 상기 제2 프로세서는 제1 큐를 해지(또는 언락)하고, 제2 큐로 상기 변환된 데이터를 전달한다.
다음으로, 제3 프로세서의 동작 방법에 대해 살펴본다.
상기 제3 프로세서는 제2 큐를 락(lock)하고, 상기 제2 큐의 데이터를 획득한다. 여기서, 제2 큐를 락하는 이유는 상기 제2 큐에 새로운 데이터가 수신되어 기 수신된 제2 큐의 데이터가 없어지는 것을 방지하기 위함에 있다.
다음, 상기 제3 프로세서는 상기 제2 큐가 비워있는지 여부를 확인한다. 만약 상기 제2 큐가 비워 있는 경우, 상기 제3 프로세서는 상기 제2 큐를 슬립으로 유지하고, 일정 시간 이후 상기 제2 큐를 해지하고(또는 언락(unlock)), 또 일정 시간 이후 상기 제2 큐를 락한다. 이후, 앞서 살핀 과정을 반복하여 수행한다. 만약 상기 제2 큐가 비워 있지 않은 경우 즉, 상기 제2 큐에 데이터가 있는 경우, 상기 제3 프로세서는 상기 제2 큐를 해지(또는 언락)하고, 데이터베이스로 상기 제2 큐의 데이터를 전달한다.
이상에서 설명된 실시 예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시 예를 구성하는 것도 가능하다. 본 발명의 실시 예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시 예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시 예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 실시 예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시 예는 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시 예는 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 통상의 기술자에게 자명하다. 따라서, 상술한 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니 되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
100: 파이썬 장치 110: 메모리
120: 제어부 130: 데이터베이스

Claims (9)

  1. 멀티 프로세스를 통해 파일을 저장하기 위한 파이썬 장치에 있어서,
    파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 소정 크기의 텍스트 파일을 수신하는 메모리;
    상기 메모리에서 처리된 데이터를 저장하는 데이터베이스; 및
    상기 메모리 및 상기 데이터베이스와 기능적으로 연결된 제어부를 포함하되,
    상기 메모리는,
    복수의 제1 서브 큐들을 포함하는 제1 큐;
    상기 제1 큐의 데이터를 상기 데이터베이스의 포맷에 맞게 변환하는 데이터 변환부; 및
    복수의 제2 서브 큐들을 포함하는 제2 큐를 포함하며,
    상기 제어부는,
    상기 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 상기 소정 크기의 텍스트 파일을 파싱하여, 파싱된 텍스트 파일을 상기 제1 큐에 전달하도록 설정되는 복수의 제1 프로세서;
    상기 데이터베이스의 포맷에 맞게 변환된 데이터를 상기 제2 큐로 전달하도록 설정되는 복수의 제2 프로세서;
    상기 제2 큐의 데이터를 상기 데이터베이스에 저장하도록 설정되는 복수의 제3 프로세서를 포함하며,
    상기 파싱된 텍스트 파일이 상기 제1 큐로 전달되는 경우 및 상기 변환된 데이터가 상기 제2 큐로 전달되는 경우에 있어서, 상기 제1 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되고,
    상기 제2 큐의 데이터가 상기 데이터베이스로 전달되는 경우에 있어서, 상기 제2 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되는 것을 특징으로 하는 파이썬 장치.
  2. 제1 항에 있어서,
    상기 복수의 제1 서브 큐들은 상기 적어도 하나의 제1 프로세서에 각각 할당되며,
    상기 복수의 제2 서브 큐들은 상기 적어도 하나의 제3 프로세서에 각각 할당되는 것을 특징으로 하는 파이썬 장치.
  3. 제1 항에 있어서,
    상기 파싱된 텍스트 파일은 상기 복수의 제1 서브 큐들에 순차적으로 또는 동시에 수신되는 것을 특징으로 하는 파이썬 장치.
  4. 제1 항에 있어서,
    상기 복수의 제1 프로세서, 상기 복수의 제2 프로세서 및 상기 복수의 제3 프로세서는 동시에 동작하는 것을 특징으로 하는 파이썬 장치.
  5. 제1 항에 있어서,
    상기 제어 명령은 readlines() 함수인 것을 특징으로 하는 파이썬 장치.
  6. 제1 항에 있어서,
    상기 소정 크기는 상기 메모리의 용량의 크기보다 큰 것을 특징으로 하는 파이썬 장치.
  7. 제1 항에 있어서, 상기 복수의 제1 프로세서는,
    상기 제1 큐에 상기 소정의 텍스트 파일의 마지막까지 수신되었음을 감지한 경우, 상기 제1 큐의 데이터에 상기 소정의 텍스트 파일의 마지막임을 나타내는 엔드 마커(end marker)를 추가하도록 설정되는 것을 특징으로 하는 파이썬 장치.
  8. 제1 항에 있어서,
    상기 특정 시간 단위는 0초에서 1초 사이의 값을 가지는 것을 특징으로 하는 파이썬 장치.
  9. 멀티 프로세스를 통해 파일을 저장하기 위한 방법에 있어서,
    복수의 제1 프로세서가 메모리의 제1 큐의 길이에 기초하여 결정되는 특정 시간 단위에 따라 소정 크기의 텍스트 파일을 파싱하는 단계;
    상기 복수의 제1 프로세서가 파일 전체를 읽어오도록 정의된 제어 명령에 기초하여 상기 파싱된 텍스트 파일을 상기 제1 큐로 전달하는 단계;
    상기 메모리의 데이터 변환부가 상기 제1 큐의 데이터를 데이터베이스의 포맷에 맞게 변환하는 단계;
    복수의 제2 프로세서가 상기 변환된 데이터를 상기 메모리의 제2 큐로 전달하는 단계; 및
    복수의 제3 프로세서가 상기 제2 큐의 데이터를 데이터베이스에 저장하는 단계를 포함하고,
    상기 제1 큐로 전달하는 단계, 상기 변환하는 단계 및 상기 제2 큐로 전달하는 단계에 있어서, 상기 제1 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되고,
    상기 데이터베이스에 저장하는 단계에 있어서, 상기 제2 큐에 대해서 락(lock), 언락(unlock) 및 슬립(sleep) 중 하나 이상의 기능이 수행되는 것을 특징으로 하는 방법.
KR1020200184831A 2020-12-28 2020-12-28 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치 KR102570481B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200184831A KR102570481B1 (ko) 2020-12-28 2020-12-28 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200184831A KR102570481B1 (ko) 2020-12-28 2020-12-28 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치

Publications (2)

Publication Number Publication Date
KR20220093774A KR20220093774A (ko) 2022-07-05
KR102570481B1 true KR102570481B1 (ko) 2023-09-04

Family

ID=82401661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200184831A KR102570481B1 (ko) 2020-12-28 2020-12-28 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치

Country Status (1)

Country Link
KR (1) KR102570481B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668254B2 (en) 2000-12-21 2003-12-23 Fulltilt Solutions, Inc. Method and system for importing data
US20090182790A1 (en) * 2008-01-11 2009-07-16 Verivue, Inc. Storage of Data
CN110781232A (zh) * 2019-09-27 2020-02-11 招联消费金融有限公司 数据处理方法、装置、计算机设备和存储介质
US20200394178A1 (en) 2019-06-17 2020-12-17 Bank Of America Corporation Database Tool

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102387460B1 (ko) * 2015-04-09 2022-04-15 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
KR102293069B1 (ko) * 2017-09-08 2021-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
KR20190048924A (ko) * 2017-10-31 2019-05-09 한국전자통신연구원 플로우 기반 데이터 병렬 처리 시스템 및 이의 동작 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668254B2 (en) 2000-12-21 2003-12-23 Fulltilt Solutions, Inc. Method and system for importing data
US20090182790A1 (en) * 2008-01-11 2009-07-16 Verivue, Inc. Storage of Data
US20200394178A1 (en) 2019-06-17 2020-12-17 Bank Of America Corporation Database Tool
CN110781232A (zh) * 2019-09-27 2020-02-11 招联消费金融有限公司 数据处理方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
네이버블로그, "파이썬(Python) Multiprocessing - process", https://niceman.tistory.com/147 (2018.06.12.)*
네이버블로그, '파이썬(Python) Multiprocessing - pool', https://niceman.tistory.com/145 (2018.05.31.)

Also Published As

Publication number Publication date
KR20220093774A (ko) 2022-07-05

Similar Documents

Publication Publication Date Title
US10521393B2 (en) Remote direct memory access (RDMA) high performance producer-consumer message processing
CN111930676B (zh) 多处理器间的通信方法、装置、系统及存储介质
US20190138255A1 (en) Application isolation system
JPS62102342A (ja) 分散ファイル回復方法
CN106095604A (zh) 一种多核处理器的核间通信方法及装置
CN110858187A (zh) 具有分布式信箱结构的多处理器系统及其处理器错误检查方法
CN102117308B (zh) 一种数据处理方法和数据处理系统
US9473273B2 (en) Memory system capable of increasing data transfer efficiency
CN109086168A (zh) 一种利用硬件备份固态硬盘写速度的方法及其系统
US20240020246A1 (en) Method for Generating Information Based on FIFO Memory and Apparatus, Device and Medium
KR102570481B1 (ko) 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치
CN112506676B (zh) 进程间的数据传输方法、计算机设备和存储介质
US20130282971A1 (en) Computing system and data transmission method
CN109032821B (zh) 自动驾驶主题消息处理方法、装置、设备及存储介质
US9311225B2 (en) DMA channels
CN116486868A (zh) 计算高速链路(CXL)上的高速非易失性存储器(NVMe)
CN106776394B (zh) 一种数据转换的硬件系统和存储器
CN105531681A (zh) 存储装置、存储系统以及存储装置控制方法
WO2021259230A1 (zh) 模块间通信方法及系统
US20140149608A1 (en) Memory controller and operating method thereof
CN100361433C (zh) 使用三步通信缓存的通信设备
EP3089044B1 (en) Access controlling method of dual port memory system
EP3035202B1 (en) Method and apparatus for write-only inter-processor reset synchronization
US20230236742A1 (en) NONVOLATILE MEMORY EXPRESS (NVMe) OVER COMPUTE EXPRESS LINK (CXL)
CN117093158B (zh) 分布式存储系统的存储节点、系统、数据处理方法及装置

Legal Events

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