KR20190096391A - 데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스 - Google Patents

데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스 Download PDF

Info

Publication number
KR20190096391A
KR20190096391A KR1020197020615A KR20197020615A KR20190096391A KR 20190096391 A KR20190096391 A KR 20190096391A KR 1020197020615 A KR1020197020615 A KR 1020197020615A KR 20197020615 A KR20197020615 A KR 20197020615A KR 20190096391 A KR20190096391 A KR 20190096391A
Authority
KR
South Korea
Prior art keywords
data
database
state
value
state transition
Prior art date
Application number
KR1020197020615A
Other languages
English (en)
Other versions
KR102231058B1 (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 KR20190096391A publication Critical patent/KR20190096391A/ko
Application granted granted Critical
Publication of KR102231058B1 publication Critical patent/KR102231058B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

본 출원은, 데이터베이스 상태 값이 결정될 때 상대적으로 많은 양의 컴퓨팅 리소스가 소비된다는 현존하는 기술의 문제점을 완화하기 위한 데이터베이스 상태 결정 방법을 개시한다. 방법은: 타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정하는 것; 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 것을 포함하되, 상태 값은 타겟 데이터베이스의 상태를 나타내기 위해 사용된다. 본 출원은 또한, 데이터베이스 상태 결정 디바이스 및 데이터베이스 일관성 검증 방법 및 디바이스를 더 개시한다.

Description

데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스
본 출원은 컴퓨터 기술의 분야에 관한 것으로, 특히 데이터베이스 상태 결정 방법 및 디바이스, 데이터베이스 일관성 검증 방법 및 디바이스에 관한 것이다.
데이터를 저장할 때, 컴퓨터는 때때로 동일한 단편(piece)의 데이터를 복수의 상이한 데이터베이스에 저장한다. 이들 상이한 데이터베이스에 저장되는 데이터는 일반적으로 서비스 요건에 기초하여 동기화될 필요가 있다, 즉, 데이터베이스에 저장되는 데이터는 일반적으로 일관될 필요가 있다. 블록체인 기술이 예로서 사용된다. 검증이 수행된 이후, 블록체인 데이터를 저장하는 모든 노드(노드에 대응하는 데이터베이스)에 복수의 트랜잭션 레코드가 기록된다. 모든 노드에 의해 수락되는 새로운 블록이 생성되는 것을 보장하기 위해서는, 모든 노드에 대응하는 모든 데이터베이스에 저장되는 데이터는 일관되어야 한다. 다른 예를 들면, 분산형 스토리지의 기본/보조(primary/secondary) 데이터베이스의 경우, 기본 데이터베이스의 데이터에서 에러가 발생하는 경우 다른 데이터베이스(보조 데이터베이스)로부터 데이터를 복원하는 것을 돕기 위해, 기본 데이터베이스에 저장되는 데이터와 보조 데이터베이스에 저장되는 데이터도 또한 일반적으로 일관될 필요가 있다.
복수의 데이터베이스에 저장되는 데이터가 일관된다는 것을 보장하기 위해, 복수의 데이터베이스 내의 데이터에 대해 일관성 체크가 수행될 수 있고, 데이터가 일관되지 않는 것으로 밝혀지는 경우, 시정 조치가 적시에 취해질 수 있다. 데이터베이스가 일반적으로 많은 양의 데이터를 포함하기 때문에, 데이터베이스 일관성 체크는, 복수의 데이터베이스에 있는 모든 데이터를 하나씩 비교하는 대신, 데이터베이스에서의 데이터 상태를 나타내기 위해 사용되는 상태 값을 비교하는 것에 의해 일반적으로 수행된다. 설명의 용이성을 위해, 데이터베이스에 있는 데이터의 상태는 데이터베이스 상태로 칭해질 수 있다.
현존하는 기술에서, 데이터베이스 내의 데이터가 매번 변경된 이후, 데이터베이스의 상태 값은 재결정될 필요가 있다. 상태 값이 결정되면, 상태 값은 일반적으로 데이터베이스의 모든 데이터를 사용하는 것에 의해 계산된다. 예를 들면, 상태 값은 데이터베이스에 있는 데이터의 해시 값일 수 있다. 이 경우, 해시 값이 결정되면, 데이터베이스 내의 모든 데이터는 스플라이싱되어(spliced) 문자열을 획득할 필요가 있다. 그 다음, 문자열은 해시 함수의 입력으로 사용되고, 해시 값은 해시 함수를 사용하는 것에 의해 계산된다. 이 경우, 데이터베이스가 상대적으로 많은 양의 데이터를 포함하는 경우, 데이터베이스 상태 값이 결정될 때 상대적으로 많은 양의 컴퓨팅 리소스가 소모된다.
본 출원의 구현예는, 데이터베이스 상태 값이 결정될 때 상대적으로 많은 양의 컴퓨팅 리소스가 소비된다는 현존하는 기술의 문제점을 완화하기 위한 데이터베이스 상태 결정 방법을 제공한다.
다음의 기술적 솔루션이 본 출원의 구현예에서 사용된다.
데이터베이스 상태 결정 방법이 제공되는데, 데이터베이스 상태 결정 방법은: 타겟 데이터베이스에 대해 수행되는 상태 전이 동작(state transition operation)을 결정하는 것; 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 것을 포함하되, 상태 값은 타겟 데이터베이스의 상태를 나타내기 위해 사용된다.
본 출원의 구현예는 또한, 데이터베이스 상태 값이 결정될 때 상대적으로 많은 양의 컴퓨팅 리소스가 소비된다는 현존하는 기술의 문제점을 완화하기 위한 데이터베이스 상태 결정 디바이스를 제공한다.
데이터베이스 상태 결정 디바이스가 제공되는데, 데이터베이스 상태 결정 디바이스는: 타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정하도록 구성되는 제1 결정 유닛; 및 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성되는 제2 결정 유닛을 포함하되, 상태 값은 타겟 데이터베이스의 상태를 나타내기 위해 사용된다.
데이터베이스 일관성 검증 방법이 제공되는데, 다음의 것을 포함한다: 체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값 - 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값은 본 출원에서 제공되는 데이터베이스 상태 결정 방법을 사용하는 것에 의해 결정됨 - 이 동일한지의 여부를 결정하는 것; 및 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값이 동일하면, 제1 데이터베이스의 상태와 제2 데이터베이스의 상태가 일관된다는 것을 결정하는 것.
데이터베이스 일관성 검증 디바이스가 제공되는데, 다음의 것을 포함한다: 체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값 - 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값은 본 출원에서 제공되는 데이터베이스 상태 결정 디바이스를 사용하는 것에 의해 결정됨 - 이 동일한지의 여부를 결정하도록 구성되는 상태 결정 유닛; 및 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값이 동일하다는 것이 결정되는 경우, 제1 데이터베이스의 상태와 제2 데이터베이스의 상태가 일관된다는 것을 결정하도록 구성되는 일관성 결정 유닛.
본 출원의 구현예에서 사용되는 이전의 기술적 솔루션 중 하나 이상은, 다음과 같은 유익한 효과를 달성할 수 있다:
상태 전이 동작에 기인하여 자신의 데이터가 변하는 데이터베이스의 상태 값이 결정되면, 타겟 데이터베이스에 대해 수행되는 상태 전이 동작이 결정되고, 그 다음, 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값이, 결정된 상태 전이 동작 및 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정된다. 현존하는 기술과 비교하여, 전체 데이터베이스 내의 모든 데이터에 대해 연산을 수행할 필요가 없고, 그에 의해, 과도한 컴퓨팅 리소스의 소비를 감소시킨다.
여기에서 설명되는 첨부의 도면은, 본 출원의 추가적인 이해를 제공하도록, 그리고 본 출원의 일부를 구성하도록 의도된다. 본 출원의 예시적인 구현예 및 구현예에 대한 설명은 본 출원을 설명하도록 의도되며 본 출원에 대한 어떠한 제한도 구성하지 않는다. 첨부의 도면에서:
도 1은, 본 출원에 따른, 해시 트리의 데이터 구조를 예시하는 개략도이다;
도 2는, 본 출원에 따른, 데이터베이스 상태 결정 방법을 예시하는 개략적인 구현 플로우차트이다;
도 3은, 본 출원에 따른, 데이터베이스 일관성 검증 방법을 예시하는 개략적인 구현 플로우차트이다;
도 4는, 본 출원에 따른, 데이터베이스 상태 결정 방법을 예시하는 개략적인 구현 플로우차트이다;
도 5는, 본 출원에 따른, 데이터베이스 상태 결정 디바이스의 특정한 구조체를 예시하는 개략도이다; 그리고
도 6은, 본 출원에 따른, 데이터베이스 일관성 검증 디바이스의 특정한 구조체를 예시하는 개략도이다.
본 출원의 목적, 기술적 솔루션, 및 이점을 더욱 명확하게 만들기 위해, 하기에서는, 본 출원의 특정한 구현예 및 대응하는 첨부의 도면을 참조하여 본 출원의 기술적 솔루션을 명확하고 완전하게 설명한다. 명백하게, 설명된 구현예는 본 출원의 구현예의 전체가 아닌 일부에 불과하다. 창의적인 노력 없이 본 출원의 구현예에 기초하여 기술 분야에서 통상의 기술을 가진 자에 의해 획득되는 다른 모든 구현예는 본 출원의 보호 범위 내에 속할 것이다.
본 출원의 구현예에서 제공되는 기술적 솔루션은, 첨부의 도면을 참조하여 이하에서 상세하게 설명된다.
컴퓨터 기술이 발전함에 따라, 모든 데이터베이스 내의 데이터가 일관되는지의 여부를 검증하는 것이 점차 보편화되고 있다. 블록체인(blockchain)이 예로 사용된다. 블록체인은 분산형 데이터베이스이며, 블록체인에서의 각각의 단편의 데이터의 변경은 전체 네트워크 내의 각각의 블록체인 노드로 브로드캐스팅되며 ,모든 노드는 완전하고 일관성 있는 데이터를 가질 필요가 있다. 데이터는 일반적으로 각각의 노드 상의 복수의 데이터 유닛에 저장된다. 데이터 유닛은 블록체인 내의 블록일 수 있거나, 또는 복수의 블록을 포함하는 데이터 유닛일 수 있다. 노드의 상태 값이 결정되면, 머클 트리(Merkle tree)와 같은 해시 트리가, 각각의 데이터 유닛 내의 데이터의 해시 값을 리프 노드(leaf node)로서 사용하는 것에 의해 구축되고, 그 다음, 해시 트리의 루트 노드의 해시 값이 데이터베이스의 상태 값으로서 사용되고, 그 결과, 상태 값은 데이터베이스의 상태를 고유하게 나타내기 위해 사용된다.
도 1은, 소정의 데이터베이스에 대해 구축되는 해시 트리의 데이터 구조를 예시하는 개략도이다. 해시 트리의 루트 노드의 해시 값이 계산될 때, 각각의 데이터 유닛 내의 데이터의 해시 값이 먼저 계산되고, 그 다음, 획득된 해시 값이 해시 트리의 리프 노드의 값으로서 사용되고, 각각의 리프 노드의 부모 노드(parent node)의 해시 값이 계산되고, 그 결과, 해시 트리의 루트 노드의 해시 값이 최종적으로 획득된다. 데이터베이스의 데이터가 변경된 이후, 데이터베이스의 상태 값은 재결정될 필요가 있다. 그러한 만큼, 해시 트리의 루트 노드의 해시 값을 계산하는 이전의 프로세스는 반복될 필요가 있다. 데이터베이스에 많은 양의 데이터가 존재하는 경우, 많은 양의 데이터에 대해 해시 연산이 수행될 필요가 있다. 이것은 많은 양의 컴퓨팅 리소스를 소비한다.
몇몇 유사한 시나리오에서, 데이터베이스의 상태 값이 결정될 때, 상대적으로 많은 양의 계산 리소스가 또한 소비된다. 세부 사항은 간략화를 위해 여기서는 생략된다. 그 문제를 완화하기 위해, 본 출원은 데이터베이스 상태 결정 방법을 제공하고, 그 결과, 타겟 데이터베이스의 상태는 타겟 데이터베이스에 대해 수행되는 상태 전이 동작에 기초하여 결정된다.
하기에서는, 본 출원에서 제공되는 데이터베이스 상태 결정 방법을 상세히 설명한다. 방법은, 컴퓨팅 디바이스, 예를 들면, 분산형 데이터베이스에서의 데이터베이스 노드 또는 블록체인에서의 노드에 의해 수행될 수 있다. 또한, 방법은 본 출원에서 제공되는 데이터베이스 상태 결정 방법을 구현하는 애플리케이션 프로그램에 의해 수행될 수 있다. 설명의 용이성을 위해, 방법이 컴퓨팅 디바이스에 의해 수행되는 예를 사용하는 것에 의해, 방법의 구현예가 하기에서 설명된다. 방법이 컴퓨팅 디바이스에 의해 수행되는 것은 단지 설명을 위한 예이며, 방법에 대한 제한으로 간주되지 않아야 한다는 것이 이해될 수 있다.
도 2는, 본 출원에 따른, 데이터베이스 상태 결정 방법을 예시하는 개략적인 구현 플로우차트이다. 방법은 이하의 단계를 포함한다.
단계 S101: 타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정함.
여기에서의 상태 전이 동작은, 데이터베이스의 상태 변화를 야기하는 데이터베이스 동작일 수 있고, 구체적으로는, 데이터 기록 동작, 데이터 업데이트 동작, 또는 데이터 삭제 동작과 같은 동작일 수 있다. 상태 전이 동작은 프로세싱된 데이터 및 데이터를 프로세싱하기 위한 방법을 포함할 수 있다. 예를 들면, 데이터 기록 동작은, 기록될 데이터 및 데이터가 데이터베이스에 기록될 필요가 있는 특정한 위치를 포함한다. 여기서, 타겟 데이터베이스는, 상태 전이 동작이 수행되는 데이터베이스일 수 있고, 타겟 데이터베이스는, 자신의 상태 값이 결정되어야 하는 임의의 데이터베이스일 수 있다.
실제 적용에서, 상태 전이 동작을 결정하기 위한 많은 방법이 있을 수 있다. 예를 들면, 객체 지향 애플리케이션 프로그램(object-oriented application program)에서, 상태 전이 동작이 객체에 의해 구현되는 경우, 상태 전이 동작은, 상태 전이 동작에 대응하는 데이터 동작 객체(data operation object)를 결정하는 것에 의해 결정될 수 있거나; 또는 상태 전이 동작은, 상태 전이 동작에 대응하는 데이터베이스 동작문(database operation statement)에 기초하여 결정될 수 있다. 여기에서, 데이터 동작 객체는 객체 지향 애플리케이션 프로그램에 있는 데이터 객체이며, 데이터베이스 동작을 수행하기 위해 사용된다. 객체 지향 애플리케이션 프로그램에서, "객체(object)"는 일반적으로, 자신의 클래스가 메모리에 로딩되는 인스턴스이며, 관련된 멤버 변수(member variable) 및 멤버 함수(member function)를 구비한다.
상태 전이 동작이 데이터베이스 내의 데이터의 변경을 야기하기 때문에, 상태 전이 동작이 결정된 이후, 데이터베이스의 것이며 상태 전이 동작이 수행된 이후 존재하는 상태가 결정될 수 있다.
단계 S102: 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정함.
여기서, 상태 값은 타겟 데이터베이스의 상태를 나타내기 위해 사용된다. 상태 값이 타겟 데이터베이스에 대한 일관성 체크를 수행하기 위해 사용될 수 있기 때문에, 상태 값은 타겟 데이터베이스에 저장되는 데이터의 특성을 고유하게 나타내기 위해 사용될 수 있다. 예를 들면, 상태 값은 해시 값일 수 있거나 전역적으로 고유한 식별자일 수 있다. 해시 값은, 해시 함수를 사용하는 것에 의해 입력 파라미터에 대해 해시 연산을 수행함으로써 획득된다. 전역적 고유 식별자는, 시스템에 의해 할당되며 시스템에서 데이터베이스 상태를 고유하게 식별하기 위해 사용되는 식별자일 수 있다.
기술 분야의 숙련된 자는, "고유하게 나타낸다"는 것이 절대적인 고유성(absolute uniqueness)으로서 해석되어야 하는 것이 아니라, 허용된 오차 범위 내에서의 고유성을 의미한다는 것을 인식해야 한다는 것을 주목할 가치가 있다. 현재, 가장 널리 사용되는 해시 알고리즘의 경우, 이론적으로는, 상이한 입력 데이터가 동일한 출력 해시 값을 갖는다, 즉 해시 충돌이 존재한다.
데이터베이스 내의 데이터가 변경된 이후 존재하는 상태는, 데이터가 변경되기 이전에 존재하는 상태 및 상태 전이 동작에 관련된다. 그러한 만큼, 타겟 데이터베이스에 대해 수행되는 상태 전이 동작이 결정된 이후, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값은, 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정될 수 있다.
실제 적용에서, 단계 S101에서 설명되는 바와 같이, 객체 지향 애플리케이션 프로그램에서, 상태 전이 동작은, 상태 전이 동작에 대응하는 데이터 동작 객체를 결정하는 것에 의해 결정될 수 있다. 후속하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값은, 결정된 데이터 동작 객체 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정될 수 있다.
짧은 식별자를 사용하는 것에 의해 상이한 상태 전이 동작 사이를 구별하는 것을 돕기 위해, 상태 전이 동작은 또한, 소정의 특성 값을 사용하는 것에 의해 고유하게 표현될 수 있다. 상태 전이 동작의 특성 값은 해시 값일 수 있거나, 또는 상태 전이 동작을 고유하게 식별하기 위해 사용되는 전역적 고유 식별자일 수 있다. 세부 사항은 간략화를 위해 여기서는 생략된다. 상태 전이 동작의 특성 값 및 타겟 데이터베이스의 상태 값을 계산하여 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 획득하는 것을 돕기 위해, 특성 값의 데이터 포맷은 타겟 데이터베이스의 상태 값의 데이터 포맷과 동일할 수 있거나 또는 유사할 수 있다.
실제 적용에서, 객체 지향 애플리케이션 프로그램의 경우, 데이터 동작 객체의 해시 값이 결정될 수 있고, 그 다음, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값이 데이터 동작 객체의 결정된 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정된다.
하기에서는 본 출원의 이러한 구현예에서 데이터 동작 객체의 해시 값을 결정하는 프로세스를 구체적으로 설명한다.
데이터 동작 객체의 해시 값이 결정될 때, 데이터 동작 객체의 데이터 포맷을 해시 알고리즘의 입력에 의해 지원되는 포맷으로 변환하기 위해, 데이터 동작 객체에 대해 직렬화 연산(serialization operation)이 수행될 수 있다. 직렬화 연산은 객체의 상태 정보를, 저장될 수 있는 또는 송신될 수 있는 포맷으로 변환할 수 있다. 데이터 동작 객체에 대해 직렬화 연산이 수행된 이후, 데이터 동작 객체에 대응하는 직렬화된 데이터가 획득될 수 있다. 예를 들면, 직렬화된 데이터의 데이터 포맷은 이진 포맷(binary format)일 수 있고, 이진 포맷의 데이터는 해시 알고리즘의 입력으로 사용될 수 있다.
데이터 동작 객체에 대응하는 직렬화된 데이터가 획득된 이후, 직렬화된 데이터에 대해 해시 연산이 수행되어 직렬화된 데이터의 해시 값을 획득할 수 있고, 직렬화된 데이터의 해시 값은 데이터 동작 객체의 해시 값으로서 사용될 수 있다.
단일의 상태 전이 동작은 일반적으로 하나보다 더 많은 데이터 동작 객체에 대응하고, 예를 들면, 블록체인 내의 노드에 대해 수행되는 각각의 상태 전이 동작은 일반적으로 복수의 데이터 동작 객체에 대응한다는 것을 주목할 가치가 있다. 그러한 만큼, 상태 전이 동작에 대응하는 데이터 동작 객체가 직렬화되면, 모든 데이터 동작 객체는 개별적으로 직렬화될 수 있다; 다음으로, 모든 획득된 직렬화된 데이터가 순차적으로 스플라이싱된다; 최종적으로, 획득되는 스플라이싱된 직렬화된 데이터는 상태 전이 동작에 대응하는 직렬화된 데이터로서 사용된다.
모든 획득된 직렬화된 데이터가 순차적으로 스플라이싱될 때, 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되면, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터는 상태 전이 동작을 수행하는 시퀀스에 기초하여 스플라이싱되어, 스플라이싱된 직렬화된 데이터를 획득하게 된다. 대안적으로, 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되지 않은 경우, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터는 제1 미리 결정된 시퀀스에 기초하여 스플라이싱되어, 스플라이싱된 직렬화된 데이터를 획득하게 된다. 그 다음, 스플라이싱된 직렬화된 데이터의 해시 값이 해시 함수를 사용하는 것에 의해 계산될 수 있고, 스플라이싱된 직렬화된 데이터의 해시 값은 상태 전이 동작에 대응하는 데이터 동작 객체의 해시 값으로서 사용된다.
제1 미리 결정된 시퀀스는 미리 결정된 스플라이싱 시퀀스(splicing sequence)일 수 있다. 예를 들면, 각각의 데이터 동작 객체의 데이터 포맷이 키-값 포맷(key-value format)인 경우, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터는 키 값의 내림 차순으로 스플라이싱될 수 있다.
상태 전이 동작에 대응하는 데이터 동작 객체의 해시 값이 결정된 이후, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값은, 데이터 동작 객체의 결정된 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정될 수 있다. 구체적으로, 데이터 동작 객체의 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값은, 제2 미리 결정된 시퀀스에 기초하여 스플라이싱되어, 스플라이싱된 데이터를 획득할 수 있게 된다. 스플라이싱된 데이터의 해시 값이 결정된다. 스플라이싱된 데이터의 해시 값은, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값으로서 사용된다.
여기서, 제1 미리 결정된 시퀀스 및 제2 미리 결정된 시퀀스 각각은 미리 결정된 스플라이싱 시퀀스일 수 있다. 모든 데이터베이스의 상태 값이 계산되는 경우, 데이터가 스플라이싱될 때 동일한 스플라이싱 시퀀스가 사용되어야 한다. 그렇지 않으면, 모든 데이터베이스 내의 데이터가 일관되어도, 계산된 상태 값은 상이하며, 데이터베이스 사이의 일관성이 정확하게 체크될 수 없다.
몇몇 경우에, 스플라이싱이 수행된 이후, 상이한 데이터의 두 개의 그룹이 어쩌면 동일한 스플라이싱된 데이터가 된다는 것을 주목할 가치가 있다. 예를 들면, 데이터 "hello" 및 "world"는 스플라이싱되어 스플라이싱된 데이터 "helloworld"를 획득할 수 있고, 마찬가지로, 데이터 "he" 및 "lloworld"는 스플라이싱되어 "helloworld"를 획득한다. 명백하게, 데이터의 두 개의 그룹은, 스플라이싱이 수행되기 이전에는 상이한 데이터이다. 이 경우, 스플라이싱이 수행된 이후 상이한 데이터가 동일 데이터가 되는 것을 방지하기 위해, 스플라이싱 연산(splicing operation)이 수행될 때, 스플라이싱된 데이터의 고유성을 보장하기 위해 세퍼레이터(separator)가 사용될 수 있다. 구체적으로, 미리 결정된 세퍼레이터는 데이터 스플라이싱 위치에 배치될 수 있다. 미리 결정된 세퍼레이터는 개발자에 의해 미리 정의될 수 있다. 예를 들면, 세퍼레이터는 123이다. 이 경우, 데이터 "hello" 및 "world"는 스플라이싱되어 "hello123world"를 획득할 수 있고, 데이터 "he" 및 "lloworld"는 스플라이싱되어 "he123lloworld"를 획득할 수 있다. 그러한 만큼, 스플라이싱이 수행된 이후 두 조각의 데이터가 상이한 데이터인 것이 보장될 수 있다.
세퍼레이터를 사용하는 것에 의해 데이터를 스플라이싱하기 위한 이전의 방법에 기초하여, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터가 스플라이싱될 때, 미리 결정된 세퍼레이터가 스플라이싱될 적어도 두 조각의 직렬화된 데이터 사이에 배치될 수 있고, 미리 결정된 세퍼레이터가 배치된 이후 획득되는 모든 조각의 직렬화된 데이터는 스플라이싱되어, 스플라이싱된 직렬화된 데이터를 획득하게 된다. 물론, 세퍼레이터를 사용하는 것에 의해 데이터가 스플라이싱되기 이전에, 스플라이싱이 수행된 이후 상이한 그룹의 데이터가 동일한 데이터인지의 여부가 먼저 결정될 수 있다. 스플라이싱된 데이터가 동일하다는 것이 결정 결과인 경우, 데이터의 각각의 그룹은 세퍼레이터를 사용하는 것에 의해 스플라이싱되어, 스플라이싱된 직렬화된 데이터를 획득하게 된다.
본 출원의 이러한 구현예에서 제공되는 데이터베이스 상태 결정 방법에 따르면, 자신의 데이터가 변하는 데이터베이스의 상태 값이 결정되면, 타겟 데이터베이스에 대해 수행되는 상태 전이 동작이 결정되고, 그 다음, 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값이, 결정된 상태 전이 동작 및 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정될 수 있다. 현존하는 기술과 비교하여, 전체 데이터베이스 내의 모든 데이터에 대해 연산을 수행할 필요가 없고, 그에 의해, 과도한 컴퓨팅 리소스의 소비를 감소시킨다. 또한, 현존하는 블록체인 기술에서 해시 트리와 같은 트리 구조를 사용하는 것에 의해 노드의 해시 값이 계산되는 것과 비교하여, 본 출원의 이러한 구현예에서는, 트리 구조가 구축될 필요가 없고, 트리 구조에서의 각각의 노드의 해시 값이 계산될 필요가 없고, 그에 의해, 과도한 계산 리소스의 일관성 체크 소비를 감소시킨다.
본 출원의 이러한 구현에서 제공되는 몇몇 바람직한 솔루션에서, 데이터 동작 객체에 대해 직렬화 연산이 수행되고 직렬화된 데이터에 대해 해시 연산이 수행되고, 이것은 소정 양의 컴퓨팅 리소스를 소비한다. 그러나, 분산형 데이터베이스에서, 특히 블록체인에서, 데이터베이스는 일반적으로 매우 많은 양의 데이터를 저장하며, 데이터베이스 내의 데이터에 대해 해시 연산을 수행하는 것에 의해 소비되는 컴퓨팅 리소스는, 본 출원의 이러한 구현예에서의 앞선 동작에 의해 소비되는 컴퓨팅 리소스보다 훨씬 더 많다.
앞선 데이터베이스 상태 결정 방법에 따르면, 데이터베이스의 상태 값이 결정될 수 있다. 후속하여, 결정된 상태 값에 기초하여 데이터베이스에 대해 일관성 체크가 수행될 수 있다. 하기에서는, 본 출원에서 제공되는 데이터베이스 일관성 검증 방법을 상세하게 설명한다.
도 3은, 데이터베이스 일관성 검증 방법을 예시하는 개략적인 구현 플로우차트이다. 방법은 이하의 단계를 포함한다.
단계 S201: 체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값이 동일한지의 여부를 결정함.
여기서, 제1 데이터베이스 및 제2 데이터베이스는 체크될 데이터베이스이다. 이 경우, 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값은, 본 출원의 이러한 구현예에서 제공되는 데이터베이스 상태 결정 방법에 기초하여 개별적으로 결정될 수 있다. 특정한 결정 프로세스에 대해서는, 본 출원의 관련 설명에 대해 참조가 이루어질 수 있다. 세부 사항은 간략화를 위해 여기서는 생략된다.
단계 S202: 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값이 동일한 경우, 제1 데이터베이스의 상태와 제2 데이터베이스의 상태가 일관된다는 것을 결정함.
제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값이 상이한 경우, 제1 데이터베이스의 상태와 제2 데이터베이스의 상태가 일관되지 않는다는 것이 결정된다.
본 출원의 앞선 발명적 개념에 기초하여, 본 출원의 기술적 피쳐, 수단, 및 효과를 더 잘 이해하는 것을 돕기 위해, 하기에서는, 타겟 데이터베이스가 블록체인 기술에서 노드의 데이터베이스로서 사용되는 예를 사용하여, 본 출원의 데이터베이스 상태 결정 방법을 추가로 설명한다.
본 출원의 이러한 구현예에서, 블록체인 애플리케이션이 패브릭 블록체인 애플리케이션(fabric blockchain application)이고, 타겟 데이터베이스가 LevelDB 데이터베이스이고, 데이터베이스 상태 값이 해시 값인 예가 설명을 위해 사용된다. 상태 전이 동작은 데이터 동작 객체를 사용하는 것에 의해 LevelDB 데이터베이스에 대해 수행될 수 있다. 데이터 동작 객체는 키-값 포맷의 데이터를 LevelDB 데이터베이스에 기록할 수 있다. 상태 전이 동작이 블록체인에서 수행될 때, 상태 전이 동작이 모든 노드 사이에서 일관되는 것 및 상태 전이가 동일한 순서로 수행되는 것을 보장하기 위해, 컨센서스 알고리즘(consensus algorithm)이 사용된다.
각각의 블록체인 노드에 대해, 어떠한 데이터도 데이터베이스에 기록되지 않는 경우, 각각의 데이터베이스의 초기 상태(Sinit)는 비어 있다. 이 경우, 해시 값이 주어질 수 있다. 여기서, 데이터베이스의 초기 상태의 해시 값은 Hinit로 표기된다.
이 경우, 타겟 데이터베이스에 대하여 i 번째 상태 전이 동작(Transitioni)이 수행된다는 것이 결정되는 경우, 그 동작에 기초하여 타겟 데이터베이스의 해시 값을 재계산될 수 있다. 도 4는 프로세스의 개략적인 구현 플로우차트이며, 프로세스는 이하의 단계를 포함한다.
단계 S301: 상태 전이 동작에 대응하는 데이터 동작 객체를 결정함.
단일의 상태 전이 동작은 일반적으로 복수의 데이터 동작 객체에 대응하고, 노드에 대한 i 번째 상태 전이 동작(Transitioni)은 세트 {op1, op2 ... opN}으로서 표기될 수 있는데, 여기서 op는 "operation(동작)"의 약자이며, 단일의 데이터 동작 객체를 나타내며, 단일의 키-값 쌍에 대한 한 번의 기록 동작을 의미한다. 각각의 op의 포맷은 Key: = NewVal이다. 그러한 만큼, {op1, op2 ... opN}은 i 번째 상태 전이 동작 동안 N 개의 키-값 쌍에 대한 기록 동작을 나타낸다.
단계 S302: 각각의 데이터 동작 객체를 이진 포맷의 직렬화된 데이터로 직렬화함.
단계 S303: 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되는지의 여부를 결정함; 만약 "예"라면, 단계 S304를 수행하거나; 또는 만약 아니라면, 단계 S305를 수행함.
단계 S304: 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되는 경우, 상태 전이 동작을 수행하는 시퀀스에 기초하여, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득함; 그리고 단계 S306을 수행함.
단계 S305: 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되지 않은 경우, 제1 미리 결정된 시퀀스에 기초하여, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득함.
여기서, 제1 미리 결정된 시퀀스는 키 값의 내림 차순일 수 있다.
단계 S306: 스플라이싱된 직렬화된 데이터의 해시 값을 결정하고, 그 해시 값을, 상태 전이 동작에 대응하는 해시 값으로서 사용함.
스플라이싱된 직렬화된 데이터의 해시 값, 즉 상태 전이 동작(Transitioni)의 해시 값 Hash (Transitioni)을 획득하기 위해, 스플라이싱된 직렬화된 데이터는 해시 연산을 수행하기 위한 해시 알고리즘의 입력으로서 사용된다.
단계 S307: 제2 미리 결정된 시퀀스에 기초하여, 상태 전이 동작에 대응하는 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 해시 값(Hi-1)을 스플라이싱하여, 스플라이싱된 데이터를 획득함.
단계 S308: 스플라이싱된 데이터의 해시 값을 결정하고, 스플라이싱된 데이터의 해시 값을, 타겟 데이터베이스의 것이며 상태 전이 동작(Transitioni)이 수행된 이후에 존재하는 해시 값(Hi)으로서 사용함.
타겟 데이터베이스의 것이며 상태 전이 동작(Transitioni)이 수행된 이후에 존재하는 최종적으로 획득된 해시 값(Hi)은 다음의 식에 의해 표현될 수 있다: Hi := Hash(Hi-1 || Hash (Transitioni)).
H0 = Hinit, 여기서 ||는 스플라이싱 연산을 나타내고, Hash(x)는 해시 함수이고 입력 데이터 x에 대해 해시 연산이 수행된다는 것을 나타내고, 해시 함수는, 예를 들면, SHA3일 수 있다.
본 출원의 이러한 구현예에서 제공되는 데이터베이스 상태 결정 방법에 따르면, 자신의 데이터가 변하는 데이터베이스의 해시 값이 결정되면, 타겟 데이터베이스에 대해 수행되는 상태 전이 동작(Transitioni)이 결정되고; 그 다음, 상태 전이 동작에 대응하는 해시 값(Hash (Transitioni))이 결정되고; 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값(Hi)은, 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 해시 값(Hi-1)에 기초하여 결정될 수 있다. 현존하는 기술과 비교하여, 해시 값을 획득하기 위해 전체 노드의 데이터베이스 내의 모든 데이터에 대해 연산을 수행할 필요가 없고, 그에 의해, 과도한 컴퓨팅 리소스의 소비를 감소시킨다. 또한, 현존하는 블록체인 기술에서 해시 트리와 같은 트리 구조를 사용하는 것에 의해 노드의 해시 값이 계산되는 것과 비교하여, 본 출원의 이러한 구현예에서는, 트리 구조가 구축될 필요가 없고, 트리 구조에서의 각각의 노드의 해시 값이 계산될 필요가 없고, 그 결과, 컴퓨팅 리소스의 소비가 추가로 감소된다.
본 출원의 구현예에서 제공되는 데이터베이스 상태 결정 방법이 상기에서 설명된다. 도 5에서 도시되는 바와 같이, 동일한 아이디어에 기초하여, 본 출원의 구현예는, 대응하는 데이터베이스 상태 결정 디바이스를 추가로 제공한다. 디바이스는 구체적으로 다음의 것을 포함한다: 타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정하도록 구성되는 제1 결정 유닛(401); 및 결정된 상태 전이 동작 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성되는 제2 결정 유닛(402)을 포함하되, 상태 값은 타겟 데이터베이스의 상태를 나타내기 위해 사용된다.
본 출원의 이러한 구현예에서, 데이터베이스 상태를 결정하는 많은 특정한 구현예가 여전히 존재한다. 한 구현예에서, 제1 결정 유닛(401)은, 타겟 데이터베이스에 대해 상태 전이 동작을 수행하기 위해 사용되는 데이터 동작 객체를 결정하도록 구성된다.
제2 결정 유닛(402)은, 결정된 데이터 동작 객체 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성된다.
한 구현예에서, 제2 결정 유닛(402)은 구체적으로, 제1 해시 값 결정 서브유닛(403) 및 제1 상태 값 결정 서브유닛(404)을 포함한다.
제1 해시 값 결정 서브유닛(403)은 데이터 동작 객체의 해시 값을 결정하도록 구성된다.
제1 상태 값 결정 서브유닛(404)은, 데이터 동작 객체의 결정된 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성된다.
한 구현예에서, 제1 해시 값 결정 서브유닛(403)은 구체적으로, 직렬화된 데이터 결정 서브유닛(405) 및 제2 해시 값 결정 서브유닛(406)을 포함한다.
직렬화된 데이터 결정 서브유닛(405)은, 데이터 동작 객체를 직렬화하여 직렬화된 데이터를 획득하도록 구성된다.
제2 해시 값 결정 서브유닛(406)은: 직렬화된 데이터의 해시 값을 결정하도록, 그리고, 직렬화된 데이터의 해시 값을, 데이터 동작 객체의 해시 값으로 사용하도록 구성된다.
한 구현예에서, 직렬화된 데이터 결정 서브유닛(405)은 구체적으로, 제1 스플라이싱 서브유닛(407) 및 제2 스플라이싱 서브유닛(408)을 포함한다.
한 구현예에서, 제1 스플라이싱 서브유닛(407)은: 타겟 데이터베이스에 대해 상태 전이 동작을 수행하기 위해 사용되는 하나보다 더 많은 데이터 동작 객체가 존재하고, 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되는 경우, 상태 전이 동작을 수행하는 시퀀스에 기초하여, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득하도록 구성된다.
제2 스플라이싱 서브유닛(408)은: 타겟 데이터베이스에 대해 상태 전이 동작을 수행하기 위해 사용되는 하나보다 더 많은 데이터 동작 객체가 존재하고, 모든 데이터 동작 객체에 의한 상태 전이 동작을 수행하는 시퀀스가 고정되지 않은 경우, 제1 미리 결정된 시퀀스에 기초하여, 모든 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득하도록 구성된다.
스플라이싱이 수행된 이후 상이한 그룹의 데이터가 동일한 데이터가 되는 것을 방지하기 위해, 한 구현예에서, 제2 스플라이싱 서브유닛(408)은: 적어도 두 조각의 직렬화된 데이터 사이에 미리 결정된 세퍼레이터를 배치하도록, 그리고, 미리 결정된 세퍼레이터가 배치된 이후 획득되는 모든 조각의 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득하도록 구성된다.
한 구현예에서, 제1 상태 값 결정 서브유닛(404)은: 제2 미리 결정된 시퀀스에 기초하여, 데이터 동작 객체의 해시 값 및 타겟 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값을 스플라이싱하여, 스플라이싱된 데이터를 획득하도록; 그리고 스플라이싱된 데이터의 해시 값을 결정하고, 스플라이싱된 데이터의 해시 값을, 타겟 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값으로서 사용하도록 구성된다.
한 구현예에서, 타겟 데이터베이스는 블록체인 내의 임의의 노드에 대응하는 데이터베이스이다.
한 구현예에서, 상태 값은 타겟 데이터베이스에 저장되는 데이터의 특성을 고유하게 나타내기 위해 사용된다.
본 출원의 이러한 구현예에서 제공되는 데이터베이스 상태 결정 디바이스에 따르면, 자신의 데이터가 변하는 데이터베이스의 상태 값이 결정되면, 타겟 데이터베이스에 대해 수행되는 상태 전이 동작이 결정되는데, 이 경우, 상태 전이 동작은, 데이터 변화를 야기하는 상태 전이 동작이다. 그 다음, 데이터베이스의 것이며 상태 전이 동작이 수행된 이후에 존재하는 상태 값은, 결정된 상태 전이 동작 및 데이터베이스의 것이며 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여 결정된다. 현존하는 기술과 비교하여, 전체 데이터베이스 내의 모든 데이터에 대해 연산을 수행할 필요가 없고, 그에 의해, 과도한 컴퓨팅 리소스의 소비를 감소시킨다.
본 출원의 구현예는, 대응하는 데이터베이스 일관성 검증 디바이스를 추가로 제공한다. 도 6에 도시하는 바와 같이, 디바이스는 구체적으로 다음의 것을 포함한다: 체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값 - 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값은 본 출원의 앞선 구현예에서 제공되는 디바이스를 사용하는 것에 의해 결정됨 - 이 동일한지의 여부를 결정하도록 구성되는 결정 유닛(501); 및 제1 데이터베이스의 상태 값 및 제2 데이터베이스의 상태 값이 동일하다는 것이 결정되는 경우, 제1 데이터베이스의 상태와 제2 데이터베이스의 상태가 일관된다는 것을 결정하도록 구성되는 일관성 결정 유닛(502).
1990년대에는, 기술적 향상이 하드웨어 향상(예를 들면, 다이오드, 트랜지스터, 또는 스위치와 같은 회로 구조체에 대한 향상)인지 또는 소프트웨어 향상(방법 프로시져에 대한 향상)인지의 여부가 명백히 구별될 수 있었다는 것을 주목할 가치가 있다. 그러나, 기술이 발전함에 따라, 많은 방법 프로시져에 대한 현재의 향상은 하드웨어 회로 구조체에 대한 직접적인 향상으로서 간주될 수 있다. 설계자는, 향상된 방법 프로시져를 하드웨어 회로에 일반적으로 프로그래밍하여, 대응하는 하드웨어 회로 구조체를 획득한다. 따라서, 하드웨어 엔티티 모듈을 사용하는 것에 의해 방법 프로시져가 향상될 수 있다. 예를 들면, 프로그래머블 논리 디바이스(programmable logic device; PLD)(예를 들면, 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA))는 그러한 집적 회로이고, PLD의 논리적 기능은 디바이스 프로그래밍을 통해 유저에 의해 결정된다. 설계자는, 칩 제조자에게 주문형 집적 회로 칩을 설계 및 생산할 것을 요청하지 않고도 디지털 시스템을 PLD에 "통합"하는 프로그래밍을 수행한다. 또한, 현재로선, 통합 회로 칩을 수동으로 제조하는 대신, 그러한 타입의 프로그래밍은 "논리 컴파일러" 소프트웨어를 사용하는 것에 의해 대부분 구현된다. 논리 컴파일러 소프트웨어는 프로그램을 개발하고 작성하는 데 사용되는 소프트웨어 컴파일러와 유사하다. 원래의 코드는 컴파일을 위해 특정한 프로그래밍 언어로 작성될 필요가 있다. 그 언어는 하드웨어 기술 언어(hardware description language; HDL)로 칭해진다. 어드밴스드 불린 표현 언어(Advanced Boolean Expression Language; ABEL), 알테라 하드웨어 기술 언어(Altera Hardware Description Language; AHDL), 컨플루언스(Confluence), 코넬대 프로그래밍 언어(Cornell University Programming Language; CUPL), HDCal, 자바 하드웨어 기술 언어(Java Hardware Description Language; JHDL), Lava(라바), Lola(롤라), MyHDL, PALASM, 및 루비 하드웨어 기술 언어(Ruby Hardware Description Language; RHDL)와 같은 많은 HDL이 존재한다. 현재, 초고속 집적 회로 하드웨어 기술 언어(very-high-speed integrated circuit hardware description language; VHDL) 및 Verilog가 가장 일반적으로 사용된다. 기술 분야의 숙련된 자는 또한, 일단 방법 프로시져가 몇몇 설명된 하드웨어 기술 언어를 사용하는 것에 의해 논리적으로 프로그래밍되고 집적 회로 안으로 프로그래밍되면, 논리적 방법 프로시져를 구현하는 하드웨어 회로가 쉽게 획득될 수 있다는 것을 이해해야 한다.
컨트롤러는 임의의 적절한 방법을 사용하는 것에 의해 구현될 수 있다. 예를 들면, 컨트롤러는 마이크로프로세서 또는 프로세서, 또는 마이크로프로세서 또는 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장하는 컴퓨터 판독 가능 매체, 논리 게이트, 스위치, 주문형 집적 회로(application-specific integrated circuit; ASIC), 프로그래머블 논리 컨트롤러, 또는 내장형 마이크로프로세서의 형태일 수 있다. 컨트롤러의 예는 다음의 마이크로프로세서를 포함하지만 그러나 이들로 제한되지는 않는다: ARC 625D, Atmel(아트멜) AT91SAM, Microchip(마이크로칩) PIC18F26K20, 및 Silicone Labs(실리콘 랩스) C8051F320. 메모리 컨트롤러는 또한, 메모리의 제어 논리의 일부로서 구현될 수 있다. 기술 분야의 숙련된 자는 또한, 컴퓨터 판독 가능 프로그램 코드를 사용하는 것에 의해 컨트롤러를 구현하는 것 이외에, 컨트롤러가 논리 게이트, 스위치, 주문형 집적 회로, 프로그래머블 논리 컨트롤러, 및 내장형 마이크로컨트롤러의 형태로 동일한 기능을 구현하는 것을 허용하기 위해, 방법 단계에 대해 논리 프로그래밍이 수행될 수 있다는 것을 알고 있다. 따라서, 컨트롤러는 하드웨어 컴포넌트로 간주될 수 있고, 컨트롤러 내의 다양한 기능을 구현하도록 구성되는 장치는 또한 하드웨어 컴포넌트의 구조체로 간주될 수 있다. 또는, 다양한 기능을 구현하도록 구성되는 장치는, 심지어, 방법을 구현하기 위한 소프트웨어 모듈 및 하드웨어 컴포넌트에서의 구조체 둘 모두로서 간주될 수 있다.
이전 구현예에서 예시되는 시스템, 장치, 모듈, 또는 유닛은, 컴퓨터 칩 또는 엔티티를 사용하는 것에 의해 구현될 수 있거나, 또는 소정의 기능을 갖는 제품을 사용하는 것에 의해 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이다. 컴퓨터는, 예를 들면, 퍼스널 컴퓨터, 랩탑 컴퓨터, 셀룰러 전화, 카메라 폰, 스마트폰, 개인 휴대형 정보 단말(personal digital assistant), 미디어 플레이어, 내비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 또는 웨어러블 디바이스, 또는 이들 디바이스 중 임의의 것의 조합일 수 있다.
설명의 용이성을 위해, 장치는 기능을 다양한 유닛으로 분할하는 것에 의해 설명된다. 물론, 본 출원이 구현될 때, 각각의 유닛의 기능은 하나 이상의 단편(piece)의 소프트웨어 및/또는 하드웨어에서 구현될 수 있다.
기술 분야의 숙련된 자는, 본 개시의 구현예가, 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 출원은 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어와 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 출원은, 컴퓨터 사용 가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능 저장 매체(디스크 메모리, CD-ROM, 광학 메모리, 및 등등을 포함하지만 그러나 이들로 제한되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 출원은, 본 개시의 구현예에 기초하는 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 플로우차트 및/또는 블록도를 참조하여 설명된다. 컴퓨터 프로그램 명령어는 플로우차트 및/또는 블록도 내의 각각의 프로세스 및/또는 각각의 블록 및 플로우차트 및/또는 블록도 내의 프로세스 및/또는 블록의 조합을 구현하기 위해 사용될 수 있다는 것을 주목할 가치가 있다. 이들 컴퓨터 프로그램 명령어는, 범용 컴퓨터, 전용 컴퓨터, 임베딩된 프로세서, 또는 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 제공되어 머신을 생성할 수 있고, 그 결과, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 의해 실행되는 명령어는, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 디바이스를 생성한다.
컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스에게 특정한 방식으로 작동할 것을 지시할 수 있는 이들 컴퓨터 프로그램 명령어는, 컴퓨터 판독 가능 메모리에 저장될 수 있고, 그 결과, 컴퓨터 판독 가능 메모리에 저장되는 명령어는 명령어 디바이스를 포함하는 아티팩트(artifact)를 생성한다. 명령어 디바이스는 플로우차트 내의 하나 이상의 프로세스에서의 및/또는 블록도 내의 하나 이상의 블록에서의 특정한 기능을 구현한다.
이들 컴퓨터 프로그램 명령어는, 일련의 동작 및 단계가 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 수행되고, 그에 의해 컴퓨터 구현 프로세싱을 생성하도록, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스 상으로 로딩될 수 있다. 따라서, 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 실행되는 명령어는, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 단계를 제공한다.
통상적인 구성에서, 계산 디바이스는 하나 이상의 프로세서(CPU), 입력/출력 인터페이스, 네트워크 인터페이스, 및 메모리를 포함한다.
메모리는 비영구적 메모리, 랜덤 액세스 메모리(random access memory; RAM), 불휘발성 메모리, 및/또는 컴퓨터 판독 가능 매체의 다른 형태, 예를 들면, 리드 온리 메모리(read-only memory; ROM) 또는 플래시 메모리(플래시 RAM)을 포함할 수 있다. 메모리는 컴퓨터 판독 가능 매체의 한 예이다. 메모리는 컴퓨터 판독 가능 매체의 한 예이다.
컴퓨터 판독 가능 매체는, 임의의 방법 또는 기술을 사용하는 것에 의해 정보 저장을 구현하는, 영구적, 비영구적, 이동식, 및 비이동식 매체를 포함한다. 정보는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터일 수 있다. 컴퓨터 저장 매체의 예는, 상 변화 메모리(phase change memory)(PRAM), 정적 랜덤 액세스 메모리(static random access memory; SRAM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 다른 타입의 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 전기적으로 소거가능한 프로그래머블 리드 온리 메모리(electrically erasable programmable read-only memory; EEPROM), 플래시 메모리 또는 다른 메모리 기술, 콤팩트 디스크 리드 온리 메모리(compact disc read-only memory; CD-ROM), 디지털 다기능 디스크(digital video disk: DVD) 또는 다른 광학 스토리지, 카세트 자기 테이프, 자기 테이프/자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스를 포함하지만 그러나 이들로 제한되지는 않는다. 컴퓨터 저장 매체는 계산 디바이스에 의해 액세스 가능한 정보를 저장하기 위해 사용될 수 있다. 본 명세서에서의 정의에 기초하여, 컴퓨터 판독 가능 매체는, 일시적 매체(임시 매체), 예를 들면, 변조된 데이터 신호 및 캐리어를 포함하지 않는다.
엘리먼트의 목록을 포함하는 프로세스, 방법, 제품, 또는 디바이스가, 그들 엘리먼트를 포함할 뿐만 아니라, 명시적으로 열거되지 않은 다른 엘리먼트도 또한 포함하거나, 또는 그러한 프로세스, 방법, 제품 또는 디바이스에 내재하는 엘리먼트를 더 포함하도록, "포함한다(include)", "포함한다(comprise)", 또는 그들의 임의의 다른 변형어는 비배타적인 포함을 포괄하도록 의도된다는 것을 또한 주목할 가치가 있다. "~를 포함하는(includes a ...)" 앞에 오는 엘리먼트는, 추가적인 제약 없이, 그 엘리먼트를 포함하는 프로세스, 방법, 제품, 또는 디바이스에서 추가적인 동일한 엘리먼트의 존재를 배제하지는 않는다.
본 출원은, 컴퓨터에 의해 실행되는 컴퓨터 실행 가능 명령어, 예를 들면, 프로그램 모듈의 일반적인 맥락에서 설명될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 작업을 실행하는 또는 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조, 등등을 포함한다. 본 출원은 분산 컴퓨팅 환경에서도 또한 실시될 수 있다. 분산 컴퓨팅 환경에서, 작업은, 통신 네트워크를 통해 연결되는 원격 프로세싱 디바이스에 의해 수행된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은, 스토리지 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 모두에 위치될 수 있다.
본 명세서에서의 구현예는 점진적인 방식으로 설명된다. 구현예의 동일한 또는 유사한 부분에 대해서는, 구현예에 대해 참조가 이루어질 수 있다. 각각의 구현예는 다른 구현예와의 차이점에 중점을 둔다. 특히, 시스템 구현예는 기본적으로 방법 구현예와 유사하고, 따라서, 간략하게 설명된다. 관련된 부품의 경우, 방법 구현예에서의 관련 설명에 대해 참조가 이루어질 수 있다.
앞선 구현예는 단지 본 출원의 구현예일 뿐이며, 본 출원을 제한하도록 의도되는 것은 아니다. 기술 분야의 숙련된 자는 본 출원에 대해 다양한 수정 및 변경을 가할 수 있다. 본 출원의 취지 및 원리를 벗어나지 않으면서 만들어지는 임의의 수정예, 등가적 대체예, 또는 개선예는, 본 출원의 청구범위의 범위 내에 속할 것이다.

Claims (18)

  1. 데이터베이스 상태 결정 방법으로서,
    타겟 데이터베이스에 대해 수행되는 상태 전이 동작(state transition operation)을 결정하는 단계; 및
    상기 상태 전이 동작 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계를 포함하되, 상기 상태 값은 상기 타겟 데이터베이스의 상태를 나타내기 위해 사용되는, 데이터베이스 상태 결정 방법.
  2. 제1항에 있어서,
    타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정하는 단계는 구체적으로:
    상기 타겟 데이터베이스에 대한 상기 상태 전이 동작을 수행하기 위해 사용되는 데이터 동작 객체를 결정하는 단계를 포함하고,
    상기 상태 전이 동작 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계는 구체적으로:
    상기 결정된 데이터 동작 객체 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  3. 제2항에 있어서,
    상기 타겟 데이터베이스는 블록체인 데이터베이스이고, 상기 결정된 데이터 동작 객체 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계는 구체적으로:
    상기 데이터 동작 객체의 해시 값을 결정하는 단계; 및
    상기 데이터 동작 객체의 상기 결정된 해시 값 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  4. 제3항에 있어서,
    상기 데이터 동작 객체의 해시 값을 결정하는 단계는 구체적으로:
    상기 데이터 동작 객체를 직렬화하여 직렬화된 데이터를 획득하는 단계; 및
    상기 직렬화된 데이터의 해시 값을 결정하고, 상기 직렬화된 데이터의 상기 해시 값을 상기 데이터 동작 객체의 상기 해시 값으로서 사용하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  5. 제4항에 있어서,
    상기 타겟 데이터베이스에 대해 상기 상태 전이 동작을 수행하기 위해 사용되는 하나보다 더 많은 데이터 동작 객체가 존재하는 경우, 상기 데이터 동작 객체를 직렬화하여 직렬화된 데이터를 획득하는 단계는 구체적으로:
    모든 데이터 동작 객체에 의한 상기 상태 전이 동작을 수행하는 시퀀스가 고정되는 경우, 상기 상태 전이 동작을 수행하는 상기 시퀀스에 기초하여, 모든 상기 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여(splicing), 스플라이싱된 직렬화된 데이터를 획득하는 단계; 또는
    모든 데이터 동작 객체에 의한 상기 상태 전이 동작을 수행하는 시퀀스가 고정되지 않은 경우, 제1 미리 결정된 시퀀스에 기초하여, 모든 상기 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 상기 스플라이싱된 직렬화된 데이터를 획득하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  6. 제5항에 있어서,
    모든 상기 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여 스플라이싱된 직렬화된 데이터를 획득하는 단계는 구체적으로:
    모든 상기 데이터 동작 객체에 대응하는 상기 직렬화된 데이터를 스플라이싱할 때, 적어도 두 조각(piece)의 직렬화된 데이터 사이에 미리 결정된 세퍼레이터(separator)를 배치하고, 상기 미리 결정된 세퍼레이터가 배치된 이후 획득되는 모든 조각의 직렬화된 데이터를 스플라이싱하여, 상기 스플라이싱된 직렬화된 데이터를 획득하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  7. 제3항에 있어서,
    상기 데이터 동작 객체의 상기 결정된 해시 값 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하는 단계는 구체적으로:
    제2 미리 결정된 시퀀스에 기초하여, 상기 데이터 동작 객체의 상기 해시 값 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값을 스플라이싱하여, 스플라이싱된 데이터를 획득하는 단계; 및
    상기 스플라이싱된 데이터의 해시 값을 결정하고, 상기 스플라이싱된 데이터의 상기 해시 값을, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값으로서 사용하는 단계를 포함하는, 데이터베이스 상태 결정 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 타겟 데이터베이스는 블록체인 내의 임의의 노드에 대응하는 데이터베이스인, 데이터베이스 상태 결정 방법.
  9. 제1항에 있어서,
    상기 상태 값은 상기 타겟 데이터베이스에 저장되는 데이터의 특성을 고유하게 나타내기 위해 사용되는, 데이터베이스 상태 결정 방법.
  10. 데이터베이스 일관성 검증 방법으로서,
    체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값 - 상기 제1 데이터베이스의 상기 상태 값 및 상기 제2 데이터베이스의 상기 상태 값은 제1항 내지 제9항 중 어느 한 항에 따른 상기 방법을 사용하는 것에 의해 결정됨 - 이 동일한지의 여부를 결정하는 단계; 및
    상기 제1 데이터베이스의 상기 상태 값 및 상기 제2 데이터베이스의 상기 상태 값이 동일하다는 것을 결정하는 것에 응답하여, 상기 제1 데이터베이스의 상태와 상기 제2 데이터베이스의 상태가 일관된다는 것을 결정하는 단계를 포함하는, 데이터베이스 일관성 검증 방법.
  11. 데이터베이스 상태 결정 디바이스로서,
    타겟 데이터베이스에 대해 수행되는 상태 전이 동작을 결정하도록 구성되는 제1 결정 유닛; 및
    상기 결정된 상태 전이 동작 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성되는 제2 결정 유닛을 포함하되, 상기 상태 값은 상기 타겟 데이터베이스의 상태를 나타내기 위해 사용되는, 데이터베이스 상태 결정 디바이스.
  12. 제11항에 있어서,
    상기 제1 결정 유닛은 상기 타겟 데이터베이스에 대해 상기 상태 전이 동작을 수행하기 위해 사용되는 데이터 동작 객체를 결정하도록 구성되고; 그리고
    상기 제2 결정 유닛은, 상기 결정된 데이터 동작 객체 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성되는, 데이터베이스 상태 결정 디바이스.
  13. 제12항에 있어서,
    상기 제2 결정 유닛은 구체적으로, 제1 해시 값 결정 서브유닛 및 제1 상태 값 결정 서브유닛을 포함하고;
    상기 제1 해시 값 결정 서브유닛은 상기 데이터 동작 객체의 해시 값을 결정하도록 구성되고; 그리고
    상기 제1 상태 값 결정 서브유닛은, 상기 데이터 동작 객체의 상기 결정된 해시 값 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값에 기초하여, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값을 결정하도록 구성되는, 데이터베이스 상태 결정 디바이스.
  14. 제13항에 있어서,
    상기 제1 해시 값 결정 서브유닛은 구체적으로, 직렬화된 데이터 결정 서브유닛 및 제2 해시 값 결정 서브유닛을 포함하고;
    상기 직렬화된 데이터 결정 서브유닛은 상기 데이터 동작 객체를 직렬화하여 직렬화된 데이터를 획득하도록 구성되고; 그리고
    상기 제2 해시 값 결정 서브유닛은: 상기 직렬화된 데이터의 해시 값을 결정하도록 그리고 상기 직렬화된 데이터의 상기 해시 값을, 상기 데이터 동작 객체의 상기 해시 값으로서 사용하도록 구성되는, 데이터베이스 상태 결정 디바이스.
  15. 제14항에 있어서,
    상기 직렬화된 데이터 결정 서브유닛은 구체적으로 제1 스플라이싱 서브유닛 및 제2 스플라이싱 서브유닛을 포함하고;
    상기 제1 스플라이싱 서브유닛은: 상기 타겟 데이터베이스에 대해 상기 상태 전이 동작을 수행하기 위해 사용되는 하나보다 더 많은 데이터 동작 객체가 존재하고, 모든 데이터 동작 객체에 의한 상기 상태 전이 동작을 수행하는 시퀀스가 고정되는 경우, 상기 상태 전이 동작을 수행하는 상기 시퀀스에 기초하여, 모든 상기 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득하도록 구성되고; 그리고
    상기 제2 스플라이싱 서브유닛은: 상기 타겟 데이터베이스에 대해 상기 상태 전이 동작을 수행하기 위해 사용되는 하나보다 더 많은 데이터 동작 객체가 존재하고, 모든 상기 데이터 동작 객체에 의한 상기 상태 전이 동작을 수행하는 시퀀스가 고정되지 않은 경우, 제1 미리 결정된 시퀀스에 기초하여, 모든 상기 데이터 동작 객체에 대응하는 직렬화된 데이터를 스플라이싱하여, 스플라이싱된 직렬화된 데이터를 획득하도록 구성되는, 데이터베이스 상태 결정 디바이스.
  16. 제13항에 있어서,
    상기 제1 상태 값 결정 서브유닛은: 제2 미리 결정된 시퀀스에 기초하여, 상기 데이터 동작 객체의 상기 해시 값 및 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행되기 이전에 존재하는 상태 값을 스플라이싱하여, 상기 스플라이싱된 데이터를 획득하도록; 그리고
    상기 스플라이싱된 데이터의 해시 값을 결정하고, 상기 스플라이싱된 데이터의 상기 해시 값을, 상기 타겟 데이터베이스의 것이며 상기 상태 전이 동작이 수행된 이후에 존재하는 상태 값으로 사용하도록 구성되는, 데이터베이스 상태 결정 디바이스.
  17. 제11항 내지 제16항 중 어느 한 항에 있어서,
    상기 타겟 데이터베이스는 블록체인 내의 임의의 노드에 대응하는 데이터베이스인, 데이터베이스 상태 결정 디바이스.
  18. 데이터베이스 일관성 검증 디바이스로서,
    체크될 제1 데이터베이스의 상태 값 및 체크될 제2 데이터베이스의 상태 값 - 상기 제1 데이터베이스의 상기 상태 값 및 상기 제2 데이터베이스의 상기 상태 값은 제11항 내지 제17항 중 어느 한 항에 따른 상기 디바이스를 사용하는 것에 의해 결정됨 - 이 동일한지의 여부를 결정하도록 구성되는 결정 유닛; 및
    상기 제1 데이터베이스의 상기 상태 값 및 상기 제2 데이터베이스의 상기 상태 값이 동일하다는 것을 결정하는 것에 응답하여, 상기 제1 데이터베이스의 상태와 상기 제2 데이터베이스의 상태가 일관된다는 것을 결정하도록 구성되는 일관성 결정 유닛을 포함하는, 데이터베이스 일관성 검증 디바이스.
KR1020197020615A 2017-05-25 2018-05-23 데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스 KR102231058B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710377721.8A CN107247749B (zh) 2017-05-25 2017-05-25 一种数据库状态确定方法、一致性验证方法及装置
CN201710377721.8 2017-05-25
PCT/CN2018/087966 WO2018214897A1 (zh) 2017-05-25 2018-05-23 一种数据库状态确定方法、一致性验证方法及装置

Publications (2)

Publication Number Publication Date
KR20190096391A true KR20190096391A (ko) 2019-08-19
KR102231058B1 KR102231058B1 (ko) 2021-03-25

Family

ID=60017352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197020615A KR102231058B1 (ko) 2017-05-25 2018-05-23 데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스

Country Status (14)

Country Link
US (1) US10789243B2 (ko)
EP (1) EP3557452B1 (ko)
JP (1) JP6921206B2 (ko)
KR (1) KR102231058B1 (ko)
CN (1) CN107247749B (ko)
AU (1) AU2018274424B2 (ko)
BR (1) BR112019014478A2 (ko)
CA (1) CA3049831C (ko)
MX (1) MX2019008383A (ko)
PH (1) PH12019501637A1 (ko)
RU (1) RU2725760C1 (ko)
SG (1) SG11201906495TA (ko)
TW (1) TWI710916B (ko)
WO (1) WO2018214897A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107247749B (zh) 2017-05-25 2020-08-25 创新先进技术有限公司 一种数据库状态确定方法、一致性验证方法及装置
CN107807982B (zh) * 2017-10-27 2020-09-18 中国农业银行股份有限公司 一种异构数据库的一致性校验方法及装置
CN107729541A (zh) * 2017-10-31 2018-02-23 咪咕数字传媒有限公司 一种数据处理方法、装置及计算机可读存储介质
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11146407B2 (en) 2018-04-17 2021-10-12 Digicert, Inc. Digital certificate validation using untrusted data
CN108615156A (zh) * 2018-05-09 2018-10-02 上海魅联信息技术有限公司 一种基于区块链的数据结构
CN109345159A (zh) * 2018-08-21 2019-02-15 深圳市口袋网络科技有限公司 一种数据写入方法及装置、设备、存储介质
CN109446211B (zh) * 2018-10-08 2020-08-14 联动优势科技有限公司 一种一致性校验方法及装置
TWI710238B (zh) * 2018-12-17 2020-11-11 財團法人國家實驗研究院 分散式儲存系統之同步刪除方法
US11044096B2 (en) * 2019-02-04 2021-06-22 Accenture Global Solutions Limited Blockchain based digital identity generation and verification
US11122091B2 (en) * 2019-04-16 2021-09-14 FireMon, LLC Network security and management system
CN110175758A (zh) * 2019-05-08 2019-08-27 杭州宇链科技有限公司 一种基于区块链的链上多层自动分润方法
KR102620584B1 (ko) * 2019-05-17 2024-01-02 삼성에스디에스 주식회사 블록체인 기반 시스템에서 상태 db의 무결성을 보장하는 장치 및 그 방법
WO2019179538A2 (en) * 2019-07-11 2019-09-26 Alibaba Group Holding Limited Shared blockchain data storage
CN111108478B (zh) 2019-07-11 2023-11-21 创新先进技术有限公司 一种用于通信和共享区块链数据的方法、系统、和装置
SG11202001989WA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
CN112559484A (zh) * 2019-09-25 2021-03-26 伊姆西Ip控股有限责任公司 用于管理数据对象的方法、设备和计算机程序产品
CN111639952A (zh) * 2020-05-28 2020-09-08 深圳壹账通智能科技有限公司 基于区块链的退货核验方法、系统、服务器及终端
CN112463132B (zh) * 2020-11-13 2023-06-06 四川新网银行股份有限公司 一种数据库切换工具及切换方法
CN113420036A (zh) * 2021-06-22 2021-09-21 南方电网数字电网研究院有限公司 一种电网监控系统内存库关系库一致性校验方法
US20230185670A1 (en) * 2021-12-13 2023-06-15 Scality, S.A. Method and apparatus for monitoring storage system replication

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116693A1 (en) * 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
US20170132257A1 (en) * 2015-08-28 2017-05-11 Swirlds, Inc. Methods and apparatus for a distributed database within a network

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03152992A (ja) 1989-10-27 1991-06-28 W R Grace & Co 印刷回路板及びその製造方法
CN1054886A (zh) 1990-03-19 1991-10-02 湖南省森林植物园 一种固体碳酸饮料的生产工艺
US9824107B2 (en) * 2006-10-25 2017-11-21 Entit Software Llc Tracking changing state data to assist in computer network security
CN101957858A (zh) * 2010-09-27 2011-01-26 中兴通讯股份有限公司 数据比对方法和装置
CN102354292A (zh) * 2011-09-21 2012-02-15 国家计算机网络与信息安全管理中心 主、备数据库记录一致性校验方法及系统
CN102662946B (zh) * 2012-02-20 2015-10-07 北京地拓科技发展有限公司 一种自动监测数据库中记录变化的方法和系统
US9697238B2 (en) * 2012-03-01 2017-07-04 Microsoft Technology Licensing, Llc Drift detection and notification
US9032247B2 (en) * 2012-07-26 2015-05-12 Apple Inc. Intermediate database management layer
JP2014059757A (ja) * 2012-09-18 2014-04-03 International Business Maschines Corporation 木構造を有するデータを処理する装置、処理方法およびプログラム
CN103164523A (zh) * 2013-03-19 2013-06-19 华为技术有限公司 数据一致性检查方法、装置及系统
CN103345521B (zh) * 2013-07-17 2016-04-13 腾讯科技(深圳)有限公司 一种在哈希表数据库中处理键值的方法和装置
CN103678583B (zh) * 2013-12-11 2017-07-21 北京华胜天成科技股份有限公司 结构化数据比较的方法及系统
CN104731792B (zh) * 2013-12-19 2018-09-21 中国银联股份有限公司 数据库一致性校验方法及系统、定位数据库差异的方法及系统
CN105447046A (zh) * 2014-09-02 2016-03-30 阿里巴巴集团控股有限公司 一种分布式系统数据一致性处理方法、装置和系统
CN104346454B (zh) * 2014-10-30 2017-12-05 上海新炬网络技术有限公司 基于Oracle数据库的数据一致性校验方法
US9436923B1 (en) * 2015-02-26 2016-09-06 Skuchain, Inc. Tracking unitization occurring in a supply chain
JP6364132B2 (ja) * 2015-03-31 2018-07-25 ナスダック, インコーポレイテッドNasdaq, Inc. ブロックチェーン取引記録のシステムおよび方法
CN106484690A (zh) * 2015-08-24 2017-03-08 阿里巴巴集团控股有限公司 一种数据迁移的验证方法及装置
JP6452156B2 (ja) * 2015-09-03 2019-01-16 日本電信電話株式会社 許諾情報管理システム、利用者端末、権利者端末、許諾情報管理方法、および、許諾情報管理プログラム
CN105488675B (zh) * 2015-11-25 2019-12-24 布比(北京)网络技术有限公司 一种区块链的分布式共享总账构建方法
CN105976232B (zh) * 2016-06-24 2020-04-28 深圳前海微众银行股份有限公司 资产交易方法和装置
CN106230808A (zh) 2016-07-28 2016-12-14 杭州云象网络技术有限公司 一种基于区块链技术的个人征信系统建设方法
CN106250721A (zh) * 2016-07-28 2016-12-21 杭州云象网络技术有限公司 一种基于区块链的电子版权保护方法
CN106357405A (zh) * 2016-09-19 2017-01-25 弗洛格(武汉)信息科技有限公司 一种基于区块链技术一致性算法的数据管理方法及系统
CN107247749B (zh) * 2017-05-25 2020-08-25 创新先进技术有限公司 一种数据库状态确定方法、一致性验证方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170132257A1 (en) * 2015-08-28 2017-05-11 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US20170116693A1 (en) * 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger

Also Published As

Publication number Publication date
CN107247749B (zh) 2020-08-25
US20200057760A1 (en) 2020-02-20
US10789243B2 (en) 2020-09-29
MX2019008383A (es) 2019-09-11
KR102231058B1 (ko) 2021-03-25
WO2018214897A1 (zh) 2018-11-29
BR112019014478A2 (pt) 2020-05-26
RU2725760C1 (ru) 2020-07-06
PH12019501637A1 (en) 2020-03-16
SG11201906495TA (en) 2019-08-27
EP3557452B1 (en) 2021-09-15
JP2020509451A (ja) 2020-03-26
CA3049831C (en) 2021-12-14
EP3557452A1 (en) 2019-10-23
TWI710916B (zh) 2020-11-21
CN107247749A (zh) 2017-10-13
AU2018274424B2 (en) 2020-07-02
TW201901484A (zh) 2019-01-01
CA3049831A1 (en) 2018-11-29
JP6921206B2 (ja) 2021-08-18
AU2018274424A1 (en) 2019-08-01
EP3557452A4 (en) 2020-01-22

Similar Documents

Publication Publication Date Title
KR102231058B1 (ko) 데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스
CA3046838C (en) Method and device for processing service request
JP6804668B2 (ja) ブロックデータ検証方法および装置
EP3910513A1 (en) Blockchain-based data processing method and device
EP3547168A1 (en) Block chain based data processing method and device
CN107578338B (zh) 一种业务发布方法、装置及设备
CN116304704A (zh) 一种模型训练方法、装置、存储介质及电子设备
JP6622926B2 (ja) 分散型サービス処理の完全性をチェックする方法及び装置
CN115129728A (zh) 一种文件校验的方法及装置
CN110995447B (zh) 一种数据存证方法、装置、设备以及介质
CN112749152A (zh) 智能合约的数据迁移方法、装置及存储介质
CN107645541B (zh) 数据存储方法、装置及服务器
CN107015792B (zh) 一种图表统一动画的实现方法以及设备
CN110674106A (zh) 保单数据的存储方法、装置、设备及计算机可读存储介质
CN112087488A (zh) 一种重要云机器人节点的确定方法、装置、设备及介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant