2019-05-26 17:45:33
分散式网络的对等数据库
分散式网络的对等数据库
OrbitDB是一个无服务器,分布式,对等数据库。OrbitDB使用IPFS作为其数据存储,IPFS Pubsub使用IPFS自动同步数据库。它是一个最终一致的数据库,它使用CRDT进行无冲突的数据库合并,使OrbitDB成为分散式应用程序(dApps),区块链应用程序和离线优先Web应用程序的绝佳选择。
在现场演示1,现场演示2或P2P TodoMVC应用程序中进行现场测试!
1.OrbitDB为不同的数据模型和用例提供各种类型的数据库:
2.log:具有可遍历历史记录的不可变(仅追加)日志。对 “最新N”用例或作为消息队列有用。
3.feed:具有可遍历历史记录的可变日志。可以添加和删除条目。对*“购物车”类型的用例有用,或者例如作为博客帖子或“推文”的提要。
4.keyvalue:键值数据库,就像您最喜欢的键值数据库一样。
5.docs:一个文档数据库,JSON文档可以通过指定的密钥存储和索引。用于构建搜索索引或版本控制文档和数据。
6.counter:用于计算与日志/源数据分开的事件。
所有数据库都是在ipfs-log之上实现的,ipfs-log是一个用于分布式系统的不可变,基于操作的无冲突复制数据结构(CRDT)。如果OrbitDB数据库类型都不符合您的需求和/或您需要特定于案例的功能,则可以轻松实现和使用您自己的自定义数据库存储。
现状:积极发展
注意! OrbitDB是alpha阶段软件。这意味着OrbitDB尚未经过安全审核,编程API和数据格式仍然可以改变。如果您计划在关键任务系统中使用OrbitDB,我们建议您与维护人员联系。
这是Javascript实现,它在Browsers和Node.js中都有效,支持Linux和OS X(目前还不支持Windows)。Node.js所需的最低版本现在为8.0.0。要与旧版本的Node.js一起使用,我们通过npm包提供与ES5兼容的构建,该软件包位于dist/es5/通过npm安装时。
我们还定期进行社区调用,我们在@orbitdb欢迎存储库中的问题中宣布。加入我们!
用法
CLI
具有IPFS实例的模块
具有IPFS守护程序的模块
API
例子
安装依赖项
浏览器示例
Node.js示例
包
OrbitDB商店套餐
发展
运行测试
建立
基准
记录
特约
赞助商
执照
阅读“ 入门指南”以获取更深入的教程,并了解OrbitDB的工作原理。
有关管理orbit-db数据库的CLI工具,请参阅OrbitDB CLI。
它可以从Npm安装:
npm install orbit-db-cli -g
如果您正在使用orbitd-db开发浏览器或Node.js应用程序,请将其用作具有IPFS的javascript实例的模块
安装依赖项:
npm install orbit-db ipfs
const IPFS = require('ipfs')const OrbitDB = require('orbit-db')// OrbitDB uses Pubsub which is an experimental feature// and need to be turned on manually.// Note that these options need to be passed to IPFS in// all examples even if not specified so.const ipfsOptions = { EXPERIMENTAL: { pubsub: true } }// Create IPFS instanceconst ipfs = new IPFS(ipfsOptions)ipfs.on('error', (e) => console.error(e))ipfs.on('ready', async () => { const orbitdb = new OrbitDB(ipfs) // Create / Open a database const db = await orbitdb.log('hello') await db.load() // Listen for updates from peers db.events.on('replicated', (address) => { console.log(db.iterator({ limit: -1 }).collect()) }) // Add an entry const hash = await db.add('world') console.log(hash) // Query const result = db.iterator({ limit: -1 }).collect() console.log(JSON.stringify(result, null, 2)) })
另外,您也可以使用IPF问题的API使用orbit-db与本地运行IPFS守护进程。如果您正在使用orbitd-db开发后端或桌面应用程序,请使用此方法,例如。与电子。
安装依赖项:
npm install orbit-db ipfs-api
const IpfsApi = require('ipfs-api')const OrbitDB = require('orbit-db')const ipfs = IpfsApi('localhost', '5001')const orbitdb = new OrbitDB(ipfs)const db = await orbitdb.log('hello')...
有关完整文档,请参阅API.md。
git clone https://github.com/orbitdb/orbit-db.gitcd orbit-db
npm install
你还需要babel和webpack,如果你还没有安装它们:
npm install --global babel-clinpm install --global webpack
某些依赖项依赖于本机插件模块,因此您还需要满足node-gyp的安装先决条件。因此,Linux用户可能需要
make clean && make
使用工作的本机依赖项重做本地package-lock.json。
在macOS中:
npm run buildnpm run examples:browser-macos
在Linux中:
npm run buildnpm run examples:browser-linux
检查examples / browser / browser.html中的代码并尝试实例。
npm run examples:node
事件簿
请参阅examples / eventlog.js中的代码并运行它:
node examples/eventlog.js
示例中有更多示例。
OrbitDB使用以下模块:
IPF问题
IPF问题日志
IPF问题,发布订阅房
crdts
轨道-DB-缓存
轨道-DB-发布订阅
轨道-DB-密钥库
轨道-DB-店
轨道-DB-eventstore
轨道-DB-而FeedStore
轨道-DB-kvstore
轨道-DB-docstore
轨道-DB-counterstore
要了解架构,请查看数据流的可视化,网址为https://github.com/haadcode/proto2或现场演示:http://celebdil.benet.ai:8080 / ipfs / Qmezm7g8mBpWyuPk6D84CNcfLKJwU6mpXuEN5GJZNkX3XK /。
npm test
npm run build
node benchmarks/benchmark-add.js
查看基准/更多基准。
要启用OrbitDB的日志记录输出,请设置一个名为LOGto 的全局ENV变量debug,warn或者error:
LOG=debug node