rdnf-0.2

article/2025/11/10 14:20:45

rdnf 0.2 思路

indradb

indradb图数据库是基于kv存储引擎,主要是基于rocksdb。基本元素主要有三:Edge、Vertex、Property(包含edge_property、vertex_property)。

原理如下

  • VertexManager

    • key:vertex.id
    • value:vertex.identifier
  • EdgeRangeManager

    • key:[edge.outbound_id,edge.identifier,edge.inbound_id]
    • value:null

    因为key是排序过的,故可通过迭代的方式查找对应 inbound_id的集合,即vertex.id集合。

    同理可得ReversedEdgeRangeManager

    • key[edge.inbound_id,edge.identifier,edge.outbound_id]
    • value:null
  • VertexPropertyManager

    • key:[vertex.id,identifier]
    • value:json
  • EdgePropertyManager

    • key:[edge.outbound_id,edge.identifier,edge.inbound_id,identifier]
    • value:json
  • VertexPropertyManager

    • key:[identifier,json,vertex_id]
    • value:null

    通过迭代遍历排序过的key,得到对应的vertex_id,或得到对应的json和vertex_id

  • EdgePropertyManager

    • key:[identifier,json,edge.outbound_id,edge.identifier,edge.inbound]
    • value:null

    同上

图数据库建模

请添加图片描述

最初的方案设计是name、arch单独作为一个(identifer,value),但是这会造成大量kv键值对,数据库的写入压力非常大。故而软件包的元数据信息包装成为pkgdetail和formatdetail。同样的,将requires由类似与provides的边关系,转变为property。

每个package provides多个entry,每个package requires多个entry。

Repo

按照优先级有三层repo

  • cmd_repo:有这样的场景: dnf install file:///…x86_64.rpm https://…i686.rpm 将url的rpm下载到本地,将这些本地的rpm文件,解析其头文件,将元数据导入到cmd_repo,由于是用户指定的rpm文件,故而优先级最高。
  • installed_repo: 操作系统将已经安装后的rpm包的元数据信息,导入到rpmdb.sqlite文件中,路径一般为 /var/lib/rpm/rpmdb.sqlite ,由于操作的不便,目前采用的是将rpmdb.sqlite的数据导入到installed_repo,根据rpmdb.sqlite的sqlite_sequence 和installed_seq中的记载来判断是否需要同步。在使用rdnf的同时,对rpmdb.sqlite文件加锁。
  • repos: 将多个远程的软件包仓库的元数据xml文件解析成Vec<Repo>

SAT依赖解析

每个package requires多个Entry

对每个requier_entry:<rpm:entry name=“0ad-data” flags=“EQ” epoch=“0” ver=“0.0.26”/>,将其解析为SolveItem

pub(self) struct SolveItem {entry_name: Arc<String>,ver: Version,flag: Option<String>,
}
其中,pub struct Version {pub epoch: Option<u32>,pub version: Option<String>,pub release: Option<String>,
}

依次从cmd_repo、installed_repo、repos查找能够提供满足需要的Entry的Package ( P i , i = 1 , 2 , . . m P_i,i=1,2,..m Pi,i=1,2,..m)。

  • provide 语义

( P 1 ∨ P 2 ∨ P 3 . . ∨ P m ∨ ¬ E n t r y 1 ) 当 E n t r y 1 为 T r u e ,则 P 1 . . P m 中至少有一个必须为 T r u e (P_1 \vee P_2 \vee P_3..\vee P_m \vee \neg Entry_1)\\ 当 Entry_1 为True,则P_1..P_m中至少有一个必须为True (P1P2P3..Pm¬Entry1)Entry1True,则P1..Pm中至少有一个必须为True

  • require 语义:对于Package的reuqire Entry

( E n t r y i ∨ ¬ P a c k a g e ) 当 P a c k a g e 为 T r u e , 则 E n t r y i 必为 T r u e 由公式 ( 1 ) 可得,提供 E n t r y i 的多个 p a c k a g e 至少有一个为 T r u e . (Entry_i \vee \neg Package)\\ 当Package为True,则Entry_i必为True \\ 由公式(1)可得,提供Entry_i的多个package至少有一个为True. (Entryi¬Package)PackageTrue,Entryi必为True由公式(1)可得,提供Entryi的多个package至少有一个为True.

  • conflict : P a c k a g e A Package_A PackageA对于conflict entry,满足entry条件的多个package ( P i , i = 1 , 2 , . . m P_i,i=1,2,..m Pi,i=1,2,..m)

( ¬ P A ∨ ¬ P i ) ∧ ( ¬ P A ∨ ¬ P 2 ) . . . ∧ ( ¬ P A ∨ ¬ P m ) (\neg P_A \vee \neg P_i) \wedge (\neg P_A \vee \neg P_2) ...\wedge (\neg P_A \vee \neg P_m) (¬PA¬Pi)(¬PA¬P2)...(¬PA¬Pm)

  • obsolete同上。

当Require为Term时,即类似于**((feh and xrandr) if Xserver)**的
( ¬ P a c k a g e ∨ T e r m o u t ) ∧ ( ¬ T e r m o u t ∨ ¬ E n t r y X s e r v e r ∨ T e r m i n ) ∧ ( ¬ T e r m i n ∨ E n t r y f e h ) ∧ ( ¬ T e r m i n ∨ E n t r y x r a n d r ) (\neg Package \vee Term_{out})\wedge (\neg Term_{out} \vee \neg Entry_{Xserver}\vee Term_{in}) \\ \wedge (\neg Term_{in} \vee Entry_{feh}) \wedge (\neg Term_{in} \vee Entry_{xrandr}) (¬PackageTermout)(¬Termout¬EntryXserverTermin)(¬TerminEntryfeh)(¬TerminEntryxrandr)

  • 对于or 语义 (a or b or c),a、b、c既可以是Entry_id也可以是Term_id

( A ∨ B ∨ C ∨ ¬ T e r m ) (A \vee B \vee C \vee \neg Term) (ABC¬Term)

  • 对于and 语义(a and b and c)
    ( ¬ T e r m ∨ A ) ∧ ( ¬ T e r m ∨ B ) ∧ ( ¬ T e r m ∨ c ) (\neg Term \vee A)\wedge (\neg Term \vee B) \wedge (\neg Term \vee c) (¬TermA)(¬TermB)(¬Termc)

  • 对于 if 语义 (m if p)
    T e r m → ( P → M ) ( ¬ T e r m ∨ ¬ P ∨ M ) Term \rightarrow (P \rightarrow M) \\ (\neg Term \vee \neg P \vee M) Term(PM)(¬Term¬PM)

  • 对于 if else 语义 (m if p else n)
    T e r m → ( P → M ) T e r m → ( ¬ P → N ) ( ¬ T e r m ∨ ¬ P ∨ M ) ∧ ( ¬ T e r m ∨ P ∨ N ) Term \rightarrow (P \rightarrow M) \\ Term \rightarrow (\neg P \rightarrow N) \\ (\neg Term \vee \neg P \vee M) \wedge (\neg Term \vee P \vee N) Term(PM)Term(¬PN)(¬Term¬PM)(¬TermPN)

​ unless unless else 同上。

  • 对于with 语义,通过满足多个Entry的多个pkg 的交集,without 即减集

下一步目标

  • makecache 构建缓存后,再次调用 rdnf其他命令,可能会出现报错(某个文件不存在)(Bug)
  • 目前使用sat算法求解器是 varisat,该求解器的策略是,用最少数量为True的变量满足所有的Clause,不符合要求。在or 语义和provide语义中,package应该是存在优先级的,即先按arch(x86_64一定是优于i686)、然后是按repo排序(cmd_repo > install_repo > repos,其中repos是按配置文件中的priority排序)。需要对sat求解算法改进。
  • 在本地建立缓存,使用的rocksdb效果不是很理想,kv分离的lsm树存储引擎比较理想,例如badger。

http://chatgpt.dhexx.cn/article/Ilb8q7tA.shtml

相关文章

RDD是什么?

前言 本文隶属于专栏《1000个问题搞定大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系 注意一些关于Spark Co…

AMD RDNA Architecture - AMD RDNA 架构

AMD RDNA Architecture - AMD RDNA 架构 https://www.amd.com/en/technologies/rdna Architected for Gaming - 为游戏而构建 The new RDNA architecture is designed for the next generation of efficient high-performance gaming. It’s the DNA that powers your games, …

Residual Dense Network for Image Super-Resolution(RDN)

摘要 1.问题背景&#xff1a;传统的深度CNN在图像超分辨率任务中取得了显著的成功&#xff0c;但是大部分基于深度CNN的SR模型没有充分利用来自原始低分辨率&#xff08;LR&#xff09;图像的层次特征&#xff0c;导致相对较低的性能。 2.创新点&#xff1a;为了解决这个问题…

一文带你初识RDMA技术——RDMA概念,特点,协议,通信流程

文章目录 1.RDMA概念2.RMDA与Socket2.1传统的TCP/IP通信2.2TCP/IP存在的问题 3.RDMA的特点3.1CPU offload3.2kernel bypass3.3zero copy3.4异步接口 4.RDMA通信协议InfiniBandRoCEiWARP 5.RDMA编程概述5.1传输操作5.2传输模式5.3相关概念5.4典型实例 6.RDMA通信过程6.1单向通信…

rDSN概览

原文链接&#xff1a;https://github.com/Microsoft/rDSN/wiki/overview rDSN(Robust Distributed System Nucleus)翻译成中文是高可用分布式系统核心&#xff0c;旨在提供一个健壮的、易于扩展、易于维护运营的分布式软件架构。对于分布式系统的开发人员来说&#xff0c;其提…

深度学习(二十二)——ESPCN, FSRCNN, VESPCN, SRGAN, DemosaicNet, MemNet, RDN, ShuffleSeg

https://antkillerfarm.github.io/ ESPCN ESPCN&#xff08;efficient sub-pixel convolutional neural network&#xff09;是创业公司Magic Pony Technology的Wenzhe Shi和Jose Caballero作品。该创业团队主要来自Imperial College London&#xff0c;目前已被Twitter收购。…

超分文章记录 SRCNN-FSRCNN-ESPCN-VDCN-DRCN-RDN-LapSRN-SRDenseNet-SRGAN

1.Learning a Deep Convolutional Network for Image Super-Resolution&#xff08;SRCNN 2014 ECCV &#xff09; 1、总结 第一篇用深度学习做超分的文章&#xff0c;就是用深度学习来表示传统方式。结构比较简单。 源码地址&#xff1a; SRCNN CODE 2、思路 先用 bicubic…

Introducing RDNA Architecture

Introducing RDNA Architecture The RDNA architecture white paper https://www.amd.com/system/files/documents/rdna-whitepaper.pdf The all new Radeon gaming architecture powering “Navi” 全新 Radeon 游戏架构为 Navi 提供动力 Table of Contents Introduction R…

Fluent案例:肾动脉RDN治疗过程的仿真

1 问题背景 肾动脉消融&#xff08;Renal denervation&#xff0c;简称RDN&#xff09;是一种治疗高血压的办法&#xff0c;其基本原理为利用插入肾动脉的电极消融导管进行射频消融&#xff0c;使肾动脉血管壁附近的交感神经因高温而损伤失活&#xff0c;减少神经系统过度活跃的…

LDAP 中的 RDN

什么是 RDN&#xff0c;RDN 和 DN 又有什么关系呢&#xff1f; 很多第一次接触到 LDAP 的童鞋&#xff0c;经常会被一堆名字搞得晕头转向。 RDN&#xff08;relative distinguished name&#xff09;中文翻译就是相对专有名字。 一般指dn逗号最左边的部分&#xff0c;如 cnb…

超分算法RDN:Residual Dense Network for Image Super-Resolution 超分辨率图像重建

这篇文章总结分析了ResNet 和DenseNet的优缺点&#xff0c;并将其结合&#xff0c;提出了新的结构ResidualDenseNet。文章中对ResNet 和DenseNet以及MemNet都进行了简单的对比分析。四篇原文都放在下面。 参考文档&#xff1a; RDN&#xff1a;https://arxiv.org/pdf/1802.0879…

图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR

目录 FSRCNNDRCNRDNEDSR 文章&#xff1a; FSRCNN : Accelerating the Super-Resolution Convolutional Neural Network DRCN: Deeply-Recursive Convolutional Network for Image Super-Resolution RDN: Residual Dense Network for Image Super-Resolution EDSR&#xff1a;E…

初识RDMA技术——RDMA概念,特点,协议,通信流程

1. RDMA概念 在DMA技术中&#xff0c;外部设备&#xff08;PCIe设备&#xff09;能够绕过CPU直接访问主机的系统主存&#xff1b; RDMA&#xff08;Remote Direct Memory Access&#xff09;在概念上是相对于DMA而言的。指外部设备能够绕过CPU&#xff0c;不仅可以访问本地主机…

【RDMA】技术详解(一):RDMA概述

目录 0、前言 一、技术背景 1 传统的 TCP/IP 网络通信的弊端 2 新的网络通信技术&#xff08;TOE and RDMA&#xff09; 2.1 TOE &#xff08;TCP/IP协议处理工作从CPU转移到网卡&#xff09; 2.2 RDMA &#xff08;绕过CPU&#xff0c;数据直接‘传’到对端内存&#xf…

Oriented rcnn

oriented rcnn代码解析 文章目录 rpn_head.forward_trainroi_head.forward_train class OrientedRCNN(RotatedTwoStageDetector) 类似rotated faster rcnn它们都继承两阶段检测器类。 所以训练的整体框架都如下&#xff1a; rpn_head.forward_train 代码主体&#x1f447; …

srcnn fsrcnn espcn rdn超分网络的结构

1.Srcnn Code&#xff1a; 数据集制作方法&#xff1a;以x2为例 训练数据&#xff1a;一张原始图作为高分辨率图像&#xff08;h, w&#xff09;&#xff0c;先下采样到&#xff08;h/2, w/2&#xff09;,然后再cubic上采样到&#xff08;h, w&#xff09;得到低分辨率图像&a…

RDD

RDD <1> 概述一. 什么是RDD二. spark 编程模型1. DataSource2. SparkContext3. Diver&#xff08;1&#xff09;SparkConf&#xff08;2&#xff09;SparkEnv&#xff08;3&#xff09;DAGScheduler&#xff08;4&#xff09;TaskScheduler&#xff08;5&#xff09;Sche…

RDNet

RDNet&#xff1a;Density Map Regression Guided Detection Network for RGB-D Crowd Counting and Localization IntroductionMethodExperiments Introduction Motivation&#xff1a;Regression-based方法有局限性&#xff0c;希望还是使用detection-based可以估计出每个人…

【超分辨率】(RDN)Residual Dense Network for Image Super-Resolution论文翻译

机翻&#xff0c;我尽量调整了公式和图片的排版 发现机翻根本看不了&#xff0c;自己人工翻译了下&#xff0c;其中摘要、网络部分&#xff08;第三节&#xff09;为人工翻译。 自己翻译过程中难免会出错&#xff0c;希望各位海涵&#xff0c;同时也欢迎各位提出翻译过程中的错…

LIIF超分辨率之RDN(残差密集网络)

1. 背景 用PaddlePaddle复现论文LIIF&#xff0c;LIIF中使用的Encoder是RDN&#xff0c;本文介绍一下RDN。 RDN论文&#xff1a;https://arxiv.org/abs/1802.08797 Torch代码&#xff1a; https://github.com/yinboc/liif/blob/main/models/rdn.py 2. RDN的组成 RDN网络结…