【问题标题】:What do I need to know to implement a proof of concept graph database?我需要知道什么来实现概念图数据库的证明?
【发布时间】:2011-06-26 13:01:39
【问题描述】:

我有一个需要图形数据库的产品,不幸的是,我发现的所有图形数据库都不够成熟、花费很多钱或者只是不能满足我的需求。
我想实现一个量身定制的图形数据库,具有以下特点:

  • 只能有方向的图。
  • 数据库必须嵌入到正在运行的进程中,因此它将保存在内存中。
  • 数据库只会执行以下操作:
    • 从节点读取。
    • 写入节点(创建/更新)
    • 删除一个节点
    • 边缘重定向(具有指向一个节点的边缘的节点现在将指向另一个节点的操作)
    • 一种与本题无关的图搜索算法。
  • 图形数据库只需要包含和处理三种类型的节点。

我需要了解什么才能将其编写为概念证明?需要多长时间才能写完?
面向函数的方法(我知道它可以更好地处理递归)是否比面向对象的方法更适合这里?
我的约束是否更容易实现?

【问题讨论】:

    标签: graph-theory graph-databases


    【解决方案1】:

    如果您使用其他数据存储作为后端,您可以非常快速地编写概念证明,只需在顶部添加一个 graphdb API。关于项目的大小:在 SourceForge 和 GitHub 等地方四处看看,你应该能够找到小的 graphdb 实现。然后,您可以查看源代码行与功能,并对您的项目有所了解。你没有提到事务和故障恢复之类的东西——如果你想要的话,那将需要更多的努力。

    【讨论】:

    • 如果我不在后端使用其他数据存储怎么办?
    • 那么我想说这可能不再是概念证明了。关键在于您希望 PoC 回答什么问题。
    • 如果我使用 RDBMS 作为后端,它甚至无法扩展到 100 个节点。如果它被开发为扩展到很多节点,我需要一些真正可以工作的东西。
    【解决方案2】:

    数据库必须嵌入正在运行的进程中,因此它将保存在内存中。

    您基本上可以使用任何类型的图形处理库(例如 C# 的 QuickGraph)并在后台线程中定期将数据库序列化到磁盘(以防突然断电或崩溃)。

    您需要对图论(当然)、多线程、并行计算(锁、事务等)有所了解,但如果您不需要事务,那么使用库基本上可以使其成为 IMO 的周末项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      相关资源
      最近更新 更多