우리는 CRUD (Create, Read, Update, Delete) 작업을 수행하기 위해 균일 한 인터페이스를 갖춘 다양한 분산 시스템에 액세스하는 데 사용되는 라이브러리를 제안합니다. 이 라이브러리를 기반으로 개발자는 다양한 분산 시스템을 쉽게 조작하고 기본 기술에 대한 지식 없이도 분산 응용 프로그램을 작성할 수 있습니다.
데이터 관리 란 여러 유형의 데이터를 수집, 구성, 저장, 처리, 전송 및 검색하는 프로세스를 의미합니다. 그것은 컴퓨터 과학의 중요한 응용 분야입니다. 목표 중 하나는 컴퓨터를 사용하여 많은 양의 복잡한 데이터를 효율적으로 저장하고 관리하여 사람들이 신속하게 데이터에 액세스 할 수있게하는 것입니다. 또 다른 목표는 데이터에서 귀중한 정보를 추출하여 파생시킨 다음 정보를 행동 및 의사 결정을위한 지침으로 사용하는 것입니다.
현재 기업에서는 주로 중앙 집중식 데이터베이스와 파일 시스템을 사용하여 데이터를 관리합니다. 대형 인터넷 회사는 GFS (Google File System), SQL Server 등과 같은 시스템을 개발하고 로컬 서비스를 배포합니다. 중소기업은 AWS, Aliyun과 같은 클라우드 서비스에 연결하고 이러한 타사에 데이터 관리 작업을 위임합니다. 로컬 및 클라우드 데이터 서비스는 응용 프로그램 시나리오가 있으며 많은 회사의 기본 데이터를 유지 관리합니다.
중앙 집중식 저장소는 현재 데이터 관리를위한 주 솔루션이지만, 전 세계의 중앙 데이터베이스 및 파일 시스템에 심각한 저장소 문제가 있습니다. 기업은 종종 모든 데이터와 파일을 중앙 데이터베이스와 파일 시스템에 저장합니다. 그러나 중앙 집중식 스토리지 솔루션은 종종 해커의 공격을 받거나 사고로 인해 해를 입힐 수 있습니다. 기업은 때로 모든 데이터 자원을 잃어 버리지 않고 다시 되돌릴 수 밖에 없습니다. 일부 기업은 데이터에 크게 의존하고 있으며 이러한 종류의 피해는 엄청난 위험을 초래할 수 있습니다. 클라우드 서비스 제공 업체는 백업 데이터를 약속하지만 근본적인 문제는 해결하지 못했습니다.
블록 체인 (blockchain) 및 IPFS와 같은 분산화 기술은 데이터 관리에 새로운 유형의 솔루션을 제공합니다. 암호화와 합의를 통해 데이터 프라이버시와 보안이 보장됩니다. 데이터가 많은 노드에 저장되므로 단일 노드의 장애로 인한 데이터 손실에 대해 걱정할 필요가 없으므로 보안과 안정성이 향상됩니다. 암호화 및 분할 기술은 읽기 액세스를 제어하고 데이터 개인 정보를 보장합니다. 동시에 확장 성을 보장하기 위해 클러스터 기술이 사용됩니다. 클러스터는 데이터를 함께 저장하고 관리하는 대형 노드 그룹이며, 새로운 노드가 더 많은 클러스터에 참여하거나 확장 할 수있게합니다.
그러나 현재 분산 형 시스템의 수가 증가함에 따라 개발자는 이러한 시스템의 선택, 학습, 개발, 배포 및 유지 보수에 높은 비용을 지불해야합니다. 따라서 우리는 DDAO (분산 데이터 액세스 개체)를 제안했습니다. 우리의 목표는 CRUD (Create, Read, Update, Delete) 작업을 수행하기 위해 통일 된 인터페이스로 다양한 분산 시스템에 액세스하기위한 공통 라이브러리를 개발하는 것입니다. 이 라이브러리를 통해 개발자는 다양한 분산 시스템에서 데이터를 빠르게 읽고 쓸 수 있으며 기본 기술을 신경 쓰지 않고도 응용 프로그램을 작성할 수 있습니다.
블록 체인 기술 및 디지털 통화 시장의 발달로 인해 분산 데이터 스토리지 및 관리 기술은 연구 분야 및 투자 시장에서 주목을 받고 있습니다.
분산 시스템으로서 블록 체인은 모든 노드에서 데이터를 백업하므로 사진, 비디오 및 오디오와 같은 대용량 파일을 저장하는 데 적합하지 않습니다. 현재 블록 체인 어플리케이션에서 이러한 종류의 파일은 개발자가 보유한 서버에 저장됩니다. 이 방법은 이러한 응용 프로그램의 중앙 집중화로 이어지며, 이는 블록 체인의 핵심적인 의미를 침해합니다.
분산 파일 시스템은 주로 IPFS (InterPlanetary File System) [1], Swarm [2], Storj [3] 등을 포함합니다. 그들의 기본 방법은 업로드 된 파일을 작은 조각으로 나눈 다음 노드에 저장하는 것입니다. 파일을 다운로드 할 때 파일의 해시 값을 주소로 사용하여 노드에 요청하면 노드에서 모든 데이터를 가져와 전체 파일로 결합 할 수 있습니다. 이러한 방식으로 하나의 파일을 네트워크의 많은 노드에 개별적으로 저장할 수 있으므로 분산화가 가능합니다.
이러한 기술의 한 가지 문제점은 다운로드 서비스를 제공하기 위해 더 많은 노드를 온라인 상태로 유지하는 방법입니다. 따라서 일부 프로젝트는 노드 인센티브 메커니즘을 분산 파일 시스템에 추가하여 온라인 노드가 수익을 얻을 수 있도록 제안합니다. 이러한 방식으로, 분산 파일 시스템은 클라우드 스토리지 서비스가되며, 사용자는 스토리지 서비스를 제공하는 노드를 보상하기 위해 업로드 및 다운로드 프로세스 중에 서비스를 구매해야합니다. 이 구조를 사용하는 여러 프로젝트에는 Filecoin [4], Wolk [5], Fluence [6] 및 Sia [7]가 있습니다.
분산 파일 시스템은 데이터의 분산 저장을 가능하게하지만 데이터를 업로드 한 후에는 더 이상 수정하거나 검색 할 수 없으므로 데이터 관리에 응용 프로그램이 제한됩니다. 전통적인 중앙 집중식 데이터 관리 서비스는 대개 MySQL 또는 Redis와 같은 데이터베이스 시스템을 사용하여 데이터의 CRUD 작업을 실행합니다. 따라서 분산 된 영역에서는 유사한 데이터베이스 서비스가 필요합니다.
BigchainDB [8], Bluzelle [9], Ties.DB [10] 등 여러 가지 프로젝트가 분산 데이터베이스를 연구했습니다. 기본적인 아이디어는 트랜잭션을 통해 데이터베이스 쓰기 요청을 블록 체인에 업로드 한 다음 MongoDB와 같은 데이터베이스 엔진을 사용하여 데이터 인덱싱을 수행하고 읽기 요청을 처리하는 것입니다. 블록 체인을 사용하여 분산 데이터베이스를 구축하고 블록 체인 시스템의 성숙한 분산 아키텍처를 효과적으로 활용하며 안정성과 보안면에서 상당한 이점을 제공합니다.
이 프로젝트는 현재 초기 단계에 있으며 구현이 성숙되기 전에 스마트 계약을 데이터베이스 서비스로 사용하는 것도 실행 가능한 대안입니다. 일부 프로젝트는 데이터 관리를 위해 Solidity로 작성된 현명한 계약을 사용하여 Ethereum + IPFS를 기반으로하여 응용 프로그램을 개발합니다. Solidity는 일반적인 데이터 관리 시나리오에 충분한 List, Map, Struct 등의 데이터 구조를 지원합니다. 이 항목들은 Awesome IPFS [11]에 완전히 열거되어 있습니다.
분산 된 시스템은 다양한 구현을 통해 개발자에게 높은 학습 비용을 제공합니다. 이 기사에서는 상위 계층 DApp 애플리케이션을 하위 계층 분산 시스템에 연결하기위한 공통 라이브러리를 설계하여 여러 분산 시스템에 CRUD 작업을 구현합니다. 개발자는 기본 기술에 대한 지식 없이도이 라이브러리를 통해 데이터 관리 응용 프로그램을 신속하게 구축 할 수 있습니다. 동시에이 라이브러리를 기반으로 수많은 분산 시스템에 온라인 CRUD 인터페이스를 제공하는 클라우드 서비스를 구축하여 개발자를위한 분산 시스템을 배포하고 유지 관리하는 비용을 없앨 수 있습니다.
이 시스템은 다음과 같이 도입 될 세 개의 층, 즉 DDMI (분산 데이터 관리 인프라) DDAO (분산 된 데이터 액세스 개체) 및 DApp (분산 애플리케이션)로 분리 될 수있다.
DDMI 계층에는 블록 체인, 분산 데이터베이스, 분산 파일 시스템 등 다양한 분산 시스템이 포함되어 있습니다. 이러한 분산 시스템은 개발자가 로컬에서 실행하거나 원격 서버에 배포 한 다음 동일한 형식의 설명자를 통해 연결할 수 있습니다. 예를 들어 name : // user : password @ ip : port 의 형식 즉, qtum : // admin : [email protected] : 13889에 의해 포트 13889가있는 로컬 Qtum 노드에 연결하거나 IPFS ipfs : // myname : [email protected] : 8080에 의해 8080 포트가있는 LAN의 노드 .
DDAO 계층은이 백서에서 제안 된 핵심 모듈입니다. 주요 기능은 (1) 다양한 분산 시스템에 대한 연결을 설정하고, (2) 호환 가능한 CRUD 인터페이스를 얻기 위해 추상화해야합니다. 서로 다른 유형의 분산 시스템의 경우 추상 인터페이스가 다릅니다.
여기서 설계는 서로 다른 시스템의 호환성을 고려해야하므로 일부 공통 기능 만 추상화됩니다. 동시에 원래 명령을 보내는 데 사용되는 인터페이스가 제공되므로 개발자는 각 시스템의 고유 인터페이스를 요청할 수 있습니다.
DApp는 브라우저 또는 서버에서 실행되는 프로그램에서 실행되는 JavaScript 스크립트 일 수 있습니다. 또한 분산 파일 시스템에 저장되어 나중에 특정 주소를 통해 항목으로 획득 될 수도 있습니다. DApp는 DDAO 인스턴스를 시작하고 로컬 또는 클라우드 분산 시스템을 연결하며 이러한 시스템에서 CRUD 작업을 수행하여 데이터 관리 응용 프로그램을 구현합니다.
다수의 서로 다른 분산 시스템에 연결하기 위해 하나의 DApp 내에서 여러 개의 DDAO 인스턴스를 초기화 할 수 있습니다. 이를 통해 하나의 애플리케이션에서 다양한 분산 시스템과 데이터 상호 작용이 가능하므로 기존의 스마트 계약 기반 DApp와 비교하여 더 많은 기능을 사용할 수 있습니다. 예를 들어 여러 블록 체인간에 데이터를 교차 연결하거나 블록 체인 및 파일 시스템을 기반으로 데이터 시각화를 수행 할 수 있습니다.
많은 수의 응용 프로그램 시나리오가 DDAO의 가치를 설명하는 가장 좋은 방법입니다. DDAO를 기반으로하여 많은 분산 응용 프로그램을 개발하고 구현하기가 더 쉬워 질 것입니다.
DDAO는 블로그, 사진, 음악, 비디오 공유 플랫폼을 구축하는 데 사용할 수 있습니다. DDAO의 쓰기 인터페이스를 사용하여 텍스트, 이미지, 비디오 및 기타 컨텐츠를 IPFS와 같은 분산 파일 시스템에 게시 한 다음 메타 데이터 (예 : 컨텐츠 주소, 릴리스 시간, 사용자 ID 등)를 현명한 계약서에 저장할 수 있습니다 또는 데이터베이스. DDAO 읽기 인터페이스는 내용을 필터링, 정렬 및 표시하는 데 사용됩니다. 이러한 시스템의 장점은 사용자가 게시 한 컨텐츠가 분산되어 있으며 위조 할 수 없다는 것입니다.
DDAO를 기반으로 Taobao 및 Amazon과 같은 거래 플랫폼을 구축 할 수 있습니다. 가맹점이 DDAO 쓰기 인터페이스를 사용하여 제품 정보를 업로드하면 텍스트 및 이미지가 분산 파일 시스템에 저장되고 메타 데이터 (예 : 가격, 수량, 분류, 키워드 등)가 스마트 계약서 또는 데이터 베이스. 고객이 플랫폼을 탐색 할 때 DDAO 읽기 인터페이스를 사용하여 제품을 검색하고 필터링합니다. 마지막으로 고객은 DDAO를 사용하여 블록 체인에 연결하여 주문을 생성하고 주문을 지불하고 주문을 완료합니다. 이 플랫폼의 장점은 제품 정보 및 거래 프로세스가 투명하고 지불 프로세스가 편리하다는 것입니다.
스토리지 서비스 제공 업체는 DDAO를 통해 블록 체인이나 데이터베이스에 정보를 등록합니다. 사용자가 파일을 업로드하면 블록 체인 토큰을 사용하여 서비스를 구매 한 다음 DDAO를 통해 분산 파일 시스템에 파일을 업로드해야하며 파일 정보와 주소는 스마트 계약서 또는 데이터베이스에 저장됩니다. 다운로드 할 때 사용자는 DDAO를 사용하여 파일 정보와 주소를 찾은 다음 파일 시스템에서 파일을 다운로드합니다. 사용자가 소비 한 토큰은 스토리지 서비스 제공 업체에 보상을 제공하여 완벽한 경제적 생태계를 형성합니다.
분산 된 데이터 관리에는 광범위한 응용 프로그램 전망이 있습니다. 현재 분산 된 데이터베이스와 파일 시스템이 아직 개발 중이며 미성숙 인프라로 인해 응용 프로그램이 제한되어 있지만 가까운 미래에 이러한 시스템이 차례로 구현 될 수 있습니다. DDAO는 현재 중앙 집중식 시스템에서 DAO처럼 널리 사용됩니다.
https://twitter.com/qtumofficial
항상 수고하십니다~^^