풍부한 기록 데이터베이스 생성
이 항목에는 Oracle 데이터베이스 접속을 지정하고 리치 내역 데이터베이스를 생성할 채널을 선택하는 데 도움이 되는 정보가 포함되어 있습니다. 이 데이터베이스를 사용하여 원장 활동에 대한 분석 보고서 및 시각화를 만들 수 있습니다.
Rich History Database 란 무엇입니까?
풍부한 기록 데이터베이스는 Oracle Blockchain Platform 외부에 있으며 선택한 채널에서 블록체인 원장의 트랜잭션에 대한 데이터를 포함합니다. 이 데이터베이스를 사용하여 원장 활동에 대한 분석 보고서 및 시각화를 생성합니다.
예를 들어 풍부한 기록 데이터베이스를 사용하면 분석을 생성하여 일정 기간 동안 은행에 있는 모든 고객의 평균 잔액 또는 도매업자로부터 소매업자에게 상품을 배송하는 데 걸린 시간을 확인할 수 있습니다.
내부적으로 Oracle Blockchain Platform은 Hyperledger Fabric 내역 데이터베이스를 사용하여 원장을 관리하고 콘솔에서 원장 거래 정보를 제공합니다. 체인코드만 이 내역 데이터베이스에 액세스할 수 있으며 Hyperledger Fabric 내역 데이터베이스를 분석 질의에 대한 데이터 소스로 노출할 수 없습니다. Rich History 데이터베이스는 외부 Oracle 데이터베이스를 사용하며 채널에서 커밋된 모든 트랜잭션에 대한 많은 세부 정보를 포함합니다. 이 수준의 데이터 수집은 풍부한 이력 데이터베이스를 분석을 위한 우수한 데이터 소스로 만듭니다. 리치 내역 데이터베이스가 수집하는 데이터에 대한 자세한 내용은 리치 내역 데이터베이스 테이블 및 열을 참조하십시오.
Oracle Cloud Infrastructure와 함께 Oracle Autonomous Data Warehouse 또는 Oracle Database Classic Cloud Service와 같은 Oracle 데이터베이스만 사용하여 리치 이력 데이터베이스를 생성할 수 있습니다. Oracle Blockchain Platform 콘솔을 사용하여 Oracle 데이터베이스에 액세스하고 쓸 수 있는 접속 문자열 및 인증서를 제공합니다. 제공하는 인증서는 데이터베이스의 인증서이며 Oracle Blockchain Platform은 이를 관리하지 않습니다. 연결을 생성한 후 서식 있는 기록 데이터베이스에 포함할 원장 데이터가 포함된 채널을 선택합니다. 서식 있는 내역 데이터베이스 사용 및 구성을 참조하십시오.
표준 테이블 또는 블록체인 테이블을 사용하여 풍부한 기록 데이터베이스를 저장할 수 있습니다. 블록체인 테이블은 변조가 불가능한 추가 전용 테이블로, 보안 원장으로 사용할 수 있으며 다른 테이블과의 트랜잭션 및 쿼리에도 사용할 수 있습니다. 자세한 내용은 Oracle Blockchain Table을 참조하십시오.
Oracle Analytics Cloud 또는 Oracle Data Visualization Cloud Service와 같은 모든 분석 툴을 사용하여 풍부한 내역 데이터베이스에 액세스하고 분석 보고서 또는 데이터 시각화를 생성할 수 있습니다.
Oracle Database Classic Cloud Service 접속 문자열 생성
리치 이력 데이터베이스에 필요한 접속 문자열을 작성하려면 Oracle Cloud Infrastructure에 배치된 Oracle Database Classic Cloud Service에서 정보를 수집해야 합니다. 또한 포트 1521을 통해 데이터베이스에 액세스할 수 있도록 설정해야 합니다.
Oracle Database Classic Cloud Service 정보 찾기 및 기록
Oracle Database Classic Cloud Service에 대한 연결을 생성하는 데 필요한 정보는 Oracle Cloud Infrastructure 콘솔에서 확인할 수 있습니다.
-
Infrastructure Console에서 왼쪽 상단 모서리에 있는 탐색 메뉴를 누르고 데이터베이스를 누릅니다.
-
연결할 데이터베이스를 찾아 공용 IP 주소를 기록합니다.
-
연결할 데이터베이스의 이름을 누르고 다음 필드에 값을 기록합니다.
-
데이터베이스 고유 이름
-
호스트 도메인 이름
-
포트
-
-
이 데이터베이스에서 읽을 수 있는 권한이 있는 데이터베이스 사용자의 사용자 이름과 비밀번호를 찾아 기록해 둡니다. 예: 사용자 SYSTEM.
포트 1521을 통해 데이터베이스 액세스 사용으로 설정
리치 기록 데이터베이스가 포트 1521을 통해 데이터베이스에 액세스할 수 있도록 하는 수신 규칙을 추가합니다.
-
Oracle Cloud Infrastructure 홈 페이지에서 탐색 아이콘을 누른 다음 데이터베이스에서 DB 시스템을 누릅니다.
-
접속할 데이터베이스를 누릅니다.
-
가상 클라우드 네트워크 링크를 누릅니다.
-
해당 서브넷으로 이동한 다음 보안 목록에서 <대상 데이터베이스>에 대한 기본 보안 목록을 누릅니다.
Security List(보안 목록) 페이지가 표시됩니다.
-
모든 규칙 편집을 누릅니다.
-
다음 설정을 사용하여 공용 인터넷의 수신 트래픽이 이 데이터베이스 노드의 포트 1521에 도달할 수 있도록 수신 규칙을 추가합니다.
-
소스 ID: 0.0.0.0/0
-
IP 프로토콜: TCP
-
소스 포트 범위: 모두
-
대상 포트 범위: 1521
-
포트 1521에 대한 TCP 트래픽 허용
-
연결 문자열 작성
Oracle 데이터베이스에 대한 액세스를 사용으로 설정한 후 수집한 정보를 사용하여 서식 있는 내역 구성 대화상자에서 접속 문자열을 작성합니다.
<publicIP>:<portNumber>/<database unique name>.<host domain name> 구문을 사용하여 연결 문자열을 생성합니다.
예: 192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.com
데이터베이스 사용자에게 올바른 권한이 있는지 확인
grant select on v_$session to <user>;
grant alter system to <user>;
또한 리치 내역 데이터베이스가 Oracle Autonomous Data Warehouse를 사용하는 경우 데이터베이스 사용자에게 다음 권한이 있어야 합니다.grant unlimited tablespace to <user>;
데이터베이스 유저에게 이러한 권한이 없는 경우에는 시스템 데이터베이스 관리자에게 권한을 부여해야 합니다.이러한 권한이 없으면 Oracle Blockchain Platform은 데이터베이스로 복제할 수 있지만 손상된 데이터베이스 세션으로 이어지는 상황에서는 복구할 수 없으므로 리치 내역이 오랜 기간 동안 최근 트랜잭션을 따라잡지 못합니다. Oracle Autonomous Data Warehouse에 대한 이러한 권한이 없으면 리치 기록 데이터가 저장되지 않습니다.
Rich History Database 사용 및 구성
콘솔을 사용하여 데이터베이스 연결 정보를 제공하고 풍부한 기록 데이터베이스에 기록할 체인코드 원장 데이터가 있는 채널을 선택합니다. 기본적으로 채널은 리치 기록 데이터베이스에 데이터를 쓰도록 사용으로 설정되지 않습니다.
다음 정보에 유의하십시오.
-
각 블록체인 네트워크 멤버는 자체의 풍부한 기록 데이터베이스를 구성합니다.
-
Oracle 데이터베이스를 사용해야 합니다. 다른 데이터베이스 유형은 지원되지 않습니다.
-
리치 내역 데이터베이스에 쓰는 각 채널에는 하나 이상의 피어 노드가 포함되어야 합니다.
- 풍부한 내역 정보를 저장하는 데 사용할 Oracle 데이터베이스에 대한 접속 및 인증서 정보를 입력합니다.
- 풍부한 기록 데이터베이스에 쓰려는 체인코드 데이터를 포함하는 채널에서 풍부한 기록을 사용으로 설정합니다.
Rich History Database에 대한 접속 수정
리치 기록 데이터베이스의 연결 정보를 변경할 수 있습니다.
리치 기록 데이터베이스에 데이터를 쓰는 채널 구성
채널이 풍부한 기록 데이터베이스에 체인코드 원장 데이터를 쓰도록 설정할 수 있으며, 채널이 풍부한 기록 데이터베이스에 데이터를 쓰지 못하도록 할 수 있습니다. 또한 전역 설정과 다른 리치 기록 데이터베이스 구성을 사용하도록 개별 채널을 구성할 수 있습니다.
채널에 대해 데이터베이스에 테이블이 생성된 후에는 사용자 이름 및 비밀번호나 접속 문자열을 변경하지 않는 한 저장을 누른 후에도 채널에 대한 내역 구성을 수정할 수 없습니다. 사용자 이름과 암호를 변경하면 테이블이 동일한 데이터베이스에 생성됩니다. 연결 문자열 및 인증서를 변경하면 다른 데이터베이스가 구성되고 다음에 관련된 트랜잭션 또는 원장 변경 후 테이블이 생성됩니다. 서식 있는 기록 데이터베이스를 표준 테이블에서 블록체인 테이블로 변경할 수 없으며, 자격 증명이나 연결 문자열을 변경하지 않는 한 보존 시간을 변경할 수 없습니다.
서식 있는 기록에 대한 접근 제한
채널 정책 및 ACL(액세스 제어 목록)을 사용하여 리치 기록 데이터베이스를 구성하고 리치 기록 상태 또는 구성 정보를 검색할 수 있는 조직을 제한할 수 있습니다.
Rich History 데이터베이스 테이블 및 열
풍부한 기록 데이터베이스에는 기록, 상태 및 최신 높이의 세 개 테이블이 있습니다. 체인코드의 원장 트랜잭션에 대한 분석을 생성할 때 기록 및 상태 테이블을 질의합니다. 리치 내역을 사용으로 설정할 때 트랜잭션 세부정보를 선택하도록 선택한 경우 트랜잭션 세부정보가 포함된 추가 테이블이 생성됩니다.
내역 테이블
<instanceName><channelName>_hist 테이블에는 원장 내역이 포함됩니다. 이 테이블의 데이터는 체인코드 ID, 사용된 키, 트랜잭션이 적합한 경우 키에 지정된 값 등을 알려줍니다.
value 및 valueJson 열은 상호 배타적인 방식으로 사용됩니다. 즉, 키 값이 유효한 json이면 값이 valueJson 열로 설정됩니다. 그렇지 않으면 value 열에 값이 설정됩니다. valueJson 열은 데이터베이스에서 json 열로 설정됩니다. 즉, 사용자가 일반적인 Oracle JSON 특정 확장을 사용하여 해당 열을 질의할 수 있습니다.
구성된 경우 개인 데이터도 이 테이블에 저장됩니다. 개인 데이터의 경우 체인 코드 ID는 <chaincodeName>$$<collectionName> 형식을 사용합니다.
열 | 데이터 유형 |
---|---|
chaincodeId | VARCHAR2 (256) |
키 | VARCHAR2 (1024) |
txnIsValid | 숫자 (1) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | 숫자가 널이 아닙니다. |
txnNo 번호 | NOT NULL |
txnId | VARCHAR2 (128) |
txnTimestamp | TIMESTAMP |
txnIsDelete | 숫자 (1) |
상태 테이블
<instanceName><channelName>_state 테이블에는 상태 데이터베이스에서 복제된 데이터 값이 포함됩니다. 원장의 상태에 대한 분석을 생성할 때 상태 테이블을 질의합니다.
value 및 valueJson 열은 상호 배타적인 방식으로 사용됩니다. 즉, 키 값이 유효한 json이면 값이 valueJson 열로 설정됩니다. 그렇지 않으면 value 열에 값이 설정됩니다. valueJson 열은 데이터베이스에서 json 열로 설정됩니다. 즉, 사용자가 일반적인 Oracle JSON 특정 확장을 사용하여 해당 열을 질의할 수 있습니다.
열 | 데이터 유형 |
---|---|
chaincodeId | VARCHAR2 (256) |
키 | VARCHAR2 (1024) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NUMBER |
txnNo | NUMBER |
최신 높이 테이블
<instanceName><channelName>_last 테이블은 Oracle Blockchain Platform에서 서식 있는 내역 데이터베이스에 기록된 블록 높이를 추적하는 데 내부적으로 사용됩니다. 리치 기록 데이터베이스의 현재 상태와 모든 체인코드 트랜잭션이 리치 기록 데이터베이스에 기록되었는지 여부를 결정합니다. 분석을 위해 이 데이터베이스를 질의할 수 없습니다.
트랜잭션 세부정보 테이블
<instanceName><channelName>_more 테이블에는 커밋된 트랜잭션과 관련된 속성이 포함되어 있습니다. 서식 있는 기록 데이터베이스를 사용으로 설정할 때 이 테이블에 기록할 속성을 선택할 수 있습니다. 트랜잭션 세부정보 테이블은 구성 트랜잭션 또는 기타 종류의 Hyperledger Fabric 트랜잭션이 아닌 보증인 트랜잭션에 대한 정보만 수집합니다.
열 | 데이터 유형 |
---|---|
체인코드 ID | VARCHAR2 (256) |
블록 번호 | NUMBER |
채용정보 | NUMBER |
TXNID | VARCHAR2(128) |
트랜잭션 시간기록 | TIMESTAMP |
제출자CN | VARCHAR2(512) |
SUBMITTERORG | VARCHAR2(512) |
제출자루 | VARCHAR2(512) |
체인코드 유형 | VARCHAR2(32) |
검증 코드 이름 | VARCHAR2(32) |
배서 | CLOB |
입력 | CLOB |
이벤트 | CLOB |
응답 상태 | 번호(0) |
응답 페이로드 | VARCHAR2(1024) |
RWSET | CLOB |
블록 생성자 | VARCHAR2(512) |
블록크리에이터 | VARCHAR2(512) |
블록크리에이터루 | VARCHAR2(512) |
구성 블록 번호 | 번호(0) |
구성 블록 생성자 | VARCHAR2(512) |
CONFIGBLOCKCREATORORG | VARCHAR2(512) |
CONFIGBLOCKCREATOROU | VARCHAR2(512) |
주:
- 조직(ORG) 및 조직 단위(OU)는 ID 인증서에 의해 제어되며, 이는 여러 값에 지정될 수 있음을 의미합니다. 테이블 값에서 쉼표로 구분된 목록으로 캡처됩니다.
- ID의 경우 "발행자"가 아닌 인증서의 "제목" 부분에 대한 정보만 테이블에 포함됩니다.
RWSET
열은 보증 중 수행된 모든 체인코드(동일한 원장)에 대한 작업을 포함합니다. 따라서 일반적으로 lscc 읽기 작업과 실제 체인 코드 네임스페이스 작업이 모두 표시됩니다.