วิธีที่ดีที่สุดในการจัดเก็บลำดับทางชีวภาพของ UniProt ใน PostreSQL คืออะไร
รายละเอียดข้อมูล
- เราดึงลำดับ 12 ล้านจากUniProt - จำนวนนี้น่าจะเพิ่มเป็นสองเท่าทุก 3-10 เดือน
- ความยาวของลำดับสามารถเปลี่ยนแปลงได้ตั้งแต่ 10 ถึง 50 พันล้านตัวอักษร
- น้อยกว่า 1% ของลำดับนั้นยาวกว่า 10,000 ตัวอักษร
- มันจะปรับปรุงประสิทธิภาพในการจัดเก็บลำดับที่ยาวกว่าแยกกันหรือไม่
- ลำดับสามารถเป็นได้ทั้งโปรตีนหรือตัวอักษรดีเอ็นเอ
- ตัวอักษร DNA มี 5 ตัวอักษร (A, T, C, G หรือ -)
- ตัวอักษรโปรตีนจะมีประมาณ 30 ตัวอักษร
- เราไม่รังเกียจที่จะเก็บลำดับของตัวอักษรสองตัวที่แตกต่างกันในคอลัมน์ที่แตกต่างกันหรือแม้แต่ตารางที่แตกต่างกัน จะช่วยได้ไหม
รายละเอียดการเข้าถึงข้อมูล
เพื่อตอบความคิดเห็นของ Jeremiah Peschka:
- ลำดับโปรตีนและ DNA จะเข้าถึงได้ในเวลาที่ต่างกัน
- ไม่จำเป็นต้องค้นหาภายในลำดับ (ที่ทำนอกฐานข้อมูล)
- อีเธอร์จะเข้าถึงทีละแถวหรือดึงชุดของแถวด้วย ID เราไม่จำเป็นต้องสแกนแถว ลำดับทั้งหมดถูกอ้างอิงโดยตารางอื่น ๆ - มีลำดับชั้นทางชีววิทยาและลำดับความสำคัญหลายลำดับที่มีอยู่ในฐานข้อมูล
ความเข้ากันได้ย้อนหลัง
มันจะเป็นการดีที่จะสามารถใช้ฟังก์ชัน hashingต่อไปนี้ได้(SEGUID - SEquence Unique Unique 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 for 1) = '=' then
result := substring( result from 1 for x-1 );
end if;
return result;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;