问题标签 [graph-databases]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
32701 浏览

c# - .NET 图形数据库

我一直在设计一个基于 .NET/Mono 框架的应用程序,它应该大量使用图论中的最短路径,我想使用本机解决方案来遍历图的节点,而不是实施难以维护且会严重影响性能的替代解决方案。

我找到了一个非常适合我的范围的应用程序:neo4j

不幸的是,这个应用程序纯粹是用 Java 代码编写的,由于两种架构之间的巨大差异,它不能移植到 .NET。

有没有人知道是否有neo4j的任何端口或.NET的类似解决方案?

0 投票
7 回答
33906 浏览

database - 基于图的数据库(http://neo4j.org/)有哪些用例?

我使用了很多关系数据库,并决定冒险尝试其他可用的类型。

这个特殊的产品看起来不错而且很有前途: http: //neo4j.org/

有人用过基于图的数据库吗?可用性方面的优缺点是什么?

你在生产环境中使用过这些吗?促使您使用它们的要求是什么?

0 投票
11 回答
681 浏览

database - 有这样的数据库吗?

背景:好的,所以我正在寻找我猜是对象数据库的东西。然而,我所看到的(当然很少)对象数据库是简单的持久层,而不是成熟的 DBMS。我不知道我正在寻找的东西是否甚至被认为是一个对象数据库,因此非常感谢任何帮助我指出正确方向的帮助。


我不想给你两页来描述我在寻找什么,所以我会用一个例子来说明我的观点。假设我有一个需要存储的“BlogPost”对象。像这样的东西,在伪代码中:

(假设Comment是它自己的类。)

现在,在关系数据库中,author将存储为指向 a 的外键User.id,并且使用单独的表将tagsandcomments存储为一对多或多对多关系来存储关系。我想要的是一个执行以下操作的数据库引擎:

  • 使用直接引用而不是使用外键来存储相关对象(authortags等),这需要额外的查找;换句话说,彼此之上的对象应该由数据库本机支持
  • 允许我在博客文章中添加评论或标签,而无需检索整个对象、更新它,然后将其放回数据库(如面向文档的数据库——CouchDB 就是一个例子)

我想我正在寻找的是一个导航数据库,但我不知道。有什么和我想的很相似的吗?如果是这样,它叫什么?(或者更好的是,给我一个实际工作的数据库。)还是我太挑剔了?


编辑:

澄清一下,我不是在寻找 ORM或抽象层或类似的东西。我正在寻找一个在内部执行此操作的实际数据库。对不起,如果我很难,但我已经搜索过,我找不到任何东西。


编辑:

此外,JVM 的某些东西会很棒,但在这一点上,我真的不在乎它运行在什么平台上。

0 投票
2 回答
6305 浏览

neo4j - 围绕图形数据库大肆宣传……为什么?

围绕图形数据库有一些炒作。我想知道为什么。

在当今的 Web 环境中可能会遇到哪些可以使用图数据库解决的问题?图数据库是否适合经典应用程序,即可以用作关系数据库的替代品?所以实际上这是两个问题合二为一。

相关: 有人使用过基于图形的数据库(http://neo4j.org/)吗?

0 投票
7 回答
7728 浏览

python - 图数据库和 RDF 三元存储:在 python 中存储图数据

我需要在 python 中开发一个图形数据库(如果有人可以加入我的开发,我会很高兴。我已经有一些代码,但我很乐意讨论它)。

我在互联网上进行了研究。在 Java 中,neo4j是一个候选者,但我找不到任何关于实际磁盘存储的信息。在 python 中,有许多图形数据模型(参见这个 pre-PEP 提案,但它们都不能满足我从磁盘存储和检索的需要。

但是,我确实知道三联店。Triplestore 基本上是 RDF 数据库,因此可以将图形数据模型映射到 RDF 中并存储,但我通常对这种解决方案感到不安(主要是由于缺乏经验)。一个例子是芝麻。事实是,在任何情况下,您都必须从内存中的图形表示转换为 RDF 表示,反之亦然,除非客户端代码想要直接破解 RDF 文档,而这几乎是不可能的。这就像直接处理数据库元组,而不是创建一个对象。

目前,在 python 中存储和检索(a la DBMS)图形数据的最新技术是什么?开始开发一个实现是否有意义,希望在对此感兴趣的人的帮助下,并与 Graph API PEP 的提议者合作?请注意,这将成为我接下来几个月工作的一部分,所以我对这个最终项目的贡献非常严重;)

编辑:也发现了有向边缘,但它似乎是商业产品

0 投票
2 回答
1224 浏览

c++ - 基于图形的(键/值)数据库的面向性能的设计

我正处于为 C++ 设计一个基于图形(或键值)的数据库库的准备阶段,这里的许多人会发现它类似于http://neo4j.org/等项目。

由于这是设计的一个非常早期的阶段,我的要求很简单,未提炼并且(我承认)可能仍然相当幼稚:

  • 有向无环图
    • 树状结构,少根多叶
    • 分支可能包含对其他分支的引用
    • 但是没有循环
    • 该图由键值对表示,其中键和值大部分是简单类型(整数),但有些可能指的是更复杂的类型,例如字符串
  • 查询
    • 简单查询通常会返回边。即从这个根开始的边缘对应于(键/值/键值元组)?
    • 使用键字符串(键、键、键、值)的查询
  • 访问模式和性能
    • 应强调快速查找
    • 添加边缘
    • 但是没有从图中删除边/节点。即图表会增长,但永远不会缩小。
    • 可以在图上执行优化,以优化缓存使用的内存布局
    • 图表的大小约为 1 MB - 2 GB,并且大部分应该适合主内存

鉴于这些粗略的要求是一项挑战,您主要关心的是:

  • 内存存储:布局、分配
    • 例如,固定大小的块池?
    • 通过聚类算法分配内存?
  • 快速查询
  • 动态重组
    • 如何处理边/节点的添加?
    • 优化更新(例如改进内存布局)
  • 并发访问
    • 例如,通过优化线程处理对内存布局的更改?

我正在寻找工作的良好起点,因此我很高兴收到对现有工作的参考。最重要的是:我应该考虑哪些我没有考虑的事情?

0 投票
3 回答
706 浏览

java - Java中图的空间高效表示?

我想要一个无向图,其中节点用一对标记(目前使用 String[] )并且可以任意链接到其他节点。我从 Hashtable 类型开始。事实证明,这对我来说空间效率不够——我打算拥有大约 60,000 个节点(最终,远远超过这个数字)。

我应该如何实现这种图以提高内存效率?相反,我应该考虑某种关系数据库吗?

0 投票
2 回答
1382 浏览

sql - 您将如何在您喜欢的数据库范式中为您的模型实施修订控制系统?

我发现模型的 RCS 是一个在数据持久性方面需要解决的有趣问题。他们是几个使用 django ORM 来实现这个django-reversionAuditTrail的解决方案,每个解决方案都提出了自己的方法来做到这一点。

这是我想要修改的模型(类似 django-model 的格式):

  • 每个修订都应该用日期修订号评论和进行修改的用户进行注释。

你会如何在你喜欢的数据库(Mongo、neo4j、CouchDb、GAE Datastore)中做到这一点?

请在每篇文章中仅发布一个 RCS 模型示例。

我不是要完整的代码(也许解释就足够了?)但足以了解如何在每种数据库类型中解决此问题。

0 投票
2 回答
4043 浏览

performance - 在磁盘/流图分区算法上存储非常大的图?

假设我有一个非常大的无向、未加权图(从数亿个顶点开始,每个顶点约 10 条边),非分布式且仅由单线程处理,并且我想对其进行广度优先搜索。我希望它们受 I/O 限制,因此我需要一个适合 BFS 的磁盘页面布局,磁盘空间不是问题。搜索可以以相等的概率从每个顶点开始。直观地说,这意味着最小化不同磁盘页面上顶点之间的边数,这是一个图分区问题。

图本身看起来像意大利面条,想想随机互连的随机点集,对较短的边有一些偏见。

问题是,一个分区图怎么这么大?我发现可用的图形分区器仅适用于内存中的图形。我找不到任何流图分区算法的描述或实现。

或者,也许有一种替代分区图的方法来获得适用于 BFS 的磁盘布局?

现在作为一个近似值,我使用顶点附有空间坐标的事实,并将顶点以希尔伯特排序顺序放在磁盘上。这种方式空间上接近的顶点落在同一页面上,但它们之间是否存在边缘被完全忽略。我能做得更好吗?

作为替代方案,我可以使用 Hilbert 顶点排序顺序将图拆分为多个部分,对子图进行分区,将它们缝合回去并接受接缝上的不良分区。

我已经研究过的一些事情:

  1. 如何存储具有数十亿个节点和顶点的大型有向未加权图
  2. http://neo4j.org/ - 我发现关于它如何在磁盘上进行图形布局的零信息

分区实现(除非我弄错了,它们都需要将图形放入内存):

  1. http://glaros.dtc.umn.edu/gkhome/views/metis
  2. http://www.sandia.gov/~bahendr/chaco.html
  3. http://staffweb.cms.gre.ac.uk/~c.walshaw/jostle/
  4. http://www.cerfacs.fr/algor/Softs/MESHPART/

编辑:关于图表的外观以及 BFS 可以在任何地方开始的信息。编辑:关于划分子图的想法

0 投票
6 回答
11664 浏览

database - 基于图的数据库和面向对象的数据库有什么区别?

基于图的数据库( http://neo4j.org/)和面向对象的数据库(http://www.db4o.com/ )有什么区别?