XDAG技术详解8-文件存储结构

时间格式

因为xdag的文件存储命名使用了时间戳,需要先描述时间戳的格式。

  1. 时间戳

    xdag用的时间戳是一个64位的int值,分为两部分。

    1. 尾部低10位

      表示秒以下的单位,最小单位是1/1024秒,注意作者在这里用的是二进制运算,所以用1024去分割秒。

    2. 剩余的高54位

      UTC秒。注意,实际中用不到54位。

  2. 时间片

    xdag用64秒做为一个时间片,假设t为时间戳,则 t>>16 (先右移10位去秒,再右移6位) 为时间片序号,代码中每次取时间片都是用这种方式。

storage目录结构

一个典型的存储目录结构:

image-20190819132213748.png
  1. 文件命名

    除了0级目录名固定为storage外,1到3级目录和block文件的命名均与时间戳有关。

    假设一个block的时间戳16进制为:XX1-XX2-XX3-XX4-XX5-XX6-XX7-XX8,则这个block会被存储在名为storage/XX1XX2XX3/XX4/XX5/XX6.dat的文件中,因为通常XX1XX2都是0(目前秒的部分只需要32位就够了,而这里实际有54位),所以我们看到的实际文件名路径一般为storage/XX3/XX4/XX5/XX6.dat,但是注意,随着时间的推移,1级目录名出现XX1XX2XX3的形式是正确的。但在目前的代码实现上,只允许出现XX3,不允许出现XX1XX2XX3,所以后续都假设只有XX3一种形式

  2. 目录存储

    因为文件名的命名用的是一个字节的16进制字符表示,所以理论上,任何一个目录下的子目录或者文件个数,最多只能有256个。文件名反映了对上级时间段的256分割。

    1. 3级目录下的block文件,最多可以有256个,每个文件包含了一个时间片内所有的block存储(64秒内)。
    2. 1、2、3级目录中的目录数,也是只能最多256个。
    3. 0级目录只有固定的一个storage。

block文件结构

一个block文件(XX6.dat),存储了一个XX6时间片(64秒)内所有收到的block,按顺序把二进制放进去,个数不限,理论上这个文件可以无限大(除了受到文件系统限制)。

格式:block1-struct-binary | block2-struct-binary | ... | blockN-struct-binary。

sums文件

  1. sums文件格式

    sums.dat存储了当前目录下所有block(或者目录)的数据摘要结果。

    sum文件固定为4K大小,文件被等分为256个部分,存储当前目录下256个文件(目录)各自的sum计算结果。每个等分16字节,等于struct xdag_storage_sum的大小。

    struct xdag_storage_sum {
        uint64_t sum;   // 8字节
        uint64_t size;  // 8字节
    };
    

    每个block(目录)在sum在文件中的存储索引,就是block文件名的值(转为十进制后)。

    拿9d/sums.dat文件举例,这个文件的第138等分处,存储的是9d/8a.dat文件的sum计算结果(直接存储了xdag_storage_sum结构体),因为16进制的8a等于十进制的138。

  2. sum计算方式

    每个位置实际存储的就是xdag_storage_sum结构体的二进制内容,下面说明如何计算。

    以9d/8a.dat文件的sum计算举例,在9d/sums.dat文件的第138个位置,存储了一个下面的结构体。

    struct xdag_storage_sum {
        uint64_t sum;
        uint64_t size;
    };
    

    size:8a.dat文件中所有block的字节总和,实际上就是文件大小,之所以这样描述,是因为代码是这样写的,这是直观意图,但不排除未来这两者不再相等。

    sum:把block文件按照8字节分割,每个8字节作为一个64位int叠加到sum,原始代码:s.sum += ((uint64_t *)(buf + i))[j];。这里的目的是为了做摘要后在多结点间对比数据差异,碰撞概率上比hash大,有一定瑕疵。

  3. 1/2/3级目录sum计算

    以3级目录举例,3级目录中sums.dat文件中的存储结构与block目录的sums.dat文件存储模式一致,只不过把block的位置换成了目录的位置。

    以9d目录举例,则6c/sums.dat文件中的第157位置存储的是9d目录的sum结果,因为16进制9d等于十进制157。

    9d目录的xdag_storage_sum结构体计算方法比较简单,就是把9d/sums.dat中256个xdag_storage_sum结构体的相同字段简单求和。9d-xdag_storage_sum.size = sum(9d/sums.dat.size),sum字段类似。

    1、2级目录的sum计算方法一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339

推荐阅读更多精彩内容

  • 01 毒剂毒性 toxicity of toxic agent 02 急性毒性 acure toxicit...
    范兰英阅读 215评论 0 5
  • 时间熬出的浓郁,豆腐菌菇蔬菜的清香甘甜,肉的紧实甘甜,太阳的热量生命力的跳跃种种力量汇聚如同洪水将人淹没。又像是温...
    亭君_阅读 130评论 0 0
  • 《孩子,你慢慢来》于2016年12月30日迎来最后一页的阅读,人生三书我并没有按顺序看,从《目送》到《孩子,你慢...
    清尘912阅读 183评论 0 0
  • 最近充斥的对拼多多的冷嘲热讽以及贬低,好像拼多多是个很奇怪的物种!潜台词大概如是——拼多多,你也配上市! 我读历史...
    刹那流转阅读 6,692评论 0 4