在Neo4J中存储多个图

| 我有一个将关系信息存储在MySQL表中的应用程序(contact_id,other_contact_id,强度,recorded_at)。如果我需要做的只是显示联系人的关系,或者甚至生成两个联系人的相互联系人列表,这很好。 但是现在我需要生成如下统计信息:“在2011年1月,强度为3或更高的2路连接的总数是多少?”或(假设每个联系人都是组的一部分)与其他组等的连接数 我很快发现用于生成这些统计信息的SQL变得非常笨拙。 所以我写了一个脚本,对于任何给定的日期,它将在内存中生成一个图形。然后,我可以针对该图表运行任何所需的统计信息。更容易理解,并且通常也具有更高的性能-除了生成图形部分外。 我的下一个想法是缓存这些图,这样我就可以在需要运行新统计信息时(或生成更高的图)调用它们:例如,对于今天的图,我采用昨天的图并应用自昨天)。我尝试使用memcached,该方法在图表增长> 1 MB之前一直很好。 所以现在我正在考虑使用像Neo4J这样的图形数据库。 唯一的问题是,我没有一张图。还是我这样做,但这是随时间变化的,我需要能够以不同的参考时间查询它。 因此,我可以: 将多个图形存储在Neo4J中并分别检索/交互?然后,我将为每个日期创建并存储单独的社交图。 要么 将有效值添加到时间戳和从时间戳添加到每个边缘,并适当地过滤图形:因此,如果我希望使用图形“ \ May 1st \”,则我将仅遵循\“ May 1st \”之前创建的两个点之间的最新边(和如果所有边缘均在5月1日之后创建,则这些节点将不会连接)。 我对图形数据库很陌生,因此将不胜感激任何帮助/指针/提示。     
已邀请:
现在,您只能在一个Neo4j实例中存储一个图形数据库,但是这个graphdb可以根据需要包含任意数量的不同子图形。在执行全局操作(例如索引查询)时,只需记住这一点,但是您可以在其中执行包含时间戳记属性的复合查询,以限制结果。 一种实现方式是,正如您所说的,将时间信息添加到边缘以表示给定日期的图形结构,然后可以遍历图形结构。 参考节点在Neo4j中具有不同的含义。 与索引属性相比,每天使用类别节点(并链接它们并对其进行聚合以达到更高的时间跨度)是一种更图形化的节点分类方法。 (实际上,这些是图形内索引,您可以轻松地在遍历和图形查询中包括它们)。 只要您只对不同的时间结构感兴趣,就不必复制节点。如果您的节点也不同(例如,更改属性,则可以复制它们,从而有效地创建不同的子图),或者在每个节点上创建仅包含更改(或取决于您的要求的完整快照)的历史节点的关联列表。 。 您的域听起来非常适合图数据库。如果您有更多详细的问题,请随时加入Neo4j邮件列表。     
不是最简单的解决方案(我假设您只在一台机器上工作),但是如果您确实要分离图形,则只需要记住图形是一个目录即可。 然后,您可以创建一个动态加载程序类,该类采用所需数据库的路径,将其加载到内存中以进行查询,并在得到答案后将其关闭。您还可以配置代理服务器,并向加载程序发送2个参数:查询(本例中假定为密码查询)和要查询的数据库路径。 如果您有大量实时查询要回答,这是不够的。但是,如果仅是为了存储数据集并对其进行一些分析,它肯定可以满足您的需求。     

要回复问题请先登录注册