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

2019-05-20 14:45:40

OrbitDB是一个无服务器,分布式,对等数据库。OrbitDB使用IPFS作为其数据存储,IPFS Pubsub使用IPFS自动同步数据库。

  分散式网络的对等数据库

  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守护程序的模块

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


最新推荐