PlusMagi's Blog By Pitt Phunsanit Database BitTorrent Trackers vs Trackerless DHT (การค้นหา Peers ผ่าน Centralized Trackers เปรียบเทียบกับ Distributed Hash Table และ Magnet Links)

BitTorrent Trackers vs Trackerless DHT (การค้นหา Peers ผ่าน Centralized Trackers เปรียบเทียบกับ Distributed Hash Table และ Magnet Links)

ในสถาปัตยกรรมเครือข่ายแบบ Peer-to-Peer (P2P) การค้นหาผู้ใช้งาน (Peers) ที่มีไฟล์เดียวกันเป็นหัวใจสำคัญของระบบ BitTorrent อย่างไรก็ตาม การเลือกกลไกในการค้นหา Peers มีผลกระทบต่อความทนทานและความยืดหยุ่นของระบบอย่างมาก บทความนี้จะเปรียบเทียบความแตกต่างทางสถาปัตยกรรมระหว่างการใช้ Centralized Trackers กับการใช้ Decentralized DHT (Distributed Hash Table) โดยมองผ่านมุมมองของการจัดการข้อมูลในระบบ PostgreSQL

1. Centralized Trackers: การพึ่งพาจุดศูนย์กลาง (Single Point of Failure)

Tracker ทำหน้าที่เป็นสมุดรายชื่อกลาง (Central Index) ที่รวบรวมรายการ IP Address ของ Peers ทั้งหมดที่กำลังแชร์ไฟล์ การทำงานนี้ง่ายต่อการจัดการ แต่มีข้อเสียทางสถาปัตยกรรมที่ร้ายแรงคือมันเป็น Single Point of Failure (SPOF) หากเซิร์ฟเวอร์ Tracker ถูกปิดหรือถูกบล็อก การค้นหา Peers ทั้งหมดก็จะหยุดชะงักทันที

ในเชิง PostgreSQL เราสามารถจำลอง Tracker ได้ด้วยตารางหลักที่เก็บรายการ Peer ID และไฟล์แฮช (Info Hash) ซึ่งการค้นหาข้อมูลทำได้ง่ายด้วยคำสั่ง SELECT ทั่วไป:

SQL

-- สมมติว่ามีตาราง central_tracker_index ที่เก็บข้อมูล Peers<pre><code class="language-sql">SELECT peer_id, ip_address, last_seen FROM central_tracker_index WHERE file_hash = 'a1b2c3d4e5f6' AND last_seen > NOW() - INTERVAL '1 hour';

2. DHT และ Magnet Links: การกระจายศูนย์ (Decentralized Resilience)

DHT คือการยกระดับความทนทานของระบบให้เป็นแบบกระจายศูนย์ (Decentralized) แทนที่จะพึ่งพาเซิร์ฟเวอร์กลาง ข้อมูลเกี่ยวกับ Peers จะถูกเข้ารหัสและแจกจ่าย (Distributed) ไปทั่วเครือข่าย ทำให้ไม่มีใครสามารถปิดกั้นการค้นหาได้ทั้งหมด การใช้ Magnet Links คือการอ้างอิงถึง Info Hash โดยตรง ไม่ต้องพึ่งพา Tracker

ในเชิง PostgreSQL เราสามารถจำลองการค้นหาแบบกระจายศูนย์ได้โดยการใช้โครงสร้างข้อมูลที่ซับซ้อน เช่น JSONB หรือ Array เพื่อเก็บข้อมูล Metadata ที่ถูกเข้ารหัสและกระจายไปหลายจุด (Nodes) การค้นหาจึงต้องใช้ฟังก์ชันที่ซับซ้อนกว่าการ SELECT ธรรมดา:

SQL

-- จำลองการค้นหา Peers จากข้อมูลที่กระจายใน JSONB (Decentralized Index)<pre><code class="language-sql">SELECT node_id, (data->>'peer_list')::text AS peers_data FROM distributed_peer_map WHERE file_hash = 'a1b2c3d4e5f6' AND node_id = 'node_x';

บทสรุปทางสถาปัตยกรรม

การเปรียบเทียบนี้แสดงให้เห็นถึงการแลกเปลี่ยนระหว่างความง่ายในการใช้งาน (Ease of Use) ของ Centralized Tracker กับความทนทานและความยืดหยุ่น (Resilience) ของ DHT แม้ว่า Tracker จะง่ายต่อการ Implement แต่ความเสี่ยงของ SPOF นั้นสูงมาก ในทางสถาปัตยกรรมสมัยใหม่ ระบบ P2P จึงมุ่งเน้นไปที่กลไกแบบกระจายศูนย์ (DHT) เพื่อให้มั่นใจว่าการค้นหา Peers จะยังคงดำเนินต่อไปได้แม้ในสภาวะที่เครือข่ายถูกควบคุมหรือบล็อก