gpt4 book ai didi

java - 图数据库 (neo4j) 与关系数据库。在设计方面需要帮助

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:52 24 4
gpt4 key购买 nike

我必须使用一个开源项目 ( biojava ),但我对某些性能不满意,我想花一些时间来改进它。

例如,我有一个这样编码的文本数据库:

chrX    Cufflinks   exon    65175856    65175971    .   .   .   gene_id "XLOC_002576"; transcript_id "TCONS_00004217"; exon_number "1"; gene_name "RP6-159A1.2"; oId "CUFF.3698.1"; nearest_ref "ENST00000456392"; class_code "p"; tss_id "TSS3873";    
chrX Cufflinks exon 128986006 128986088 . . . gene_id "XLOC_002577"; transcript_id "TCONS_00004218"; exon_number "1"; oId "CUFF.3750.1"; class_code "u"; tss_id "TSS3874";

不是每个字段都是必填的,每个gene_id可能关联多个transcript_id(1..n),每个transcript_id有1或更多外显子

库的行为是将整个文本文件加载到 ArrayList 中,并且对于每次搜索都必须迭代列表。这适用于小列表,但在我的例子中,我有一个非常大的列表的 10^10 个查询,并且在一台好的计算机上需要几天时间。

Neo4j 会是一个不错的选择吗?什么是实现它的好方法?例如,创建一个仅限字符串的实体并在它们之间建立关系是否不好?还是单表用Hsqldb更好?

请注意我不需要持久性,但速度和同步是强制性的。

编辑:如果需要,您可以查看项目 here

最佳答案

如果速度很关键,因为您的数据模式看起来很“简单”,您可以采用“手动”解决方案。如果开发时间比“绝对速度”更重要,内存中的 RDBMS 是一个不错的选择。如果不需要持久性,我会避免使用 neo4j,因为它更适合持久性,而且您的数据似乎更“相关”,然后是“复杂图”

如果速度很关键,并且您不采用像 Hsqldb 这样的解决方案,那么我们的想法是填充 3 种对象(基因、转录本、外显子),并使用 HashMap 对它们进行索引。

关于java - 图数据库 (neo4j) 与关系数据库。在设计方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com