Skip to content

Latest commit

 

History

History
217 lines (139 loc) · 5.13 KB

README-CN.md

File metadata and controls

217 lines (139 loc) · 5.13 KB

cxo logo

CXO 对象存储系统

Build Status GoReportCard Telegram group link Google Groups

CXO 是一个对象系统,它的作用是用来分享不同的对象。CXO是一个底层的平台,可以在它的上面构建更多的应用。

(注:对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。 就像“文件”一样,“对象”包含数据,但是和文件不同的是,对象在一个层结构中不会再有层级结构。每个对象都在一个被称作存储池的扁平地址空间的同一级别里,一个对象不会属于另一个对象的下一级。 文件和对象都有与它们所包含的数据相关的元数据,但是对象是以扩展元数据为特征的。每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。这种方法对于在云计算环境中自动化和简化数据存储有帮助。)

开始使用与API接口文档

参阅 CXO wiki 包含相关信息(尚未完善)

API文档

参阅 CXO wiki 包含相关信息(尚未完善)

安装与版本

使用dep特定版本来使用CXO。存储库的主分支指向最新的稳定版本。实际上,它现在是alpha发布。

开始使用

go get -u -t github.com/skycoin/cxo/...

测试全部的包

go test -cover -race github.com/skycoin/cxo/...

使用 Docker

docker run -ti --rm -p 8870:8870 -p 8871:8871 skycoin/cxo

开发社区

模块

  • cmd - apps
    • cxocli - CLI是管理基于RPC的工具来控制任何CXO节点 (wiki/CLI).
    • cxod - 一个CXO的守护进程,调和接受所有订阅
  • cxoutils - 基础设施
  • data - 数据库接口、对象和错误
    • data/cxds - CX数据存储是键值存储的实现。
    • data/idxdb - 执行索引数据库
    • data/tests - “data”接口的测试
  • node - 对于CXO 的 TCP传输
    • node/log - 记录器
    • node/msg - 协议消息
  • skyobject - cxo编码/解码核心,等
    • registry - 模式、类型等,

以及

格式化和编码风格

参阅 CONTRIBUTING.md 包含更多细节。

版本控制

CXO 使用 主/副 版本. “主” 体现在哪里?

  • API的变化
  • 协议的变化
  • 数据表达的变化

“副”是:

  • API变化小
  • 修复
  • 改进

因此,db文件在不同的主要版本之间是不兼容的。节点不同的主要版本不能沟通。保存的数据可能有另一个不同的表示。

版本
1.0

not defined

2.1
  • git tag: v2.1
  • commit: d4e4ab573c438a965588a651ee1b76b8acbb3724

Gopkg.toml

[[constraint]]
name = "github.com/skycoin/cxo"
revision = "d4e4ab573c438a965588a651ee1b76b8acbb3724"

or

[[constraint]]
name = "github.com/skycoin/cxo"
version = "v2.1"
3.0
  • git tag: v3.0
  • commit: 8bc2f995634cd46d1266e2120795b04b025e0d62

Gopkg.toml

[[constraint]]
name = "github.com/skycoin/cxo"
revision = "8bc2f995634cd46d1266e2120795b04b025e0d62"

or

[[constraint]]
name = "github.com/skycoin/cxo"
version = "v3.0"

依赖

依赖项是采用 dep. (Dep 是 Go 依赖管理工具)

安装 dep:

go get -u github.com/golang/dep

dep vendors 会引入所有的依赖到库中。

如果更改依赖项,则应根据需要使用dep ensure更新它们。

使用 dep help帮助文档查阅相关说明,或更新它们。

在添加一个新的依赖项(使用dep ensure)后,运行dep prune删除任何不必要的子包的依赖关系。

更新或初始化时,dep 将找到最新版本的依赖项将其编译。

实例:

初始化所有依赖项:

dep init
dep prune

更新所有依赖项:

dep ensure -update -v
dep prune

添加一个独立的依赖项(最新版本):

dep ensure github.com/foo/bar
dep prune

添加一个独立的(更具体的版本),或降级现有的依赖项:

dep ensure github.com/foo/bar@tag
dep prune