paust-team / paust-db

GNU General Public License v3.0
6 stars 5 forks source link

Paust-db README.md #102

Closed kwjooo closed 5 years ago

kwjooo commented 5 years ago

Paust DB

Paust DB is a blockchain based a decentralized database platform for continuous timeseries.

Paust DB는 하나의 연속적인 Timeseries를 블록체인 내에서 관리한다. 각 부분적인 Timeseries에 대해서 사용자가 자신의 데이터를 기록하고 있고 사용자는 권한에 따라 허가된 부분적인 Timeseries에 접근하여 데이터를 조회하고 가져올 수 있다. DApp이 이 플랫폼을 이용한다면 블록체인 환경내에서 실시간 데이터 처리를 위해 상태를 저장하거나 다시 이전에 있었던 시계열 데이터를 가져와서 처리하기에 용이하다.

Features

Installation(Mac OS)

linux(ubuntu, alpine 등) 지원 예정

Install go

안정성을 위해 1.11.5 설치 추천(https://golang.org/doc/install)

Install rocksdb

Install paust-db

go get github.com/paust-team/paust-db/cmd/paust-db

Install tendermint

cd $GOPATH/src/github.com/tendermint/tendermint
git checkout v0.30.0
make get_tools
make get_vendor_deps
make install

Run

Quick start

Install client cli

다음 명령어를 통해서 paust-db-client 를 install 하여 local 환경에서 cli 테스트를 할 수 있음 자세한 cli 명령어는 client에서 확인할 수 있음

go get github.com/paust-team/paust-db/client/cmd/paust-db-client

Put

스트림을 이용한 Json data를 Put 하는 example

$ echo '[
        {"timestamp":1544772882435375000,"ownerKey":"NwdTf+S9+H5lsB6Us+s5Y1ChdB1aKECA6gsyGCa8SCM=","qualifier":"Y3B1","data":"YWJj"},
        {"timestamp":1544772960049177000,"ownerKey":"mnhKcUWnR1iYTm6o4SJ/X0FV67QFIytpLB03EmWM1CY=","qualifier":"bWVt","data":"ZGVm"},
        {"timestamp":1544772967331458000,"ownerKey":"aFw+o2z13LFCXzk7HptFoOY54s7VGDeQQVo32REPFCU=","qualifier":"c3BlZWQ=","data":"Z2hp"}
]' | paust-db-client put -s
Read json data from STDIN
put success.

Query

time range 사이의 ownerkey가 mnhKcUWnR1iYTm6o4SJ/X0FV67QFIytpLB03EmWM1CY= 이고, qualifier가 bWVt인 item을 Query하는 example

$ paust-db-client query 1544772882435375000 1544772967331458001 -o mnhKcUWnR1iYTm6o4SJ/X0FV67QFIytpLB03EmWM1CY= -q bWVt
query success.
[{"id":"eyJ0aW1lc3RhbXAiOjE1NDQ3NzI5NjAwNDkxNzcwMDAsInNhbHQiOjIxNX0=","timestamp":1544772960049177000,"ownerKey":"mnhKcUWnR1iYTm6o4SJ/X0FV67QFIytpLB03EmWM1CY=","qualifier":"bWVt"}]

Fetch

query를 통하여 받은 id인 eyJ0aW1lc3RhbXAiOjE1NDQ3NzI5NjAwNDkxNzcwMDAsInNhbHQiOjIxNX0= 를 이용해 실제 data를 fetch하는 example

$ paust-db-client fetch eyJ0aW1lc3RhbXAiOjE1NDQ3NzI5NjAwNDkxNzcwMDAsInNhbHQiOjIxNX0=
Read data from cli arguments
fetch success.
[{"id":"eyJ0aW1lc3RhbXAiOjE1NDQ3NzI5NjAwNDkxNzcwMDAsInNhbHQiOjIxNX0=","timestamp":1544772960049177000,"data":"ZGVm"}]

Clustering

Setup

Run paust-db

paust-db master

Network configuration

validators를 genesis.json에 설정하고, config.toml에 통신을 위한 seeds를 설정함

# n : validator의 수
tendermint testnet -v n

./mytestnet에 있는 n개의 node 정보를 n개의 node에 각각 Copy한 후(ex. node0 directory는 첫 번째 node, node1 directory는 두 번째 node, ...) 각 node에서 아래의 command 실행

tendermint node

Node 추가

non-validator인 node 추가를 위해 초기 설정을 생성한 후 genesis.json 파일과 seeds를 추가하여야 한다.

tendermint init

초기 구축 node의 ip:port/genesis의 http response로 genesis.json파일을 수정한다. 초기 구축 node의 ip:port/status의 http response에서 node_info object의 id를 얻는다.

tendermint node --p2p.seeds ID@IP:PORT

Docker Support

Contributing

License

Third-party

elon0823 commented 5 years ago

master 에 반영됨