การแปลงไฟล์ที่ทำงานบนขอบ (Edge‑Powered): กลยุทธ์สำหรับการประมวลผลอย่างเร็วและเป็นส่วนตัวบนอุปกรณ์ทรัพยากรต่ำ

เมื่อเวิร์คโฟลว์ต้องการให้ไฟล์ถูกแปลง ก่อน ที่มันจะออกจากอุปกรณ์—ไม่ว่าจะเป็นแท็บเล็ตสนามที่ทนทาน, กล้องอัจฉริยะ, หรือเกตเวย์เซนเซอร์ฝังตัว—โซลูชันแบบคลาวด์‑เท่านั้นก็ไม่เพียงพอ แบนด์วิธอาจกระจัดกระจาย, ที่เก็บข้อมูลท้องถิ่นจำกัด, และกฎระเบียบความเป็นส่วนตัวอาจห้ามการส่งเนื้อหาแบบดิบไปยังเซิร์ฟเวอร์ภายนอก ในสถานการณ์เหล่านี้การแปลงต้องทำบนขอบโดยใช้ CPU, หน่วยความจำและที่เก็บข้อมูลที่จำกัดของอุปกรณ์ พร้อมทั้งยังคงให้คุณภาพเทียบเท่ากับเครื่องมือบนเดสก์ท็อปเต็มรูปแบบ

บทความนี้จะอธิบายข้อพิจารณาทางเทคนิคที่ทำให้การแปลงบนขอบมีความเชื่อถือได้, การแลกเปลี่ยนที่เกี่ยวข้องกับการเลือกอัลกอริธึมและฟอร์แมตคอนเทนเนอร์, และรูปแบบการใช้งานที่คุณสามารถนำไปใช้ได้ทันที ไม่ได้ ส่งเสริม ผลิตภัณฑ์ใดเป็นพิเศษ, แต่จะอ้างอิงถึงระบบนิเวศโอเพ่นซอร์สและจุดที่บริการเน้นความเป็นส่วนตัวอย่าง convertise.app สามารถผสานรวมเพื่อทำการออฟโหลดแบบเลือกใช้เมื่อมีการเชื่อมต่อ


1. ทำไมการแปลงบนขอบจึงสำคัญ

1.1 ขีดจำกัดแบนด์วิธและความหน่วง

ในการปฏิบัติการสนามระยะไกล—การเฝ้าตรวจสิ่งแวดล้อม, การตอบสนองภัยพิบัติ, หรือการตรวจสอบในสถานที่—ลิงก์เครือข่ายมักเป็นดาวเทียมหรือเซลลูลาร์ที่มีโควต้าวัดเป็นเมกะไบต์ต่อชั่วโมง การอัปโหลดคลิปวิดีโอดิบขนาด 500 MB เพียงเพื่อให้เซิร์ฟเวอร์ระยะไกลทำการแปลงสามารถใช้ข้อมูลได้เท่ากับหนึ่งวันและเพิ่มความหน่วงที่พยากรณ์ไม่ได้ การทำการแปลงในเครื่องจะลดขนาดข้อมูลลง 5‑10 เท่า ทำให้ไฟล์เดียวกันสามารถส่งได้ภายในไม่กี่นาที

1.2 ความเป็นอธิปไตยของข้อมูลและความเป็นส่วนตัว

อุตสาหกรรมเช่นการดูแลสุขภาพ, การเงิน หรือด้านการป้องกันประเทศต้องปฏิบัติตามกฎระเบียบที่จำกัดการเคลื่อนย้ายข้อมูลข้ามพรมแดน การแปลงภาพทางการแพทย์ (DICOM) เป็น PDF ที่สามารถแชร์ได้บนอุปกรณ์ทำให้ตัวระบุผู้ป่วยไม่เคยผ่านเครือข่ายของบุคคลที่สาม, ลดความเสี่ยงจากการเปิดเผยข้อมูล นอกจากนี้การเก็บไฟล์ดิบในหน่วยความจำแล้วลบหลังแปลงยังลดพื้นผิวการโจมตี

1.3 การตัดสินใจแบบเรียล‑ไทม์

แอปพลิเคชันขอบบางอย่างต้องการผลตอบกลับทันที โดรนที่ถ่ายภาพความละเอียดสูงอาจต้องสร้างภาพย่อ JPEG หรือ WebP ภายในไม่กี่วินาทีเพื่อกำหนดเส้นทางการบินต่อไป การรอการตอบสนองจากบริการคลาวด์จะทำลายลูปการควบคุม


2. ทำความเข้าใจข้อจำกัดของทรัพยากร

อุปกรณ์ขอบมีความหลากหลายมาก ตั้งแต่บอร์ดระดับ Raspberry Pi (CPU 1 GHz, RAM 512 MiB) ไปจนถึงสมาร์ทโฟนสมัยใหม่ (หลายคอร์ ARM, RAM 8 GB) พายป์ไลน์การแปลงต้องถูกปรับให้สอดคล้องกับ ตัวกำหนดล่างสุด ที่คุณต้องการรองรับ

2.1 CPU และ SIMD

โค้ดแค็สดิจิทัลสมัยใหม่ (H.264, AV1, WebP) ได้ประโยชน์จากส่วนขยาย SIMD (NEON, SSE) หากฮาร์ดแวร์เป้าหมายไม่มีส่วนเหล่านี้ต้องพึ่งพาโค้ด C แบบธรรมดา—ช้ากว่าแต่ทำงานได้ ไลบรารีอย่าง libavif มีฟังก์ชันตรวจสอบการสนับสนุน NEON ที่ทำงานเวลา runtime และสลับเส้นทางโดยอัตโนมัติ

2.2 การใช้หน่วยความจำ

การแปลงวิดีโอทั่วไปต้องมีบัฟเฟอร์เฟรมอย่างน้อยสองชุด (อินพุตและเอาต์พุต) สำหรับสตรีม 1080p 30 fps บัฟเฟอร์ RGBA 32‑บิตหนึ่งเฟรมกินพื้นที่ประมาณ 8 MiB เมื่อหน่วยความจำจำกัด ควรพิจารณาประมวลผลแบบ tile‑based: ถอดรหัสส่วนของเฟรม, แปลง, เขียนออก, แล้วลบ tile นั้นก่อนย้ายไปยังส่วนต่อไป

2.3 การอ่าน/เขียนบนที่เก็บ

สื่อ flash มีอายุการเขียนจำกัด ควรลดไฟล์ชั่วคราวให้เหลือน้อยที่สุด; สตรีมโดยตรงจากแหล่งไปยังเอ็นโคเดอร์โดยใช้ pipe (ffmpeg -i pipe:0 -f avif pipe:1) หากต้องใช้บัฟเฟอร์ชั่วคราวจริง ๆ ให้วางไว้บน RAM‑disk (tmpfs) เพื่อหลีกเลี่ยงการสึกหรอของ flash


3. การเลือกฟอร์แมตที่เหมาะสมสำหรับการแปลงบนขอบ

การเลือกฟอร์แมตเป้าหมายไม่ใช่แค่เรื่องคุณภาพภาพ; ยังกำหนดค่าใช้จ่ายการคำนวณ, ขนาดไฟล์สุดท้าย, และความเข้ากันได้ด้วย

ประเภทแหล่งฟอร์แมตเป้าหมายที่แนะนำบนขอบเหตุผล
วิดีโอดิบ (เช่น .mov, .avi)AV1 หรือ HEVC (H.265)ให้การบีบอัดสูงที่บิทเรตต่ำ; AV1 ไม่มีลิขสิทธิ์แต่ช้าบนอุปกรณ์เก่า
ภาพความละเอียดสูง (RAW, TIFF)WebP หรือ AVIFWebP lossless เร็ว; AVIF ให้บีบอัดดีกว่าในโหมดเสีย (lossy) แต่ต้องใช้ SIMD
สแกนเอกสาร (TIFF, BMP)PDF/A‑2b (บีบอัดด้วย JBIG2)รับประกันการเก็บรักษาระยะยาวพร้อมบีบอัดหน้าสแกน
การบันทึกเสียง (WAV)Opus หรือ AAC‑LCOpus ให้หน่วงเวลาต่ำและคุณภาพดีที่ใช้ CPU น้อย

เมื่อความเป็นส่วนตัวเป็นหัวใจหลัก ควรเลือกฟอร์แมตที่ไม่ฝังการอ้างอิงภายนอก (เช่น URL ของสไตล์ชีทใน HTML) คอนเทนเนอร์อย่าง Matroska (.mkv) สามารถเก็บหลายแทร็กวิดีโอ/เสียงและคำบรรยายในไฟล์เดียว ทำให้การจัดการต่อไปง่ายขึ้น


4. การสร้างพายป์ไลน์การแปลงบนขอบที่มีประสิทธิภาพ

ต่อไปเป็นสถาปัตยกรรมขั้นตอน‑ต่อ‑ขั้นตอนที่สามารถเขียนด้วย C++, Rust หรือแม้กระทั่งภาษาระดับสูงอย่าง Python (เมื่อมี interpreter อยู่แล้วบนอุปกรณ์)

4.1 การรับข้อมูลเข้า

  1. ตรวจจับชนิดไฟล์ – ใช้ไลบรารี sniffing แบบ magic‑byte เบา ๆ (เช่น libmagic) แทนการพึ่งพานามสกุลไฟล์
  2. ตรวจสอบความสมบูรณ์ – คำนวณ SHA‑256 อย่างรวดเร็วเพื่อให้มั่นใจว่าแหล่งที่มายังไม่เสียหาย (สำคัญสำหรับข้อมูลเซนเซอร์) เก็บค่าแฮชไว้เพื่ออ้างอิงต่อไป

4.2 การเตรียมล่วงหน้า

  • ปรับขนาดความละเอียด – หากอุปกรณ์แสดงผลได้สูงสุด 720p ให้ทำการ downscale ตั้งแต่แรกโดยใช้ฟิลเตอร์ bilinear เร็ว เพื่อให้ภาระงานของเอ็นโคเดอร์ลดลง
  • แปลงสี – แปลงจาก YUV420p ที่อุปกรณ์อาจใช้เป็นฟอร์แมตที่เอ็นโคเดอร์ต้องการ; ไลบรารีสมัยใหม่หลายตัวรับหลายอินพุต ทำให้ไม่ต้องแปลงแยก
  • ปรับระดับเสียง – ใช้การปรับเกน RMS อย่างง่ายเพื่อหลีกเลี่ยง clipping ในไฟล์สุดท้าย

4.3 การแปลงแบบสตรีม

หัวใจของพายป์ไลน์ขอบคือ สตรีม: ข้อมูลไหลจากแหล่งไปยังเอ็นโคเดอร์โดยไม่ผ่านระบบไฟล์

# ตัวอย่างการใช้ FFmpeg บนกล่อง Linux ที่มีข้อจำกัด
ffmpeg -hide_banner -loglevel error \
  -i input.mov \
  -vf "scale=1280:720" \
  -c:v libx264 -preset veryfast -crf 28 \
  -c:a aac -b:a 96k \
  -f mp4 -movflags +faststart pipe:1 > output.mp4
  • -preset veryfast ลดการใช้ CPU แม้ไฟล์อาจใหญ่กว่าเล็กน้อย
  • -movflags +faststart วาง atom moov ของ MP4 ไว้ด้านหน้า ทำให้ไฟล์เล่นได้ทันทีขณะยังดาวน์โหลดอยู่

หาก FFmpeg หนักเกินไป สามารถฝัง libav ลงในแอปโดยส่งบัฟเฟอร์ผ่าน callback ซึ่งจะลบความจำเป็นของโปรเซสแยกและลดการใช้หน่วยความจำ

4.4 หลังการแปลงและการตรวจสอบ

หลังการแปลงเสร็จสิ้น:

  1. คำนวณแฮชใหม่ ของไฟล์ผลลัพธ์และเก็บแฮชคู่ขนานกับแฮชต้นฉบับ เพื่อใช้ตรวจสอบความสมบูรณ์เมื่อนำส่งต่อ
  2. ตรวจสอบเมตาดาต้าในคอนเทนเนอร์ – ตรวจให้แน่ใจว่า timestamp, แท็กภาษา, และแฟล็กการหมุนถูกตั้งค่าอย่างถูกต้อง เครื่องมืออย่าง ffprobe สามารถสคริปต์ดึง JSON แล้วตรวจสอบตามเงื่อนไขได้
  3. ลบไฟล์ดิบอย่างปลอดภัย – เขียนทับไฟล์ดิบด้วยข้อมูลสุ่มก่อนลบ เพื่อลดความเสี่ยงจากการกู้คืนข้อมูลทางฟอเรนซิกส์

5. การจัดการการเชื่อมต่อที่ไม่ต่อเนื่อง

อุปกรณ์ขอบมักไม่มีเครือข่ายที่เสถียร พายป์ไลน์การแปลงควรถูกแยกออกจากส่วนอัปโหลด

5.1 สถาปัตยกรรมแบบคิว

  • คิวในเครื่อง – เก็บไฟล์ที่แปลงเสร็จใน SQLite ขนาดเบา พร้อมคอลัมน์สถานะ (pending, uploading, failed)
  • อัปโหลดเบื้องหลัง – เธรดหรือ cron job แยกที่พยายามอัปโหลดเมื่อเครือข่ายพร้อม โดยใช้ exponential back‑off
  • การถ่ายโอนแบบแบ่งชิ้น – แบ่งไฟล์ใหญ่เป็นชิ้นขนาด 5 MiB; แต่ละชิ้นสามารถลองใหม่ได้โดยอิสระ ลดการเสียแบนด์วิธเมื่อการเชื่อมต่อเสียกลางทาง

5.2 การซิงค์แบบโอกาส (Opportunistic Sync)

เมื่ออุปกรณ์ต่อเด็กรายหรือเข้าสู่โซน Wi‑Fi ให้กระตุ้นซิงค์เป็นกลุ่ม วิธีนี้คล้าย “delay‑tolerant networking” ทำให้การแปลงสามารถทำต่อได้โดยไม่ต้องกังวลว่าไฟล์จะต้องส่งออกทันที


6. วิธีปฏิบัติรักษาความเป็นส่วนตัวบนขอบ

แม้การแปลงทำในเครื่องแล้ว ข้อมูลเหลืออยู่ก็อาจรั่วไหลผ่านบันทึก, ไฟล์ชั่วคราว, หรือการดัมพ์หน่วยความจำ

6.1 โหมด “เฉพาะหน่วยความจำ”

กำหนดค่าบิเนอรีแปลงของคุณด้วยแฟลก -nostats -loglevel error เพื่อปิดการแสดงผลละเอียด แบเฟอร์ชั่วคราวทั้งหมดให้ส่งไปยัง /dev/shm (POSIX shared memory) ซึ่งอยู่ใน RAM

6.2 การเข้ารหัสข้อมูลที่พัก

หากอุปกรณ์ต้องเก็บไฟล์ที่แปลงไว้เพื่อเรียกคืนในภายหลัง ให้เข้ารหัสไดเรกทอรีด้วยคีย์เฉพาะอุปกรณ์ที่เก็บไว้ใน TPM หรือ secure enclave เครื่องมือโอเพ่นซอร์สอย่าง cryptsetup สามารถเมานต์แบบเข้ารหัสได้โดยเรียกจากสคริปต์

6.3 การเก็บเทลเมตริกส์ขั้นต่ำ

เก็บเฉพาะเมตริกสรุป (เช่น เวลาแปลง, จำนวนสำเร็จ/ล้มเหลว) อย่าใส่ชื่อไฟล์หรือแฮชใน payload telemetry เว้นแต่ผู้ใช้ให้ความยินยอมอย่างชัดเจนสำหรับการดีบัก


7. การเลือกไลบรารีและทูลเชนที่เหมาะสม

ต่อไปเป็นรายการไลบรารีที่คัดสรรเพื่อความสมดุลระหว่างคุณภาพ, ความเร็ว, และขนาด, เหมาะกับสภาพแวดล้อมขอบ

ด้านไลบรารีขนาดประมาณใบอนุญาต
การถอดรหัส/เข้ารหัสวิดีโอFFmpeg (core)7 MiB (static)LGPL/GPL
การเข้ารหัส AV1rav1e (Rust)3 MiBBSD‑3
การแปลงภาพ WebP/AVIFlibwebp, libavif1–2 MiBBSD‑3
โคเดกเสียงOpus300 KiBBSD‑3
การสร้าง PDFPoDoFo, libharu2 MiBLGPL/Zlib
การเข้ารหัสlibsodium500 KiBISC
การจัดการ MetadataExiv2 (ภาพ), poppler (PDF)2 MiBGPL

เมื่อเป็นเรื่องของลิขสิทธิ์ ควรเลือกไลบรารีที่มีใบอนุญาต BSD หรือ MIT ที่เปิดกว้าง หากต้องการใช้งานในสภาพแวดล้อมที่จำกัด คอมไพล์ FFmpeg เฉพาะโคเดกที่ต้องการ (--enable-libx264 --disable-everything --enable-decoder=...)


8. ตัวอย่างจากโลกจริง: แปลงภาพสำรวจสนามเป็น PDF ที่พร้อมเก็บถาวร

สมมติว่าทีมสำรวจสัตว์ป่ามีแท็บเล็ตทนทานที่จับภาพ RAW ความละเอียดสูง (14 MP) ขั้นตอนการทำงานต้องการ:

  1. ดูตัวอย่างอย่างเร็ว – สร้าง JPEG thumbnail บนเครื่องทันที
  2. เก็บถาวรระยะยาว – PDF/A ที่ค้นหาได้ซึ่งบรรจุภาพต้นฉบับและเมตาดาต้า GPS
  3. ใช้แบนด์วิธต่ำ – ส่งไฟล์ PDF เพียงไฟล์เดียวผ่านลิงก์ 2G

ขั้นตอนการทำงาน

  1. จับภาพ – บันทึกเป็น IMG_001.CR2
  2. สร้างตัวอย่าง – ใช้ dcraw -e ดึง thumbnail ในตัว (≈150 KB) แสดงให้ตรวจสอบทันที
  3. พายป์ไลน์แปลง
    • ถอดรหัส RAW ด้วย libraw ให้เป็นบัฟเฟอร์ 16‑bit linear
    • ปรับขนาด เป็นความกว้าง 1920 px (รักษาอัตราส่วน) ด้วย stb_image_resize เพื่อลดข้อมูลสำหรับ PDF
    • บีบอัด เป็น JPEG‑2000 (lossless) ผ่าน OpenJPEG เพื่อนำเข้า PDF โดยไม่เสียคุณภาพ
    • สร้าง PDF/A‑2b – ใช้ PoDoFo ฝัง JPEG‑2000, เพิ่มเมตาดาต้า XMP สำหรับ GPS, ตั้งโปรไฟล์สี sRGB, และตั้ง flag ให้เป็น PDF/A
    • สตรีม PDF สุดท้ายตรงไปยัง RAM‑disk แล้วย้ายไปยังพื้นที่เก็บที่เข้ารหัส
  4. ตรวจสอบ – รัน pdfinfo -meta เพื่อยืนยันความเป็น PDF/A และตรวจเมตาดาต้า XMP
  5. อัปโหลด – คิวไฟล์ PDF เพื่อส่ง; ตัวอัปโหลดบีบอัดด้วย zstd -9 ก่อนส่งไปยังเซิร์ฟเวอร์ศูนย์กลาง

กระบวนการทั้งหมดเสร็จในประมาณ 7 วินาทีบน ARM รุ่นกลาง, ใช้หน่วยความจำไม่เกิน 150 MiB, และไม่มีไฟล์ RAW ที่ไม่เข้ารหัสเหลืออยู่บนอุปกรณ์หลังเสร็จสิ้น


9. การทดสอบและ CI สำหรับตัวแปลงบนขอบ

แม้บนขอบ ความเชื่อถือได้ก็ต้องเป็นอันดับแรก ถือฟังก์ชันแปลงเป็นส่วนประกอบซอฟต์แวร์เช่นเดียวกับส่วนอื่น ๆ

  • Unit test – ตรวจให้แน่ใจว่าอินพุตที่รู้จักให้ค่า checksum ที่คาดไว้สำหรับแต่ละฟอร์แมตเป้าหมาย
  • Fuzz test – ส่งไฟล์ที่บิดเบือนให้ดีคอร์ดเดอร์เพื่อยืนยันว่าระบบล่มได้อย่างสุภาพ (ใช้ libFuzzer)
  • วัดประสิทธิภาพ – บันทึกเวลา CPU และการใช้ RAM บนอุปกรณ์อ้างอิง; ป้องกันการรวมโค้ดเมื่อเกินเกณฑ์ที่ตั้งไว้
  • Hardware‑in‑the‑loop – ให้ CI pipeline รันบนฮาร์ดแวร์จริง (เช่น Raspberry Pi) ผ่าน Docker --platform เพื่อตรวจสอบว่าไบนารีที่คอมไพล์ตรงสถาปัตยกรรมเป้าหมาย

การทำ automation นี้สามารถสร้างอิมเมจคอนเทนเนอร์ขนาดย่อม (Alpine‑based) เพื่อนำไปติดตั้งบนอุปกรณ์ขอบได้อย่างง่ายดาย


10. เมื่อใดควรกลับไปใช้คลาวด์

การแปลงบนขอบไม่ใช่วิธีแก้ปัญหาทุกอย่าง สถานการณ์ที่ควรพิจารณาใช้คลาวด์เป็นตัวสำรอง ได้แก่

  • สื่อความละเอียดสูงสุด (วิดีโอ 8K, ภาพหลายกิกาพิกเซล) ที่อุปกรณ์ไม่สามารถจัดสรร RAM เพียงเฟรมเดียวได้
  • การเก็บถาวรเป็นกลุ่ม – งานประมวลผลช่วงกลางคืนที่รวบรวม PDF ทั้งหมดและรัน OCR ขั้นสูง (เช่น Tesseract ที่ใช้ GPU) จะทำได้ดีกว่าในเซิร์ฟเวอร์
  • เส้นทางการตรวจสอบตามกฎระเบียบ – หากต้องการให้บุคคลที่สามรับรองว่าการแปลงเป็นไปตามมาตรฐานใดมาตรฐานหนึ่ง จำเป็นต้องมีบันทึกลอคบนเซิร์ฟเวอร์ที่ไม่อาจแก้ไขได้

รูปแบบไฮบริดทำงานได้ดี: ทำการแปลงแบบ “เร็ว‑ต่ำ‑คุณภาพ” บนขอบเพื่อแชร์ทันที, จากนั้นอัปโหลดเพื่อให้คลาวด์ทำการแปลง “คุณภาพ‑สูง” อีกครั้งเมื่อมีทรัพยากรเพียงพอ


11. สรุปแนวทางที่ดีที่สุด

  1. ตรวจจับความสามารถของอุปกรณ์ – ค้นหา SIMD, RAM, พื้นที่เก็บก่อนเลือกโค้ดแค็ส
  2. สตรีมเสมอ – งดใช้ไฟล์ชั่วคราว, ส่งข้อมูลจากดีคอร์เดอร์ไปยังเอ็นโคเดอร์ผ่าน pipe
  3. เลือกฟอร์แมตอย่างชาญฉลาด – พิจารณาการบีบอัด, ค่าใช้จ่าย CPU, และความเข้ากันได้ (AVIF สำหรับภาพ, AV1 สำหรับวิดีโอ, PDF/A สำหรับเอกสาร)
  4. รักษาความปลอดภัยของเวิร์คโฟลว์ – ใช้บัฟเฟอร์ใน RAM, ที่เก็บเข้ารหัส, และลบไฟล์ดิบอย่างปลอดภัย
  5. แยกการแปลงจากการอัปโหลด – ใช้คิวในเครื่องและอัปโหลดแบบเบื้องหลังเมื่อเครือข่ายพร้อม
  6. ตรวจสอบผลลัพธ์ – คำนวณแฮชของไฟล์ต้นและไฟล์ผลลัพธ์, ตรวจเมตาดาต้า, ใช้เครื่องมือ validator เฉพาะฟอร์แมต
  7. ทดสอบอย่างเข้มงวด – Unit, fuzz, และการวัดประสิทธิภาพบนฮาร์ดแวร์จริง
  8. วางแผนการสำรองคลาวด์ – ออกแบบให้ระบบสามารถเรียกใช้บริการคลาวด์เมื่ออุปกรณ์ไม่สามารถทำตามคุณภาพหรือข้อจำกัดทรัพยากรได้

การนำหลักการเหล่านี้มาปรับใช้ จะทำให้องค์กรสามารถให้บริการการแปลงสื่อได้อย่างเร็ว, เป็นส่วนตัว, และมั่นคง แม้ในสภาพแวดล้อมที่ทรัพยากรจำกัดแบบสุดขีด รูปแบบเดียวกันยังนำไปใช้ต่อยอดในระบบกระจายขนาดใหญ่ที่โหนดขอบทำหน้าที่เป็นจุดประมวลผลแรกก่อนข้อมูลจะถูกส่งต่อไปยังคลังข้อมูลศูนย์กลาง.