p2p 데이터베이스-Hyperbee-워크숍
🎓 Workshop: What you will learn
* Some background on peer to peer and decentralized web
* How to get started using hyperspace cli
* How to create a p2p database using the hyp cli
* How to perform basic database functions using p2p db
* How to connect to a p2p database from a remote system
* How to query a remote p2p database and show results
Hyperbee는 b트리 구조로 구축된 p2p 데이터베이스로hypercore라고 불리는 추가 로그 구조만 사용하여 나누어 준다.hyperprotocol 직원들은 hyperspace라는 p2p 데이터베이스를 처리할 수 있는 도구를 만들었습니다.본 세미나에서는 p2p 데이터베이스를 어떻게 만들고 p2p 데이터베이스와 상호작용하며 원격 서버에서 이 데이터베이스로 연결하는지 배울 것이다.
선결 조건
이번 세미나에서 내가 뭘 알아야 합니까?
p2p가 뭐예요?
p2p 또는 p2p는 집중식 서버에 의존하지 않고 정보를 공유하는 기술이다.어떤 사람들은 p2p를 분산식 네트워크라고 부르지만, 나는 분산식 네트워크가 더욱 광범위할 것이라고 생각한다.p2p는 컴퓨터로 하여금 대화를 할 수 있게 하고, 조화로운 토론의 집중 시스템에 의존할 필요가 없다.일부 유행하는 점대점 기술은bittorrent와 웹rtc이다.BitTorrent는 다른 서버에서 큰 파일을 다운로드할 수 있도록 해 줍니다. 이렇게 하면 다운로드 속도가 훨씬 빨라질 것입니다.WebRTC는 중앙 서비스 없이도 브라우저 간에 비디오, 오디오 및 데이터를 공유할 수 있습니다.
무엇이 p2p 데이터베이스입니까?
p2p 데이터베이스는 p2p 네트워크를 통해 접근할 수 있는 데이터베이스로 응용 프로그램이 데이터베이스에 연결되고 데이터에 접근할 수 있도록 한다.너는 아마 좀 곤혹스러울 것이다. 나는 왜 p2p 데이터베이스에 대해 흥미를 가져야 합니까?전통적인 데이터베이스에 대해 당신은 하나의 스위치를 가지고 있습니다. 이 스위치는 데이터를 만들고 조회하는 접근을 제어합니다.따라서 모든 사람이 이 데이터베이스를 이용하여 내용을 만들려면 데이터베이스에 연결하고 정보를 저장해야 하며, 내용을 읽으려면 데이터베이스에 연결하고 정보를 조회해야 한다.이것은 많은 상황에서 매우 효과적이다.
가설 용례
p2p 소셜네트워크서비스는 모든 사용자가 자신의 로컬 데이터베이스를 만들고 이 데이터베이스의 식별자를feed중합기 응용 프로그램에 제공한다. 이 응용 프로그램은 모든 사용자 데이터베이스를 사용하고 모든 사람의 댓글을 표시하는 큰 데이터베이스에 통합시킨다.이러한 시스템의 장점은 내용의 창설자는 여전히 내용의 소유권을 가지고 있으며, 요약 집합기는 전체 요약만 제어할 수 있지만 클라이언트의 내용을 삭제할 수 없다는 것이다.
개시하다
hyperspace cli를 설치하기 위해 터미널을 사용합니다.
npm install --global @hyperspace/cli
터미널을 사용하여 새 폴더를 만들고 새 NodeJS 응용 프로그램을 초기화합니다.mkdir p2pDb
cd p2pDb
npm init -y
npm에서 의존항을 설치합니다.npm install express hyperspace hyperbee
복제 서버.js 파일 예 서버 코드:p2p Database workshop initial server code
p2p Database workshop initial server code. GitHub Gist: instantly share code, notes, and snippets.
262588213843476Gist
hyp를 사용하여hyperbee 데이터베이스 만들기
hyperbee 데이터베이스를 만들려면, hyperspace 수호 프로세스를 시작하고, cli를 사용하여create 명령을 호출해야 합니다.이것은 hyper://URL을 줍니다. 이 URL은 우리가 hyperbee 데이터베이스에 접근하는 식별자입니다.
hyp daemon start
hyp create bee
우리 서버에 데이터베이스를 설정합니다.js
두 개의 노드 모듈이hyperbee 데이터베이스,hyperspace,hyperbee에 연결되어 프로젝트에db라는 새 파일을 만듭니다.이 파일에는 모든 DB 명령이 유지됩니다.
db.js
const { Client } = require('hyperspace')
const Hyperbee = require('hyperbee')
const cuid = require('cuid')
const client = new Client()
const store = client.corestore()
const core = store.get('ee26ef1982c9f3bb3ce49adc46cbc55467ecb88779a629234af702da9965758e')
const db = new Hyperbee(core, {
keyEncoding: 'utf-8',
valueEncoding: 'json'
})
// add movie to db
exports.add = async function (movie) {
return db.put(cuid(), movie)
}
// list movies
exports.list = async function () {
var movies = []
await new Promise(r => {
db.createReadStream()
.on('data', entry => movies.push(entry.value))
.on('end', r)
})
return movies
}
이 데이터베이스에js 파일에서 우리는 두 개의 함수를 만들었습니다.dd와list입니다.dd 함수는hyperbee 데이터베이스에 데이터를 추가하고,list 함수는hyperbee 데이터베이스에 있는 모든 문서를 유동화합니다.데이터베이스에 연결하기 위해서 우리는 새로운 클라이언트를hyperspace에 실례화한 다음에hyperspace 저장소에 연결한 다음에 저장소에서hypercore를 가져와야 한다. 이 핵심을 사용하면hyperbee 데이터베이스를 실례화할 것이다.우리 웹 응용 프로그램에서 영화 추가
웹 응용 프로그램에서 영화를 추가하려면db를 가져가야 합니다.js 모듈을 서버 js 모듈로 변환하려면:
const { add, list } = require('./db') // at the top of serverjs
우리 프로그램에서post ("/") 프로세서입니다. 비동기 함수로 변환하고dd(req.body) 를 호출할 수 있습니다.app.post('/', express.json(), async (req, res) => {
await add(req.body)
res.setHeader('content-type', 'text/html')
res.send(`<li>${req.body.title}</li>`)
})
해비의 영화를 열거하다
get/movies 단점에서 DB 모듈에서list 방법을 호출하고 결과를 비추어 만들 수 있습니다
각 영화의 제목은 677이다.
app.get('/movies', async (req, res) => {
const s = await list()
res.setHeader('content-type', 'text/html')
res.send(s.map(m => `<li>${m.title}</li>`).join(''))
})
영화 새로 고침
영화를 추가한 후, 영화 목록을 요청하고, 목록을
app.post('/', express.json(), async (req, res) => {
await add(req.body)
const s = await list()
res.setHeader('content-type', 'text/html')
res.send(s.map(m => `<li>${m.title}</li>`).join(''))
})
섹션 2: 원격 어플리케이션
지금까지 이 과정은 전통적인 데이터베이스 응용 프로그램과 크게 다르지 않았다. 현재 우리는 다른 가상 기기를 사용하여 영화 목록 응용 프로그램을 시작할 것이다. 이 응용 프로그램은 슈퍼 데이터베이스 키를 얻고 영화 목록을 연결하여 웹 브라우저에 표시할 것이다.
이 새 기계에서 우리는 초공간 환경을 설치해야 한다
npm install --global @hyperspace/cli
mkdir p2pClient
cd p2pClient
npm init -y
npm install express hyperspace hyperbee
서버 2를 만듭니다.js와db2.js 파일p2p Database workshop initial server code
p2p Database workshop initial server code. GitHub Gist: instantly share code, notes, and snippets.
262588213843476Gist
p2p Database workshop initial server code
p2p Database workshop initial server code. GitHub Gist: instantly share code, notes, and snippets.
262588213843476Gist
db2에 키를 설정합니다.js 파일을 실행하고 서버를 실행합니다.js
npx nodemon server2.js
브라우저를 열 때, 하이퍼스페이스에 데이터를 복사하라고 말하지 않았기 때문에, 영화 목록을 꺼내지 않습니다.첫 번째 응용 프로그램과 데이터베이스로 이동합니다.js 파일에는 다음이 추가됩니다.
db.ready()
.then(() => client.replicate(core))
이것은 Hyperspace가 우리의 데이터베이스를 복제하는 것을 알려 줍니다. 이제 두 번째 프로그램으로 넘어가서 브라우저를 새로 고칠 때, 우리는 영화 목록을 받아야 합니다.성공!
시간을 들여 더 많은 영화를 추가하고 다른 프로그램으로 넘어가 화면을 새로 고쳐 새로 추가된 영화가 나오는지 확인하세요.이렇게 하면 한 피어에서 다른 피어로 데이터를 원격으로 복제합니다.
몇 가지 고려 사항/기능:
*DHT를 통해 하이퍼링크 발견
*슈퍼맨은 드물다 — 이것은 전체 데이터 집합을 다운로드해서 조회할 필요가 없다는 것을 의미합니다.hyperspace는 당신이 필요로 하는 내용을 다운로드하기만 하면 됩니다.
계산해야 할 것이 많습니다.
hypercore-protocol/hyperbee
An append-only Btree running on a Hypercore. Contribute to hypercore-protocol/hyperbee development by creating an account on GitHub.
hypercore-protocolGitHub
요약
p2p는 재미있고 데이터베이스도 재미있습니다. 둘을 결합하면 미친 과학이기 때문에 낙담하고 낙담하기 쉽습니다.이 공구들은 매일 더 좋아지고 있는데, 나는 확실히 이 기술의 효과적인 사용 사례가 있다고 생각한다.나는 비디오에서 몇 가지 예를 설명할 것이다.NodeJS는 기능이 강한 서버가 실행될 때 많은 일을 할 수 있고 심지어 대등한 네트워크를 통해 데이터베이스를 나누어 줄 수 있다.
If you enjoyed this workshop and would like to know more, go to https://hypercore-protocol.org/ and read the documentation.
Reference
이 문제에 관하여(p2p 데이터베이스-Hyperbee-워크숍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hyper/p2p-databases-hyperbee-workshop-5h56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)