KR102240557B1 - 데이터 저장 방법, 장치 및 시스템 - Google Patents

데이터 저장 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102240557B1
KR102240557B1 KR1020190083622A KR20190083622A KR102240557B1 KR 102240557 B1 KR102240557 B1 KR 102240557B1 KR 1020190083622 A KR1020190083622 A KR 1020190083622A KR 20190083622 A KR20190083622 A KR 20190083622A KR 102240557 B1 KR102240557 B1 KR 102240557B1
Authority
KR
South Korea
Prior art keywords
data
record
storage
stored
type
Prior art date
Application number
KR1020190083622A
Other languages
English (en)
Other versions
KR20200027413A (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 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20200027413A publication Critical patent/KR20200027413A/ko
Application granted granted Critical
Publication of KR102240557B1 publication Critical patent/KR102240557B1/ko

Links

Images

Classifications

    • 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]
    • 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/061Improving I/O performance
    • 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/0614Improving the reliability of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems

Abstract

본 출원의 실시예는 데이터 저장 방법, 장치 및 시스템을 공개한다. 상기 데이터 저장 방법의 일 구체적 실시형태는 저장할 기록의 데이터 크기에 따라, 저장할 기록의 타입을 결정하는 단계; 저장 파일에서 타입의 현재 저장 정보를 검색하는 단계 - 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 여기서 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이함 - ; 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 결정하는 단계; 및 잔여 저장 공간이 없다고 결정한 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 저장할 기록을 신규 데이터 블록에 저장하는 단계를 포함한다. 상기 실시형태는 공간 파편의 생성을 감소시켜, 디스크의 공간 이용률을 향상시킬 수 있다. 또한 디스크의 판독 기록 성능을 개선하는데 도움을 준다.

Description

데이터 저장 방법, 장치 및 시스템{METHOD, DEVICE AND SYSTEM FOR STORING DATA}
본 출원의 실시예는 분산형 오브젝트 저장 기술분야에 관한 것으로, 구체적으로, 데이터 저장 방법, 장치 및 시스템에 관한 것이다.
분산형 저장 시스템은 일반적으로 데이터를 여러 대의 독립적인 기기에 분산시켜 저장한다. 기존의 네트워크 저장 시스템은 집중된 저장 서버를 이용하여 모든 데이터를 저장하는데, 이 경우 저장 서버는 시스템 성능의 애로이자 신뢰성과 안전성의 초점으로 되어, 대규모 저장 응용의 요구를 만족시키지 못한다. 분산형 네트워크 저장 시스템은 흔히 확장 가능한 시스템 구조를 사용하여, 여러 대의 저장 서버로 저장 부하를 분담하고, 위치 서버를 이용하여 저장 정보의 위치를 확정한다. 따라서 분산형 네트워크 저장 시스템은 시스템의 신뢰성, 가용성 및 액세스 효율을 향상시킬 뿐만아니라, 쉽게 확장될 수도 있다.
본 출원의 실시예는 데이터 저장 방법, 장치 및 시스템을 제시한다.
제1 양태에 있어서, 본 출원의 실시예는 데이터 저장 방법을 제시한다. 분산형 오브젝트 저장의 스탠드 얼론(stand-alone) 저장 엔진에 사용되고, 상기 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축된 데이터 저장 방법에 있어서, 상기 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획되고, 상기 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조를 사용하고, 상기 방법은, 저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하는 단계; 상기 저장 파일에서 상기 타입의 현재 저장 정보를 검색하는 단계 - 상기 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이함 - ; 상기 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정하는 단계; 및 잔여 저장 공간이 없다고 확정된 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 상기 저장할 기록을 신규 데이터 블록에 저장하는 단계를 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 방법은 잔여 저장 공간이 있다고 확정된 것에 응답하여, 잔여 저장 공간이 상기 저장할 기록의 데이터 크기보다 작지 않은지 여부를 추가로 확정하는 단계; 잔여 저장 공간이 상기 저장할 기록의 데이터 크기보다 작다고 확정된 것에 응답하여, 상기 저장할 기록의 데이터 일부를 잔여 저장 공간에 저장하는 단계; 및 상기 타입에 신규 데이터 블록을 할당하여 상기 저장할 기록의 잔여 데이터를 신규 데이터 블록에 저장하는 단계를 더 포함한다.
일부 실시예에 있어서, 상기 적어도 두 개의 데이터 블록의 저장 공간은 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 모두 기설정된 수치의 정수배이다.
일부 실시예에 있어서, 상기 데이터 저장 방법은 상기 타입의 현재 저장 정보를 업데이트하고, 상기 저장할 기록을 저장한 후의 위치 정보를 생성하며 상기 위치 정보를 출력하는 단계를 더 포함하며,상기 위치 정보는 기록의 타입, 기록의 식별자 또는 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함한다.
일부 실시예에 있어서, 상기 디스크에 적어도 두 개의 상기 저장 파일이 구축되며, 상기 디스크의 목록에 상기 저장 파일 각각의 색인 정보가 저장된다.
일부 실시예에 있어서, 상기 데이터 저장 방법은, 상기 목록으로부터 판독할 기록의 위치 정보를 검색하는 단계; 상기 판독할 기록의 위치 정보에 따라, 상기 판독할 기록의 타입 및 대응되는 저장 파일에 위치하는 데이터 블록의 위치 오프셋을 확정하는 단계; 및 상기 판독할 기록의 타입에 따라, 상기 판독할 기록의 길이를 확정하고, 상기 위치 오프셋이 표시하는 위치로부터 시작하여 상기 판독할 기록의 길이인 데이터를 판독하고 판독한 데이터를 상기 판독할 기록으로서 출력하는 단계를 더 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 방법은 상기 목록으로부터 삭제할 기록의 위치 정보를 검색하는 단계; 상기 삭제할 기록의 위치 정보에 따라, 대응되는 저장 파일 중 상기 삭제할 기록이 속하는 타입의 현재 저장 정보를 획득하는 단계; 획득한 현재 저장 정보에 따라, 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독하여, 판독한 기록을 상기 삭제할 기록이 위치한 위치에 전이시켜 저장하는 단계; 및 판독한 기록의 전이되기 전 데이터 블록 중의 데이터를 삭제하고, 판독한 기록의 위치 정보를 수정하는 단계를 더 포함한다.
일부 실시예에 있어서, 상기 판독한 기록의 전이되기 전 데이터 블록 중의 데이터를 삭제한 후, 상기 데이터 저장 방법은, 판독한 기록이 전이되기 전에 위치한 데이터 블록 중에 데이터가 저장되어 있는지 여부를 확정하고, 상기 데이터 블록 중에 데이터가 저장되어 있지 않을 경우, 재할당을 위해 상기 데이터 블록을 회수하는 단계를 더 포함한다.
일부 실시예에 있어서, 상기 저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하는 단계 이전에, 상기 데이터 저장 방법은, 저장할 오브젝트를 분할하여 획득한 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화하여 사본을 획득하는 단계; 및 상기 사본의 설명 정보와 데이터에 대해 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하는 단계를 더 포함한다.
일부 실시예에 있어서,상기 서브 오브젝트의 저장할 기록을 생성하는 단계는, 직렬화 이후의 상기 사본의 데이터 크기가 상기 저장 파일 중 각 타입에 대응되는 데이터 크기 중의 하나와 동일한지 여부를 확정하는 단계; 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기와 모두 상이하고, 일부 타입에 대응되는 데이터 크기보다 작을 경우, 상기 사본의 데이터 뒤에 0을 보충(zero fill)하여 0을 보충한 후의 상기 사본의 데이터 크기가 타겟 타입에 대응되는 데이터 크기와 동일하도록 하고, 상기 서브 오브젝트의 하나의 저장할 기록을 생성하는 단계 - 타겟 타입은 상기 일부 타입 중 대응되는 데이터 크기가 가장 작은 타입임 - ; 및 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기의 최댓값보다 클 경우, 상기 사본에 대해 분할하고 0을 보충하여 분할 후의 각 사본의 데이터 크기가 각각 각 타입에 대응되는 데이터 크기 중의 하나와 동일하도록 하고, 상기 서브 오브젝트의 적어도 두 개의 저장할 기록을 생성하는 단계를 포함한다.
제2 양태에 있어서, 본 출원의 실시예는 데이터 저장 장치를 제시한다. 분산형 오브젝트 저장의 스탠드 얼론 저장 엔진 내에 설치되고, 상기 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축된 데이터 저장 장치에 있어서, 상기 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획되고, 상기 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조를 사용하고, 상기 장치는, 저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하도록 구성된 타입 확정 유닛; 상기 저장 파일에서 상기 타입의 현재 저장 정보를 검색하도록 구성된 검색 유닛 - 상기 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이함 - ; 상기 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정하도록 구성된 공간 확정 유닛; 및 잔여 저장 공간이 없다고 확정된 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 상기 저장할 기록을 신규 데이터 블록에 저장하도록 구성된 제1 할당 유닛을 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 장치는 잔여 저장 공간이 있다고 결정한 것에 응답하여, 나아가 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작지 않은지 여부를 확정하도록 구성된 크기 결정 유닛; 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작다고 확정된 것에 응답하여, 저장할 기록의 데이터 일부를 잔여 저장 공간에 저장하고, 타입에 신규 데이터 블록을 할당하여 저장할 기록의 잔여 데이터를 신규 데이터 블록에 저장하도록 구성된 제2 할당 유닛을 더 포함한다.
일부 실시예에 있어서, 적어도 두 개의 데이터 블록의 저장 공간이 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 모두 기설정된 수치의 정수배이다.
일부 실시예에 있어서, 상기 데이터 저장 장치는, 상기 타입의 현재 저장 정보를 업데이트하고 저장할 기록을 저장한 후의 위치 정보를 생성하며, 상기 위치 정보를 출력하도록 구성된 위치 생성 유닛을 더 포함하며, 여기서 위치 정보는 기록의 타입, 기록의 식별자 또는 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함한다.
일부 실시예에 있어서, 디스크에 적어도 두 개의 저장 파일이 구축되며, 디스크의 목록에 각 저장 파일의 색인 정보가 저장된다.
일부 실시예에 있어서, 상기 데이터 저장 장치는, 판독할 기록의 위치 정보를 목록으로부터 검색하도록 구성된 제1 위치 검색 유닛; 판독할 기록의 위치 정보에 따라, 판독할 기록의 타입 및 대응되는 저장 파일 중 데이터 블록에서의 위치 오프셋을 확정하도록 구성된 확정 유닛; 및 판독할 기록의 타입에 따라, 판독할 기록의 길이를 결정하고, 위치 오프셋이 표시하는 위치로부터 시작하여 길이가 상기 판독할 기록의 길이인 데이터를 판독하고 판독한 데이터를 판독할 기록으로서 출력하도록 구성된 판독 유닛을 더 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 장치는, 삭제할 기록의 위치 정보를 목록으로부터 검색하도록 구성된 제2 위치 검색 유닛; 삭제할 기록의 위치 정보에 따라, 대응되는 저장 파일 중 삭제할 기록이 속하는 타입의 현재 저장 정보를 획득하도록 구성된 획득 유닛; 획득한 현재 저장 정보에 따라, 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독하여, 판독한 기록을 삭제할 기록이 위치한 위치에 전이시켜 저장하도록 구성된 전이 유닛; 및 데이터 블록 중 판독한 기록이 전이되기 이전의 데이터를 삭제하고, 판독한 기록의 위치 정보를 수정하도록 구성된 수정 유닛을 더 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 장치는, 판독한 기록이 전이되기 이전에 위치한 데이터 블록 중에 데이터가 더 저장되어 있는지 여부를 확정하여, 상기 데이터 블록 중에 데이터가 저장되어 있지 않을 경우, 재할당을 위해 상기 데이터 블록을 회수하도록 구성된 회수 유닛을 더 포함한다.
일부 실시예에 있어서, 상기 데이터 저장 장치는, 저장할 오브젝트를 분할하여 획득한 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화하여 사본을 획득하도록 구성된 부호화 유닛; 및 상기 사본의 설명 정보와 데이터에 대해 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하도록 구성된 기록 생성 유닛을 더 포함한다.
일부 실시예에 있어서, 기록 생성 유닛은 직렬화 이후의 상기 사본의 데이터 크기가 저장 파일 중 각 타입에 대응되는 데이터 크기 중의 하나와 동일한지의 여부를 확정하도록 구성된 확정 서브 유닛; 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기와 모두 상이하고, 일부 타입에 대응되는 데이터 크기보다 작을 경우, 상기 사본의 데이터 뒤에 0을 보충하여 0을 보충한 후의 상기 사본의 데이터 크기가 타겟 타입에 대응되는 데이터 크기와 동일하도록 하고, 상기 서브 오브젝트의 하나의 저장할 기록을 생성하도록 구성된 제1 생성 서브 유닛 - 타겟 타입은 상기 일부 타입 중 대응되는 데이터 크기가 가장 작은 타입임 - ; 및 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기의 최댓값보다 클 경우, 상기 사본에 대해 분할하고 0을 보충하여 분할 후의 각 사본의 데이터 크기가 각각 각 타입에 대응되는 데이터 크기 중의 하나와 동일하도록 하고, 상기 서브 오브젝트의 적어도 두 개의 저장할 기록을 생성하도록 구성된 제2 생성 서브 유닛을 포함한다.
제3 양태에 있어서, 본 출원의 실시예는 데이터 저장 시스템을 제시한다. 제1 서브 시스템, 제2 서브 시스템 및 제3 서브 시스템을 포함하는 데이터 저장 시스템에 있어서, 제3 서브 시스템 내에 제1 양태 중 어느 하나의 실시예에서 설명된 스탠드 얼론 저장 엔진이 장착된다. 상기 제1 서브 시스템은, 사용자가 송신한 저장할 오브젝트가 포함된 저장 요청을 수신하여, 상기 저장할 오브젝트를 적어도 하나의 서브 오브젝트로 분할하고, 상기 저장할 오브젝트와 상기 적어도 하나의 서브 오브젝트 사이의 대응관계를 상기 제2 서브 시스템에 송신하며, 상기 적어도 하나의 서브 오브젝트를 상기 제3 서브 시스템에 송신하도록 구성되며; 상기 제2 서브 시스템은, 상기 저장할 오브젝트와 상기 적어도 하나의 서브 오브젝트 사이의 대응관계를 리스트에 저장하도록 구성되고; 상기 제3 서브 시스템은, 상기 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화 및 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하고 생성된 저장할 기록을 저장하도록 구성된다.
일부 실시예에 있어서, 제3 서브 시스템은 또한 데이터 저장 완료를 나타내기 위한 응답 정보를 제1 서브 시스템에 송신하도록 구성되며, 제1 서브 시스템은 또한 응답 정보를 수신한 경우, 저장할 오브젝트의 조회 식별자를 생성하고 조회 식별자를 사용자에게 피드백하도록 구성된다.
일부 실시예에 있어서, 제1 서브 시스템은 또한 사용자가 송신한 조회 식별자가 포함된 판독 요청을 수신하여, 판독 요청 중의 조회 식별자를 제2 서브 시스템에 송신하도록 구성된다. 제2 서브 시스템은 또한 판독 요청 중의 조회 식별자가 지시하는 오브젝트와 대응되는 서브 오브젝트의 리스트를 획득하여, 서브 오브젝트의 리스트를 제3 서브 시스템에 송신하도록 구성된다. 제3 서브 시스템은 또한 서브 오브젝트의 리스트 판독에 대응되는 기록에 따라, 판독한 기록에 대해 해석하여 오브젝트 데이터를 획득하고, 제1 서브 시스템이 오브젝트 데이터를 사용자에게 피드백하도록 오브젝트 데이터를 제1 서브 시스템에 송신하도록 구성된다.
제4 양태에 있어서, 본 출원의 실시예는 전자기기를 제시한다. 하나 또는 복수 개의 프로세서; 및 하나 또는 복수 개의 프로그램이 저장된 저장 장치를 포함하고, 하나 또는 복수 개의 프로그램이 하나 또는 복수 개의 프로세서에 의해 실행될 경우, 하나 또는 복수 개의 프로세서가 제1 양태 중 어느 하나의 실시예에서 설명된 데이터 저장 방법을 수행하도록 한다.
제5 양태에 있어서, 본 출원의 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체를 제시한다. 상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우, 제1 양태 중 어느 하나의 실시예에서 설명된 데이터 저장 방법을 수행한다.
본 출원의 실시예에 의해 제시된 데이터 저장 방법, 장치 및 시스템은 저장할 기록의 데이터 크기에 따라, 저장할 기록의 타입을 확정할 수 있다. 이로써 저장 파일에서 타입의 현재 저장 정보를 검색할 수 있다. 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함할 수 있다. 여기서 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이하다. 따라서, 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정할 수 있다. 잔여 저장 공간이 없다고 결정한 경우, 타입에 신규 데이터 블록을 할당할 수 있다. 또한, 저장할 기록을 신규 데이터 블록에 저장할 수 있다. 이와 같이, 공간 파편의 생성을 감소시켜, 디스크의 공간 이용률을 향상시킬 수 있다. 또한 디스크의 판독 기록 성능을 개선하는데 도움을 준다.
이하 첨부된 도면을 참조하여 비제한적인 실시예에 대한 상세한 설명으로부터 본 출원의 다른 특징, 목적 및 이점은 더욱 명백해질 것이다.
도 1은 본 출원의 일 실시예에 응용될 수 있는 예시적인 시스템 구조도이다.
도 2는 본 출원에 따른 데이터 저장 방법의 일 실시예의 흐름도이다.
도 3은 본 출원에 따른 데이터 저장 방법의 다른 일 실시예의 흐름도이다.
도 4는 본 출원에 따른 데이터 저장 방법의 또 다른 일 실시예의 흐름도이다.
도 5A는 본 출원에서 저장 파일의 일 실시예의 논리 구조 모식도이다.
도 5B는 본 출원에서 기록의 일 실시예의 구조 모식도이다.
도 5C는 본 출원에서 디스크의 일 실시예의 구조 모식도이다.
도 6은 본 출원에 따른 데이터 저장 장치의 일 실시예의 구조 모식도이다.
도 7은 본 출원에 따른 데이터 저장 시스템의 일 실시예의 시계열도이다.
도 8은 본 출원의 실시예에 따른 전자기기를 구현하기 위해 적용되는 컴퓨터 시스템의 구조 모식도이다.
이하, 도면 및 실시예를 결부하여 본 출원을 보다 더 상세하게 설명한다. 여기서 설명된 구체적인 실시예는 단지 관련 발명을 해석하기 위한 것일 뿐 해당 발명에 대한 한정이 아님을 이해해야 한다. 이 밖에 더 설명해야 할 것은 설명의 편의를 위해 도면에서 관련 발명과 상관되는 부분만 도시한다.
설명해야 할 것은, 본 출원에 따른 실시예 및 실시예의 특징은 모순되지 않는 한 서로 조합될 수 있다. 이하 첨부된 도면을 참조하고 실시예를 결부하여 본 출원을 상세하게 설명하기로 한다.
도 1은 본 출원의 일 실시예에 응용될 수 있는 데이터 저장 방법, 장치 및 시스템의 예시적인 시스템 구조(100)를 나타낸다.
도 1에 도시된 바와 같이, 시스템 구조(100)는 단말기(101, 102, 103), 네트워크(104) 및 서버(105)를 포함할 수 있다. 네트워크(104)는 단말기(101, 102, 103)와 서버(105) 사이에서 통신 링크를 제공하는 매체로서 사용될 수 있다. 네트워크(104)는 다양한 연결 타입, 예를 들어 유선, 무선 통신 링크 또는 광섬유 케이블 등을 포함할 수 있다.
사용자는 단말기(101, 102, 103)를 사용하여 네트워크(104)를 통해 서버(105)와 인터렉션하여 메세지 등을 수신하거나 송신할 수 있다. 단말기(101, 102, 103)에 다양한 클라이언트 애플리케이션, 예를 들어 웹 브라우저, 쇼핑 애플리케이션, 비디오 애플리케이션, 메일 및 인스턴트 메시징 도구 등이 장착될 수 있다.
여기서, 단말기(101, 102, 103)는 하드웨어일 수 있고 소프트웨어일 수도 있다. 단말기(101, 102, 103)가 하드웨어일 경우, 스크린을 구비하는 다양한 전자기기일 수 있으며 스마트폰, 태블릿 PC, 스마트 TV, 전자책 리더, MP3 플레이어(Moving Picture Experts Group Audio Layer III, 동영상 전문가 압축 표준 오디오 레이어3), 랩톱 컴퓨터 및 데스크톱 컴퓨터 등을 포함하지만 이에 한정되지 않는다. 단말기(101, 102, 103)가 소프트웨어일 경우, 이상 열거된 전자기기에 장착될 수 있다. 단말기(101, 102, 103)는 복수 개의 소프트웨어 또는 소프트웨어 모듈(예를 들어, 분산형 서비스 제공에 사용됨)로 구현될 수 있고 하나의 소프트웨어 또는 소프트웨어 모듈로 구현될 수도 있다. 여기서 구체적으로 한정하지 않는다.
서버(105)는 다양한 서비스를 제공하는 서버일 수 있으며, 예를 들어 단말기(101, 102, 103)에 장착된 다양한 애플리케이션에 지원을 제공하는 백그라운드 서버일 수 있다. 백그라운드 서버는, 사용자가 단말기(101, 102, 103)를 통해 송신한 데이터 처리 요청(예를 들어, 데이터 저장 요청)에 대해 분석하여 처리할 수 있으며, 처리 결과(예를 들어, 저장 완료를 나타내기 위한 피드백 정보 또는 데이터 저장 후의 위치 정보 등)를 단말기(101, 102, 103)에 리턴시킬 수 있다.
마찬가지로, 여기서 서버(105)는 하드웨어일 수 있고 소프트웨어일 수도 있다. 서버(105)가 하드웨어일 경우, 복수 개의 서버로 이루어진 분산형 서버 그룹으로 구현될 수 있고 하나의 서버로 구현될 수도 있다. 서버(105)가 소프트웨어일 경우, 복수 개의 소프트웨어 또는 소프트웨어 모듈로 구현될 수 있고 하나의 소프트웨어 또는 소프트웨어 모듈로 구현될 수도 있다. 여기서 구체적으로 한정하지 않는다.
예를 들어, 서버(105) 중 데이터를 저장하기 위한 디스크(즉 저장 공간)에 복수 개의 저장 파일(1051, 1052)이 구축될 수 있다. 이러한 저장 파일은 데이터를 저장하는 실제 용기일 수 있으며, 이로써 데이터의 분산형 저장을 구현한다.
설명해야 할 것은, 본 출원의 실시예에서 제공된 데이터 저장 방법은 일반적으로 서버(105)에 의해 수행된다. 상응하게, 데이터 저장 장치는 일반적으로 서버(105) 내에 설치된다.
이해해야 할 것은, 도 1 중의 단말기, 네트워크, 서버 및 서버 중의 저장 파일의 수효는 단지 예시적이다. 구현 요구에 따라 임의의 수효의 단말기, 네트워크, 서버 및 서버 중의 저장 파일을 구비할 수 있다.
계속하여 도 2를 참조하면, 이는 본 출원에 따른 데이터 저장 방법의 일 실시예의 흐름(200)을 나타낸다. 상기 데이터 저장 방법은 하기와 같은 단계를 포함할 수 있다.
단계 201에서, 저장할 기록의 데이터 크기에 따라, 저장할 기록의 타입을 확정한다.
본 출원의 실시예에 있어서, 데이터 저장 방법은 분산형 오브젝트 저장의 스탠드 얼론 저장 엔진에 사용될 수 있다. 또한 상기 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축될 수 있다. 여기서, 저장 파일은 데이터를 저장하기 위한 실제 용기일 수 있다. 즉 데이터는 저장 파일 중에 저장된다. 여기서, 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획될 수 있다. 즉 저장 파일의 저장 공간은 추가로 복수 개의 저장 구간(즉 데이터 블록)으로 구획될 수 있다. 또한, 저장 공간의 연속성을 확보하기 위해, 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조가 적용될 수 있다. 즉 연결 리스트 방식을 통하여 동일한 저장 파일 중의 각 데이터 블록을 링크시킨다.
설명해야 할 것은, 저장 파일의 저장 용량은 실제 경우에 따라 설정될 수 있으며, 예를 들어 32G일 수 있다. 그리고 동일한 저장 파일 중의 각 데이터 블록의 저장 공간은 동일(예를 들어, 2M)할 수 있으며 상이할 수도 있다. 이밖에, 저장 파일의 내부에서, 저장할 데이터의 크기에 따라, 저장할 데이터에 대해 분류하여 저장할 수 있다. 또한, 각 타입으로 한 가지 크기의 데이터만 저장할 수 있다. 즉 동일한 타입으로 저장된 데이터의 크기는 동일할 수 있다. 상이한 타입으로 저장된 데이터의 크기는 상이할 수 있다. 여기서, 분류 방법은 본 출원에서 한정하지 않는다.
본 실시예에 있어서, 데이터 저장 방법의 수행 주체(예를 들면, 도 1에 도시된 서버(105))는 유선 연결 방식 또는 무선 연결 방식을 통하여 단말기(예를 들면, 도 1에 도시된 단말기(101, 102, 103)) 또는 클라우드 등으로부터 저장할 기록을 획득할 수 있다. 또한, 저장할 기록의 데이터 크기에 따라, 기설정된 분류 방법을 통해 저장할 기록의 타입을 확정할 수 있다. 예를 들어, 저장할 기록의 데이터 크기는 4KB이다. 데이터 크기가 0KB보다 크고 4KB보다 크지 않을 경우 제1 타입에 속하며, 이 경우 수행 주체는 상기 저장할 기록의 타입이 제1 타입이라고 확정할 수 있다. 여기서, 저장할 기록은 분산형 오브젝트 저장 기술을 이용하여 저장을 수행하는 임의의 데이터일 수 있다. 그 콘텐츠는 숫자, 문자, 자모 또는 부호 등 적어도 하나의 문자 부호의 문자열을 포함할 수 있다.
본 실시예의 일부 선택 가능한 실시형태에 있어서, 관리 편의상, 동일한 저장 파일 중의 적어도 두 개의 데이터 블록의 저장 공간은 동일할 수 있다. 또한 동일한 저장 파일 중 상이한 타입으로 저장된 기록의 데이터 크기는 기설정된 수치의 정수배일 수 있다. 이는 산출 과정을 간소화하고 처리 효율을 향상시키는데 도움을 준다. 도 5A에 도시된 바와 같이, 데이터 블록의 저장 공간은 2M이다. 데이터 크기의 최소치가 일반적으로 4KB인 점을 고려하여, 상이한 타입에 대응되는 데이터 크기는 4KB의 정수배일 수 있다. 이밖에, 디스크의 판독 기록 성능을 고려하여, 데이터 크기의 최댓값은 실제 경우에 따라 설정될 수 있으며, 예를 들어 512KB로 설정될 수 있다. 다시 말해서, 저장 파일의 내부에서 기록한 데이터 크기를 4KB, 8KB……512KB 등 여러 타입으로 구분할 수 있다.
단계 202에서, 저장 파일에서 타입의 현재 저장 정보를 검색하며, 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함한다.
본 실시예에 있어서, 수행 주체는 저장 파일에서 저장할 기록이 속한 타입의 현재 저장 정보를 검색할 수 있다. 여기서, 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함할 수 있다. 즉 상기 타입으로 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 검색한다. 여기서, 데이터 블록의 정보는 데이터 블록 사이의 링크 순서, 데이터 블록의 식별자, 데이터 블록의 저장 공간 중 적어도 하나를 포함할 수 있지만 이에 한정되지 않는다. 기록의 정보는 기록의 식별자, 기록의 데이터 크기, 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함할 수 있지만 이에 한정되지 않는다. 여기서 식별자는 데이터 블록 또는 기록을 유일하게 지시하는데 사용될 수 있고, 숫자, 자모 등 문자 부호 중의 적어도 하나일 수 있다. 다시 말해서, 상기 타입의 현재 저장 정보를 검색한 후, 수행 주체는 상기 타입으로 어떤 데이터 블록이 있는지 또는 어떠한 기록이 저장되어 있는지 알 수 있다.
설명해야 할 것은, 동일한 타입의 기록은 일반적으로 하나씩 연이어 저장된다. 즉 논리적으로 이러한 기록은 전체 연속적인 공간을 차지한다. 따라서 디스크 파편이 생성되는 것을 방지함으로써 저장 공간의 이용률을 향상시킬 수 있다.
예시로서, 도 5A 중 저장할 기록이 X이다. 수행 주체는 그 타입(type)이 128임을 확정한 경우, 상기 타입의 현재 저장 정보를 검색할 수 있다. 즉 저장 공간이 2M인 데이터 블록(block)37이고, 기록(record)의 개수는 4개이며, 각 기록의 데이터 크기는 512KB이다. 이해해야 할 것은, 숫자 번호(1, 2, 3 등)를 기록의 식별자로 사용할 수 있다. 이렇게, 동일한 타입의 상이한 기록을 구분할 수 있으며, 각 기록의 저장 순서도 쉽게 확정할 수 있다.
단계 203에서, 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정한다.
본 실시예에 있어서, 수행 주체는 단계 202에서 검색한 현재 저장 정보에 따라, 상기 타입(즉 저장할 기록이 위치한 타입) 하의 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정할 수 있다. 예시로서, 도 5A에 도시된 바와 같이, 수행 주체는 type = 128 중의 현재 저장 정보에 따라, block 37 중에 잔여 저장 공간이 없음을 확정할 수 있으며, 즉 512KB × 4 = 2M이다.
여기서, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있을 경우, 수행 주체는 저장할 기록을 잔여 저장 공간에 저장할 수 있다. 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 없을 경우, 수행 주체는 계속하여 단계 204를 수행할 수 있다.
선택 가능하게, 수행 주체는 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있다고 확정된 경우, 나아가 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작지 않은지 여부를 확정할 수 있다. 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작다고 확정된 경우, 저장할 기록의 데이터 일부를 잔여 저장 공간에 저장할 수 있다. 또한 상기 타입에 신규 데이터 블록을 할당하여, 저장할 기록의 잔여 데이터를 신규 데이터 블록에 저장할 수 있다.
예시로서, 도 5A 중 데이터 크기가 504KB인 저장할 기록 Y이다. 수행 주체는 type = 126의 현재 저장 정보를 통해, block 3의 잔여 저장 공간이 64KB(4M - 504KB × 8)임을 확정할 수 있다. 이 경우, 수행 주체는 상기 타입으로 하나의 새로운 2M의 데이터 블록(block 4)을 할당할 수 있다. 이렇게, 저장할 기록 Y의 앞의 64KB를 block 3 중에 저장할 수 있다. 또한 저장할 기록 Y의 뒤의 440KB를 block 4 중에 저장할 수 있다. 즉 저장할 기록 Y는 두 개 인접한 데이터 블록에 저장될 수 있다.
단계 204에서, 잔여 저장 공간이 없다고 확정된 것에 응답하여, 타입에 신규 데이터 블록을 할당하여 저장할 기록을 신규 데이터 블록에 저장한다.
본 실시예에 있어서, 수행 주체는 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 없다고 확정된 경우, 상기 타입에 신규 데이터 블록을 할당할 수 있다. 또한 저장할 기록을 신규 데이터 블록에 저장할 수 있다. 예시로서, 도 5A 중 저장할 기록 X이다. block 37에 잔여 저장 공간이 없으므로, 수행 주체는 하나의 새로운 block 49를 할당할 수 있다. 이 경우, 저장할 기록 X를 block 49중에 저장할 수 있다.
본 실시예에 따른 데이터 저장 방법은 저장할 기록의 데이터 크기에 따라, 이에 대해 분류하여 저장할 수 있다. 데이터 연속 저장을 확보함과 동시에 디스크 파편의 생성을 감소 또는 방지할 수 있다. 이는 저장 공간의 이용률을 향상시키고, 디스크의 판독 기록 성능을 개선하는데 도움을 준다. 이 밖에 분산형 오브젝트 저장 방법도 풍부히 한다.
본 실시예의 일부 선택 가능한 실시형태에 있어서, 저장할 기록을 저장한 후, 수행 주체는 이가 속한 타입의 현재 저장 정보를 업데이트할 수 있고, 저장할 기록이 저장된 후의 위치 정보를 생성할 수 있다. 또한 상기 위치 정보를 출력할 수 있다. 여기서, 위치 정보는 저장할 기록의 저장 위치를 설명할 수 있다. 예를 들어, 위치 정보는 기록의 타입, 기록의 식별자 또는 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함할 수 있으며 위치 정보는 출력된다. 여기서 출력은 저장 출력일 수 있으며, 예를 들어 위치 정보를 수행 주체 로컬 또는 다른 전자기기에 저장할 수 있다. 출력은 또한 전송 출력일 수 있으며 예를 들어 위치 정보를 단말기에 송신하는 등이다.
예시로서, 도 5A 중 저장할 기록이 X이며, 그 위치 정보는 [record_type = 128, record_id = 5, block_id = 49, next_block_id = 0]일 수 있다. 이해해야 할 것은, 위치 정보가 [record_type = 128, record_id = 5] 또는 [record_id = 5, block_id = 49]일 경우에도, 수행 주체는 기록 X를 찾을 수 있다.
설명해야 할 것은, 동일한 타입으로 저장된 기록의 데이터 크기가 동일하도록 하기 위해, 선택 가능하게, 수행 주체는 저장할 기록을 저장하기 이전에, 저장할 기록의 데이터 크기가 상기 타입에 대응되는 데이터 크기인지 여부를 먼저 확정할 수 있다. 저장할 기록의 데이터 크기가 상기 타입에 대응되는 데이터 크기라고 확정된 경우, 수행 주체는 저장 작업을 수행할 수 있다. 저장할 기록의 데이터 크기가 상기 타입에 대응되는 데이터 크기가 아닐 경우, 일반적으로 상기 타입에 대응되는 데이터 크기보다 작아서, 수행 주체는 저장할 기록의 기설정된 위치(예를 들어, 앞 또는 뒤)에 기설정된 데이터(예를 들어, 0 또는 다른 문자열 등)를 보충할 수 있다. 이로써, 보충한 후의 저장할 기록의 데이터 크기가 상기 타입에 대응되는 데이터 크기가 되도록 한다. 이후, 수행 주체는 보충한 후의 저장할 기록에 대해 저장을 진행할 수 있다.
일부 적용 시나리오에 있어서, 저장할 기록의 데이터 크기에 따라 저장할 기록의 타입을 결정하기 이전에, 수행 주체는 데이터를 처리하여 저장할 기록을 획득할 수 있다. 예를 들어, 저장할 오브젝트를 분할하여 획득한 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해, 수행 주체는 상기 서브 오브젝트에 대해 부호화(예를 들어, EC 부호화)할 수 있으며, 이로써 사본을 획득한다. 이후, 상기 사본의 설명 정보와 데이터에 대해 직렬화 처리를 수행함으로써 상기 서브 오브젝트의 저장할 기록을 생성할 수 있다.
설명해야 할 것은, 저장할 오브젝트의 분할 과정은 수행 주체에 의해 완성될 수 있으며, 다른 전자기기에 의해서 완성될 수도 있다. 다른 전자기기는 분할하여 획득한 적어도 하나의 서브 오브젝트를 수행 주체에 송신할 수 있다.
나아가, 동일한 타입으로 저장된 기록의 데이터 크기가 동일하도록 하기 위해, 수행 주체는 직렬화 이후의 상기 사본에 대해 분석하고 처리할 수 있으며, 이로써 필요한 데이터 크기(즉 각 타입에 대응되는 데이터 크기 중의 하나)의 저장할 기록을 생성한다.
구체적으로, 우선 수행 주체는 직렬화 이후의 상기 사본의 데이터 크기가 저장 파일 중 각 타입에 대응되는 데이터 크기 중의 하나와 동일한지 여부를 확정할 수 있다. 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기 중의 하나와 동일하면, 수행 주체는 상기 서브 오브젝트의 저장할 기록을 직접 생성할 수 있다.
상기 사본의 데이터 크기(예를 들어, 5KB)가 각 타입에 대응되는 데이터 크기(예를 들어, 4KB, 8KB 및 12KB)와 상이하고 일부 타입에 대응되는 데이터 크기(예를 들어, 8KB 및 12KB)보다 작을 경우, 상기 사본의 데이터 뒤에 0을 보충할 수 있다. 이로써 0을 보충한 후의 상기 사본의 데이터 크기가 타겟 타입에 대응되는 데이터 크기와 동일하도록 할 수 있다. 또한 상기 서브 오브젝트의 하나의 저장할 기록을 생성할 수 있다. 여기서, 타겟 타입은 상기 일부 타입 중 대응되는 데이터 크기가 가장 작은 타입(예를 들어, 8KB 및 12KB 중의 8KB)일 수 있다. 설명해야 할 것은, 기존의 데이터에 영향을 미치지 않는 한, 보충 위치와 보충 콘텐츠는 본 출원에서 한정하지 않는다.
상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기의 최댓값(예를 들어, 512KB)보다 클 경우, 상기 사본을 분할하고 0을 보충할 수 있다. 이로써 분할된 후의 각 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기 중의 하나와 각각 동일하도록 할 수 있으며, 또한 상기 서브 오브젝트의 적어도 두 개의 저장할 기록을 생성한다. 예를 들어, 사본의 데이터 크기는 518KB이며, 이를 512KB와 6KB의 두 개 서브 사본으로 분할할 수 있고, 6KB의 서브 사본을 8KB가 될 때까지 0을 보충한다. 또는, 이를 512KB, 4KB 및 2KB의 세 개의 서브 사본으로 분할할 수 있으며, 2KB의 서브 사본을 4KB가 될 때까지 0을 보충한다. 또는, 다른 타입에 대응되는 데이터 크기에 따라 상기 사본을 복수 개의 상응한 데이터 크기의 서브 사본으로 분할할 수 있으며, 0 보충 작업을 수행하지 않아도 된다.
예시로서, 저장할 기록 중 도 5B에 도시된 필드(field)가 포함될 수 있다. 여기서, Shard Record 중에 사본(shard)의 일부 메타 정보(Meta information)를 기록할 수 있으며, 순환잉여검사코드(Cyclic Redundancy Code, crc), 길이(length) 등 콘텐츠를 포함한다. Key + meta 중에 사용자가 지정한 설명 정보를 기록할 수 있다. Binary data는 일반적으로 사본의 실제 데이터(shard data)일 수 있다. 상기 데이터 뒤의 고정되지 않은 길이의 필드(즉 filled zero)는 0 보충 및 정렬에 사용될 수 있다. 이로써, 각 기록(record)이 모두 4kb의 정수배가 되도록 확보할 수 있다.
이해할 수 있는 것은, 수행 주체의 부하를 감소시키고자, 각 저장 파일은 메모리 공간의 자아 관리를 수행할 수도 있다. 예를 들어, 하나의 저장 파일에 대해, 하나의 데이터 블록 관리 유닛(Block Manager)(501)과 복수 개의 타입 관리 유닛(Block Link List)(502)이 설치될 수 있다. 여기서, 데이터 블록 관리 유닛은 데이터 블록을 할당하고 회수하는데 사용될 수 있다. 각 타입 관리 유닛은 한 가지 타입의 저장 정보를 관리하는데 사용될 수 있다. 예를 들어, 도 5A 중 type = 128의 타입 관리 유닛은 자체로 할당한 데이터 블록의 리스트(예를 들어, block 37) 및 자체로 이미 입력한 기록의 개수(예를 들어, 4개)를 기억할 수 있다. 따라서, 기록된 개수를 통해 마지막 하나의 데이터 블록(예를 들어, block 37)에 사용 가능한 잔여 저장 공간이 얼마만큼 더 있는지 산출할 수 있다. 저장 공간이 충족하지 않을 경우, 데이터 블록의 할당을 나타내는 정보를 데이터 블록 관리 유닛에 송신할 수 있다. 이 경우, 데이터 블록 관리 유닛은 이에 하나의 신규 데이터 블록(예를 들어, block 49)을 할당할 수 있다. 따라서 수행 주체 전체의 처리 효율과 성능을 향상시키는데 도움을 준다.
이 경우, 각 저장 파일의 내부 구조는 모두 자체로 이미 저장 및 기록한 위치 정보(Location)를 통해 구축할 수 있다. 작동 시, 각 저장 파일은 자체 모든 기록을 한번 스캔할 수 있다. 이로써 BlockManager에서 자체로 이미 할당한 모든 데이터 블록을 표기할 수 있다. 또한, BlockLinkList에서 각 기록의 위치 정보를 복원할 수 있다. 스캔이 종료된 후, BlockManager는 자체의 데이터 블록의 할당 정보를 알게 된다. 모든 타입의 BlockLinkList도 자체의 데이터 블록의 정보와 자체 현재 기록의 정보를 알게 된다.
본 실시예의 데이터 저장 방법은 저장할 기록의 데이터 크기에 따라 저장할 기록의 타입을 확정할 수 있다. 이로써 저장 파일에서 타입의 현재 저장 정보를 검색할 수 있다. 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함할 수 있다. 여기서, 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이하다. 따라서, 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정할 수 있다. 잔여 저장 공간이 없다고 확정된 경우, 타입에 신규 데이터 블록을 할당할 수 있다. 또한 저장할 기록을 신규 데이터 블록에 저장할 수 있다. 이와 같이, 공간 파편의 생성을 감소시켜, 디스크의 공간 이용률을 향상시킬 수 있다. 또한 디스크의 판독 기록 성능을 개선하는데 도움을 준다.
도 3을 참조하면, 이는 본 출원에 따른 데이터 저장 방법의 다른 일 실시예의 흐름(300)을 나타낸다. 본 실시예에 있어서, 디스크에 적어도 두 개의 저장 파일을 구축할 수 있다. 또한, 디스크의 목록 중에 상기 디스크 상의 각 저장 파일의 색인 정보가 저장될 수 있다. 다시 말해서, 각 저장 파일은 색인 정보와 데이터 정보를 포함할 수 있다. 여기서, 색인 정보에는 저장 파일의 내부에 어떠한 기록과 기록의 상태가 저장되어 있는지 기록된다. 데이터 정보는 주로 저장 파일의 내부에 저장된 실제 데이터를 가리킨다. 즉 디스크에 입력된 모든 기록의 색인 정보는 모두 목록 중에 기록될 것이다. 여기서, 색인 정보는 기록의 위치 정보를 포함할 수 있다.
예시로서, 디스크의 구조는 도 5C에 도시된 바와 같을 수 있다. 여기서, Rocksdb 503은 디스크의 목록을 표시할 수 있고, 키-값(key-value)의 저장 방식을 이용할 수 있다. Vlet 504(Vlet_110_3 및 Vlet…)는 저장 파일을 표시할 수 있다. 설명해야 할 것은, 하나의 디스크는 일반적으로 하나의 목록 구현예만 있다. 색인 정보와 데이터 정보를 분리하여 저장하면 기록이 존재하는지 여부를 빠르게 검색할 수 있도록 확보할 수 있다. 선택 가능하게, 색인 정보는 풀 메모리 방식으로 저장할 수 있지만 메모리 크기에 의해 제한된다. 여기서, 목록을 사용하여 저장하면 메모리 제한을 받지 않으나, 별도의 IO가 발생할 수 있다. 이 경우, 캐시(cache) 메모리를 구성하여 메모리 사용과 IO 사용을 바람직하게 평형시킬 수 있다.
본 실시예에 있어서, 데이터 저장 방법은 하기 단계를 더 포함할 수 있다.
단계 301에서, 목록으로부터 판독할 기록의 위치 정보를 검색한다.
본 출원의 실시예에 있어서, 데이터 저장 방법의 수행 주체(예를 들어, 도 1에 도시된 서버(105))는 목록으로부터 판독할 기록을 검색할 수 있다. 판독할 기록이 검색된 경우, 목록에서 그 위치 정보를 획득할 수 있다.
단계 302에서, 판독할 기록의 위치 정보에 따라, 판독할 기록의 타입 및 대응되는 저장 파일 중 데이터 블록에서의 위치 오프셋을 확정한다.
본 실시예에 있어서, 위치 정보 중에 기록의 타입이 포함될 경우, 수행 주체는 판독할 기록의 위치 정보에 따라, 판독할 기록의 타입을 확정할 수 있다. 또는, 수행 주체는 위치 정보에 따라, 판독할 기록이 위차하는 저장 파일과 데이터 블록을 확정할 수 있으며, 이로써 그 타입을 확정할 수 있다. 아울러, 그 데이터 블록의 저장 공간과 상기 데이터 블록에 저장된 기록의 정보에 따라, 상기 데이터 블록에서의 판독할 기록의 위치 오프셋을 확정할 수 있다. 여기서 위치 오프셋은 데이터 블록 중 기록의 시작 위치를 나타내기 위한 것일 수 있다.
예시로서, 도 5A에 도시된 바와 같이, 수행 주체는 디스크의 목록에서 기록Y의 위치 정보가 [vlet_id = 110_3, record_type = 126, record_id = 9, block_id = 3, next_block_id = 4]임을 찾을 수 있다. 이 경우, Vlet_110_3 중 데이터 블록의 저장 공간에 따라, block 3 중 기록 Y의 위이 오프셋이 2M-64KB(64KB = 4M - 8 × 504KB)임을 산출할 수 있다.
단계 303에서, 판독할 기록의 타입에 따라, 판독할 기록의 길이를 확정하며, 위치 오프셋이 표시한 위치로부터 시작하여 길이가 판독할 기록의 길이인 데이터를 판독한다.
본 실시예에 있어서, 수행 주체는 판독할 기록의 타입에 따라, 판독할 기록의 길이를 확정할 수 있다. 따라서, 수행 주체는 단계 302 중 확정된 위치 오프셋이 표시한 위치로부터 시작하여 길이가 판독할 기록의 길이인 데이터를 판독할 수 있다. 예를 들어, 상기 기록 Y의 타입이 126이면, 그 길이는 504KB일 수 있다. 이 경우, 수행 주체는 block 3 중 2M-64KB의 위치로부터 시작하여 길이가 504KB인 데이터를 메모리까지 한번에 판독할 수 있다.
단계 304에서, 판독한 데이터를 판독할 기록으로서 출력한다.
본 실시예에 있어서, 수행 주체는 판독한 데이터를 판독할 기록으로서 이에 대해 부호화 해석할 수 있다. 이로써 해석 후의 데이터를 출력할 수 있으며, 예를 들어 단말기(예를 들어, 도 1에 도시된 단말기(101, 102, 103))로 송신할 수 있다.
일부 실시예에 있어서, 색인 정보가 모두 분실된 경우 색인 정보를 복원할 수 있도록, 각 기록 중에는 그의 저장된 후의 위치 정보를 기록하는 필드를 더 포함할 수 있다. 도 5B에 도시된 바와 같이, 기록한 마지막 위치(예를 들어, 고정된 24개 바이트)에서 Record Guard 데이터 구조를 사용하였다.
선택 가능하게, 수행 주체는 부호화 해석하기 이전에, Record Guard 정보를 검증할 수 있다. 아울러, 판독한 데이터의 기설정된 위치에 보충된 기설정된 데이터(예를 들어, 0)가 존재하는지 여부를 검출할 수 있다. 기설정된 데이터가 존재할 경우, 판독한 데이터 중의 기설정된 데이터를 삭제하거나 무시할 수 있다. 따라서, 검증 후의 기설정된 데이터를 포함하지 않은 판독한 데이터에 대해 해석한다.
본 실시예에서 데이터 저장 방법은 판독 데이터의 단계를 추가하고 판독 과정을 상세하게 설명하여 본 출원의 데이터 저장 방법을 풍부히 하고 완벽하게 하였다. 또한, 판독 및 라이팅 과정은 모두 1회 IOPS(Input/Output Operations Per Second, 매초마다 판독 및 라이팅(I/O) 조작을 수행하는 횟수)이다. 이는 방법의 적용 범위를 확대하는데 도움이 될 것이다.
나아가 도 4를 참조하면, 이는 본 출원에 따른 데이터 저장 방법의 또 다른 일 실시예의 흐름(400)을 나타낸다. 상기 데이터 저장 방법은 하기 단계를 포함할 수 있다.
단계 401에서, 삭제할 기록의 위치 정보를 목록으로부터 검색한다.
본 실시예에 있어서, 데이터 저장 방법의 수행 주체(예를 들어,도 1에 도시된 (105))는삭제할 기록을 목록으로부터 검색할 수 있다. 삭제할 기록이 검색된 경우, 목록에서 그 위치 정보를 획득할 수 있다.
단계 402에서, 삭제할 기록의 위치 정보에 따라, 대응되는 저장 파일 중 삭제할 기록이 속하는 타입의 현재 저장 정보를 획득한다.
본 실시예에 있어서, 수행 주체는 삭제할 기록의 위치 정보에 따라, 그 저장 파일을 확정할 수 있다. 또한 상기 저장 파일 중 그 타입의 현재 저장 정보를 획득할 수 있다.
예시로서, 도 5A에 도시된 바와 같이, 수행 주체는 디스크의 목록에서 기록 Z의 위치 정보가 [vlet_id = 110_3, record_type = 128, record_id = 2, block_id = 37, next_block_id = 0]임을 찾을 수 있다. 이 경우, 수행 주체는 Vlet_110_3 중 type = 128인 현재 저장 정보, 즉 block 37(record1-4) 및 block 49(record5)를 획득할 수 있다.
단계 403에서, 획득한 현재 저장 정보에 따라, 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독하고, 판독한 기록을 삭제할 기록이 위치한 위치에 전이시켜 저장한다.
본 출원의 실시예에 있어서, 획득한 현재 저장 정보에 따라, 수행 주체는 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독할 수 있다. 또한, 판독한 기록을 삭제할 기록이 위치한 위치에 전이시켜 저장할 수 있다.
예시로서, 도 5A에 도시된 바와 같이, 수행 주체는 record_id = 5인 기록 X를 판독할 수 있다. 이로써 기록 X를 record_id = 2인 위치에 전이(Move)하여 입력할 수 있다. 두 개의 기록의 데이터 길이가 동일하므로, 겹쳐쓰기가 가능하다.
단계 404에서, 판독한 기록이 전이되기 이전의 데이터 블록 중의 데이터를 삭제하고, 판독한 기록의 위치 정보를 수정한다.
본 실시예에 있어서, 수행 주체는 판독한 기록(예를 들어, 기록 X)의 전이되기 이전의 데이터 블록(예를 들어, block_id = 49) 중의 데이터(예를 들어, record5)를 삭제할 수 있다. 또한, 판독한 기록의 위치 정보를 수정해야 한다. 예를 들어, 기록 X를 수정한 후의 위치 정보는 [record_type = 128, record_id = 2, block_id = 37, next_block_id = 0]이다. 설명해야 할 것은, 삭제할 기록을 삭제한 후, 관련 정보(예를 들어, 디스크의 목록, 대응되는 타입의 현재 저장 정보, 기록 X의 Record Guard 등)를 더 업데이트해야 한다.
단계 405에서, 판독한 기록이 전이되기 이전에 위치한 데이터 블록 중에 데이터가 더 저장되어 있는지 여부를 결정한다.
본 실시예에 있어서, 수행 주체는 판독한 기록이 전이되기 이전에 위치한 데이터 블록 중에 데이터가 더 저장되어 있는지 여부를 확정할 수 있다. 예를 들어, 도 5A에 도시된 바와 같이, 기록 X를 전이시켜 저장한 후, 수행 주체는 block 49 중에 다른 데이터가 더 저장되어 있는지 여부를 확정할 수 있다.
단계 406에서, 데이터 블록 중에 데이터가 저장되어 있지 않다고 확정된 경우, 재할당을 위해 상기 데이터 블록을 회수한다.
본 실시예에 있어서, 수행 주체는 상기 데이터 블록 중에 데이터가 저장되어 있지 않다고 확정된 경우, 재할당 대기를 위해 상기 데이터 블록을 회수할 수 있다. 예를 들어, 데이터 블록의 이미 할당된 식별자 상태를 미할당 식별자 상태로 수정할 수 있다. 예를 들어, 도 5A로부터 보아낼 수 있다시피, 기록 X를 전이시켜 저장한 후, block 49의 저장 공간은 완전히 비어있다. 이 경우, BlockManager는 상기 데이터 블록(FreeBlock 49)을 회수할 수 있다.
본 실시예에서 데이터 저장 방법은 데이터를 삭제하는 단계를 추가하고 삭제 과정을 상세하게 설명하여 본 출원의 데이터 저장 방법을 한층 더 풍부히 하고 완벽하게 하였다. 또한, 삭제 과정은 1회의 판독 과정에 1회의 입력 과정을 추가한 것에 해당되며, 디스크의 전반 성능을 향상시키는데 도움을 줄 수 있다. 또한, 잔여 데이터 저장의 연속성을 확보하여 공간 파편이 생성되지 않도록 할 수 있다.
이해할 수 있는 것은, 상기 각 실시예의 디스크에 대해, 그에 구축된 각 저장 파일의 크기는 동일할 수 있으므로 관리하기 편하고, 데이터 처리 효율을 향상시키는데 유리하다. 각 저장 파일의 크기는 상이할 수도 있으므로 상이한 사용자의 요구를 충족시키는데 도움이 된다. 이밖에, 상이한 저장 파일 중의 데이터 블록의 크기는 동일할 수 있고 상이할 수도 있다. 관리의 편의상, 각 저장 파일 중에 구성 파일이 설치될 수 있다. 여기서, 구성 파일은 저장 파일의 구성 파라미터 정보를 설명하는데 사용될 수 있다.
도 5A에 도시된 바와 같이, 저장 파일의 마지막에 하나의 512KB의 파일(즉 VletInfo)이 존재할 수 있다. 상기 파일은 자체의 구성 파라미터 정보를 저장할 수 있으며, Protobuf(Google Protocol Buffer)를 사용할 수 있어 간편하고 고효율적인 구조화된 데이터 저장 포맷이다. 이는 플랫폼과 언어에 관계없이, 확장 가능하고, 사용이 간단하며, 해석 속도가 빠른 등 특징을 가진다. 설명해야 할 것은, 이 파일 중의 콘텐츠는 저장 파일 구축 시에만 생성되며, 이후에 영원히 수정할 수 없다.
여기서, 구성 파라미터 정보는 저장 파일의 크기(예를 들어, 32GB), 데이터 블록의 크기(예를 들어, 2M), 기록 중의 최소 타입(예를 들어, 4kB), 기록 중의 최대 타입(예를 들어, 512KB), 기록 타입 사이의 간격(예를 들어, 4kB) 등 중 적어도 하나를 포함할 수 있지만 이에 한정되지 않는다. 다시 말해서, 저장 파일 중 마지막 하나의 page에 vletinfo를 저장하는 것 외에, 다른 부분은 모두 동일한 크기의 데이터 블록일 수 있다.
이밖에, 설명해야 할 것은, 대량의 작은 파일에 대한 저장은 줄곧 분산형 저장 시스템에서 해결하기 어려운 문제로, 사용자는 일반적으로 판독 성능, 공간 이용률 및 삭제 효율 등 측면에서 취사선택해야 하였으나, 본 출원의 각 실시예의 데이터 저장 방법에 있어서, 데이터 판독, 라이팅은 디스크의 1회 랜덤 판독, 라이팅에 해당될 수 있다. 또한, 데이터 삭제는 1회 판독에 라이팅을 추가한 것에 해당된다. 이는 디스크의 판독 기록 성능과 삭제 효율을 확보하는데 도움을 준다. 이밖에, 데이터를 라이팅하고 삭제할 시 공간 파편이 생성되지 않고 즉시 유휴 저장 공간을 회수할 수 있다. 이는 디스크의 공간 이용률을 향상하는데 도움을 준다. 다시 말해서, 본 출원에 따른 데이터 저장 방법은 사용자의 상기 요구를 균형있게 맞출 수 있어 실제 사용 중에서 양호한 처리 효과에 도달할 수 있으며, 사용자 체험을 향상시키는데 유리할 수 있다.
본 출원의 실시예의 데이터 저장 방법에 있어서, 두 개의 데이터 블록을 스팬하지 않는 한, 모든 데이터의 판독 및 라이팅은 모두 1회 IOPS이다. 여기서, 데이터 블록의 크기를 조절하거나 데이터 라이팅의 분할 등 조치를 통해, 두 개의 데이터 블록을 스팬하는 경우를 감소시키거나 방지할 수 있다. 판독, 라이팅 성능은 각각 디스크의 1회 랜덤 판독, 랜덤 라이팅의 소모 시간과 기본적으로 동일하다. 또한 라이팅 및 삭제 과정에서 파편이 생성되지 않으며, 즉시 공간을 회수할 수 있다. 비록, 삭제 과정에서 1회의 별도의 IO 라이팅이 발생할 수 있지만, 기존의 기술적 해결수단에 비해, IO에 대한 소모는 여전히 비교적 적다.
이밖에, 공간 낭비 측면에는 주로 두 부분이 존재하는데 그 중 하나는, 동일한 타입의 데이터의 크기를 정렬하는 것이다. 이 부분의 낭비는 입력 데이터의 평균 크기에 의해 결정된다. 통계에 의해 알 수 있다시피, 사용자의 평균 입력 데이터는 일반적으로 256KB이고 이렇게 생성된 공간 낭비는 약 0.7 %이다. 다른 하나는, 각종 타입으로 할당된 마지막 하나의 데이터 블록이 채 입력되지 않은 것이다. 최악의 경우, 대략 127개 데이터 블록이 하나의 기록만 존재한다. 이 경우 공간 낭비는 약 (2M × 127) ÷ 32G = 0.7 %이다. 분석을 통해 이 두 부분의 공간 낭비는 모두 수용 가능하다는 것을 알 수 있다. 따라서, 처리량, 지연, 공간 이용률 등 측면의 종합적인 비교로부터 보면, 상기 방법은 기존의 기술보다 우수하다.
설명해야 할 것은, 본 출원의 실시예 중 방법은 주로 데이터 규모가 EB급인 경우, 판독이 라이팅보다 많을 경우, 라이팅이 삭제보다 많을 경우에 사용될 수 있으므로 이는 공간 이용률에 대해 극히 엄격히 요구(즉 비용 감소)한다. 아울러, 판독 및 라이팅 지연과 처리량에 대한 요구가 비교적 높다.
계속하여 도 6을 참조하면, 이는 상기 각 도에 도시된 방법의 구현으로서, 본 출원은 데이터 저장 장치의 일 실시예를 제공한다. 상기 장치의 실시예는 상기 각 실시예에 나타낸 방법의 실시예와 대응되며, 상기 장치는 구체적으로 다양한 전자기기에 적용될 수 있다.
도 6에 도시된 바와 같이, 본 실시예의 데이터 저장 장치(600)는 분산형 오브젝트 저장의 스탠드 얼론 저장 엔진 내에 설치될 수 있다. 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축될 수 있다. 여기서, 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획되고, 또한 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조가 적용될 수 있다. 상기 데이터 저장 장치(600)는 저장할 기록의 데이터 크기에 따라, 저장할 기록의 타입을 확정하도록 구성된 타입 확정 유닛(601); 저장 파일에서 상기 타입의 현재 저장 정보를 검색하도록 구성된 검색 유닛(602) - 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 여기서 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이함 - ; 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정하도록 구성된 공간 확정 유닛(603); 및 잔여 저장 공간이 없다고 확정되 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 저장할 기록을 신규 데이터 블록에 저장하도록 구성된 제1 할당 유닛(604)을 포함할 수 있다.
본 실시예의 일부 선택 가능한 실시형태에 있어서, 상기 데이터 저장 장치(600)는 잔여 저장 공간이 있다고 확정된 것에 응답하여, 나아가 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작지 않은지 여부를 확정하도록 구성된 크기 확정 유닛(도 6에 도시되지 않음); 및 잔여 저장 공간이 저장할 기록의 데이터 크기보다 작다고 확정된 것에 응답하여, 저장할 기록의 데이터 일부를 잔여 저장 공간에 저장하고, 타입에 신규 데이터 블록을 할당하여 저장할 기록의 잔여 데이터를 신규 데이터 블록에 저장하도록 구성된 제2 할당 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다.
선택 가능하게, 적어도 두 개의 데이터 블록의 저장 공간은 동일할 수 있으며, 상이한 타입으로 저장된 기록의 데이터 크기는 모두 기설정된 수치의 정수배일 수 있다.
나아가, 상기 데이터 저장 장치(600)는 상기 타입의 현재 저장 정보를 업데이트하고 저장할 기록을 저장한 후의 위치 정보를 생성하며, 상기 위치 정보를 출력하도록 구성된 위치 생성 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다. 여기서 위치 정보는 기록의 타입, 기록의 식별자 또는 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함한다.
일부 실시예에 있어서, 디스크에는 적어도 두 개의 저장 파일이 구축될 수 있으며, 디스크의 목록 중에 각 저장 파일의 색인 정보가 저장될 수 있다.
선택 가능하게, 상기 데이터 저장 장치(600)는 목록으로부터 판독할 기록의 위치 정보를 검색하도록 구성된 제1 위치 검색 유닛(도 6에 도시되지 않음); 판독할 기록의 위치 정보에 따라, 판독할 기록의 타입 및 대응되는 저장 파일 중 위치하는 데이터 블록에서의 위치 오프셋을 확정하도록 구성된 확정 유닛(도 6에 도시되지 않음); 및 판독할 기록의 타입에 따라, 판독할 기록의 길이를 확정하고, 위치 오프셋이 표시하는 위치로부터 시작하여 길이가 상기 판독할 기록의 길이인 데이터를 판독하고, 판독한 데이터를 판독할 기록으로서 출력하도록 구성된 판독 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다.
나아가, 상기 데이터 저장 장치(600)는 삭제할 기록의 위치 정보를 목록으로부터 검색하도록 구성된 제2 위치 검색 유닛(도 6에 도시되지 않음); 삭제할 기록의 위치 정보에 따라, 대응되는 저장 파일 중 삭제할 기록이 속하는 타입의 현재 저장 정보를 획득하도록 구성된 획득 유닛(도 6에 도시되지 않음); 획득한 현재 저장 정보에 따라, 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독하여, 판독한 기록을 삭제할 기록이 위치한 위치에 전이시켜 저장하도록 구성된 전이 유닛(도 6에 도시되지 않음); 및 판독한 기록의 전이되기 이전의 데이터 블록 중 데이터를 삭제하고, 또 판독한 기록의 위치 정보를 수정하도록 구성된 수정 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다.
일부 실시예에 있어서, 상기 데이터 저장 장치(600)는 판독한 기록이 전이되기 이전에 위치한 데이터 블록 중에 데이터가 더 저장되어 있는지 여부를 확정하여 상기 데이터 블록 중에 데이터가 저장되어 있지 않을 경우, 재할당을 위해 상기 데이터 블록을 회수하도록 구성된 회수 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다.
일부 실시예에 있어서, 상기 데이터 저장 장치(600)는 저장할 오브젝트를 분할하여 획득한 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화하여 사본을 획득하도록 구성된 부호화 유닛(도 6에 도시되지 않음); 및 상기 사본의 설명 정보와 데이터에 대해 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하도록 구성된 기록 생성 유닛(도 6에 도시되지 않음)을 더 포함할 수 있다.
선택 가능하게, 기록 생성 유닛은 직렬화 이후의 상기 사본의 데이터 크기가 저장 파일 중 각 타입에 대응되는 데이터 크기 중의 하나와 동일한 지 여부를 확정하도록 구성된 확정 서브 유닛; 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기와 모두 상이하고, 일부 타입에 대응되는 데이터 크기보다 작을 경우, 상기 사본의 데이터 뒤에 0을 보충하여 0을 보충한 후의 상기 사본의 데이터 크기가 타겟 타입에 대응되는 데이터 크기와 동일하도록 하고, 상기 서브 오브젝트의 하나의 저장할 기록을 생성하도록 구성된 제1 생성 서브 유닛 - 타겟 타입은 상기 일부 타입 중 대응되는 데이터 크기가 가장 작은 타입임 - ; 및 상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기의 최댓값보다 클 경우, 상기 사본에 대해 분할하고 0을 보충하여 분할 후의 각 사본의 데이터 크기가 각각 각 타입에 대응되는 데이터 크기 중의 하나와 동일하도록 하고, 상기 서브 오브젝트의 적어도 두 개의 저장할 기록을 생성하도록 구성된 제2 생성 서브 유닛을 포함할 수 있다.
이해할 수 있는 것은, 상기 데이터 저장 장치(600) 중에 기재된 여러 유닛은 도 2 내지 도 4를 참조하여 설명된 방법 중의 각 단계와 대응된다. 이로부터, 상기 방법에 대해 설명된 조작, 특징 및 생성된 유익한 효과는 마찬가지로 상기 데이터 저장 장치(600) 및 그 중에 포함된 유닛에 적용되며, 여기서 더이상 설명하지 않는다.
도 7을 참조하면, 이는 본 출원에 따른 데이터 저장 시스템의 일 실시예의 시계열도를 나타낸다.
본 실시예의 데이터 저장 시스템은 제1 서브 시스템, 제2 서브 시스템 및 제3 서브 시스템을 포함할 수 있고, 여기서 제3 서브 시스템 내에 상기 각 실시예에서 설명된 스탠드 얼론 저장 엔진이 장착될 수 있다. 제1 서브 시스템은, 사용자가 송신한 저장할 오브젝트가 포함된 저장 요청을 수신하여, 저장할 오브젝트를 적어도 하나의 서브 오브젝트로 분할하고, 저장할 오브젝트와 상기 적어도 하나의 서브 오브젝트 사이의 대응관계를 제2 서브 시스템에 송신하며, 적어도 하나의 서브 오브젝트를 제3 서브 시스템에 송신하도록 구성된다. 제2 서브 시스템은 저장할 오브젝트와 적어도 하나의 서브 오브젝트 사이의 대응관계를 리스트에 저장하도록 구성된다. 제3 서브 시스템은 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화 및 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하고 생성된 저장할 기록을 저장하도록 구성된다.
도 7에 도시된 바와 같이, 단계 701에서, 제1 서브 시스템은 사용자로부터 송신된 저장할 오브젝트를 포함한 저장 요청을 수신할 수 있다.
본 실시예에 있어서, 제1 서브 시스템은 유선 연결 방식 또는 무선 연결 방식을 통해, 사용자로부터 송신된 저장할 오브젝트를 포함한 저장 요청을 수신할 수 있다. 여기서, 저장할 오브젝트는 분산형 오브젝트 저장 시스템의 데이터일 수 있다.
단계 702에서, 제1 서브 시스템은 저장할 오브젝트를 적어도 하나의 서브 오브젝트로 분할할 수 있다. 여기서 분할 방식은 실제 필요에 따라 설정될 수 있다.
단계 703에서, 제1 서브 시스템은 저장할 오브젝트와 적어도 하나의 서브 오브젝트 사이의 대응관계를 제2 서브 시스템에 송신하고, 또 적어도 하나의 서브 오브젝트를 제3 서브 시스템에 송신할 수 있다.
단계 704에서, 제2 서브 시스템은 저장할 오브젝트와 적어도 하나의 서브 오브젝트 사이의 대응관계를 리스트에 저장할 수 있다.
단계 705에서, 제3 서브 시스템은 적어도 하나의 서브 오브젝트에 대해 부호화 및 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하고 생성된 저장할 기록을 저장할 수 있다. 이는 도 2의 실시예의 관련 설명을 참조할 수 있으며 여기서 더이상 설명하지 않는다.
본 실시예의 일부 선택 가능한 실시형태에 있어서, 단계 706에서, 제3 서브 시스템은 데이터 저장 완료를 나타내기 위한 응답 정보를 제1 서브 시스템에 송신할 수 있다.
이후, 단계 707에서, 제1 서브 시스템은 응답 정보를 수신한 경우, 저장할 오브젝트의 조회 식별자를 생성하고 조회 식별자를 사용자에게 피드백할 수 있다. 여기서, 조회 식별자는 숫자, 자모, 문자 등 적어도 하나의 문자부호를 포함할 수 있지만 이에 한정되지 않는다.
선택 가능하게, 단계 708에서, 제1 서브 시스템은, 사용자로부터 송신된 조회 식별자를 포함한 판독 요청을 수신할 수 있다.
이어서, 단계 709에서, 제1 서브 시스템은 판독 요청 중의 조회 식별자를 제2 서브 시스템에 송신할 수 있다.
이후, 단계 710에서, 제2 서브 시스템은 판독 요청 중의 조회 식별자가 표시하는 오브젝트와 대응되는 서브 오브젝트의 리스트를 획득하여 서브 오브젝트의 리스트를 제3 서브 시스템에 송신할 수 있다.
이후, 단계 711에서, 제3 서브 시스템은 서브 오브젝트의 리스트에 따라 대응되는 기록을 판독하고, 판독한 기록에 대해 해석하여 오브젝트 데이터를 획득하며, 오브젝트 데이터를 제1 서브 시스템에 송신할 수 있다. 이는 도 3의 실시예의 관련 설명을 참조할 수 있으며 여기서 더이상 설명하지 않는다.
마지막으로, 단계 712에서, 제1 서브 시스템은 오브젝트 데이터를 사용자에게 피드백할 수 있다.
일부 적용 시나리오에서, 제1 서브 시스템은 사용자로부터 송신된 조회 식별자를 포함한 삭제 요청을 수신할 수 있다. 따라서, 제3 서브 시스템은 도 4의 실시예 중의 관련 설명에 따라, 삭제 요청이 지시한 오브젝트 데이터를 삭제할 수 있는데 여기서 더이상 설명하지 않는다.
이해할 수 있는 것은, 상기 제1 서브 시스템, 제2 서브 시스템 및 제3 서브 시스템은 상이한 전자기기 내(예를 들어, 3대 서버)에 위치할 수 있고 동일한 전자기기 내(예를 들어, 도 1에 도시된 서버(105))에 위치할 수도 있다. 또한, 일부 실시예에 있어서, 제1 서브 시스템 중에 제2 서브 시스템의 기능이 포함될 수 있을 경우, 본 실시예 중의 시스템은 제2 서브 시스템을 설치하지 않을 수 있다.
본 실시예의 데이터 저장 시스템은 새로운 데이터 저장 방식을 적용하며, 즉 데이터 크기에 따라 분류하여 저장한다. 따라서, 데이터의 분산형 저장을 구현할 수 있을 뿐만 아니라, 데이터의 안전성을 향상시킨다. 아울러, 전반적인 데이터 처리 성능을 향상시켜 작동 비용을 감소시킬 수 있다.
이하, 도 8을 참조하면, 이는 본 출원의 실시예에 따른 전자기기(예를 들어, 도 1에 도시된 서버(105))를 구현하기 위해 적용되는 컴퓨터 시스템(800)의 구조 모식도를 나타낸다. 도 8에 도시된 전자기기는 단지 하나의 예일 뿐 본 출원의 실시예의 기능과 사용 범위에 대한 어떠한 한정도 아니다.
도 8에 도시된 바와 같이, 컴퓨터 시스템(800)은 중앙 처리 장치(CPU)(801)를 포함하고 판독 전용 메모리(ROM)(802) 중에 저장된 프로그램 또는 저장 부분(808)으로부터 랜덤 액세스 메모리(RAM)(803)에 로딩되는 프로그램에 따라 여러 가지 적절한 동작과 처리를 수행할 수 있다. RAM(803)에 시스템(800) 작동에 필요한 다양한 프로그램과 데이터가 더 저장된다. CPU(801), ROM(802) 및 RAM(803)은 버스(804)를 통해 서로 연결된다. 입출력(I/O) 인터페이스(805)도 버스(804)에 연결된다.
키워드, 마우스, 마이크로폰, 카메라 등을 포함하는 입력 부분(806); 음극선관(cathode-ray tube, CRT), 액정 디스플레이(LCD) 등 및 스피크 등을 포함하는 출력 부분(807); 하드 드라이버 등을 포함하는 저장 부분(808); 및 LAN 카드, 모뎀 등과 같은 네트워크 인터페이스 카드를 포함하는 통신 부분(809)과 같은 부품은 I/O 인터페이스(805)에 연결된다. 통신 부분(809)은 인터넷과 같은 네트워크를 통해 통신 처리를 수행한다. 드라이버(810)도 필요에 따라 I/O 인터페이스(805)에 연결된다. 디스크, CD, 광자기 디스크, 반도체 메모리 등과 같은 착탈 가능한 매체(811)는 이에 의해 판독된 컴퓨터 프로그램을 필요에 따라 저장 부분(808) 내에 용이하게 설치하도록 필요에 따라 드라이버(810)에 설치된다.
특히 본 출원에 공개된 실시예에 따르면, 상기에서 흐름도를 참조하여 설명한 과정은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있다. 예를 들어, 본 출원에 공개된 실시예는 컴퓨터 프로그램 제품을 포함하고, 컴퓨터 판독 가능한 매체에 탑재되는 컴퓨터 프로그램을 포함하며, 상기 컴퓨터 프로그램은 흐름도에 도시된 방법을 수행하기 위한 프로그램 코드를 포함한다. 이러한 실시예에서, 상기 컴퓨터 프로그램은 통신 부분(809)을 통해 네트워크로부터 다운로드 또는 설치될 수 있거나 및/또는 착탈 가능한 매체(811)로부터 설치될 수 있다. 상기 컴퓨터 프로그램이 중앙 처리 장치(CPU)(801)에 의해 실행될 때 본 출원에 따른 방법에서 한정된 상기 기능을 수행한다. 설명해야 할 것은, 본 출원에서 설명하는 컴퓨터 판독 가능한 매체는 컴퓨터 판독 가능한 신호 매체 또는 컴퓨터 판독 가능한 저장 매체 또는 상기 양자의 임의의 조합일 수 있다. 예를 들어 컴퓨터 판독 가능한 저장 매체는 전기, 자기, 광, 전자기, 적외선 또는 반도체 시스템, 장치 또는 소자 또는 이상의 임의의 조합일 수 있으나 이에 한정되는 것은 아니다. 컴퓨터 판독 가능한 저장 매체의 보다 구체적인 예로서 하나 또는 복수 개의 도선을 구비하는 전기적 연결, 휴대용 컴퓨터 디스크, 하드 디스크, RAM, ROM, 소거 가능 프로그래머블 롬(EPROM 또는 플래시 메모리), 광섬유, CD-ROM, 광학 저장 소자, 자기 저장 소자 또는 이상의 임의의 적절한 조합을 포함할 수 있으나 이에 한정되는 것은 아니다. 본 출원에서, 컴퓨터 판독 가능한 저장 매체는 프로그램을 포함하거나 저장하는 임의의 유형 매체일 수 있으며, 상기 프로그램은 명령 실행 시스템, 장치 또는 소자 또는 이들의 조합에 의해 사용될 수 있다. 본 출원에 있어서, 컴퓨터 판독 가능한 신호 매체는 기저 대역 또는 반송파의 일부분으로서 전파되는 데이터 신호에 포함될 수 있으며 컴퓨터 판독 가능한 프로그램 코드가 탑재된다. 이렇게 전파되는 데이터 신호는 다양한 형식을 사용할 수 있고, 전자기 신호, 광학 신호 또는 상기의 임의의 적절한 조합을 포함하나 이에 한정되는 것은 아니다. 컴퓨터 판독 가능한 신호 매체는 컴퓨터 판독 가능한 저장 매체 이외의 임의의 컴퓨터 판독 가능한 매체일 수도 있으며, 상기 컴퓨터 판독 가능한 매체는 명령 실행 시스템, 장치 또는 소자 또는 이들의 조합에 의해 사용되는 프로그램을 송신, 전파 또는 전송할 수 있다. 컴퓨터 판독 가능한 매체에 포함되는 프로그램 코드는 임의의 적절한 매체로 전송될 수 있으며, 무선, 전기선, 광케이블, RF 등 또는 상기의 임의의 적절한 조합을 포함하나 이에 한정되는 것은 아니다.
도면 중 흐름도 및 블록도는 본 출원의 각 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품에 따라 구현 가능한 아키텍처, 기능 및 작동을 도시한다. 이 점에 있어서, 흐름도 또는 블록도 중 각 블록은 하나의 모듈, 프로그램대 또는 코드의 일부를 대표할 수 있으며, 상기 모듈, 프로그램대 또는 코드의 일부는 하나 또는 복수 개의 일정한 로직 기능을 구현하기 위한 실행 가능한 명령을 포함한다. 주의해야 할 점은, 일부 교체용 구현에 있어서, 블록에 표시된 기능도 도면에 표시된 순서와 달리 발생할 수 있다. 예를 들어, 두 개의 연속적으로 표시되는 블록은 실질적으로 병렬로 수행될 수 있고 역순서에 따라 실행될 수도 있으며 이는 관련된 기능에 따라 정해진다. 또한 주의해야 할 점은, 블록도 및/또는 흐름도 중 각 블록 및 블록도 및/또는 흐름도 중 블록의 조합은 일정한 기능 또는 작동을 수행하기 위한 전용 하드웨어 기반 시스템에 의해 구현될 수 있거나 전용 하드웨어와 컴퓨터 명령의 조합에 의해 구현될 수 있다.
본 출원의 실시예를 설명하는 과정에서 언급한 유닛은 소프트웨어에 의해 구현될 수 있고 하드웨어에 의해 구현될 수도 있다. 설명한 유닛은 프로세서에 설치될 수 있으며, 예를 들어 타입 확정 유닛, 검색 유닛, 공간 확정 유닛 및 제1 할당 유닛을 포함하는 프로세서로 설명될 수 있다. 이러한 유닛들의 명칭은 어떠한 상황에서 해당 유닛 자체에 대한 한정이 되지 않으며, 예를 들어, 타입 확정 유닛은 "저장할 기록의 데이터 크기에 따라, 저장할 기록의 타입을 결정하는 유닛"으로 설명될 수도 있다.
한편, 본 출원은 컴퓨터 판독 가능한 매체를 더 제공하며, 상기 컴퓨터 판독 가능한 매체는 상기 실시예에서 설명한 전자기기에 포함될 수 있고 해당 전자기기에 조립되지 않고 독립적으로 존재할 수도 있다. 상기 컴퓨터 판독 가능한 매체는 하나 또는 복수 개의 프로그램을 탑재하고 상기 하나 또는 복수 개의 프로그램이 상기 전자기기에 의해 실행될 경우 상기 전자기기는 저장할 기록의 데이터 크기에 따라 저장할 기록의 타입을 결정하고; 저장 파일에서 타입의 현재 저장 정보를 검색하되, 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하고, 여기서 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 상이하며; 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 결정하고; 잔여 저장 공간이 없다고 결정한 것에 응답하여, 타입에 신규 데이터 블록을 할당하여 저장할 기록을 신규 데이터 블록에 저장한다.
이상의 설명은 단지 본 출원의 바람직한 실시예 및 적용된 기술 원리에 대한 설명이다. 본 기술분야의 통상의 기술자는 본 출원에 언급된 발명 범위는 상기 기술 특징의 특정적 조합에 의한 기술적 해결수단에 한정되지 않고, 아울러 본 출원의 사상을 벗어나지 않는 한 상기 기술 특징 또는 그 동등한 특징에 의해 임의로 조합되어 형성된 다른 기술적 해결수단을 포함함을 이해해야 한다. 예를 들어, 상기 특징은 본 출원에서 공개되고(그러나 한정되지 않음) 유사 기능을 가진 기술 특징과 상호 대체되어 형성된 기술적 해결수단이다.

Claims (16)

  1. 분산형 오브젝트 저장의 스탠드 얼론(stand-alone) 저장 엔진에 사용되고, 상기 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축된 데이터 저장 방법에 있어서,
    상기 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획되고, 상기 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조를 사용하고,
    상기 방법은,
    저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하는 단계;
    상기 저장 파일에서 상기 타입의 현재 저장 정보를 검색하는 단계;
    상기 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정하는 단계; 및
    잔여 저장 공간이 없다고 확정된 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 상기 저장할 기록을 신규 데이터 블록에 저장하는 단계를 포함하고,
    상기 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 서로 상이한 데이터 저장 방법.
  2. 제1항에 있어서,
    상기 데이터 저장 방법은,
    잔여 저장 공간이 있다고 확정된 것에 응답하여, 잔여 저장 공간이 상기 저장할 기록의 데이터 크기보다 작지 않은지 여부를 추가로 확정하는 단계;
    잔여 저장 공간이 상기 저장할 기록의 데이터 크기보다 작다고 확정된 것에 응답하여, 상기 저장할 기록의 데이터 일부를 잔여 저장 공간에 저장하는 단계; 및
    상기 타입에 신규 데이터 블록을 할당하여 상기 저장할 기록의 잔여 데이터를 신규 데이터 블록에 저장하는 단계를 더 포함하는 데이터 저장 방법.
  3. 제1항에 있어서,
    상기 적어도 두 개의 데이터 블록의 저장 공간은 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 모두 기설정된 수치의 정수배인 데이터 저장 방법.
  4. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 데이터 저장 방법은,
    상기 타입의 현재 저장 정보를 업데이트하고, 상기 저장할 기록을 저장한 후의 위치 정보를 생성하며 상기 위치 정보를 출력하는 단계를 더 포함하며,
    상기 위치 정보는 기록의 타입, 기록의 식별자 또는 기록이 위치한 데이터 블록의 식별자 중 적어도 하나를 포함하는 데이터 저장 방법.
  5. 제4항에 있어서,
    상기 디스크에 적어도 두 개의 상기 저장 파일이 구축되며, 상기 디스크의 목록에 상기 저장 파일 각각의 색인 정보가 저장되는 데이터 저장 방법.
  6. 제5항에 있어서,
    상기 데이터 저장 방법은,
    상기 목록으로부터 판독할 기록의 위치 정보를 검색하는 단계;
    상기 판독할 기록의 위치 정보에 따라, 상기 판독할 기록의 타입 및 대응되는 저장 파일에 위치하는 데이터 블록의 위치 오프셋을 확정하는 단계; 및
    상기 판독할 기록의 타입에 따라, 상기 판독할 기록의 길이를 확정하고, 상기 위치 오프셋이 표시하는 위치로부터 시작하여 상기 판독할 기록의 길이인 데이터를 판독하고 판독한 데이터를 상기 판독할 기록으로서 출력하는 단계를 더 포함하는 데이터 저장 방법.
  7. 제5항에 있어서,
    상기 데이터 저장 방법은,
    상기 목록으로부터 삭제할 기록의 위치 정보를 검색하는 단계;
    상기 삭제할 기록의 위치 정보에 따라, 대응되는 저장 파일 중 상기 삭제할 기록이 속하는 타입의 현재 저장 정보를 획득하는 단계;
    획득한 현재 저장 정보에 따라, 현재 이미 저장된 기록으로부터 마지막 하나의 기록을 판독하여, 판독한 기록을 상기 삭제할 기록이 위치한 위치에 전이시켜 저장하는 단계; 및
    판독한 기록의 전이되기 전 데이터 블록 중의 데이터를 삭제하고, 판독한 기록의 위치 정보를 수정하는 단계를 더 포함하는 데이터 저장 방법.
  8. 제7항에 있어서,
    상기 판독한 기록의 전이되기 전 데이터 블록 중의 데이터를 삭제한 후, 상기 데이터 저장 방법은,
    판독한 기록이 전이되기 전에 위치한 데이터 블록 중에 데이터가 저장되어 있는지 여부를 확정하고, 상기 데이터 블록 중에 데이터가 저장되어 있지 않을 경우, 재할당을 위해 상기 데이터 블록을 회수하는 단계를 더 포함하는 데이터 저장 방법.
  9. 제1항에 있어서,
    상기 저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하는 단계 이전에, 상기 데이터 저장 방법은,
    저장할 오브젝트를 분할하여 획득한 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화하여 사본을 획득하는 단계; 및
    상기 사본의 설명 정보와 데이터에 대해 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하는 단계를 더 포함하는 데이터 저장 방법.
  10. 제9항에 있어서,
    상기 서브 오브젝트의 저장할 기록을 생성하는 단계는,
    직렬화 이후의 상기 사본의 데이터 크기가 상기 저장 파일 중 각 타입에 대응되는 데이터 크기 중의 하나와 동일한지 여부를 확정하는 단계;
    상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기와 모두 상이하고, 일부 타입에 대응되는 데이터 크기보다 작을 경우, 상기 사본의 데이터 뒤에 0을 보충(zero fill)하여 0을 보충한 후의 상기 사본의 데이터 크기가 타겟 타입에 대응되는 데이터 크기와 동일하도록 하고, 상기 서브 오브젝트의 하나의 저장할 기록을 생성하는 단계; 및
    상기 사본의 데이터 크기가 각 타입에 대응되는 데이터 크기의 최댓값보다 클 경우, 상기 사본에 대해 분할하고 0을 보충하여 분할 후의 각 사본의 데이터 크기가 각각 각 타입에 대응되는 데이터 크기 중의 하나와 동일하도록 하고, 상기 서브 오브젝트의 적어도 두 개의 저장할 기록을 생성하는 단계를 포함하고,
    상기 타겟 타입은 상기 일부 타입 중 대응되는 데이터 크기가 가장 작은 타입인 데이터 저장 방법.
  11. 분산형 오브젝트 저장의 스탠드 얼론 저장 엔진 내에 설치되고, 상기 스탠드 얼론 저장 엔진의 디스크에는 저장 파일이 구축된 데이터 저장 장치에 있어서,
    상기 저장 파일의 저장 공간은 적어도 두 개의 데이터 블록으로 구획되고, 상기 적어도 두 개의 데이터 블록 사이에 연결 리스트 구조를 사용하고,
    상기 장치는,
    저장할 기록의 데이터 크기에 따라, 상기 저장할 기록의 타입을 확정하도록 구성된 타입 확정 유닛;
    상기 저장 파일에서 상기 타입의 현재 저장 정보를 검색하도록 구성된 검색 유닛;
    상기 현재 저장 정보에 따라, 현재 이미 할당된 데이터 블록 중에 잔여 저장 공간이 있는지 여부를 확정하도록 구성된 공간 확정 유닛; 및
    잔여 저장 공간이 없다고 확정된 것에 응답하여, 상기 타입에 신규 데이터 블록을 할당하여, 상기 저장할 기록을 신규 데이터 블록에 저장하도록 구성된 제1 할당 유닛을 포함하고,
    상기 현재 저장 정보는 현재 이미 할당된 데이터 블록의 정보와 데이터 블록 중 현재 이미 저장된 기록의 정보를 포함하며, 저장 파일 중 동일한 타입으로 저장된 기록의 데이터 크기는 동일하고, 상이한 타입으로 저장된 기록의 데이터 크기는 서로 상이한 데이터 저장 장치.
  12. 제1 서브 시스템, 제2 서브 시스템 및 제3 서브 시스템을 포함하는 데이터 저장 시스템에 있어서,
    상기 제3 서브 시스템 내에 제1항 내지 제3항 중 어느 한 항에 따른 스탠드 얼론 저장 엔진이 장착되고,
    상기 제1 서브 시스템은, 사용자가 송신한 저장할 오브젝트가 포함된 저장 요청을 수신하여, 상기 저장할 오브젝트를 적어도 하나의 서브 오브젝트로 분할하고, 상기 저장할 오브젝트와 상기 적어도 하나의 서브 오브젝트 사이의 대응관계를 상기 제2 서브 시스템에 송신하며, 상기 적어도 하나의 서브 오브젝트를 상기 제3 서브 시스템에 송신하도록 구성되며;
    상기 제2 서브 시스템은, 상기 저장할 오브젝트와 상기 적어도 하나의 서브 오브젝트 사이의 대응관계를 리스트에 저장하도록 구성되고;
    상기 제3 서브 시스템은, 상기 적어도 하나의 서브 오브젝트 중의 서브 오브젝트에 대해 부호화 및 직렬화 처리를 수행하여 상기 서브 오브젝트의 저장할 기록을 생성하고 생성된 저장할 기록을 저장하도록 구성된 데이터 저장 시스템.
  13. 제12항에 있어서,
    상기 제3 서브 시스템은 또한 데이터 저장 완료를 나타내기 위한 응답 정보를 상기 제1 서브 시스템에 송신하도록 구성되며,
    상기 제1 서브 시스템은 또한 상기 응답 정보를 수신한 경우, 상기 저장할 오브젝트의 조회 식별자를 생성하고 상기 조회 식별자를 사용자에게 피드백하도록 구성된 데이터 저장 시스템.
  14. 제13항에 있어서,
    상기 제1 서브 시스템은 또한 사용자가 송신한 조회 식별자가 포함된 판독 요청을 수신하고, 상기 판독 요청 중의 조회 식별자를 상기 제2 서브 시스템에 송신하도록 구성되고;
    상기 제2 서브 시스템은 또한 상기 판독 요청 중의 조회 식별자가 지시하는 오브젝트와 대응되는 서브 오브젝트의 리스트를 획득하고, 상기 서브 오브젝트의 리스트를 상기 제3 서브 시스템에 송신하도록 구성되며;
    상기 제3 서브 시스템은 또한 상기 서브 오브젝트의 리스트에 따라 대응되는 기록을 판독하고, 판독한 기록에 대해 해석하여 오브젝트 데이터를 획득하고, 상기 제1 서브 시스템이 상기 오브젝트 데이터를 사용자에게 피드백하도록 상기 오브젝트 데이터를 상기 제1 서브 시스템에 송신하도록 구성된 데이터 저장 시스템.
  15. 전자기기에 있어서,
    하나 또는 복수 개의 프로세서; 및
    하나 또는 복수 개의 프로그램을 저장하기 위한 저장 장치를 포함하며,
    상기 하나 또는 복수 개의 프로그램이 상기 하나 또는 복수 개의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수 개의 프로세서가 제1항 내지 제3항 중 어느 한 항에 따른 데이터 저장 방법을 수행하는 전자기기.
  16. 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체에 있어서,
    상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제3항 중 어느 한 항에 따른 데이터 저장 방법을 수행하는 컴퓨터 판독 가능한 저장 매체.
KR1020190083622A 2018-09-04 2019-07-11 데이터 저장 방법, 장치 및 시스템 KR102240557B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811024928.8 2018-09-04
CN201811024928.8A CN109254733B (zh) 2018-09-04 2018-09-04 用于存储数据的方法、装置和系统

Publications (2)

Publication Number Publication Date
KR20200027413A KR20200027413A (ko) 2020-03-12
KR102240557B1 true KR102240557B1 (ko) 2021-04-14

Family

ID=65046720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190083622A KR102240557B1 (ko) 2018-09-04 2019-07-11 데이터 저장 방법, 장치 및 시스템

Country Status (3)

Country Link
JP (1) JP6778795B2 (ko)
KR (1) KR102240557B1 (ko)
CN (1) CN109254733B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918381B (zh) * 2019-03-13 2021-06-11 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110059087B (zh) * 2019-03-26 2023-02-28 创新先进技术有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN112085424A (zh) * 2019-06-14 2020-12-15 北京京东振世信息技术有限公司 存储物品的方法、装置、设备和计算机可读介质
CN110427377B (zh) * 2019-08-02 2023-12-26 北京博睿宏远数据科技股份有限公司 数据处理方法、装置、设备和存储介质
CN110727639B (zh) * 2019-10-08 2023-09-19 深圳市网心科技有限公司 碎片数据读取方法、电子设备、系统及介质
CN112765046A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 用于回收存储空间的方法、设备和计算机程序产品
CN110781146A (zh) * 2019-10-28 2020-02-11 宁波三星智能电气有限公司 事件存储方法、电力终端及计算机可读存储介质
CN111399762B (zh) 2019-11-27 2021-06-18 杭州海康威视系统技术有限公司 数据存储方法、装置及存储系统
CN111198807B (zh) * 2019-12-18 2023-10-27 中移(杭州)信息技术有限公司 数据流分析方法、装置、计算机设备及存储介质
CN111522507B (zh) * 2020-04-14 2021-10-01 中山大学 一种低延迟的文件系统地址空间管理方法、系统及介质
CN111694521B (zh) * 2020-06-17 2022-08-05 杭州海康威视系统技术有限公司 存储文件的方法、装置及系统
CN111797032B (zh) * 2020-06-19 2022-09-23 南京南瑞继保工程技术有限公司 存储结构、方法、装置、设备及可读存储介质
CN114430458B (zh) * 2020-10-29 2023-12-19 北京小米移动软件有限公司 防抖数据获取方法、防抖数据获取装置以及存储介质
CN112506918A (zh) * 2020-11-03 2021-03-16 深圳市宏电技术股份有限公司 数据存取方法、终端及计算机可读存储介质
CN112699092B (zh) * 2021-01-13 2023-02-03 浪潮云信息技术股份公司 一种RocksDB存储大值数据的方法
CN113010105A (zh) * 2021-02-25 2021-06-22 深圳市广和通无线股份有限公司 一种数据备份的方法、装置、设备和计算机可读存储介质
CN113194127B (zh) * 2021-04-21 2022-08-12 统信软件技术有限公司 一种数据存储方法、数据传输方法及计算设备
CN113495889B (zh) * 2021-07-07 2024-03-15 浙江大华技术股份有限公司 一种分布式对象存储方法、装置、电子设备及存储介质
CN113486026A (zh) * 2021-08-02 2021-10-08 北京字节跳动网络技术有限公司 数据处理方法、装置、设备及介质
CN114116795B (zh) * 2021-11-01 2022-12-20 北京力控元通科技有限公司 一种数据存储和查询方法、装置、存储介质及电子设备
CN114816277B (zh) * 2022-06-30 2022-11-11 广东睿江云计算股份有限公司 文件数据块顺序性保障的控制方法及控制系统
CN116010997B (zh) * 2023-03-20 2023-08-01 中国信息通信研究院 基于区块链的连续性校验的数据资源托管方法和装置
CN116521091B (zh) * 2023-06-28 2023-09-15 苏州浪潮智能科技有限公司 数据读取方法、装置、设备、数据传输系统及存储介质
CN117082083A (zh) * 2023-08-30 2023-11-17 杭州浩联智能科技有限公司 一种基于分布式物联网架构的数据存储方法、装置及介质
CN116910825B (zh) * 2023-09-12 2023-12-15 上海融和元储能源有限公司 一种基于kafka的数据同步方法及装置
CN117078213B (zh) * 2023-10-11 2024-03-29 潍坊威尔信息技术有限公司 基于大数据整合分析的建筑工程管理平台

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449419B1 (ko) 2002-06-14 2004-09-18 학교법인 인하학원 데이터 크기에 따른 선별적 공간데이터 관리방법
US20070136384A1 (en) 2005-12-13 2007-06-14 Dietmar Hepper Method and apparatus for organizing nodes in a network
JP2011191835A (ja) 2010-03-12 2011-09-29 Hitachi Ltd 計算機システムおよびアプリケーションプログラムの実行方法
JP2012073777A (ja) 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
JP2013050938A (ja) 2011-08-01 2013-03-14 Toshiba Corp メモリ・デバイス
KR101525453B1 (ko) 2014-04-09 2015-06-04 인하대학교 산학협력단 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
JP2017503266A (ja) 2014-01-07 2017-01-26 アップル インコーポレイテッド フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
JP2017076370A (ja) 2015-10-14 2017-04-20 バイドゥ ネットコム サイエンス アンド テクノロジー(ペキン) カンパニー リミテッド 分散システム用ファイル処理方法、および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030058687A (ko) * 2001-12-31 2003-07-07 주식회사 케이티 공간 데이터 특성에 따른 데이터 관리방법
KR100694069B1 (ko) * 2004-11-29 2007-03-12 삼성전자주식회사 상이한 크기를 가지는 복수 개의 데이터 블록들을포함하는 저장 장치 및 이를 이용한 파일 관리 방법 및이를 포함하는 인쇄 장치
KR100834574B1 (ko) * 2006-09-29 2008-06-02 한국전자통신연구원 파일 저장 시스템 및 그 시스템에서의 파일 저장 및 검색방법
CN100583832C (zh) * 2007-03-30 2010-01-20 华为技术有限公司 数据管理方法及系统
CN101446976A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 一种分布式文件系统中的文件存储方法
CN106462491B (zh) * 2014-12-31 2020-08-14 华为技术有限公司 一种存储数据的管理方法、存储管理器及存储系统
CN107967121B (zh) * 2017-10-25 2020-04-14 华为技术有限公司 数据写入方法和存储设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100449419B1 (ko) 2002-06-14 2004-09-18 학교법인 인하학원 데이터 크기에 따른 선별적 공간데이터 관리방법
US20070136384A1 (en) 2005-12-13 2007-06-14 Dietmar Hepper Method and apparatus for organizing nodes in a network
JP2007164794A (ja) 2005-12-13 2007-06-28 Thomson Licensing ネットワーク内のノードを自動的に分類する方法および装置
JP2011191835A (ja) 2010-03-12 2011-09-29 Hitachi Ltd 計算機システムおよびアプリケーションプログラムの実行方法
JP2012073777A (ja) 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
JP2013050938A (ja) 2011-08-01 2013-03-14 Toshiba Corp メモリ・デバイス
JP2017503266A (ja) 2014-01-07 2017-01-26 アップル インコーポレイテッド フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
KR101525453B1 (ko) 2014-04-09 2015-06-04 인하대학교 산학협력단 데이터 접근빈도를 이용한 raid 시스템의 데이터 복제 방법
JP2017076370A (ja) 2015-10-14 2017-04-20 バイドゥ ネットコム サイエンス アンド テクノロジー(ペキン) カンパニー リミテッド 分散システム用ファイル処理方法、および装置

Also Published As

Publication number Publication date
CN109254733A (zh) 2019-01-22
JP2020038623A (ja) 2020-03-12
KR20200027413A (ko) 2020-03-12
JP6778795B2 (ja) 2020-11-04
CN109254733B (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
KR102240557B1 (ko) 데이터 저장 방법, 장치 및 시스템
US10275177B2 (en) Data layout schemas for seamless data migration
US10157184B2 (en) Data previewing before recalling large data files
US11296940B2 (en) Centralized configuration data in a distributed file system
US10956051B2 (en) Data-packed storage containers for streamlined access and migration
CN102938784A (zh) 应用于分布式存储系统中的数据存储方法和系统
US20210209057A1 (en) File system quota versioning
CN108733311B (zh) 用于管理存储系统的方法和设备
US10346362B2 (en) Sparse file access
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN104881466A (zh) 数据分片的处理以及垃圾文件的删除方法和装置
CN111177143B (zh) 键值数据存储方法、装置、存储介质与电子设备
CN113806300B (zh) 数据存储方法、系统、装置、设备及存储介质
CN107798063B (zh) 快照处理方法和快照处理装置
CN110119386B (zh) 数据处理方法、数据处理装置、介质和计算设备
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
CN113190384B (zh) 基于纠删码的数据恢复控制方法、装置、设备及介质
US9020902B1 (en) Reducing head and tail duplication in stored data
JP7431490B2 (ja) 階層型ストレージ管理システムにおけるデータ・マイグレーション
CN111930684A (zh) 基于hdfs的小文件处理方法、装置、设备及存储介质
CN115878625A (zh) 数据处理方法和装置及电子设备
US10509578B2 (en) Logical address space for storage resource pools
US11226739B2 (en) Method, device and computer program product for storage management
US11132401B1 (en) Distributed hash table based logging service
CN113051244A (zh) 数据访问方法和装置、数据获取方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant