Terminology 名词解释

To stay sane and communicate effectively we try hard to use consistent terminology throughout the pieces of the project. Please let us know if things here are confusing or lacking.

blob [#]
an immutable sequence of 0 or more bytes, with no extra metadata
blobref [#]
a reference to a blob, consisting of a cryptographic hash function name and that hash function's digest of the blob's bytes, in hex. Examples of valid blobrefs include:

     sha1-f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
md5-d3b07384d113edec49eaa6238ad5ff00
sha256-b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c

Concatenating the two together with a hyphen is the common representation, with both parts in all lower case.

blob server [#]
the simplest and lowest layer of the Camlistore servers (see: architecture). A blob server, while potentially shared between users, is logically private to a single user and holds that user's blobs (whatever they may represent).

The protocol to speak with a blob server is simply:

  • get a blob by its blobref.
  • put a blob by its blobref.
  • enumerate all your blobs, sorted by their blobrefs. Enumeration is only really used by your search server and by a full sync between your blob server mirrors.

(Note: no delete operation)

schema blob [#]
Camlistore-recognized data structure, serialized as a JSON object (map). A schema blob must have top-level keys camliVersion and camliType and start with a open brace ({, byte 0x7B). You may use any valid JSON serialization library to generate schema blobs. Whitespace or formatting doesn't matter, as long as the blob starts with { and is valid JSON in its entirety.

Example:

{
"aKey": "itsValue",
"camliType": "foo",
"camliVersion": 1,
"somethingElse": [1, 2, 3]
}
signed schema blob (aka "claim") [#]
if you sign a schema blob, it's now a "signed schema blob" or "claim". The terms are used pretty interchangeably but generally it's called a claim when the target of the schema blob is an object's permanode (see below).
object [#]
something that's mutable. While a blob is a single immutable thing, an object is a collection of claims which mutate an object over time. See permanode for fuller discussion.
permanode [#]
since an object is mutable and Camlistore is primarily content-addressed, the question arises how you could have a stable reference to something that's changing. Camlistore solves this with the concept of a permanode. Like a permalink on the web, a permanode is a stable link to a Camli object.

A permanode is simply a signed schema blob with no data inside that would be interesting to mutate. Seethe permanode spec.

A permanent reference to a mutable object then is simply the blobref of the permanode.

The signer of a permanode is its owner. The search server and indexer will take this into account. While multiple users may collaborate on mutating an object (by all creating new, signed mutation schema blobs), the owner ultimately decides the policies on how the mutations are respected.

Example permanode blob: (as generated with camput --permanode)

{"camliVersion": 1,
"camliSigner": "sha1-c4da9d771661563a27704b91b67989e7ea1e50b8",
"camliType": "permanode",
"random": "HJ#/s#S+Q$rh:lHJ${)v"
,"camliSig":"iQEcBAABAgAGBQJNQzByAAoJEGjzeDN/6vt85G4IAI9HdygAD8bgz1BnRak6fI+L1dT56MxNsHyAoJaNjYJYKvWR4mrzZonF6l/I7SlvwV4mojofHS21urL8HIGhcMN9dP7Lr9BkCB428kvBtDdazdfN/XVfALVWJOuZEmg165uwTreMOUs377IZom1gjrhnC1bd1VDG7XZ1bP3PPxTxqppM0RuuFWx3/SwixSeWnI+zj9/Qon/wG6M/KDx+cCzuiBwwnpHf8rBmBLNbCs8SVNF3mGwPK0IQq/l4SS6VERVYDPlbBy1hNNdg40MqlJ5jr+Zln3cwF9WzQDznasTs5vK/ylxoXCvVFdOfwBaHkW1NHc3RRpwR0wq2Q8DN3mQ==gR7A"}
frontend [#]
the public-facing server that handles sharing and unified access to both your blob server and search server. (see architecture diagram)
full sync [#]
synchronizing all your blobs between two or more of your blob servers (e.g. mirroring between your house, App Engine, and Amazon).

Generally a full sync will be done with the blob server's enumerate support and no knowledge of the schema. It's a dumb copy of all blobs that the other party doesn't already have.

graph sync [#]
as opposed to a full sync, a graph sync is synchronizing a sub-graph of your blobs between blob servers. This level of sync will operate with knowledge of the schema.
search server [#]
indexer [#]
TODO: finish documenting

Camlistore名词解释的更多相关文章

  1. nodejs、npm、grunt——名词解释

    最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...

  2. Sql常用语法以及名词解释

    Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...

  3. 转OSGchina中,array老大的名词解释

    转OSGchina中,array老大的名词解释 转自:http://ydwcowboy.blog.163.com/blog/static/25849015200983518395/ osg:: Cle ...

  4. css名词解释

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. sudo权限添加 和 rpm、deb之名词解释

    sudo权限添加: 刚开始用Center_os Linux操作系统,想装个输入法,搜了一下,看到linux下的搜狗输入法(帖子链接)下载下来的文件的扩展名是.deb,直接用帖子上的一个命令: sudo ...

  6. SourceTree&Git部分名词解释

    SourceTree&Git部分名词解释 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓 ...

  7. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...

  8. b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释

    我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括wap站点.手机app站点. 一.现有公司技术人员现状: 1.熟悉asp ...

  9. Lucene/ElasticSearch 学习系列 (2) Information Retrival 初步之名词解释

    计算机领域一半是理论,一半是在理论基础之上的应用.要想深入地掌握某个方面的应用,就需要先学习那方面的理论. “搜索”是应用,其背后的理论是 "Information Retrieval&qu ...

随机推荐

  1. 使用PostSharp在.NET平台上实现AOP

    摘自:http://www.cnblogs.com/leoo2sk/archive/2010/11/30/aop-postsharp.html 本文首先介绍AOP(面向方面编程)的相关概念及理论,然后 ...

  2. IE6—在链接click事件的响应函数中发送jsonp请求不生效

    $("#link").click(function(){     $.ajax({         type: 'GET',         dataType: 'jsonp', ...

  3. NYOJ 10 skiing (深搜和动归)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且 ...

  4. PHP 时间与日期

    PHP提供了大量的内置函数,使开发者在时间的处理上游刃有余,大大提高了工作效率. 介绍一些常见的PHP日期和时间函数以及日期和时间的处理. 经常使用的日期和时间处理函数 函 数 说  明 checkd ...

  5. void *指针的加减运算

    1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...

  6. config.sql

    # mysql服务器注释支持# #到该行结束# -- 到该行结束 # /* 行中间或多个行 */ drop database if exists db_warehouse;create databas ...

  7. [ tarjan + dfs ] poj 2762 Going from u to v or from v to u?

    题目链接: http://poj.org/problem?id=2762 Going from u to v or from v to u? Time Limit: 2000MS   Memory L ...

  8. flink on yarn 用户代码获取keytab本地文件和principal的方法

    flink on yarn的情况下配置的keytab文件会根据每次yarn application 分配taskmanager的变化都是不一样的,在部分场景下用户代码也需要获得keytab文件在yar ...

  9. python对象序列化之pickle

    本片文章主要是对pickle官网的阅读记录. The pickle module implements binary protocols for serializing and de-serializ ...

  10. python学习之strip()

    定义: Python strip() 方法用于移除字符串头尾指定的字符(默认为空格). 语法: str.strip([chars]); 返回值: 返回移除字符串头尾指定的字符生成的新字符串. 例子: ...