Project Icon

orbitdb

分布式点对点数据库系统

OrbitDB是一个分布式点对点数据库系统,使用IPFS存储数据并通过Libp2p Pubsub实现节点间自动同步。支持事件日志、文档数据库和键值存储等多种数据模型,适用于P2P应用、区块链项目和本地优先Web应用。基于Merkle-CRDTs技术,OrbitDB实现了无冲突的数据写入和合并,保证最终一致性,为分布式系统提供可靠的数据管理功能。

OrbitDB

Matrix npm (范围) node-current (范围)

OrbitDB是一个无服务器、分布式、点对点数据库。OrbitDB使用IPFS作为数据存储,使用Libp2p Pubsub自动与对等节点同步数据库。它是一个最终一致性数据库,使用Merkle-CRDTs实现无冲突的数据库写入和合并,使OrbitDB成为P2P和去中心化应用、区块链应用以及本地优先网络应用的绝佳选择。

OrbitDB提供多种类型的数据库,适用于不同的数据模型和用例:

  • events:一个不可变(仅追加)的日志,具有可遍历的历史记录。适用于"最新N条"用例或作为消息队列。
  • documents:一个文档数据库,可以存储JSON文档并按指定键进行索引。适用于构建搜索索引或对文档和数据进行版本控制。
  • keyvalue:一个键值数据库,就像你喜欢的键值数据库一样。
  • keyvalue-indexed:在Level键值数据库中索引的键值数据。

所有数据库都是在OrbitDB的OpLog之上实现的,OpLog是一个不可变的、密码学可验证的、基于操作的无冲突复制数据结构(CRDT),适用于分布式系统。OpLog在Merkle-CRDTs论文中得到了形式化。你还可以通过实现和使用自定义数据模型轻松扩展OrbitDB,从而受益于与底层Merkle-CRDTs提供的默认数据模型相同的特性。

这是JavaScript实现,适用于浏览器Node.js,支持Linux、OS X和Windows。

Go语言实现由Berty项目开发和维护,位于berty/go-orbit-db

安装

安装OrbitDB及其依赖项:

npm install @orbitdb/core helia

浏览器

OrbitDB可以通过使用分发的js文件和<script/>标签在浏览器中加载。OrbitDB是全局命名空间,所有外部函数都可以通过这个命名空间访问:

<script>/path/to/orbitdb.min.js</script>

快速入门

如果你想快速上手OrbitDB,请安装并按照@orbitdb/quickstart模块的说明进行操作。

使用方法

如果你正在使用@orbitdb/core开发浏览器Node.js应用程序,请将其作为模块与JavaScript版本的IPFS一起使用。

import { createHelia } from 'helia'
import { createOrbitDB } from '@orbitdb/core'
import { gossipsub } from "@chainsafe/libp2p-gossipsub";
import { identify } from "@libp2p/identify";
import { createLibp2p } from 'libp2p'

const Libp2pOptions = {
  services: {
    pubsub: gossipsub({
      // 运行单个对等节点所必需的
      allowPublishToZeroTopicPeers: true
    }),
    identify: identify()
  }
}
;(async function () {
  const libp2p = await createLibp2p({ ...Libp2pOptions })
  const ipfs = await createHelia({libp2p})
  const orbitdb = await createOrbitDB({ ipfs })

  // 创建/打开数据库。默认数据库类型为"events"。
  const db = await orbitdb.open("hello")
  
  const address = db.address
  console.log(address)
  // "/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To"
  // 上述地址可以在另一个节点上用于打开相同的数据库

  // 监听来自对等节点的更新
  db.events.on("update", async entry => {
    console.log(entry)
    const all = await db.all()
    console.log(all)
  })

  // 添加一条记录
  const hash = await db.add("world")
  console.log(hash)

  // 查询
  for await (const record of db.iterator()) {
    console.log(record)
  }
  
  await db.close()
  await orbitdb.stop()
  await ipfs.stop()
})()

要为持久性配置您的IPFS实例Libp2p连接到对等节点,请参阅@orbitdb/quickstart中的创建Helia实例默认Libp2p配置示例。

文档

使用**入门指南**作为OrbitDB的初步介绍。

您可以在我们的文档中找到更高级的主题,包括:

API

完整的API文档请参见https://api.orbitdb.org

开发

运行测试

npm run test

构建

npm run build

基准测试

node benchmarks/orbitdb-events.js

更多基准测试请参见benchmarks/

API

要构建API文档,请运行:

npm run build:docs

文档将输出到./docs/api。

其他实现

如果您知道任何其他应该包含在此部分的仓库,请开启PR并添加它们。

贡献

**请查看我们组织范围的贡献指南。**您会在那里找到大多数问题的答案。

如果您想编码但不知道从哪里开始,请查看标记为"help wanted"的问题。

赞助商

OrbitDB的开发得到了以下机构的赞助:

如果您想赞助开发者为OrbitDB工作,请捐赠给我们的OrbitDB Open Collective或联系@haadcode

许可证

MIT © 2015-2023 Protocol Labs Inc., Haja Networks Oy, OrbitDB社区

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

Trae

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号