OrbitDB是一个无服务器,分布式,P2P数据库

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的工作原理。


CLI


有关管理orbit-db数据库的CLI工具,请参阅OrbitDB CLI。


它可以从Npm安装:


npm install orbit-db-cli -g

具有IPFS实例的模块


如果您正在使用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))
})


具有IPFS守护程序的模块


另外,您也可以使用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


有关完整文档,请参阅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中的代码并尝试实例。


Node.js示例


npm run examples:node

事件簿


请参阅examples / eventlog.js中的代码并运行它:


node examples/eventlog.js

示例中有更多示例。


Packages


OrbitDB使用以下模块:

  • IPF问题

  • IPF问题日志

  • IPF问题,发布订阅房

  • crdts

  • 轨道-DB-缓存

  • 轨道-DB-发布订阅

  • 轨道-DB-密钥库

OrbitDB商店套餐

  • 轨道-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


最新推荐