KR20220100971A - 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템 - Google Patents

데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템 Download PDF

Info

Publication number
KR20220100971A
KR20220100971A KR1020227021254A KR20227021254A KR20220100971A KR 20220100971 A KR20220100971 A KR 20220100971A KR 1020227021254 A KR1020227021254 A KR 1020227021254A KR 20227021254 A KR20227021254 A KR 20227021254A KR 20220100971 A KR20220100971 A KR 20220100971A
Authority
KR
South Korea
Prior art keywords
database
blockchain
data
command
transaction
Prior art date
Application number
KR1020227021254A
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 KR20220100971A publication Critical patent/KR20220100971A/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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/2308Concurrency control
    • 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/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

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

Abstract

데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템이 개시된다. 상이한 노드들 상의 다수의 애플리케이션들이 설명되는 실시예들을 사용하여 데이터 충돌들을 방지하기 위해 글로벌 데이터 합치를 자동으로 수행할 수 있다. 하나의 방법은 데이터베이스 애플리케이션들에 의해 데이터베이스들이 수정될 때 해당 데이터베이스들을 모니터링하여, 트랜잭션 로그들로부터 데이터 작업들을 추출하고, 데이터 작업들을 일반 포맷으로 변환하고, 다수의 노드들에서 데이터 합치 체크를 완료하기 위해 블록체인 상에서 스마트 계약을 활성화하는 것을 수반한다. 각각의 노드는 블록체인 상의 블록들을 모니터링하고 데이터를 다시 데이터베이스에 동기화한다. 데이터가 충돌하는 경우, 데이터는 합치를 통과하지 못하고 블록체인에서의 다른 노드들과 동기화하지 못한다. 국부 노드들은 무효한 데이터를 검출할 때 자동으로 롤백한다.

Description

데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템
본 출원은 대체로 블록체인 시스템에 관한 것이고, 특히 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템에 관한 것이다.
많은 전통적인 기업 소프트웨어 애플리케이션들이 데이터베이스 애플리케이션들이고, 종종 많은 비즈니스 서비스들이 관계형 또는 비관계형 데이터베이스들에 기반하여 구축된다. 기업 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 마이그레이션하는 프로세스에서의 일반적인 문제는, 블록체인들의 전체 구조가 기업 애플리케이션들에 의해 사용되는 전통적인 데이터베이스들의 구조와는 매우 상이하다는 것이다. 기업 애플리케이션들은 블록체인의 구조 및 동작 모드에 맞게 상당히 수정되거나 또는 심지어 재작성되어야만 한다.
기업 애플리케이션들은 통상적으로 막대한 양들의 사설 또는 기밀 데이터를 포함하는 반면 블록체인은 본질적으로 참가자들 간에 트랜잭션들의 투명성을 촉진하는 분산 원장(distributed ledger) 기술이다. 그러므로 기업 데이터의 사적인 부분들을 블록체인 안으로 기입하는 것은 필요하지도 않고 바람직하지도 않다. 따라서 블록체인 기반 기업 애플리케이션들조차도 데이터베이스들에 의존적이다.
놀랄 것도 없이, 실세계 애플리케이션들에서, 많은 블록체인 애플리케이션들은 일부 데이터가 블록체인에 상주하는 반면 다른 사설 데이터가 종종 데이터베이스에 국부적으로 저장되는 하이브리드 애플리케이션들이다. 그러면 문제는 국부적으로 저장된 데이터가 어떻게 블록체인과 동기화되는지이다.
제품이 다양한 스테이지들을 통해 추적되는 전형적인 시나리오에서, 제품에 관한 정보는 생산, 물류 및 판매에서와 같은 모든 스테이지에서 블록체인 안으로 기입된다. 동시에, 비인가 노드가 데이터를 기입하는 것을 방지하거나 또는 아니면 부정확한 데이터가 입력되는 것을 방지하는 것이 필요하다. 예를 들어, 주어진 제품이 판매 스테이지로 이미 진행되었다면, 제조업자가 생산 데이터를 변경하고 블록체인 안으로 삽입하는 것이 방지되어야 한다. 공급 체인 금융이 유사한 형태로 작동한다. 원료 저장에서부터 제품 배송, 물류, 도매, 및 소매까지의 프로세스 데이터가 기록된다. 이 프로세스 동안, 각각의 노드는 제품에 관한 대량의 데이터를 생성하며, 그 데이터를 각각의 참가자와 동기화하고, 특정한 메시지들 ― 그 메시지들의 모두는 전통적인 애플리케이션들에 대한 상당한 작업부하(workload)를 구성함 ― 을 거부한다. 더욱이, 순수 블록체인 시스템이 사용되면, 국부 ERP(enterprise resource planning) 및 CRM(customer relationship management) 시스템들에 저장되는 블록체인 데이터 및 데이터베이스 데이터의 동기화는 어려운 기술적 도전과제를 제시한다.
따라서 이들 문제들 중 적어도 일부를 완화하기 위해 전통적인 데이터베이스 애플리케이션들을 블록체인 기술과 결합하는 개선된 시스템들 및 방법들이 요망된다.
본 발명의 하나의 양태에 따라 제1 데이터베이스 및 블록체인과 통신하는 제1 어댑터; 제2 데이터베이스 및 블록체인과 통신하는 제2 어댑터를 포함하는 시스템이 제공된다. 블록체인은 적어도 제1 노드와 제2 노드, 제1 데이터베이스를 사용하여 제1 노드 상에서 실행중인 제1 애플리케이션: 제2 데이터베이스를 사용하여 제2 노드 상에서 실행중인 제2 애플리케이션을 포함하며; 제1 및 제2 어댑터들은, 각각 제1 및 제2 데이터베이스들에 대한 트랜잭션 로그들을 모니터링하여, 트랜잭션 로그들로부터 데이터 작업들을 추출하고; 데이터 작업들을 일반 포맷으로 변환하고; 그리고 상기 제1 및 제2 노드들에서 합치(consensus) 투표를 완료하기 위해 블록체인 상에서 스마트 계약을 활성화한다.
본 발명의 다른 양태에 따라 블록체인에 대한 데이터베이스를 사용하여 데이터베이스 애플리케이션을 마이그레이션하는 방법이 제공된다. 그 방법은 데이터베이스의 로그를 모니터링하고 블록체인에 의해 검정될 데이터베이스 커맨드를 식별하는 단계; 식별된 데이터베이스 커맨드에 의해 영향을 받는 테이블에 데이터베이스에서의 스테이터스 열을 제공하는 단계; 스테이터스 열을 제1 값으로 설정하기 위해, 데이터베이스 커맨드에 기초하여, 제1 커맨드를 실행하는 단계; 식별된 데이터베이스 커맨드에 대응하는 블록체인 커맨드를 블록체인에 검정을 위해 제시하는 단계; 블록체인으로부터 검정을 수신할 시, 스테이터스를 제1 값과는 상이한 제2 값으로 설정하기 위해, 데이터베이스 커맨드에 기초하여, 제2 커맨드를 실행함으로써 데이터베이스를 업데이트하는 단계; 및 그렇지 않으면 데이터베이스 커맨드를 롤백하는 단계를 포함한다.
본 발명의 다른 양태에 따라 데이터베이스를 사용하는 데이터베이스 애플리케이션을 블록체인을 사용하는 블록체인 애플리케이션으로, 애플리케이션을 수정하는 일 없이, 마이그레이션하는 시스템이 제공된다. 그 시스템은 데이터베이스 프록시와 블록체인 인터페이스를 포함하는 어댑터를 포함하며, 어댑터는 프로세서 실행가능 명령어들을 포함하며, 명령어들은, 프로세서 상에서 실행될 때, 데이터베이스의 로그를 모니터링하고 블록체인에 의해 검정될 데이터베이스 커맨드를 식별하는 단계; 식별된 데이터베이스 커맨드에 의해 영향을 받는 테이블에 데이터베이스에서의 스테이터스 열을 제공하는 단계; 스테이터스 열을 제1 값으로 설정하기 위해, 데이터베이스 커맨드에 기초하여, 제1 커맨드를 실행하는 단계; 식별된 데이터베이스 커맨드에 대응하는 블록체인 커맨드를 블록체인에 검정을 위해 제시하는 단계; 블록체인으로부터 검정을 수신할 시, 스테이터스를 제1 값과는 상이한 제2 값으로 설정하기 위해, 데이터베이스 커맨드에 기초하여, 제2 커맨드를 실행함으로써 데이터베이스를 업데이트하는 단계; 및 그렇지 않으면 데이터베이스 커맨드를 롤백하는 단계를 수행하도록 프로세서를 구성한다.
본 발명의 다른 양태에 따라 블록체인에 연결되는 노드들 상에서 실행중인 애플리케이션들이 방법이 제공되며, 그 방법은 데이터베이스들이 데이터베이스 애플리케이션들에 의해 수정될 때 애플리케이션들에 의해 사용되는 데이터베이스들에 대한 트랜잭션 로그들을 모니터링하는 단계; 트랜잭션 로그들로부터 데이터 작업들을 추출하는 단계; 데이터 작업들을 일반 포맷으로 변환하는 단계; 및 상기 다수의 노드들에서 데이터 합치 체크를 완료하기 위해 블록체인 상에서 스마트 계약을 활성화하는 단계를 포함한다.
본 발명의 또 다른 양태에 따라 블록체인의 제1 노드에 연관되는 제1 데이터베이스를 블록체인 상에서 제2 노드에 연관되는 제2 데이터베이스와 동기화하는 방법이 제공되며, 그 방법은, 제1 노드에서: 제1 데이터베이스에 대한 트랜잭션 로그들의 메시지 큐로부터 로그를 검색하는 단계; 로그로부터 트랜잭션을 식별하고 트랜잭션 데이터를 미리 결정된 포맷으로 저장하는 단계; 트랜잭션 데이터를 블록체인 안으로 저장하기 위해 로그에 기초하여 스마트 계약을 호출하는 단계; 제2 노드에서: 블록체인으로부터 트랜잭션 데이터를 검색하는 단계; 트랜잭션을 제2 데이터베이스에 저장하기 위해 트랜잭션 데이터에 연관되는 제1 커맨드를 실행하는 단계를 포함한다.
본 발명의 실시예들을 예시로만 도시하는 도면들에서,
도 1은 본 발명의 일 실시예의 예시적인 시스템의 단순화된 개략도이며;
도 2a 내지 도 2c는 데이터베이스 커맨드들의 간단한 수정을 위한 단계들을 포함하는 예시적인 프로세스에서의 단계들을 요약하는 흐름도를 도시하며;
도 3a는 공통 데이터베이스를 이용한 두 개의 애플리케이션들의 단순화된 개략도이며;
도 3b는 블록체인 데이터와 동기화되는 다수의 데이터베이스 애플리케이션들의 단순화된 개략도이며; 그리고
도 4는 블록체인과의 상호작용을 통해 동기화되는 로컬 데이터베이스를 갖는 다수의 데이터베이스 애플리케이션들을 이용하는, 본 발명의 예시적인 일 실시예의 공급 체인 시스템의 개략도이다.
본 발명의 적어도 일부 실시예들은 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 마이그레이션하는 것에 관련된 도전과제들을 해결한다. 이것들은 블록체인을 이용하여 데이터베이스에서의 적어도 키 선택 데이터를 자동 변환 및 동기화함으로써 다른 노드들의 데이터베이스 데이터를 동기화하는 것을 포함한다. 적어도 일부 실시예들에서, 어댑터들이 블록체인의 어떠한 지식 없이도 자유롭게 애플리케이션들 자체를 실행하게 하는 블록체인과 로컬 데이터베이스들 사이의 데이터 교환을 용이하게 하는데 사용된다.
본 발명의 다양한 실시예들의 설명이 아래에서 제공된다. 본 개시에서, "포함하는"이란 용어와 연계하여 사용될 때 "a" 또는 "an"이란 단어의 사용에 해당하는 표현은 "하나"를 의미할 수 있지만, 또한 "하나 이상", "적어도 하나" 및 "하나 또는 하나를 초과하는" 의미와 일치한다. 단수 형태로 표현되는 임의의 엘리먼트는 또한 그것의 복수 형태를 포함한다. 복수 형태로 표현되는 임의의 엘리먼트는 또한 그것의 단수 형태를 포함한다. 본 개시에서 사용되는 바와 같은 "복수"는 하나를 초과하는, 예를 들어, 둘 이상, 셋 이상, 넷 이상 등을 의미한다. "상단", "하단", "상향", "하향", "수직으로" 및 "측방향으로"와 같은 방향성 용어들은 상대적 언급을 제공할 목적으로만 사용되고, 임의의 물품이 사용 중에 위치되거나, 어셈블리에서 또는 환경을 기준으로 장착되어야 하는 방법에 대한 임의의 제한을 제시하는 것으로 의도되지 않는다.
용어들 "포함하는", "갖는", "구비하는", 및 "담고 있는", 그리고 그것들의 문법적 변형들은 포괄적이거나 또는 개방형이고 추가적인 언급되지 않은 엘리먼트들 및/또는 방법 단계들을 배제하지 않는다. "본질적으로 ~로 구성되는"이란 용어는, 조성, 용도 또는 방법에 관련하여 본 개시에서 사용될 때, 추가적인 엘리먼트들, 방법 단계들 또는 추가적인 엘리먼트들 및 방법 단계들 양쪽 모두가 존재할 수 있음을 나타내지만, 이들 추가들이 언급된 조성, 방법, 또는 용도가 역할을 하는 방식에 실질적으로 영향을 미치지 않는다. "구성되는"이란 용어는, 조성, 용도, 또는 방법에 관련하여 본 개시에서 사용될 때, 추가적인 엘리먼트들 및/또는 방법 단계들의 존재를 배제한다.
"블록체인"이 컴퓨팅 디바이스들의 공공 또는 사설 피어 투 피어 네트워크에서 트랜잭션들을 기록하는 변조 방지(tamper-evident) 공유 디지털 원장이다. 이 원장은 암호 해시 링크된 블록들의 성장하는 순차적 체인으로서 유지된다.
"노드"가 블록체인 네트워크 상의 디바이스이다. 디바이스는 통상적으로 프로세서 판독가능 명령어들을 갖는 메모리를 포함하는 프로세서 판독가능 매체에 상호 연결된 프로세서를 갖는 컴퓨터이다.
추가적으로, "제1", "제2", "제3" 등의 용어들은 설명 목적으로만 사용되고, 상대적 중요도를 나타내거나 암시하는 것으로서 해석될 수 없다.
본 발명의 설명에서, 용어들 "장착되는", "링크되는" 및 "연결되는"은 명시적으로 정의되고 달리 제한되지 않는 한 넓은 의미로 해석되어야 한다는 것에 또한 주의해야 한다. 예를 들어, 이는 하드 연결 또는 소프트 연결 중 어느 하나의 고정 연결, 또는 조립 연결, 또는 통합 연결일 수 있으며; 이는 직접 연결되거나 또는 중개자를 통해 간접 연결될 수 있다. 기술 전문가들의 경우, 본 발명의 위의 용어들의 특정 의미들이 문맥적으로 이해될 수 있다.
본 발명의 실시예들을 예시하는 도면들에서, 동일하거나 또는 유사한 참조 라벨들은 동일하거나 또는 유사한 부분들에 대응한다. 본 발명의 설명에서, "복수의" 의미는 달리 특정되지 않는 한 둘 이상을 의미하며; "위", "아래", "좌측", "우측", "내부", "외부", "앞단(front end)", "뒷단(back end)", "머리", "꼬리"라는 용어들, 도면들에서 도시된 배향 또는 위치적 관계의 방향들 또는 위치들은 지시된 디바이스 또는 엘리먼트가 특정 배향을 가져야만 하고 특정 배향으로 구성되고 동작되어야 함을 나타내거나 또는 암시하기보다는 단지 본 발명을 설명하는 편의와 설명의 단순화를 위한 것이고, 그러므로 본 발명의 제한으로서 사용될 수 없다는 것에 주의해야 한다.
추가적으로, "체인"은 달리 특정되지 않거나 또는 문맥이 명확하게 달리 나타내지 않는 한 "블록체인"과 통상적으로 교환적으로 사용된다.
기본 시스템 아키텍처
도 1은 본 발명의 일 실시예를 예시하는 시스템(100)의 개략도를 묘사한다. 제1 데이터베이스 애플리케이션(101)이 제1 데이터베이스(102)와 데이터를 교환한다. 제2 데이터베이스 애플리케이션(110)이 제2 데이터베이스(109)와 데이터 통신한다. 데이터베이스들(102, 109)은 로컬 데이터베이스들일 수 있다.
제1 블록체인-데이터베이스 어댑터(103)가 데이터베이스(102)에 대한 로그의 실시간 청취 또는 모니터링을 위한 데이터베이스 플러그 인과 블록체인(111)과 상호작용하기 위한 블록체인 플러그 인 또는 인터페이스를 포함한다.
제2 블록체인-데이터베이스 어댑터(108)가 데이터베이스(109)에 대한 로그의 실시간 청취 또는 모니터링을 위한 데이터베이스 플러그 인과 블록체인(111)과 상호작용하기 위한 블록체인 플러그 인 또는 인터페이스를 포함한다.
노드들(104, 105, 106)은 상이한 조직들에서 전개되고, 분산 계정을 완료하고 스마트 계약(107)과 같은 스마트 계약들을 실행하는 블록체인 노드들이다.
애플리케이션(101)은 임의의 언어로 기입된 네이티브 데이터베이스 애플리케이션일 수 있다. 애플리케이션(101)이 데이터베이스(102)와 상호작용하므로 블록체인(111)의 임의의 지식을 가질 필요가 없다.
데이터베이스(102)는 국부 NoSQL 데이터베이스, 또는 Oracle™, 또는 MySQL™과 같은 SQL(structured query language)을 이용하는 관계형 데이터베이스 관리 시스템일 수 있다. 대안으로 데이터베이스(102)는 MongoDB, Cassandra 등일 수 있다. 데이터베이스(102)는 모든 관련 국부 트랜잭션들의 세부사항들을 기록하는 BINLOG 또는 REDO 로그와 같은 데이터베이스 로그를 생성하도록 구성된다. 데이터베이스(102)가 로그를 지원하지 않으면, 대체 방법들은 데이터베이스를 주기적으로 스캔하고 변경들을 식별하도록 구현된다. 이는 데이터베이스(102)에서의 태스크 잡 또는 트리거일 수 있다.
이 실시예에서의 블록체인-데이터베이스 어댑터(103)는 두 개의 플러그 인들, 즉, 데이터베이스 로그의 실시간 청취 및/또는 파싱을 위한 데이터베이스 플러그 인과 블록체인(111)과 상호작용하는 블록체인 플러그 인을 포함한다.
데이터베이스 플러그 인은 데이터베이스 변경 레코드를 {"Transactionid": "XXX", {"Table": "Salary", {"operation": "delete"}, "before": {[{"col1": "a1", "col2": "b1"}, {"col1": "a2", "col2": "b2"}...]}, "after": {[{"col1":" A11", "col2": "b11"} {"col1": "a22", "col2": "b22"}...]}}} 포맷의 표준화된 JSON 문자열로 변환한다.
블록체인-데이터베이스 어댑터(103)는 상이한 블록체인들에 대한 상이한 플러그 인들을 사용할 수 있고 표준화된 JSON(JavaScript Object Notation) 문자열들을 블록체인 스마트 계약에게 글로벌 합치를 위해 전달한다.
블록체인 노드에서 실행되고 있는 스마트 계약(107)이, 다음 계약 규칙들에 따라 제출된 데이터에 대한 검증을 수행한다: (1) 데이터 제출 계정은 법적 계정에 속하고 제출된 데이터의 콘텐츠는 계정의 특권과 매칭하며; (2) 데이터 유형 및 데이터 범위는 법적이다.
본 발명의 실시예들에서 이용되는 애플리케이션(101), 연관된 플러그인들, 어댑터(103), 데이터베이스(102) 스마트 계약들 등과 같은 소프트웨어의 각각의 피스는 프로세서 판독가능 명령어들 또는 프로세서 실행가능 명령어들을 갖는 메모리를 포함하는 프로세서 판독가능 매체에 상호 연결되는 프로세서를 갖는 디바이스, 통상적으로 컴퓨터 상에서 실행 또는 수행된다. 이들 명령어들은, 실행될 때, 나중에 논의될 바와 같이 본 개시에서 인코딩된 단계들을 수행한다. 컴퓨팅 디바이스들은, 실행되고 있는 소프트웨어의 특정 피스에 의존하여, 노드들, 서버 컴퓨터들 또는 다른 서버 또는 클라이언트 디바이스들의 형태일 수 있다.
예를 들어, 공급 체인에서, 제1 계정이 제조업자에 속하며, 제2 계정이 물류 제공자에 속하고 제3 계정이 소매업자에 속한다. 스마트 계약은 제조업자의 키를 사용하여 제품 관련 데이터가 제출되는지를 체크한다. 이 예에서, 제1 계정 또는 제조업자의 계정은 제품 관련 데이터만 제공할 수 있고 물류 또는 소비 데이터를 제공할 권한이 없다. 더구나, 제공된 데이터의 일부는 수정이 금지된다.
블록체인-데이터베이스 어댑터(108)는 데이터베이스(109)에서의 국부 변경들을 실시간으로 모니터링하고 추가로 블록체인(111) 상의 모든 새로운 블록들에서 트랜잭션들을 실시간으로 모니터링한다. 어댑터(108)는 국부 데이터에 관련된 트랜잭션들을 필터링하고, 그 데이터를 데이터베이스 작업들로 변환한다. 데이터베이스 작업을 실행함으로써, 블록체인 데이터는 로컬 데이터베이스에 동기화된 채로 유지된다. 예를 들어, 삽입 작업에 연관된 데이터는 하나 이상의 삽입 SQL 문들로 국부적으로 복원되고 로컬 데이터베이스에서 실행된다. 실행이 실패하면, 데이터는 먼저 삭제되고 SQL 커맨드는 다시 실행되어, 국부 레코드가 블록체인에서 합치 레코드와 일치하는 것을 보장한다.
블록체인을 통한 데이터베이스 애플리케이션의 데이터 동기화
본 개시는 블록체인을 통해 데이터베이스 애플리케이션들의 데이터 동기화를 완료하는 동작의 방법과, 그 단계들을 제공한다.
하나의 예시적인 실시예에서, 데이터베이스가 국부 환경에서 커밋(commit)되지만 글로벌 합치를 기다리는 레코드의 임시 데이터 스테이터스를 기록하는 것을 가능하게 하기 위해, 블록체인에 동기화될 필요가 있는 데이터 레코드들을 갖는 각각의 영향받은 테이블에 추가의 스테이터스 열(예컨대, "BCStatus"라고 함)이 추가되거나 또는 첨부된다. 추가의 스테이터스 열은 일반적으로 미리 결정된 값들의 열거된 세트로부터 선택되는 값을 가질 수 있다. 예를 들어, 추가의 스테이터스 열은 "참" 또는 "거짓"; "0" 또는 "1"; 등과 같은 두 개의 값들 중 하나로만 설정될 수 있는 부울 데이터 유형일 수 있다. 이 예시적인 실시예에서, 추가의 스테이터스 열의 디폴트 값은 "0"이고, 블록체인으로부터 확인을 수신한 후, 그 값은 "1"로 변경된다. 추가의 스테이터스 열의 이 값은 또한 국부 애플리케이션들이 글로벌 합치 스테이터스를 검출하는 수단을 제공한다.
하나의 실시예에서, 국부 데이터와 글로벌 데이터 사이의 데이터 충돌들을 방지하기 위해, 블록체인에 동기화될 필요가 있는 임의의 데이터베이스 레코드가 "1"로 설정된 "이전" 섹션에서의 "BCStatus"를 가져야만 한다. 어댑터가 데이터를 수락한 후, "BCStatus"의 국부 값은 그 값을 "1"로 복원하는 합치에서 확인을 받기까지 "0"으로 리셋된다.
아직 블록체인에 의해 확인되지 않은 데이터를 덮어쓰는 것을 방지하는 하나의 간단한 방법은 다음과 같다. 데이터의 수정이 애플리케이션에 대해 수행되는 경우, 추가의 스테이터스 열에 관련된 추가의 조건을 추가함으로써 SQL 커맨드를 재작성한다.
예를 들어, 애플리케이션이 "salary", "name" 및 다른 것들의 열들을 갖는 "employee"라 명명된 테이블에서 다음의 업데이트 작업을 일반적으로 수행한다고 가정한다.
Figure pct00001
SQL은 다음과 같이 재작성된다:
Figure pct00002
SQL 커맨드의 재작성은 데이터베이스에 의한 실행에 앞서 모듈에서 또는 애플리케이션 자체에서 또는 프론트 엔드 데이터베이스 프록시(DB 프록시)를 사용하여 행해질 수 있다.
위의 단계들을 수반하는 예시적인 프로세스는 도 2a 내지 도 2c에서 묘사되는 흐름도를 사용하여 예시된다.
도 2a에 도시된 바와 같이, 단계 201에서 네이티브 애플리케이션이 삽입, 업데이트 또는 삭제 작업들을 수반할 수 있는 데이터베이스 트랜잭션을 실행한다. 이는 이 예시적인 실시예에서 SQL 커맨드 또는 문을 생성한다. 각각의 동작은 다수의 데이터 라인들을 수반할 수 있다.
단계 202에서 DB 프록시 또는 인앱(in-app) 수정자 모듈이, 앞서 논의된 바와 같이, 추가의 스테이터스 열에 대한 플래그 형태의 추가의 조건을 테이블 안으로 추가하기 위해 SQL 문을 재작성한다. 대안으로 데이터베이스 트리거가 사용될 수 있다. 이 실시예에서, 데이터를 기입할 때, 추가의 열의 스테이터스는 미확인된 데이터로 덮어쓰는 것을 방지하기 위해 "0"의 값으로 설정된다.
단계 203에서 데이터베이스는 트랜잭션을 실행하며, 추가의 스테이터스 열 값을 설정하고, 트랜잭션 로그들을 생성한다.
단계 204에서 데이터베이스는 적절한 플러그 인을 통해 데이터베이스 로그들에서의 변경들을 추적함으로써 모니터링된다. 위에서 논의된 바와 같이, 상이한 데이터베이스들은 데이터베이스에서의 변경들을 추적하기 위해 상이한 해당 플러그 인들을 사용할 수 있다.
단계 205에서, 데이터베이스에서의 데이터 서브세트만이 블록체인에 동기화될 필요가 있으므로, 블록체인 동기화에 요구되지 않은 국부 데이터는 필터링되며 동시에 블록체인을 이용한 동기화에 관련한 데이터가 블록체인에 기입된다.
이 실시예에서, 국부 영구 메시지 큐가 데이터를 임시로 캐시에 저장하는데 사용되는데, 데이터베이스 트랜잭션들이 블록체인 서비스들에서 데이터 기입 작업들보다 더 빠른 레이트로 일어날 수 있기 때문이다. 데이터 손실을 방지하기 위해, 필터링된 블록체인 데이터는 블록체인에서 프로세싱되기 전에 캐시 또는 버퍼 안에 들어간다.
단계 206에서 데이터는 영구 메시지 큐로부터 검색된다. 메시지 큐는 여기서 국부 캐시로서 역할을 하고 인메모리 캐시(in-memory cache)와는 달리, 영구적이고 따라서 데이터는 시스템 전력의 손실 이벤트 시에도 안전하게 보존된다.
단계 207에서 이벤트는 메시지 큐로부터 검색된 로그로부터 식별된다.
단계 208에서 트랜잭션 로그는 표준화된 JSON 포맷으로 변환된다. JSON은 다음 섹션들을 포함한다: 작업 테이블, 작업 방법들, 변경 전 데이터 값들, 및 변경 후 데이터 값들.
단계 209에서 어댑터는 블록체인에서 스마트 계약을 호출하고 데이터를 검정한 다음, JSON 문자열을 스마트 계약에 입력한다.
스마트 계약 검정이 실패하면, 레코드는 블록체인 안으로 배치되지 않고, 어댑터는 국부 노드에서 롤백 작업을 실행한다. 롤백에서, 어댑터는 데이터베이스 레코드를 다시 프리트랜잭션(pre-transaction) 스테이터스로 변경하며, 이 스테이터스는 데이터베이스에서의 값들을 "이전" 섹션의 값들로 대체한다. 그 작업은 또한 역으로 되어야 한다: "삽입"은 "삭제"로 변경되고 "삭제"는 "삽입"으로 변경된다. 예를 들어, 테이블이 "id"라고 불리는 열을 갖는 "people"이라 불리면, 트랜잭션 SQL 문은 다음과 같다:
INSERT people VALUES (1, "oliver","1000.00")
그러면 롤백 SQL은 다음이 되어야 한다:
DELETE FROM people WHERE id=1.
마찬가지로, 트랜잭션 SQL이 다음과 같으면:
DELETE FROM people WHERE id=1
롤백 SQL은 다음이 되어야 한다:
INSERT people VALUES (1, "oliver","1000.00").
그 값들은 트랜잭션 로그의 "이전" 섹션으로부터 추출된다.
단계 210에서 스마트 계약은 액션 계정을 검정하며; 그 계정은 유효하고 데이터를 수정하는 것이 허용되어야 한다.
단계 211에서 스마트 계약은 합의(agreement)에 기초하며, 테이블 및 데이터의 범위를 검정하고, 그 계정이 데이터를 수정하기 위한 적절한 특권을 갖는 것을 확실하게 한다. 예를 들어, 제조, 운반 및 판매 데이터를 갖는 공급 체인 애플리케이션에서, 공장은 제조 데이터 스테이터스만을 변경해야 한다. 공장은 운반 또는 판매 데이터를 수정할 수 없어야 한다.
단계 212에서 계약은 또한 데이터의 "이전 " 부분을 블록체인에 저장된 데이터로 검정한다. 상이하다면, 이는 데이터가 수정되었음을 의미하고, 데이터는 블록체인과 동기화되지 않고 따라서, 수정이 거부된다.
단계 213에서 계약은 정의된 규칙들에 기초하여 데이터에 대한 다른 검정들을 수행하고, 모든 검정들이 통과된 후, 수정 레코드는 블록체인 상에 저장된다.
단계 214에서 블록체인 모니터가 블록체인에서의 동일한 노드 또는 상이한 노드 중 어느 하나에서 체인 또는 블록체인 상의 모든 블록들을 추적하도록 전개된다. 블록 높이가 되돌릴 수 없는 한계에 도달할 때, 블록이 더 이상 변경될 수 없음을 나타내고, 추적자(tracker)는 블록으로부터 트랜잭션들을 추출한다.
단계 215에서, 필터가 비-데이터베이스 관련 트랜잭션들을 필터링하기 위해 제공된다. 주어진 블록체인에서, 많은 종류들의 트랜잭션들이 있을 수 있다. 그러나, 이 실시예에서, 데이터베이스 관련 트랜잭션들만이 관심이 있다.
단계 216에서 트랜잭션의 소스 노드가 체크되고, 만약 그것이 현재 노드와 동일한 노드이면, 프로세스는 단계 217로 진행하여 데이터의 수정을 다시 허용하기 위해 로컬 데이터베이스 상의 추가의 스테이터스 열(BCStatus 플래그)을 업데이트한다. 그렇지 않으면, 프로세스는 추가 프로세싱을 위해 단계 218로 진행한다.
단계 217에서, 국부 트랜잭션이 블록체인을 통해 전역적으로 확인되면, 어댑터는 모든 영향을 받는 레코드들에 대해 BCStatus를 수정한다.
단계 218에서 만약 두 개의 노드들이 동시에 동일한 레코드를 수정하려고 시도하며, 둘 다가 국부 노드에서 성공적으로 실행되고, 레코드들을 블록체인에 합치를 위해 전송하면, 단계 212가 레코드들의 "이전" 값들을 검정하므로, 하나의 트랜잭션만이 블록체인 검정을 통과할 수 있다. 그 경우, 모든 확인된 레코드들이 국부 레코드에 값들을 업데이트하도록 된다.
단계 219에서 SQL 문이 JSON에서의 "이후" 값들로 생성되고, 데이터베이스에서의 레코드들을 "이후" 값들로의 업데이트를 강제한다. 작업이 "삭제" 작업이면, 삭제 SQL 문이 실행된다. 만약 그 작업이 "삽입" 작업이고, 국부 데이터에 이미 무언가가 있다면, "삭제" 문은 먼저 실행된 다음 "삽입" 문은 그 후 실행된다. 모든 수정된 값들이 1인 "BCStatus"를 갖는다.
단계 220에서, SQL 문은 로컬 데이터베이스에서 실행된다.
단계 221에서, 트랜잭션이 국부 데이터와 충돌하면, 국부 데이터의 업데이트가 국부 값들을 JSON 레코드에서의 "이후" 값들로 단순히 업데이트함으로써 이루어진다.
단계 222에서, SQL 문은 로컬 데이터베이스에서 실행된다. 비정상 종료의 경우, 그 문은 성공하기까지 반복적으로 실행될 수 있다.
데이터베이스 애플리케이션들을 블록체인으로 마이그레이션함에 있어서 수반되는 일반적인 주요 단계들을 설명하였으므로, 이들 실시예들의 특정 시나리오들에 대한 적용의 예들이 이제 설명될 것이다.
I. 전자 인증서(electronic certificate) 예
본 출원 시나리오에서, 국부적으로 생성되는 전자 레코드가 법적 문서들, 은행 주문들 등과 같은 확인을 위해 나중에 검색되는 것이 필요하다.
전통적으로, 중앙집중식 데이터베이스가 데이터를 저장하고 충돌을 검정하고 해결하는데 사용되었다. 본 발명의 일 실시예의 예시적인 방법을 사용하여, 전통적인 데이터베이스 기반 애플리케이션들이 블록체인 기반 분산 시스템으로 쉽게 변환되고 다수의 조직들로 확장된다.
3a에 묘사된 바와 같이, 전통적인 환경에서, 모든 애플리케이션들(301, 302)은 데이터를 저장하고 검증하기 위해 동일한 중앙집중식 데이터베이스(312)에 기반해야 한다.
본 발명의 일 실시예의 예시적인 방법들을 사용하면, 애플리케이션을 블록체인 환경으로 마이그레이션하도록 애플리케이션 코드를 수정할 필요가 없다.
3b에 도시된 바와 같이, 대신에 블록체인-데이터베이스(BC-DB) 어댑터들(303, 307, 308)을 각각 각각의 노드(304, 305, 306)에서 데이터베이스들(302, 311, 309)과 블록체인 사이에 삽입함으로써, 그리고 각각의 데이터베이스에서 필드들을 선택함으로써, 자동으로 모든 다른 데이터베이스들의 동기화가 블록체인을 통해 성취된다. 블록체인 데이터와 데이터베이스 레코드들 사이의 충돌들은 각각의 어댑터에 의해 해결된다. DB1으로 표시된 데이터베이스(303)와 DB3로 표시된 데이터베이스(309)로부터의 모든 변경들이 DB2로 표시된 데이터베이스(311)와 동기화되고, APP2로 표시된 애플리케이션(302)이 모든 확인된 데이터를 질의(query)할 수 있다.
II. 공급 체인
공급 체인 애플리케이션들의 경우, 부품 공급업자들, 제조업자들, 물류 회사들, 소매업자들, 은행들 등과 같은 종종 상이한 참가자들이 있다. 제품 정보 데이터는 상이한 조직들 사이에서 공유될 필요가 있다. 공급업자들은 제조업자에게 공급된 부품들에 대한 레코드들을 기입한다. 제조업자들은 제품 정보와 각각의 개별 제품에서 사용되는 부품들을 기입한다. 물류 회사들은 제품 운반에 관한 세부사항들을 기입힌다. 소매업자들은 제품 판매 정보를 기입한다. 은행은 대출을 발행하기 위한 모든 전술한 정보를 필요로 한다.
도 4는 위에서 설명된 실시예를 예시하는 공급 체인 시스템(400)의 개략도를 묘사한다. 공급 체인 시스템(400)은 각각 데이터 스토어들 또는 데이터베이스들(404, 405, 406, 413, 416)을 사용하는 공장 애플리케이션(401), 은행 애플리케이션(402), 물류 애플리케이션(403), 공급업자 애플리케이션(410) 및 소매 애플리케이션(412)을 포함한다.
공장 애플리케이션(401), 은행 애플리케이션(402), 물류 애플리케이션(403), 공급업자 애플리케이션(410) 및 소매 애플리케이션(412)은 어댑터들(407, 408, 409, 417, 420)을 이용하여 각각 블록체인 노드들(414, 411,415, 418, 419)과 데이터를 교환한다.
각각이 각각의 데이터베이스에 적합한 인터페이스 또는 플러그 인을 갖는 어댑터들(407, 408, 409, 417, 420)을 이용함으로써, 상이한 노드들 상의 데이터베이스들은 인상적인 전체 결과들을 성취하도록 동기화될 수 있다. 부품 공급업자는 제조업자의 인벤토리 데이터에 액세스하고 부품들을 미리 준비할 수 있음으로써, 리드 타임(lead-time) 요건들을 단축시킨다. 물류 회사는 제품 또는 데이터가 여전히 제조업자에게 있더라도 제품 데이터에 액세스할 수 있고, 차량들 및 다른 운송 물류를 미리 배열할 수 있다. 제조업자는 시장 요구에 더 잘 맞도록 제조 사이클을 계획하는데 도움이 되는 소매 데이터를 수신한다. 은행은 상이한 노드들로부터 위의 데이터의 모두에 액세스하여 잠재적인 사기(fraud)를 검출하고 재원(financing)을 준비하고 참가자들에게 대출을 발행할 수 있다.
본 개시의 기여분은 다음을 포함한다.
밑에 있는 데이터베이스 계층과 블록체인 사이에 제공되는 데이터 적응 계층에 의해 특징화되는, 데이터베이스 기반 애플리케이션을 블록체인 기반 애플리케이션으로 변환하는 방법 및 시스템이 제공된다. 적응 계층은 데이터베이스의 트랜잭션 로그들을 모니터링하며, 관련 데이터 변경 작업들을 추출하고, 데이터 변경 작업들을 블록체인에게 글로벌 합치 프로세싱을 위해 전송한다. 적응 계층은 블록체인으로부터 데이터 합치 결과들을 동시에 획득하고 다른 노드들 상의 데이터 변경들을 로컬 데이터베이스와 동기화한다. 데이터베이스들 간의 글로벌 데이터 합치는 블록체인에서 스마트 계약들을 통해 수행된다.
위에서 언급된 것 외에도, 애플리케이션은 먼저 국부 데이터와 블록체인에 동기화될 필요가 있는 데이터 둘 다를 수반할 수 있는 해당 데이터베이스 트랜잭션을 국부적으로 완료한다. 로컬 데이터베이스 테이블에서의 추가적인 필드가 글로벌 합치 스테이터스를 기록하기 위해 추가된다.
위에서 언급된 것 외에도, 데이터베이스 애플리케이션 작업은 추가의 합치 스테이터스를 필터로서 고용하기 위한 작은 수정들을 필요로 할 수 있다.
위에서 언급된 것 외에도, 블록체인-데이터베이스 어댑터는 상이한 데이터베이스들을 적응시키고 관계형 데이터베이스들, 비관계형 데이터베이스들 등을 비제한적으로 포함하는 다수의 데이터 변경 레코드들을 플러그 인 모드를 통해 인터셉트하고, 데이터 변경 레코드들을 일반적인 JSON 데이터 변경 레코드들로 균일하게 포맷팅한다. 기록된 콘텐츠는 동일한 국부 트랜잭션, 데이터 변경 전 데이터 상태, 데이터 작업 방법(추가, 삭제, 변경), 및 국부 트랜잭션 실행 후 데이터 상태의 모든 데이터 작업들을 포함한다.
위에서 언급된 것 외에도, 데이터 변경 레코드는 블록체인에 동기화될 필요가 있는 트랜잭션 작업에서 데이터가 있는지의 여부를 결정하기 위해 미리 정의된 데이터 필터와 비교된다. 그 데이터 필터는 데이터 특징 필터링, 데이터베이스, 테이블 이름, 데이터 범위 등을 포함한다. 데이터가 필터 규칙을 충족시킬 때, JSON 데이터 패키지의 일반 포맷은 글로벌 합치를 위해 블록체인에서 스마트 계약들에 제출된다.
위에서 언급된 것 외에도, 블록체인에서의 스마트 계약은 다수의 노드들에서 데이터의 유효성을 검증한다. 블록체인에서의 다수의 노드들은 합치 결과들을 투표하고 생성한다.
스마트 계약이 데이터 패키지를 검증한 후, 데이터 변경 레코드가 해당 블록 상에 기록된다.
위에서 언급된 것 외에도, 어댑터는 상이한 블록체인들이 블록체인 트랜잭션들을 활성화하고 기록하는 것을 완료하기 위해 상이한 플러그 인 모드들을 사용한다. 플러그 인은 또한 블록체인에서 새로운 블록들을 추적하고 그 블록에서 트랜잭션 레코드들로부터 데이터 패키지를 추출하는데 사용된다.
위에서 언급된 것 외에도, 블록체인은 단일 노드에 의해 기록된 데이터 변경들에 대한 글로벌 합치 메커니즘을 통해 글로벌 합치를 수행하고 모든 노드들에 대한 변경들을 합치 투표를 위해 블록 배포와 동기화한다. 새로운 데이터 레코드 글로벌 합치가 실패하면, 로컬 데이터베이스 롤백 작업이 데이터를 프리트랜잭션 상태로 되돌리기 위해 실행된다.
합치는 데이터베이스 트랜잭션들의 적법성 또는 유효성을 체크한다. 규칙들은 (1) 데이터베이스 작업이 법적 제출자에 의해 제출된다, (2) 각각의 제출자는 계약에서 특정된 데이터 범위 및 데이터 포맷을 충족시키는 데이터를 제출할 수 있다, (3) 데이터 사이의 관계는 비즈니스 로직을 준수한다, 그리고 (4) 제출된 데이터는 블록체인에서 기록된 다른 데이터와 충돌하지 않는다, 구체적으로는 제출된 데이터의 원래의 상태는 블록체인에서의 마지막 기록된 변경의 결과와 일치해야 한다는 것을 포함하지만 그것으로 제한되지 않는다. 불일치는 블록체인 계약에 의해 검증되지 않은 일부 데이터 변경들이 있을 수 있음을 나타내어서, 새로운 변경 레코드는 또한 무효이다.
위에서 언급된 것 외에도, 데이터베이스 블록체인 어댑터는 블록체인의 모든 블록들에서 모든 트랜잭션들을 모니터링하며, 원하는 국부 데이터의 특성들에 매칭하는 트랜잭션들을 필터링하고, 데이터 변경 레코드를 기입하며, 그 데이터 변경 레코드는 글로벌 합치 검정을 로컬 데이터베이스에 전달한다.
위에서 언급된 것 외에도, 데이터베이스 기입 동작이 블록체인 합치 인증을 통과하는데 실패하는 경우, 기입 작업은 폐기되고, 어댑터는 데이터베이스에서의 데이터를 트랜잭션 레코드의 프리트랜잭션 원시 데이터에 기초하여 기입 작업 전의 상태로 복원한다.
위에서 언급된 것 외에도, 일부 데이터베이스 레코드들의 경우, 어느 계류중인 데이터 변경 작업들이라도 글로벌 합치를 기다리면, 새로운 데이터베이스 변경 작업은 실행하는데 실패한다. 노드의 로컬 데이터베이스에서 이미 실행되었으면, 작업은 롤백된다.
본 발명의 실시예들이 단지 예로서 설명되었지만, 첨부의 청구항들에 의해 정의된 바와 같은 본 발명은 많은 변형들 및 치환들이 청구항들의 범위로부터 벗어남 없이 가능하므로 예시적인 실시예들의 위의 설명에서 언급되는 특정 세부사항들에 의해 제한되지 않아야 한다는 것이 이해되어야 한다.

Claims (20)

  1. 시스템으로서,
    a) 제1 데이터베이스 및 블록체인과 통신하는 제1 어댑터; 및
    b) 제2 데이터베이스 및 상기 블록체인과 통신하는 제2 어댑터
    를 포함하며,
    상기 블록체인은 적어도 제1 노드와 제2 노드, 상기 제1 데이터베이스를 사용하여 상기 제1 노드 상에서 실행중인 제1 애플리케이션, 및 상기 제2 데이터베이스를 사용하여 상기 제2 노드 상에서 실행중인 제2 애플리케이션을 포함하며;
    상기 제1 및 제2 어댑터들은, 각각 상기 제1 및 제2 데이터베이스들에 대한 트랜잭션 로그들을 모니터링하여,
    i) 상기 트랜잭션 로그들로부터 데이터 작업들을 추출하고;
    ii) 상기 데이터 작업들을 일반 포맷으로 변환하고; 그리고
    iii) 상기 제1 및 제2 노드들에서 합치 투표를 완료하기 위해 상기 블록체인 상에서 스마트 계약을 활성화하는, 시스템.
  2. 제1항에 있어서, 상기 블록체인을 더 포함하는, 시스템.
  3. 제1항에 있어서, 상기 제1 어댑터는,
    a) 상기 블록체인과 인터페이싱하기 위한 제1 플러그 인; 및
    b) 상기 제1 데이터베이스의 트랜잭션 로그들을 모니터링하기 위한 제2 플러그 인
    을 포함하는, 시스템.
  4. 제3항에 있어서, 상기 제2 어댑터는,
    a) 상기 블록체인과 인터페이싱하기 위한 제3 플러그 인; 및
    b) 상기 제2 데이터베이스의 트랜잭션 로그들을 모니터링하기 위한 제4 플러그 인
    을 포함하는, 시스템.
  5. 제4항에 있어서, 상기 제1 데이터베이스의 상기 트랜잭션 로그들은 상기 제1 애플리케이션에 의한 상기 제1 데이터베이스의 수정으로부터 초래되는, 시스템.
  6. 제5항에 있어서, 상기 제2 데이터베이스의 상기 트랜잭션 로그들은 상기 제2 애플리케이션에 의한 상기 제2 데이터베이스의 수정으로부터 초래되는, 시스템.
  7. 제4항에 있어서, 상기 제2 플러그 인은 상기 제1 데이터베이스의 트랜잭션 로그들의 실시간 청취 또는 모니터링을 위해 사용되는, 시스템.
  8. 제4항에 있어서, 상기 제4 플러그 인은 상기 제2 데이터베이스의 트랜잭션 로그들의 실시간 청취 또는 모니터링을 위해 사용되는, 시스템.
  9. 블록체인에 대한 데이터베이스를 사용하여 데이터베이스 애플리케이션을 마이그레이션하는 방법으로서,
    a) 상기 데이터베이스의 로그를 모니터링하고 상기 블록체인에 의해 검정될 데이터베이스 커맨드를 식별하는 단계;
    b) 식별된 데이터베이스 커맨드에 의해 영향을 받는 테이블에 상기 데이터베이스에서의 스테이터스 열을 제공하는 단계;
    c) 상기 스테이터스 열을 제1 값으로 설정하기 위해, 상기 데이터베이스 커맨드에 기초하여, 제1 커맨드를 실행하는 단계;
    d) 식별된 데이터베이스 커맨드에 대응하는 블록체인 커맨드를 상기 블록체인에 검정을 위해 제시하는 단계;
    e) 상기 블록체인으로부터 검정을 수신할 시, 상기 스테이터스를 상기 제1 값과는 상이한 제2 값으로 설정하기 위해, 상기 데이터베이스 커맨드에 기초하여, 제2 커맨드를 실행함으로써 상기 데이터베이스를 업데이트하는 단계; 및
    f) 그렇지 않으면 상기 데이터베이스 커맨드를 롤백하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서, 상기 데이터베이스는 관계형 데이터베이스 관리 시스템(RDBMS)인, 방법.
  11. 제9항에 있어서, 상기 데이터베이스는 NoSQL인, 방법.
  12. 제9항에 있어서, 상기 애플리케이션은 수정되지 않는, 방법.
  13. 제9항에 있어서, 단계 a) 내지 f)를 수행하기 위한 어댑터를 더 포함하는, 방법.
  14. 제13항에 있어서, 상기 어댑터는,
    a) 상기 블록체인 상의 모든 새로운 블록들에서 블록체인 트랜잭션들을 모니터링하는 단계;
    b) 상기 데이터베이스에 영향을 미치는 블록 트랜잭션들을 식별하는 단계;
    c) 식별된 블록 트랜잭션들을 새로운 데이터베이스 커맨드들로 변환하는 단계; 및
    d) 상기 데이터베이스에 대해 상기 새로운 데이터베이스 커맨드들을 실행하는 단계
    를 추가로 수행하는, 방법.
  15. 데이터베이스를 사용하는 데이터베이스 애플리케이션을 블록체인을 사용하는 블록체인 애플리케이션으로, 애플리케이션을 수정하는 일 없이, 마이그레이션하는 시스템으로서, 상기 시스템은
    데이터베이스 프록시와 블록체인 인터페이스를 포함하는 어댑터를 포함하고,
    상기 어댑터는 프로세서 실행가능 명령어들을 포함하며,
    상기 명령어들은, 프로세서 상에서 실행될 때,
    i) 상기 데이터베이스의 로그를 모니터링하는 단계;
    ii) 상기 로그로부터 상기 블록체인에 의한 검정을 요구하는 데이터베이스 커맨드를 식별하는 단계;
    iii) 상기 데이터베이스 커맨드에 의해 영향을 받는 테이블에 상기 데이터베이스에서의 스테이터스 열을 제공하는 단계;
    iv) 상기 스테이터스 열을 제1 값으로 설정하기 위해, 상기 데이터베이스 커맨드에 기초하여, 제1 커맨드를 실행하는 단계;
    v) 상기 데이터베이스 커맨드에 대응하는 블록체인 커맨드를 상기 블록체인에 검정을 위해 제시하는 단계;
    vi) 상기 블록체인으로부터 검정을 수신할 시, 상기 스테이터스를 상기 제1 값과는 상이한 제2 값으로 설정하기 위해, 상기 데이터베이스 커맨드에 기초하여, 제2 커맨드를 실행함으로써 상기 데이터베이스를 업데이트하는 단계; 및
    vii) 그렇지 않으면 상기 데이터베이스 커맨드를 롤백하는 단계
    를 수행하도록 상기 프로세서를 구성하는, 시스템.
  16. 다수의 노드들 상에서 실행중인 데이터베이스 애플리케이션들을 블록체인에 동기화하는 방법으로서,
    a) 상기 데이터베이스들이 데이터베이스 애플리케이션들에 의해 수정될 때 상기 애플리케이션들에 의해 사용되는 데이터베이스들에 대한 트랜잭션 로그들을 모니터링하는 단계;
    b) 트랜잭션 로그들로부터 데이터 작업들을 추출하는 단계;
    c) 상기 데이터 작업들을 일반 포맷으로 변환하는 단계; 및
    d) 상기 다수의 노드들에서 데이터 합치 체크를 완료하기 위해 상기 블록체인 상에서 스마트 계약을 활성화하는 단계
    를 포함하는, 방법.
  17. 블록체인의 제1 노드에 연관되는 제1 데이터베이스를 상기 블록체인 상에서 제2 노드에 연관되는 제2 데이터베이스와 동기화하는 방법으로서,
    상기 제1 노드에서:
    i) 상기 제1 데이터베이스에 대한 트랜잭션 로그들의 메시지 큐로부터 로그를 검색하는 단계;
    ii) 상기 로그로부터 트랜잭션을 식별하고 트랜잭션 데이터를 미리 결정된 포맷으로 저장하는 단계;
    iii) 상기 트랜잭션 데이터를 블록체인 안으로 저장하기 위해 상기 로그에 기초하여 스마트 계약을 호출하는 단계;
    상기 제2 노드에서:
    iv) 상기 블록체인으로부터 상기 트랜잭션 데이터를 검색하는 단계;
    v) 상기 트랜잭션을 상기 제2 데이터베이스에 저장하기 위해 상기 트랜잭션 데이터에 연관되는 제1 커맨드를 실행하는 단계
    를 포함하는, 방법.
  18. 제17항에 있어서, 상기 미리 결정된 포맷은 JSON(JavaScript Object Notation)인, 방법.
  19. 제17항에 있어서, 상기 제1 커맨드는 SQL(structured query language) 커맨드인, 방법.
  20. 제17항에 있어서, 제1 데이터베이스를 상기 블록체인 상에서 제3 노드에 연관되는 제3 데이터베이스와 동기화하는 단계를 더 포함하며,
    상기 방법은,
    상기 제3 노드에서:
    i) 상기 블록체인으로부터 상기 트랜잭션 데이터를 검색하는 단계;
    ii) 상기 트랜잭션을 상기 제3 데이터베이스에 저장하기 위해 상기 트랜잭션 데이터에 연관되는 제2 커맨드를 실행하는 단계
    를 더 포함하는, 방법.
KR1020227021254A 2019-11-26 2020-11-26 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템 KR20220100971A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962940620P 2019-11-26 2019-11-26
US62/940,620 2019-11-26
PCT/CA2020/051613 WO2021102572A1 (en) 2019-11-26 2020-11-26 Method and system for converting database applications into blockchain applications

Publications (1)

Publication Number Publication Date
KR20220100971A true KR20220100971A (ko) 2022-07-18

Family

ID=76128613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227021254A KR20220100971A (ko) 2019-11-26 2020-11-26 데이터베이스 애플리케이션들을 블록체인 애플리케이션들로 변환하는 방법 및 시스템

Country Status (7)

Country Link
US (1) US20230015950A1 (ko)
EP (1) EP4066129A1 (ko)
KR (1) KR20220100971A (ko)
CN (1) CN114930314A (ko)
CA (1) CA3159237A1 (ko)
IL (1) IL293242A (ko)
WO (1) WO2021102572A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11765228B2 (en) * 2021-02-16 2023-09-19 Ciena Corporation Blockchain virtual machine systems and methods
US11528197B1 (en) * 2021-08-04 2022-12-13 International Business Machines Corporation Request facilitation for approaching consensus for a service transaction

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190005469A1 (en) * 2015-07-14 2019-01-03 Fmr Llc Collateral Management With Blockchain and Smart Contracts Apparatuses, Methods and Systems
CN106611061B (zh) * 2016-12-29 2018-02-23 北京众享比特科技有限公司 基于区块链网络的数据库写入方法及系统
US10621150B2 (en) * 2017-03-05 2020-04-14 Jonathan Sean Callan System and method for enforcing the structure and content of databases synchronized over a distributed ledger
CN110365491B (zh) * 2017-03-30 2021-03-26 腾讯科技(深圳)有限公司 业务处理方法、装置、设备、存储介质以及数据共享系统
US11296863B2 (en) * 2018-01-04 2022-04-05 Bank Of America Corporation Blockchain enterprise data management
US10628454B2 (en) * 2018-03-13 2020-04-21 Blockpoint Systems Inc. Relational blockchain database

Also Published As

Publication number Publication date
WO2021102572A1 (en) 2021-06-03
IL293242A (en) 2022-07-01
CN114930314A (zh) 2022-08-19
EP4066129A1 (en) 2022-10-05
CA3159237A1 (en) 2021-06-03
US20230015950A1 (en) 2023-01-19

Similar Documents

Publication Publication Date Title
US10970306B2 (en) Change management system for data synchronization within an enterprise portal application
US20230401187A1 (en) Method and system for migrating content between enterprise content management systems
CN105144080B (zh) 用于元数据管理的系统
US8589346B2 (en) Techniques for combining statement level, procedural, and row level replication
US8341128B1 (en) Concurrency control using an effective change stack and tenant-based isolation
US10832217B2 (en) Blockchain-based workflow system
EP2797013B1 (en) Database update execution according to power management schemes
US20100161648A1 (en) Flexible multi-tenant support of metadata extension
US9477609B2 (en) Enhanced transactional cache with bulk operation
KR102220246B1 (ko) 데이터 생성
US20160306637A1 (en) Application Object Framework
US10733057B2 (en) Techniques for application undo and redo using SQL patchsets or changesets
US20230015950A1 (en) Method and system for converting database applications into blockchain applications
US11277411B2 (en) Data protection and privacy regulations based on blockchain
Pareek et al. Real-time ETL in Striim
US9208195B2 (en) Retrieving information from a relational database using user defined facets in a faceted query
US20180203914A1 (en) Document Clustering In In-Memory Databases
US11334568B2 (en) Deep caching in the data access layer of an enterprise portal application
Nguyen et al. An approach towards an event-fed solution for slowly changing dimensions in data warehouses with a detailed case study
Bruni et al. Optimizing DB2 queries with IBM DB2 analytics accelerator for z/OS
CN112734373A (zh) 信息处理方法、装置、电子设备和介质
US20120323937A1 (en) Bulk create, update and delete (cud) database operations for table inheritance
US20130218875A1 (en) Table-driven enterprise-wide data integration
Goksu et al. Managing Ever-increasing Amounts of Data with IBM DB2 for Z/OS: Using Temporal Data Management, Archive Transparency, and the DB2 Analytics Accelerator
Kobayashi et al. Design consideration for identity resolution in batch and interactive architectures.