KR20200037850A - 분산 데이터 저장 시스템 - Google Patents

분산 데이터 저장 시스템 Download PDF

Info

Publication number
KR20200037850A
KR20200037850A KR1020207006780A KR20207006780A KR20200037850A KR 20200037850 A KR20200037850 A KR 20200037850A KR 1020207006780 A KR1020207006780 A KR 1020207006780A KR 20207006780 A KR20207006780 A KR 20207006780A KR 20200037850 A KR20200037850 A KR 20200037850A
Authority
KR
South Korea
Prior art keywords
data storage
data
pseudo
storage node
random sequence
Prior art date
Application number
KR1020207006780A
Other languages
English (en)
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 KR20200037850A publication Critical patent/KR20200037850A/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • 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/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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 의한 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터를 저장하는 방법은, 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계; 복수의 데이터 저장 노드의 의사 랜덤 시퀀스(pseudo-random sequence)의 데이터 저장 노드를 생성하는 단계; 및 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하는 단계를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정된다.

Description

분산 데이터 저장 시스템
본 출원은 2017년 8월 30일에 출원된 미국 출원 일련번호 제15/691,170호의 우선권 혜택을 주장하며, 그 내용 전체가 참조로 본 명세서에 통합된다.
본 개시는 일반적으로 데이터 저장 분야에 관한 것으로서, 특히 본 개시는 분산 데이터 저장 시스템에서 데이터를 저장 및 액세스하기 위한 방법 및 시스템에 관한 것이다.
오늘날 디지털 세계에서 데이터 저장에 대한 수요가 계속 증가함에 따라 분산 저장 시스템은 많은 관심을 받는다. 분산 저장 시스템에서 데이터의 전체 또는 데이터의 상이한 부분이 여러 개의 물리적으로 분리된 컴퓨터 저장 서버(저장 노드라고도 함)에 걸쳐 분산된다. 분산 저장 시스템의 총 저장 용량은 단일 저장 노드의 총 저장 요량(즉, 모든 개별 저장 노드의 저장 합계)보다 훨씬 커지도록 설계된다. 고도로 분산된 저장 시스템에서의 많은 물리적 서버로 인해, (일시적 또는 영구적) 장애 가능성이 단일 스토리지 노드와 비교하여 상대적으로 증가한다. 데이터의 일부가 저장된 노드가 어떤 이유로든 사용할 수 없게 되는 경우, 분산 저장 시스템은 대안 노드(즉, 분산 저장 시스템의 임의의 다른 노드 부분)로부터 데이터를 제공한다. 이러한 방식으로, 필요한 데이터는 대안 노드를 통해 클라이언트에 의해 액세스 가능하다.
데이터에 액세스하는 클라이언트는 다양한 대안을 시도할 수 있도록 어떤 저장 노드에 사본이 있는지 알기 원한다. 알려진 방법에 따라 클라이언트가 데이터의 위치를 찾을 수 있게 하는 두 가지 메커니즘이 있다. 첫 번째는 알려진 권한 노드/중앙 노드에 요청하는 것이고, 두 번째는 데이터 참조/주소로부터 직접 찾는 것이다. 전자 방식은 중앙 노드에 장애가 있으면 모든 스토리지 노드에 액세스할 수 없게 되므로, 내장애성(fault-tolerant)이 없다, 두 번째 방식은 수평적으로 확장 가능한 큰 시스템에서 선호된다.
데이터 참조를 찾는 한 가지 방법은 일관된 해싱을 통한 것이다. 일관된 해싱은 스토리지 저장 시스템의 다수의 분산 노드 간에 데이터를 찾는 방법으로, 중앙 권한없이 클라이언트가 어떤 노드에 접속해야 하는지 정확하게 알 수 있다. 일관된 해싱을 사용하는 많은 시스템은 숫자 데이터 참조 주소를 원에서의 위치를 나타내는 숫자로 보며, 원은 사전 정의된 방식으로 다수의 스토리지 노드를 포함한다. 참조는 일반적으로 0에서부터 큰 정수(일부 n의 경우 2Λn)까지의 범위이며 노드 ID는 원 주위의 여러 위치 상에 레이블된다. 데이터를 찾기 위해 클라이언트는 데이터 참조가 가리키는 위치에서 시작하여 유효한 (NULL이 아닌) 노드 ID가 발견될 때까지 잠재적인 위치의 원을 시계 방향으로 이동한다. 발견된 노드와 이 노드에서 동일한 방향으로 떨어진 다음 N 개의 노드(N은 중복된 데이터 사본의 알려진 개수)가 필요한 데이터를 포함하는 노드이다.
물리적 노드/장치에는 이러한 숫자 원 상에 ID가 부여되어, 순환 순서에서 연속적인 수의 노드에 배치될 때, 중복된 데이터 사본이 동시적인 또는 상관된 장애가 발생하지 않게 하는 물리적 장치에 실제로 있게 한다. 이는 하나의 (또는 적은 수의) 노드에 장애가 발생하는 경우 N개의 데이터 사본이 모두 사용 불가능하게 되는 가능성을 최소화하기 위한 것이다.
일반적으로 모든 데이터 배치 방식은 원형 해싱 공간에서 데이터의 초기 위치를 먼저 계산하는 기본 방법을 따른다(즉, 잠재적인 노드 ID들의 원 상에서 시작 위치를 찾는다). 그리고, 이 위치로부터 원 주위를 증분하도록 카운트하여 데이터를 저장하는 노드 중 (저장을 위해) 요청된 ID를 찾는다. 데이터를 판독하기 위해서는, 첫 번째 노드가 모두 필요하다.
시작 위치를 찾으면, 중복된 사본을 저장하는 일련의 노드가 이 방식에서 동일하다. 이러한 접근은 노드 장애로 인해 모든 클라이언트가 그들의 요청을 다른 다음 노드로 전달함으로써 장애를 일으킬 정도로 노드 상의 부하를 증가시킬 수 있는 계단식 장애(cascading failure) 문제에 취약하다. 이러한 영향은 증폭되는 방식으로 다른 다음 노드로 계속 이어지므로 전체 시스템의 장애 가능성이 높아진다.
일부 솔루션은 원 주위의 노드 순서를 무작위로 지정하므로 시퀀스가 항상 시계 방향으로 읽히도록 고정되는 것은 아니다. 그러나 이러한 배치에서도 단일 노드 장애로 인해 부하가 다른 노드로 고르지 않게 분배되는 경우가 여전히 존재한다.
데이터 저장 문제는 현재 세계의 거의 모든 곳에서 발생하므로 더 나은 방법과 시스템이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는, 내장애성, 액세스 속도 및 다른 설계 요구 사항(부하, 용량 등과 같은 시스템 동작 동안 변경되는 요구 사항)과 관련하여 최적의 방식으로 저장 노드를 표현하는 방식을 구현할 수 있는 분산 데이터 저장 시스템 및 그것의 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 임의의 시작 위치로부터 순차적이지 않은 의사 랜덤 시퀀스의 데이터 저장 노드에 하나 또는 일부라도 장애가 있을 경우 데이터 부하를 저장 노드에 균등하게 분배할 수 있도록 데이터를 데이터 저장 노드에 배치하는 방식을 제공하는 분산 데이터 저장 시스템 및 그것의 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 데이터 배치 방식은 하나 이상의 노드에 저장된 임의의 데이터의 사용불가 가능성을 최소화하고, 저장소 사용을 최대화하고 그리고/또는 계단식 노드 장애의 영향이 최소화되도록 하는 다수의 스토리지 노드를 가지는 분산 데이터 저장 시스템 및 그것의 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터를 저장하는 방법은, 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계; 복수의 데이터 저장 노드의 의사 랜덤 시퀀스(pseudo-random sequence)의 데이터 저장 노드를 생성하는 단계; 및 사전 정의된 선택 기준에 기초하여 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하는 단계를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정된다.
일 실시예로서, 상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응할 수 있다.
일 실시예로서, 상기 사전 결정된 의사 랜덤 함수는 PERMUTE 함수일 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함할 수 있다.
일 실시예로서, 상기 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정될 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한 것일 수 있다.
일 실시예로서, 상기 복수의 데이터 저장 노드 중 임의의 데이터 저장 노드에 장애가 있더라도 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 복수의 데이터 저장 노드로의 데이터 부하의 균등한 분배를 제공할 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 외부에서 알려진 정보로부터 도출될 수 있다.
일 실시예로서, 상기 분산 데이터 저장 시스템의 각각의 데이터 저장 노드는 활성화 상태일 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 요청된 데이터 블록이 저장되는 상기 저장 노드를 나타낼 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터에 액세스하는 방법은, 데이터 블록에 액세스하기 위한 데이터 액세스 요청을 수신하는 단계; 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계; 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정될 수 있다.
일 실시예로서, 상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응할 수 있다.
일 실시예로서, 상기 미리 결정된 의사 랜덤 함수는 PERMUTE 함수일 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함할 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한 것일 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터를 저장하고 액세스하기 위한 비일시적 컴퓨터 판독가능 매체는, 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계; 상기 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계; 및 사전 정의된 선택 기준에 기초하여 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 상기 데이터 블록을 저장하는 단계를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들의 세트를 포함하고, 상기 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정될 수 있다.
일 실시예로서, 데이터 액세스 요청이 수신될 때 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 더 포함할 수 있다.
일 실시예로서, 상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응할 수 있다.
일 실시예로서, 상기 사전 결정된 의사 랜덤 함수는 PERMUTE 함수일 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함할 수 있다.
일 실시예로서, 상기 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정될 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한 것일 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 데이터를 저장하고 액세스하도록 구성된 분산 데이터 저장 시스템은, 복수의 데이터 저장 노드; 및 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하도록 구성된 액세스 서버를 포함하고, 액세스 서버는 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하도록 구성되고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되고, 액세스 서버는 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하도록 구성될 수 있다.
일 실시예로서, 상기 액세스 서버는 데이터 액세스 요청이 수신될 때 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하도록 더 구성될 수 있다.
일 실시예로서, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함할 수 있다.
상기한 바와 같이, 본 발명의 일실시예에 의하면, 분산 데이터 저장 시스템에 있어, 내장애성, 액세스 속도 및 다른 설계 요구 사항(부하, 용량 등과 같은 시스템 동작 동안 변경되는 요구 사항)과 관련하여 최적의 방식으로 저장 노드를 표현하는 방식을 구현할 수 있다.
또한, 본 발명의 일실시예에 의하면, 분산 데이터 저장 시스템에 있어, 임의의 시작 위치로부터 순차적이지 않은 의사 랜덤 시퀀스의 데이터 저장 노드에 하나 또는 일부라도 장애가 있을 경우 데이터 부하를 저장 노드에 균등하게 분배할 수 있도록 데이터를 데이터 저장 노드에 배치하는 방식을 제공할 수 있다.
또한, 본 발명의 일실시예에 의하면, 데이터 배치 방식은 하나 이상의 노드에 저장된 임의의 데이터의 사용불가 가능성을 최소화하고, 저장소 사용을 최대화하고 그리고/또는 계단식 노드 장애의 영향이 최소화되도록 하는 다수의 스토리지 노드를 가지는 분산 데이터 저장 시스템을 제공할 수 있다.
도 1은 본 개시의 다양한 실시예들이 실시될 수 있는 예시적인 환경을 도시하는 도면이다.
도 2는 본 발명의 일실시예에 따른 분산 저장 시스템에서 저장된 데이터를 액세스하고 저장하기 위한 전체 시스템을 도시하는 도면이다.
도 3은 다양한 노드 ID 및 해시 빈(bin)을 나타내는 예시적인 테이블을 도시하는 도면이다.
도 4는 일실시예에 따른 분산 데이터 저장 시스템에서 데이터를 저장하기 위한 방법 흐름도이다.
도 5는 일실시예에 따른 분산 데이터 저장 시스템에 저장된 데이터에 액세스하기 위한 방법 흐름도이다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시 예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 개시의 기술적 사상을 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 개시는 내장애성, 액세스 속도 및 다른 설계 요구 사항(부하, 용량 등과 같은 시스템 동작 동안 변경되는 요구 사항)과 관련하여 최적의 방식으로 저장 노드를 표현하는 방식을 구현한다. 구체적으로, 본 개시는 임의의 시작 위치로부터 순차적이지 않은 의사 랜덤 시퀀스의 데이터 저장 노드가 *?*데이터 저장 노드의 하나 또는 일부라도 장애가 있을 경우 데이터 부하를 저장 노드에 균등하게 분배할 수 있도록 데이터를 데이터 저장 노드에 배치하는 방식을 제공한다. 따라서, 본 개시의 데이터 배치 방식은 하나 이상의 노드에 저장된 임의의 데이터의 사용불가 가능성을 최소화하고, 저장소 사용을 최대화하고 그리고/또는 계단식 노드 장애의 영향이 최소화되도록 하는 다수의 스토리지 노드를 가지는 분산 데이터 저장 시스템을 제공한다.
본 발명의 실시예는 복수의 데이터 저장 노드(108a-108n, 208a-208n)를 포함하는 분산 데이터 저장 시스템(200)에서 데이터를 저장하는 방법을 개시한다. 본 방법은, 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계(402), 복수의 데이터 저장 노드(108a-108n, 208a-208n)의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계(404) 및 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하는 단계(406)를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정된다.
데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다. 사전 결정된 의사 랜덤 함수는 PERMUTE 함수이다. 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 데이터 블록을 포함하고, 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함한다. 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정된다. 의사 랜덤 시퀀스의 데이터 저장 노드는 데이터에 대해 고유하다.
추가적인 실시예는 복수의 데이터 저장 노드(108a-108n, 208a-208n)를 포함하는 분산 데이터 저장 시스템(200)에서 데이터에 액세스하는 방법을 개시한다. 본 방법은 데이터 블록에 액세스하기 위한 데이터 액세스 요청을 수신하는 단계(502), 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계(504) 및 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계(506)를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않고, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정된다.
데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다. 사전 결정된 의사 랜덤 함수는 PERMUTE 함수이다. 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 데이터 블록을 포함하고, 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함한다. 의사 랜덤 시퀀스의 데이터 저장 노드는 데이터에 대해 고유하다.
나아가, 실시예는 복수의 데이터 저장 노드(108a-108n, 208a-208n)를 포함하는 분산 데이터 저장 시스템(200)에서 데이터를 저장하고 액세스하기 위한 비일시적 컴퓨터 판독가능 매체를 개시한다. 비일시적 컴퓨터 판독가능 매체는, 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계(402), 복수의 데이터 저장 노드(108a-108n, 208a-208n)의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계(404) 및 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하는 단계(406)를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들의 세트를 포함하고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하는 결정된다.
비일시적 컴퓨터 판독가능 매체는 데이터 액세스 요청이 수신될 때 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 더 포함한다. 데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다.
사전 결정된 의사 랜덤 함수는 PERMUTE 함수이다. 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 데이터 블록을 포함하고, 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함한다. 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정된다. 의사 랜덤 시퀀스의 데이터 저장 노드는 데이터에 대해 고유하다.
추가적인 실시예는 데이터를 저장하고 액세스하도록 구성된 분산 데이터 저장 시스템(200)을 개시한다. 분산 데이터 저장 시스템(200)은 복수의 데이터 저장 노드(108a-108n, 208a-208n); 데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하도록 구성된 액세스 서버(106, 206)를 포함하고, 액세스 서버(106, 206)는 복수의 데이터 저장 노드(108a-108n, 208a-208n)의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하도록 구성되고, 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며, 의사 랜덤 시퀀스의 데이터 저장 노드(208a-208n)의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되고, 액세스 서버(106, 206)는 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 데이터 블록을 저장하도록 구성된다.
액세스 서버(106, 206)는 데이터 액세스 요청이 수신될 때 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하도록 더 구성된다. 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 데이터 블록을 포함하고, 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함한다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 개시의 다양한 실시예들이 실시될 수 있는 예시적인 환경(100)을 도시한다. 예시적인 환경(100)은 NAS(network attached storage), SAN(storage area network) 또는 클라우드 기반 스토리지(예를 들어, IAN(Internet area network) 저장 시스템) 등과 같은 분산 데이터 저장 시스템을 나타낼 수 있다. 분산 데이터 저장 시스템은 대량의 전자 데이터의 저장을 제공할 수 있다. 이러한 저장 시스템은 하나 이상의 사용자/장치의 전자 데이터를 저장하고 저장된 전자 데이터에 액세스하도록 구성될 수 있다.
도시된 바와 같이, 도 1은 사용자(102), 클라이언트 장치(104), 액세스 서버(106) 및 108a, 108b, 108c, 108d, 108e ... 108n(총칭하여 108)과 같은 다수의 데이터 저장 노드를 포함하며, 여기서 n은 임의의 수를 정의한다. 클라이언트 장치(104)는 액세스 서버(106)에 통신 가능하게 연결되고, 액세스 서버 (106)는 네트워크를 통해 데이터 저장 노드(108)에 통신 가능하게 연결된다. 네트워크는 임의의 적합한 유선 네트워크, 무선 네트워크, 이들 또는 임의의 다른 종래의 네트워크의 조합일 수 있으나, 이는 본 개시의 범위를 한정하지 않는다. 예시는 근거리 통신망(LAN), 무선 LAN 연결, 인터넷 연결, 포인트-투-포인트 연결 또는 다른 네트워크 연결 및 이들의 조합을 포함할 수 있다. 네트워크는 호스트 컴퓨터, 저장 장치, 개인용 장치, 전화기, 비디오/이미지 캡처 장치, 비디오/이미지 서버 또는 임의의 다른 전자 장치와 데이터를 송수신할 수 있는 임의의 다른 유형의 네트워크일 수 있다. 또한, 네트워크는 언급된 장치들 간에 데이터를 전송/송신할 수 있다. 추가적으로, 네트워크는 로컬, 지역 또는 글로벌 통신 네트워크, 예를 들어, 기업 통신 네트워크, 인터넷, 글로벌 이동 통신 네트워크 또는 유사한 네트워크의 조합일 수 있다. 네트워크는 기업 네트워크(또는 인터넷)와 셀룰러 네트워크의 조합 일 수 있으며, 이 경우 적절한 시스템 및 방법이 두 네트워크 사이에서 원활하게 통신하기 위해 사용된다. 이러한 경우에, 모바일 스위칭 게이트웨이는 컴퓨터 네트워크 게이트웨이와 통신하여 두 네트워크 사이에서 데이터를 전달하는데 이용될 수 있다. 네트워크에는 본 기술, 관련 기술 또는 추후 개발될 기술에서 공지된 포맷 중 임의의 포맷으로 신호 또는 데이터를 교환하기 위한 매체를 제공할 수 있는 임의의 소프트웨어, 하드웨어 또는 컴퓨터 애플리케이션을 포함할 수 있다.
사용자(102)는 이메일, 서핑, 소셜 네트워킹 등과 같은 일상 업무를 위해 클라이언트 장치(104)를 사용할 수 있다. 클라이언트 장치(104)의 예는 컴퓨팅 장치, 모바일 장치, PDA(personal digital assistant), 태블릿, 인터넷 기기, 랩탑, 메인프레임 컴퓨터, 스마트 폰, 서버 컴퓨터 등을 포함할 수 있으나, 이에 한정되지 않는다. 클라이언트 장치(104)는 도 1에 도시된 바와 같이 저장 노드(108)를 통해 저장된 데이터에 액세스할 수 있다. 구체적으로, 클라이언트 장치(104)는 액세스 서버(106)를 통해 데이터 저장 노드(108)에 데이터를 기록하고 이로부터 판독할 수 있다. 클라이언트 장치(104)는 데이터 저장 노드(108)로부터 원격으로 위치될 수 있다. 다른 예에서는, 클라이언트 장치(104)는 근거리에 위치될 수 있다.
데이터 저장 노드(108)는 컴퓨팅 장치에 내장될 수 있다. 다른 예에서, 데이터 저장 노드(108)는 외부 하드 디스크 드라이브, USB 플래시 드라이브, 메모리 카드, 콤팩트 디스크, 서버, 디지털 다용도 데스크 등을 나타낼 수 있다. 데이터 저장 노드(108)는 로우 데이터(예를 들어, 센서, 교통 모니터링 시스템, 제어 시스템, 감시 시스템, 보안 시스템, 무료 시스템 등으로부터 수집된 데이터), 처리된 데이터(예를 들어, 로우 데이터, 데이터 집계, 필터링된 데이터 등으로부터 생성된 메트릭 또는 기타 결과), 발전된 컨텐츠(예를 들어, 문서, 사진, 비디오, 오디오 등) 및/또는 기타 등등과 같은 다양한 형식의 데이터를 저장한다. 일 예에서 모든 데이터 저장 노드(108)는 단일 위치에 존재할 수 있는 반면, 다른 예에서는 데이터 저장 노드(108)는 지리적으로 분산될 수 있다. 각각의 데이터 저장 노드(108)는 클라이언트 장치(104) 또는 (도시되지 않았지만) 다른 클라이언트 장치에 의해 식별하기 위한 고유 식별자, 즉 노드 ID와 관련된다.
액세스 서버(106)는 클라이언트 장치(104)와 데이터 저장 노드(108) 사이의 중개자 역할을 한다. 액세스 서버(106)는 클라이언트 장치(104)에 대한 읽기 및 쓰기 동작을 수행한다. 액세스 서버(106)는 클라이언트 장치(104)의 위치에 존재할 수 있다. 한편, 액세스 서버(106)는 클라이언트 장치(104)로부터 원격으로 위치될 수 있다. 액세스 서버(106)는 클라이언트 장치(104) 또는 데이터 저장 노드(108)에 내장될 수 있다.
본 개시의 맥락에서, 다수의 데이터 저장 노드(108)의 의사 랜덤 시퀀스의 데이터 저장 노드가 생성될 수 있다. 의사 랜덤 시퀀스는 각각의 고유한 데이터 블록에 대해 고유하다. 즉, 두 개의 상이한 데이터 블록에 대해 어떠한 단일 시퀀스도 *?*동일하지 않을 것이다. 클라이언트 장치(104)가 데이터 저장 요청을 송신하면, 의사 랜덤 시퀀스 저장 노드의 제1 가용 노드는 저장을 위해 선택되고 데이터의 복제본은 사전 정의된 선택 기준, 즉, 데이터 저장 노드 장애의 영향을 최소화하고, 액세스 속도를 최대화하며 데이터 보안을 최대화하는 것에 기초하여, 의사 랜덤 시퀀스 데이터 저장 노드의 각각의 후속 데이터 저장 노드에 저장된다. 클라이언트 장치(104)가 데이터에 대한 액세스 요청을 송신할 때, 클라이언트 장치(104)는 의사 랜덤 시퀀스 저장 노드의 적어도 하나의 저장 노드에 액세스할 수 있다.
도 2는 예시적인 분산 데이터 저장 시스템(200)을 도시한다. 분산 데이터 저장 시스템(200)은 프로세서(204)를 가지는 클라이언트 장치(202), 액세스 서버 (206) 및 복수의 데이터 저장 노드(208a, 208b, 208c, 208d ... 208n, 총칭하여 208)를 포함하고, 여기서 n은 임의의 숫자이다. 전술한 바와 같이 구성요소(202, 204, 206, 208)의 각각은 유선 네트워크, 무선 네트워크 또는 이들의 조합과 같은 적합한 네트워크를 사용하여 서로 연결된다.
클라이언트 장치(202)는 입력 유닛 및 디스플레이와 같은 출력 유닛을 포함한다(미도시). 입력 유닛, 출력 유닛 및 프로세서(204)는 적합한 버스 또는 알려진 네트워크 프로토콜을 통해 서로 결합되는 구성요소이다. 입력 장치와 출력 장치는 알려져 있으므로 상세 내용에 대한 개시는 필요하지 않다.
액세스 서버(206)는 클라이언트 장치(202)와 데이터 저장 노드(208) 사이의 중개자이다. 애플리케이션은 API(application program interface)를 갖는 액세스 서버(206) 상에서 실행된다. API는 클라이언트 장치(202)로부터 수신된 데이터 저장 및 검색 요청을 처리하고 클라이언트 장치(202)에 대한 데이터 저장 및 검색 동작을 수행한다.
예시적인 실시예에서, 구성요소들(202-208)은 하드웨어 구성요소의 형태일 수 있지만, 다른 예시적인 실시예에서, 구성요소들(202-208)은 소프트웨어 개체/ 모듈의 형태일 수 있음을 이해할 수 있다. 또 다른 예시적인 실시예에서, 구성요소들은 하드웨어 및 소프트웨어 모듈의 조합일 수 있다. 구성요소들(202-208)은 유선 또는 무선 연결 수단에 의해 서로 데이터를 전송하거나 데이터를 수신하도록 구성된다.
도 2에 도시된 바와 같이, 데이터 저장 노드(208)는 클라이언트 장치(202)와 관련된 데이터를 저장한다. 각각의 저장 노드(208)는 고유 노드 식별자(즉, 노드 ID)와 관련된다. 특정 데이터 조각이 저장되는 저장 노드는 데이터 콘텐츠 및 선택적으로 다른 외부에 알려진 정보(예를 들어, 시간)에서 획득되는 의사 랜덤 시퀀스의 저장 노드(이들의 노드 식별자에 의해 참조됨)에 의해 정의된다. 의사 랜덤 시퀀스는 사전 결정된 의사 랜덤 함수를 사용하여 생성된다. 사전 결정된 의사 랜덤 함수는 임의의 시작 위치로부터 순차적이지 않은 의사 랜덤 시퀀스를 생성하기 위해 선택된다.
사전 결정된 의사 랜덤 함수의 한 예는 PERMUTE 함수이다. 또한, 사전 결정된 의사 랜덤 함수는 데이터 참조의 함수이다. 데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다. 해시 코드는 MD5 해시 코드를 포함한다.
데이터 저장 노드 식별자는 다음과 같이 표현된다.
수학식 (1): 노드 ID = PERMUTE(데이터 참조)[카운터]
수학식 (1)에서, 노드 ID는 노드(208a)와 같은 데이터 저장 노드의 식별자이고, 데이터 참조는 데이터 바이트의 해시 코드이고, 카운터는 0에서 시작하여 매회 증가하는 증분 값이다.
예를 들어, 3개의 중복 데이터 사본이 저장될 경우,
노드 ID l = PERMUTE(해시(데이터 바이트))[0],
노드 ID 2 = PERMUTE(해시(데이터 바이트))[l],
노드 ID 3 = PERMUTE(해시(데이터 바이트))[2]
PERMUTE는 각 순차 카운터 값에 대한 노드 lD가 이전 값과 비교하여 사실상 임의의 값임을 보장하는 고품질 의사 랜덤 순열이다. 따라서 임의의 데이터 참조가 저장될 수 있는 노드 ID의 시퀀스는 사실상 고유하므로, 특정한 노드 장애의 영향은 기존 시스템보다 훨씬 더 균등하게 공유된다. 예를 들어, 16 비트의 컨텐츠 해시 코드를 사용하면, 64K 데이터 저장 노드가 있으며 기본적으로 64K 데이터 저장 ID가 존재하는 것으로 고려할 수 있다. 따라서, 64K 저장 노드에서 특정한 시퀀스의 확률은 ~1/64000이므로, 특정한 데이터 저장 노드 장애의 영향은 알려진 시스템보다 훨씬 더 균등하게 공유된다.
PERMUTE 함수는 의사 랜덤 시퀀스를 만들어 클라이언트 장치(202)가 외부 입력없이 데이터 검색을 위해서는 어느 데이터 저장 노드(208)에 액세스할지 알 수 있게 한다. 임의의 데이터가 저장되는 노드 1D 시퀀스는 임의의 서버에 접속하기 전에 클라이언트 장치(202)에 의해 생성된다 - PERMUTE 알고리즘과 데이터 참조(및 다른 선택적이고 외부적으로 알려진 데이터, 예를 들어 시간)를 알고 있기 때문에 이를 수행할 수 있다. 이는 노드 시퀀스가 (모두 클라이언트 장치(202)가 명확하게 알고 있는) 저장되는 컨텐츠에 기초한다는 것을 정의한다.
예시적인 최적의 데이터 배치 절차
다수의 데이터 저장 노드를 가지는 분산 데이터 저장 시스템에서, 내장애성, 액세스 속도, 보안 및 시스템 동작 중에 변경되는 동적 요구 사항을 포함하는 다른 설계 요구 사항을 참조하여 데이터가 노드에 최적으로 배치될 수 있다. 예시적인 최적의 데이터 배치 방법은 다음과 같다.
단계 1. 각 데이터 저장 노드의 장애 확률은 개별 및 쌍별 장애 가능성을 나타내는 상관 행렬(correlation matrix) C로서 표현된다. 상관 행렬은 랙 및 데이터 센터에서 산업 데이터 및 노드 배치로부터 (그리고 실제 장애 데이터에 의해 향상되도록 한동안 실행된 후) 추산될 수 있다. 전체 시스템의 개별 구성 요소, 즉 랙 전원 공급 장치, 노드 전원 공급 장치, 데이터 센터 네트워크 스위치 등을 독립적으로 가정하여 비교할 때, 이를 계산하는 것은 비교적 간단하다.
단계 2. 스코어링 알고리즘은 상관 행렬 C에 기술된 상관 장애 확률을 사용하여 N개의 데이터 저장 노드(208) ID의 특정 세트에 대한 단일 숫자의 적합성을 제공한다.
단계 3. 새로운 저장 노드를 추가할 때, 해당 ID는 분산 시스템에서 아직 사용하지 않는 ID에서 선택해야 한다. 해당 ID에 대해 많은 수의 옵션을 선택하고, (스코어링 함수 및 관련된 장애 상관 행렬을 사용하여) 이 시점에 해당 ID가 이 노드에 사용되는 경우 발생하는 데이터 배치를 평가하여, 최상의 노드 ID를 선택할 수 있다.
단계 4. 단계 2의 데이터 저장 노드 설정 선택은 단계 3의 결과를 사용하여 지금까지의 최상의 선택과 비교된다. 이 노드 선택이 더 좋으면 선택되어 저장된다. 더 나쁜 경우, 이는 제거된다.
단계 5. 충분한 수의 시도가 완료되면, 데이터 저장 노드의 최상의 배치가 보고된다. 그렇지 않으면, 단계 3으로 돌아가서 단계 3이 반복된다.
이러한 절차는 설계시, 즉 시스템을 설치하기 전에 한 번 또는 주요 매개 변수로서 동작하는 동안(예를 들어, 장애 상관 행렬이 변경됨) 여러 번 수행될 수 있다. 노드가 제거되거나 추가될 경우, 프로세스는 원하는 대로 제거하거나 추가할 최상의 ID를 결정할 수 있다. 절차의 반복적인 특성으로 인해 이는 연속적으로 실행될 수 있으며, 더 나은 배치가 발견되면 이를 반영하도록 시스템이 업데이트된다.
예시적인 시나리오
이해를 돕기 위해, 예시적인 시나리오가 고려된다. 8개의 해시 빈과 8개의 가능한 노드 ID만 있는 분산 데이터 저장 시스템을 고려할 수 있다. 여기서 "해시 빈"은 단순히 해시 코드를 생성하여 채워지는 숫자 공간에서의 숫자 경계의 범위(하한 및 상한)이다. 해시 코드는 임의의 길이의 컨텐츠에서 생성되는 의사 랜덤 고정 비트 길이의 숫자이다. 일반적인 해싱 알고리즘은 16, 32 또는 64 비트 값을 채운다. 컨텐츠를 더 적은 수의 빈으로 그룹화하려는 경우, 생성된 각 해시를 단순히 (겹치지 않는) 범위 중 하나에 넣기 때문에 통계로부터 "binning"이라는 용어가 사용된다. 대부분이 범위는 모두 같은 길이이므로 각 빈에 대략 동일한 수의 항목(예를 들어, 컨텐츠 데이터 해시)이 있다.
도 3에 도시된 바와 같이, 왼쪽에서 오른쪽으로 읽을 때, 노드 0(304b, 304c 및 304d 참조)은 해시 빈 2, 4 및 6(각각 302b, 302c 및 302d)에 대한 기본 노드이다. 장애가 있으면, 빈 2에 대한 요청이 노드 3으로 이동하고 빈 4에 대한 요청이 노드 2로 이동하고, 노드 6은 노드 1로 변경된다. 이 간단한 예에서, 노드 3은 모든 빈의 기본 노드가 아니며 따라서 정상 동작 중에는 대부분 유휴 상태이다. 이러한 상황은 실제로는 더 많은 수의 해시 빈에서 클라이언트가 기본 노드에 항상 연결하지 않고 일련의 서버에 요청을 분산시키는 경우에는 발생하지 않는다.
또 다른 중요한 개선 사항은 클라이언트가 그들의 요청을 (네트워크 지연시간 측면에서) "가까운" 것으로 발견된 서버 노드로 편향시키는 것이다. 마지막 열(306)에서, 처음 4개의 노드 ID는 클라이언트가 4겹의 중복성을 가지는(즉, 4 개의 다른 저장소에 동일한 데이터의 4개의 사본을 저장하는) 데이터에 대한 저장 시스템을 보는 방법을 보여주며, 4개의 노드 중 어느 하나에 자유롭게 데이터를 요청할 수 있다 - 몇 번의 요청이 해당 클라이언트에 어떤 노드가 최적인지 보여주면 가장 가까운 노드를 향해 편향시킨다.
도 3의 주요 관찰 결과는 임의의 새로운 노드가 아직 부여되지 않은 임의의 노드 ID에 할당될 수 있다는 것이다. 9번째 노드에 노드 ID = 9를 할당할 필요가 없고, 16비트 시스템의 경우 다음 노드는 거의 64000개의 ID (2Λ16 - 8) 중 임의의 ID를 가질 수 있다. 어느 것을 선택해야 할까? 노드 ID = 9가 아닌 이유는 무엇일까? 해답은 노드 ID = 9로 할당되는 경우 생성되는 시퀀스(및 따라서 어떤 데이터가 저장될 것인지)에 있다. 다른 노드들을 살펴보면, 예상대로 해시 빈들 사이에 랜덤하게 분산되더라도, 노드 ID = 9가 실제로 다수의 빈을 노드 8과 공유하고, 아마도 노드 8이 노드 9와 물리적으로 동일한 랙에 위치한다고 판단할 수 있다. 이러한 "랙 인식"은 초기 설계 기간에 모두 수행될 필요가 없고 후반 단계(노드 설치 기간)에서 고려될 수 있다. 따라서 노드 ID = 9가 최선이 아니면, 시스템은 1000가지의 다른 가능성을 반복하고 새로운 노드가 이미 할당된 다른 노드와 가능한 드물게 일치되는 할당을 찾을 수 있다. 예를 들어, 랙/데이터 센터 독립성 측면에서 노드 ID = 112를 사용하는 것이 차선책일 수 있다. 이것이 작동하기 위한 필수 요소는 PERMUTE 함수가 충분히 랜덤하다는 것이다. 따라서, 어떠한 노드 ID가 이미 사용 중인지, "최상의" 선택을 판단하기 위해 현재 어떤 기준이 있는지에 상관없이, 남아있는 1000개 중 "최상의" ID를 선택할 수 있다. 따라서, 전체적인 시스템 성능(노드 장애의 영향 최소화, 액세스 속도 최대화, 최상의 데이터 보안 등)을 보장하는 "최상의" 노드 ID를 항상 할당할 수 있다.
도 4는 분산 데이터 저장 시스템에서 데이터를 저장하기 위한 방법 흐름도를 도시한다. 데이터 저장 시스템은 다수의 데이터 저장 노드를 포함한다. 데이터 저장 노드의 다양한 예는, 예를 들어 물리적 서버일 수 있다. 각 데이터 저장 노드는 쉼표로 구분된 값, 이미지 파일 형식, 일반 텍스트, 오디오 파일 형식, HTML(Hypertext Mark-up Language), MS Word 등과 같은 임의의 형식으로 데이터를 저장한다. 각 데이터 저장 노드는 고유한 노드 식별자로 표시된다. 데이터 저장 노드는 단일한 장소에 위치할 수 있다. 다른 예에서, 데이터 저장 노드는 상이한 장소들에 위치할 수 있다.
방법 흐름도는 사용자가 저장 동작, 즉 데이터 저장 노드 상에 데이터를 저장하는 동작을 수행할 때 구현된다. 사용자는 필요할 때 저장 노드에 데이터를 저장할 수 있다. 이를 위해, 사용자의 클라이언트 장치는 액세스 서버를 통해 하나 이상의 데이터 저장 노드와 통신한다.
402에서, 데이터 저장 요청이 사용자로부터 수신될 때, 404에서, 다수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드가 생성된다. 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며 의사 랜덤 시퀀스의 데이터 저장 노드는 데이터에 대해 고유하다. 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 사전 결정된 의사 랜덤 함수를 사용하여 결정된다. 사전 결정된 의사 랜덤 함수는 PERMUTE 함수를 포함한다. 사전 결정된 의사 랜덤 함수는 데이터에 대응하는 데이터 참조의 함수이다. 데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다. 해싱 알고리즘의 다양한 예는 MD5, SHA-1, SHA-256, SHA-384 또는 이들의 조합을 포함한다.
406에서, 데이터는 사전 정의된 선택 기준에 기초하여 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 저장된다. 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정될 수 있다.
다음에, 408에서, 데이터의 복제본은 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 후속 데이터 저장 노드에 저장된다.
이러한 방식으로, 사용자의 데이터는 각각의 저장 노드가 활성화된 분산 데이터 저장 시스템에 저장된다. 데이터 저장 노드에 장애가 발생하면, 시스템의 다른 노드에 의해 데이터를 복구할 수 있다.
도 5는 분산 데이터 저장 시스템에서 데이터에 액세스하기 위한 방법 흐름도를 도시한다. 분산 데이터 저장 시스템은 다수의 데이터 저장 노드를 포함한다.
처음에, 방법은 사용자가 저장 노드에 저장된 데이터에 액세스하려고 할 때 시작된다. 502에서, 액세스 요청이 수신될 때, 504에서, 다수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드가 *?*생성된다. 의사 랜덤 시퀀스 데이터 저장 노드는 요청된 데이터가 저장되는 저장 노드를 나타낸다. 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며 의사 랜덤 시퀀스의 데이터 저장 노드는 데이터에 대해 고유하다. 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 사전 결정된 의사 랜덤 함수를 사용하여 결정된다. 사전 결정된 의사 랜덤 함수는 PERMUTE 함수를 포함한다. 사전 결정된 의사 랜덤 함수는 데이터에 대응하는 데이터 참조의 함수이다. 데이터 참조는 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응한다. 해싱 알고리즘의 다양한 예는 MD5, SHA-1, SHA-256, SHA-384 또는 이들의 조합을 포함한다.
506에서, 데이터를 포함하는 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드가 식별되고 데이터 액세스를 위해 선택된다.
508에서, 데이터 저장 노드에 장애가 있으면, 데이터의 복제본을 포함하는 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 후속 데이터 저장 노드에 액세스된다.
본 개시에서 설명된 분산 데이터 저장 시스템 또는 그 임의의 구성 요소는 컴퓨터 시스템의 형태로 구현될 수 있다. 컴퓨터 시스템의 전형적인 예는 범용 컴퓨터, 서버 컴퓨터, 프로그램된 마이크로프로세서, 마이크로 컨트롤러, 주변 장치 집적 회로 요소 및 본 개시의 방법을 구현할 수 있는 다른 장치 또는 장치의 배열을 포함한다.
컴퓨터 시스템은 컴퓨터, 입력 장치, 디스플레이 유닛 및 인터넷을 포함한다. 컴퓨터는 마이크로프로세서를 더 포함한다. 마이크로프로세서는 통신 버스에 연결된다. 컴퓨터는 또한 메모리도 포함한다. 메모리는 RAM(Random Access Memory) 및 ROM(Read Only Memory))을 포함할 수 있다. 컴퓨터 시스템은 저장 장치를 더 포함한다. 저장 장치는 하드 디스크 드라이브 또는 플로피 디스크 드라이브와 같은 이동식 저장 드라이브, 광 디스크 드라이브 또는 솔리드 스테이트 디스크와 같은 내장 드라이브일 수 있다. 저장 장치는 또한 컴퓨터 프로그램 또는 다른 명령어를 컴퓨터 시스템에 로드하기 위한 다른 유사한 수단 일 수 있다. 컴퓨터 시스템은 또한 통신 유닛을 포함한다. 통신 유닛은 컴퓨터가 I/O 인터페이스를 통해 다른 데이터베이스 및 인터넷에 연결되게 한다. 통신 유닛은 다른 데이터베이스로부터의 데이터 수신뿐만 아니라 전송을 허용한다. 통신 유닛은 모뎀, 이더넷 카드 또는 LAN, MAN, WAN 및 인터넷과 같이 컴퓨터 시스템이 데이터베이스 및 네트워크에 연결될 수 있게 하는 임의의 유사한 장치를 포함할 수 있다. 컴퓨터 시스템은 I/O 인터페이스를 통해 시스템에 액세스할 수 있는 입력 장치를 통해 사용자의 입력을 용이하게 한다.
컴퓨터 시스템은 입력 데이터를 처리하기 위해 하나 이상의 저장 요소에 저장된 명령어의 세트를 실행한다. 저장 요소들은 또한 원하는 대로 데이터 또는 다른 정보를 보유할 수 있다. 저장 요소는 정보 소스 또는 처리 장치에 존재하는 물리적 메모리 요소의 형태일 수 있다.
명령어의 세트는 처리 장치로 하여금 본 개시의 방법을 구성하는 특정 작업을 수행하도록 지시하는 하나 이상의 명령을 포함할 수 있다. 명령어의 세트는 소프트웨어 프로그램의 형태일 수 있다. 또한, 소프트웨어는 본 개시와 같이 개별 프로그램들의 집합, 더 큰 프로그램을 갖는 프로그램 모듈 또는 프로그램 모듈의 일부의 형태일 수 있다. 소프트웨어에는 또한 객체 지향 프로그래밍 형태의 모듈식 프로그래밍을 포함할 수 있다. 처리 장치에 의한 입력 데이터의 처리는 사용자 명령, 이전 처리의 결과 또는 다른 처리 장치에 의한 요청에 응답할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
104: 클라이언트 장치
106: 액세스 서버
108: 데이터 저장 노드
200: 분산 데이터 저장 시스템
202: 클라이언트 장치
204: 프로세서
206: 액세스 서버
208: 데이터 저장 노드

Claims (25)

  1. 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터를 저장하는 방법으로서,
    데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계;
    상기 복수의 데이터 저장 노드의 의사 랜덤 시퀀스(pseudo-random sequence)의 데이터 저장 노드를 생성하는 단계; 및
    사전 정의된 선택 기준에 기초하여 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 상기 데이터 블록을 저장하는 단계를 포함하고,
    상기 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되는,
    데이터 저장 방법.
  2. 제1 항에 있어서,
    상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응하는,
    데이터 저장 방법.
  3. 제1 항에 있어서,
    상기 사전 결정된 의사 랜덤 함수는 PERMUTE 함수인,
    데이터 저장 방법.
  4. 제1 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함하는,
    데이터 저장 방법.
  5. 제1 항에 있어서,
    상기 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정되는,
    데이터 저장 방법.
  6. 제1 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한, 데이터 저장 방법.
  7. 제1 항에 있어서,
    상기 복수의 데이터 저장 노드 중 임의의 데이터 저장 노드에 장애가 있더라도 상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 복수의 데이터 저장 노드로의 데이터 부하의 균등한 분배를 제공하는,
    데이터 저장 방법.
  8. 제1 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드는 외부에서 알려진 정보로부터 도출되는,
    데이터 저장 방법.
  9. 제1 항에 있어서,
    상기 분산 데이터 저장 시스템의 각각의 데이터 저장 노드는 활성화 상태인,
    데이터 저장 방법.
  10. 제1 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 요청된 데이터 블록이 저장되는 상기 저장 노드를 나타내는,
    데이터 저장 방법.
  11. 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터에 액세스하는 방법으로서,
    데이터 블록에 액세스하기 위한 데이터 액세스 요청을 수신하는 단계;
    상기 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계;
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계
    를 포함하고,
    상기 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되는,
    데이터 액세스 방법.
  12. 제11 항에 있어서,
    상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응하는,
    데이터 액세스 방법.
  13. 제11 항에 있어서,
    상기 미리 결정된 의사 랜덤 함수는 PERMUTE 함수인,
    데이터 액세스 방법.
  14. 제11 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함하는,
    데이터 액세스 방법.
  15. 제11 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한, 데이터 액세스 방법.
  16. 복수의 데이터 저장 노드를 포함하는 분산 데이터 저장 시스템에서 데이터를 저장하고 액세스하기 위한 비일시적 컴퓨터 판독가능 매체로서,
    상기 비일시적 컴퓨터 판독가능 매체는,
    데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하는 단계;
    상기 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하는 단계; 및
    사전 정의된 선택 기준에 기초하여 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 상기 데이터 블록을 저장하는 단계
    를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들의 세트를 포함하고,
    상기 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되는,
    비일시적 컴퓨터 판독가능 매체.
  17. 제16 항에 있어서,
    데이터 액세스 요청이 수신될 때 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하는 단계를 포함하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 더 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  18. 제16 항에 있어서,
    상기 데이터 참조는 상기 데이터 상에 해싱 알고리즘을 사용하여 생성되는 해시 코드에 대응하는,
    비일시적 컴퓨터 판독가능 매체.
  19. 제16 항에 있어서,
    상기 사전 결정된 의사 랜덤 함수는 PERMUTE 함수인,
    비일시적 컴퓨터 판독가능 매체.
  20. 제16 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 상기 데이터 블록의 복제본을 포함하는,
    비일시적 컴퓨터 판독가능 매체.
  21. 제16 항에 있어서,
    상기 사전 정의된 선택 기준은 데이터 저장 노드 장애의 영향을 최소화하는 것, 액세스 속도를 최대화하는 것 및 데이터 보안을 최대화하는 것 중 적어도 하나에 의해 결정되는,
    비일시적 컴퓨터 판독가능 매체.
  22. 제16 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드는 상기 데이터에 대해 고유한,
    비일시적 컴퓨터 판독가능 매체.
  23. 데이터를 저장하고 액세스하도록 구성된 분산 데이터 저장 시스템으로서,
    상기 분산 데이터 저장 시스템은
    복수의 데이터 저장 노드; 및
    데이터 블록을 저장하기 위한 데이터 저장 요청을 수신하도록 구성된 액세스 서버
    를 포함하고,
    상기 액세스 서버는 상기 복수의 데이터 저장 노드의 의사 랜덤 시퀀스의 데이터 저장 노드를 생성하도록 구성되고,
    상기 의사 랜덤 시퀀스는 임의의 시작 위치로부터 순차적이지 않으며,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 각각의 데이터 저장 노드는 데이터 참조의 함수인 사전 결정된 의사 랜덤 함수를 사용하여 결정되고,
    상기 액세스 서버는 사전 정의된 선택 기준에 기초하여 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 상기 데이터 블록을 저장하도록 구성되는,
    분산 데이터 저장 시스템.
  24. 제23 항에 있어서,
    상기 액세스 서버는 데이터 액세스 요청이 수신될 때 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 적어도 하나의 데이터 저장 노드에 액세스하도록 더 구성되는,
    분산 데이터 저장 시스템.
  25. 제23 항에 있어서,
    상기 의사 랜덤 시퀀스의 데이터 저장 노드의 제1 데이터 저장 노드는 상기 데이터 블록을 포함하고, 상기 의사 랜덤 시퀀스의 데이터 저장 노드의 복수의 후속 데이터 저장 노드는 데이터 블록의 복제본을 포함하는,
    분산 데이터 저장 시스템.
KR1020207006780A 2017-08-30 2018-05-02 분산 데이터 저장 시스템 KR20200037850A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/691,170 2017-08-30
US15/691,170 US10067719B1 (en) 2017-08-30 2017-08-30 Methods and systems for storing and accessing data in a distributed data storage system
PCT/US2018/030607 WO2019045799A1 (en) 2017-08-30 2018-05-02 DISTRIBUTED DATA STORAGE SYSTEMS

Publications (1)

Publication Number Publication Date
KR20200037850A true KR20200037850A (ko) 2020-04-09

Family

ID=63295356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006780A KR20200037850A (ko) 2017-08-30 2018-05-02 분산 데이터 저장 시스템

Country Status (3)

Country Link
US (1) US10067719B1 (ko)
KR (1) KR20200037850A (ko)
WO (1) WO2019045799A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10404449B2 (en) * 2014-11-24 2019-09-03 Nec Corporation Method for encrypting data for distributed storage
US10585791B2 (en) * 2018-03-20 2020-03-10 Intel Corporation Ordering of memory device mapping to reduce contention
US20190297144A1 (en) * 2018-03-21 2019-09-26 Wipro Limited Method and system for improved distributed data storage amongst multiple computing nodes
US11256717B2 (en) * 2019-10-21 2022-02-22 Vmware, Inc. Storage of key-value entries in a distributed storage system
CN117034329B (zh) * 2023-10-10 2023-12-26 武汉能钠智能装备技术股份有限公司四川省成都市分公司 一种基于云计算的数据加密方法及系统
CN117119058B (zh) * 2023-10-23 2024-01-19 武汉吧哒科技股份有限公司 Ceph分布式存储集群中存储节点优化方法及相关设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374336B1 (en) * 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
JP5320678B2 (ja) * 2007-02-20 2013-10-23 日本電気株式会社 データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム
US8938549B2 (en) * 2008-10-15 2015-01-20 Aster Risk Management Llc Reduction of peak-to-average traffic ratio in distributed streaming systems
US9317221B2 (en) * 2011-03-16 2016-04-19 Nec Corporation Distributed storage system and distributed storage method
CN103136114B (zh) * 2011-11-30 2015-11-25 华为技术有限公司 存储方法及存储装置
US20130263151A1 (en) 2012-04-03 2013-10-03 Microsoft Corporation Consistent Hashing Table for Workload Distribution
US8725800B1 (en) * 2012-10-02 2014-05-13 Nextbit Systems Inc. Mobile photo application migration to cloud computing platform
TWI559133B (zh) * 2013-05-22 2016-11-21 祥碩科技股份有限公司 磁碟陣列系統及資料處理方法
US9021296B1 (en) * 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
WO2016010604A2 (en) * 2014-04-28 2016-01-21 Topia Technology, Inc. Systems and methods for security hardening of data in transit and at rest via segmentation, shuffling and multi-key encryption
US20170083603A1 (en) 2015-09-18 2017-03-23 Qualcomm Incorporated Co-derived data storage patterns for distributed storage systems
US9946642B2 (en) * 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management

Also Published As

Publication number Publication date
US10067719B1 (en) 2018-09-04
WO2019045799A1 (en) 2019-03-07

Similar Documents

Publication Publication Date Title
KR20200037850A (ko) 분산 데이터 저장 시스템
AU2015221548B2 (en) A computer implemented method for dynamic sharding
CN109831487B (zh) 分片文件验证方法及终端设备
US10223506B2 (en) Self-destructing files in an object storage system
CN110737668B (zh) 数据存储方法、数据读取方法、相关设备及介质
CN110263035A (zh) 基于区块链的数据存储、查询方法及装置和电子设备
US10908834B2 (en) Load balancing for scalable storage system
US20150039849A1 (en) Multi-Layer Data Storage Virtualization Using a Consistent Data Reference Model
WO2015017532A2 (en) High-performance distributed data storage system with implicit content routing and data deduplication
US11310158B2 (en) Packet classification using fingerprint hash table
US20200065306A1 (en) Bloom filter partitioning
EP3093789B1 (en) Storing structured information
CN115203159B (zh) 一种数据存储方法、装置、计算机设备和存储介质
US20150278543A1 (en) System and Method for Optimizing Storage of File System Access Control Lists
CN113282941A (zh) 获取对象标识的方法、装置、电子设备及存储介质
US20140280765A1 (en) Self-Organizing Disk (SoD)
CN116578746A (zh) 对象去重方法及装置
CN106980618B (zh) 基于MongoDB分布式集群架构的文件存储方法和系统
CN111428114A (zh) Elasticsearch搜索引擎的索引创建方法及装置
JP6233846B2 (ja) 可変長ノンスの生成
US20150269086A1 (en) Storage System and Storage Method
CN111464312B (zh) 一种区块链中账户地址的处理方法、装置和电子设备
US7058773B1 (en) System and method for managing data in a distributed system
CN110798222B (zh) 一种数据压缩方法及装置
JP2017123040A (ja) サーバー装置、分散ファイルシステム、分散ファイルシステム制御方法、および、プログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application