PostgreSQL中UniProt的生物学序列
在PostreSQL中存储UniProt生物序列的最佳方法是什么? 资料明细 我们从UniProt中提取了1200万个序列-这个数字很可能每3-10个月增加一倍。 序列的长度可以从10到500亿个字符不等 少于1%的序列超过1万个字符 单独存储较长的序列是否会提高性能? 序列可以是蛋白质或DNA字母 DNA字母有5个字符(A,T,C,G或-)。 蛋白质字母将包含大约30个字符。 我们不介意将两个不同字母的序列存储在不同的列甚至不同的表中。有帮助吗? 数据访问详细信息 回答耶利米·佩斯卡的评论: 蛋白质和DNA序列将在不同时间访问 无需在序列中搜索(在db之外完成) 以太会同时访问单个行还是通过ID提取行集。我们不需要扫描行。所有序列都由其他表引用-数据库中存在几个在生物学和时间上有意义的层次结构。 向后兼容 能够继续将以下哈希函数(SEGUID-SEquence全局唯一IDentifier)应用于序列将是一个很好的选择。 CREATE OR REPLACE FUNCTION gfam.get_seguid(p_sequence character varying) RETURNS character varying AS $BODY$ declare result varchar := null; x integer; begin select encode(gfam.digest(p_sequence, 'sha1'), 'base64') into result; x := length(result); if substring(result from x …