ในจักรวาลของ Gunnm หรือที่รู้จักกันในชื่อ Battle Angel Alita (เพชฌฆาตไซบอร์ก) เรื่องราวของเธอไม่ใช่เพียงแค่การต่อสู้ด้วยอาวุธไฮเทค แต่คือการสำรวจ ‘ตัวตน’ (Identity) ที่ถูกจัดเก็บและประกอบขึ้นใหม่จากชิ้นส่วนไซบอร์กที่กระจัดกระจาย การค้นหาว่าเธอคือใครและมาจากไหน จึงเป็นภารกิจที่ซับซ้อนยิ่งกว่าการต่อสู้ทางกายภาพ
ในมุมมองของระบบข้อมูล (Data System) ชีวิตของ Alita คือระบบฐานข้อมูลขนาดใหญ่ที่ต้องผ่านกระบวนการ Query, Unnest และ Reconstruct อย่างต่อเนื่อง ซึ่งแนวคิดนี้สามารถเปรียบเทียบได้อย่างทรงพลังกับการจัดการข้อมูลเชิงความสัมพันธ์ขั้นสูงใน PostgreSQL
Gunnm: การสืบค้นตัวตนด้วย Recursive CTE (Common Table Expression)
แก่นแท้ของเรื่องราวนี้สามารถเปรียบเทียบได้กับการใช้ Recursive Common Table Expression (CTE) ใน PostgreSQL ซึ่งเป็นเครื่องมือที่ทรงพลังในการติดตามลำดับเหตุการณ์หรือการสืบทอดข้อมูล (Data Lineage) จากรากฐาน การค้นหาความทรงจำและปูมหลังของ Alita จึงไม่ต่างจากการรัน CTE เพื่อย้อนกลับไปตามสายสัมพันธ์ของข้อมูลที่ขาดหายและต้องเชื่อมโยงเข้าด้วยกัน
หลักการทำงานของ CTE ในการค้นหาความจริง
หากเรากำหนดให้ ‘ตัวตน’ เป็นตารางหลัก และ ‘เหตุการณ์’ คือการเชื่อมโยงระหว่างแถวข้อมูลต่างๆ การค้นหาความจริงจึงต้องใช้การวนซ้ำ (Recursion) เพื่อประกอบชิ้นส่วนที่กระจัดกระจายให้เป็นเรื่องราวที่สมบูรณ์ การใช้ CTE ทำให้เราสามารถกำหนดจุดเริ่มต้น (Anchor Member) และกำหนดขั้นตอนการขยายข้อมูล (Recursive Member) ได้อย่างชัดเจน
สมมติว่าเรามีตารางความทรงจำที่ถูกแบ่งเป็นส่วนๆ (Memory Fragments) เราสามารถใช้ CTE เพื่อสร้าง ‘ห่วงโซ่ความทรงจำ’ (Memory Chain) ได้ดังนี้:
SQL
WITH RECURSIVE MemoryChain AS ( -- 1. Anchor Member: จุดเริ่มต้นของความทรงจำแรก (Fragment A) SELECT 1 AS step, 'Fragment A'::text AS memory_piece, NULL::text AS parent_id UNION ALL -- 2. Recursive Member: เชื่อมต่อ A ไป B SELECT step + 1, 'Fragment B'::text, 'Fragment A' UNION ALL -- 3. Recursive Member: เชื่อมต่อ B ไป C SELECT step + 1, 'Core Memory'::text, 'Fragment B') SELECT * FROM MemoryChain ORDER BY step;
โค้ดนี้จำลองการเดินทางของข้อมูลที่เริ่มต้นจาก ‘Fragment A’ และค่อยๆ เชื่อมโยงไปยัง ‘Fragment B’ และจบลงที่ ‘Core Memory’ โดย CTE จะทำหน้าที่เป็นกลไกที่รับประกันว่าการสืบค้นจะเดินหน้าไปตามลำดับที่ถูกต้อง เหมือนการที่ Alita ค่อยๆ ประกอบชิ้นส่วนความจริงกลับมาเป็นตัวตนที่สมบูรณ์
บทสรุป: ตัวตนที่ถูก Query
การเปรียบเทียบเรื่องราวของ Gunnm กับ PostgreSQL และ Recursive CTE ไม่ได้เป็นเพียงแค่การเปรียบเทียบเชิงเปรียบเทียบเท่านั้น แต่เป็นการตอกย้ำว่าทั้งตัวตนของ Alita และข้อมูลในฐานข้อมูล ล้วนเป็นระบบที่ประกอบขึ้นจากชิ้นส่วนที่สามารถถูกจัดเก็บ ถูกเชื่อมโยง และถูกสืบค้นได้ การเข้าใจหลักการ Data Lineage ด้วย CTE จึงช่วยให้เรามองเห็นว่า ‘ตัวตน’ ที่แท้จริงนั้นคือการรัน Query ที่สมบูรณ์แบบที่สุดนั่นเอง