Skip to content

PlusMagi's Blog By Pitt Phunsanit

Plus emotional magic to the knowledge of logic.

  • About’s Pitt
Close Button

Database: ดีกว่าเก็บเป็นไฟล์เยอะ โชคดีของสมัยนี้Database: ดีกว่าเก็บเป็นไฟล์เยอะ โชคดีของสมัยนี้

2025-08-232025-08-23| phunsanitphunsanit| 0 Comment | 07:00

ถ้าเด็กสมัยนี้มาอ่านก็จะบอกว่า database เกือบทั้งหมดมันก็เก็บลงเป็นไฟล์นั้นละ ยกเว้นแรมเหลือเฟือไปสั่งให้ใช้ RAM เก็บข้อมูล แต่ที่จะบอกคือในสมัยก่อน ๆ ที่จะมีดาต้าเบสให้ให้พรี ๆ ง่าย ๆ กันแบบนี้ สมัยก่อนเค้าเก็บข้อมูลกันแบบ Plain text เก็บข้อมูลใน ไฟล์ .txt แล้วเขียน code มาอ่านตัวอักษรที่ เท่าไหร่ ถึงตัวที่เท่าไหร่แบบนี้ เวลาจะโอนยอดธนาคารเยอะ ๆ ต้องไปติดต่อ bank ว่าถ้าจะทำ batch transfer โอนที่ละมาก ๆ มีเอกสารรับรอง รู้จักผู้จัดการสาขา เค้าถึงจะให้ Format มาให้ ที่สำคัญคือแต่ละธนาคารจะมี “ฟอร์แมต” ของตัวเอง


เรียกว่าอะไร ?

ในทางเทคนิคเรามักเรียกรูปแบบการเก็บและอ่านข้อมูลแบบนี้ว่า

  • Fixed-width Text File: คือไฟล์ที่กำหนดไว้ชัดเจนว่า ข้อมูลชุดที่ 1 อยู่ที่ตัวอักษรที่ 1-10, ชุดที่ 2 อยู่ที่ 11-20 เป็นต้น
  • Byte Offset / Seeking: คือการใช้คำสั่ง (เช่น fseek ใน C หรือ seek () ใน Python) เพื่อกระโดดข้ามตัวอักษรไปยังตำแหน่ง (Offset) ที่เราต้องการอ่านทันทีโดยไม่ต้องไล่จากบรรทัดแรก

นิยมใช้ตอนไหน ?

แม้ปัจจุบันเราจะนิยมใช้ JSON หรือ CSV มากกว่า แต่เทคนิคการระบุตำแหน่งตัวอักษรยังจำเป็นมากในกรณีต่อไปนี้

  • Legacy Systems (ระบบธนาคาร / ประกัน) : ระบบ Mainframe สมัยก่อนมักส่งข้อมูลเป็นเส้นยาว ๆ (Flat File) โดยไม่มีตัวคั่น (Delimiter) แต่ใช้การนับจำนวนตัวอักษรแทน เพราะประหยัดพื้นที่และประมวลผลเร็ว
  • ไฟล์ที่มีขนาดใหญ่ยักษ์ (Large Data Sets) : ถ้าไฟล์มีขนาดหลาย GB การจะอ่านตั้งแต่ต้นจนจบเพื่อหาข้อมูลบรรทัดสุดท้ายจะช้ามาก การ “Seek” ไปยังตำแหน่งที่ต้องการโดยตรงจะทำได้ทันที (O (1) complexity)
  • Binary Files: การอ่านไฟล์ภาพ, วิดีโอ หรือไฟล์ระบบ (เช่น Header ของไฟล์ .exe) จะต้องระบุตำแหน่ง Byte ที่แน่นอนเพื่อดึงข้อมูล Metadata ออกมา
  • Database Engine: เบื้องหลังของฐานข้อมูล (SQL / NoSQL) ใช้เทคนิคนี้ในการเก็บ Data Page เพื่อให้หาข้อมูลเจอได้อย่างรวดเร็ว สรุปคือ ยังใช้วิธีนี้หาข้อมูลกันซินะ แค่ไม่รู้ตัว
  • ระบบ IOT อย่างเครื่องสแกนนิ้ว ที่มี cpu , mem ไม่มาก ตัวอย่างที่เจอล่าสุดคือเครื่อง อ่านบัตรประชาชนจาก chip รู้หมดตั้งแต่ที่อยู่ รูปถ่าย เอาจริง ๆ ถ้าคิดว่าถ้าอ่าน low level มันมีอะไรมากกว่าที่เห็นหน้าบัตรนะ

ตัวอย่างการเขียน Code (Python)

สมมติเรามีไฟล์ data.txt ที่เก็บรหัสพนักงาน (5 หลัก) ตามด้วยชื่อ (10 หลัก) : 00001Somchai 00002Wichai

with open ("data.txt", "rb") as f: # สมมติอยากอ่านชื่อคนที่ 2 (เริ่มที่ตัวอักษรที่ 20) f.seek (20) name = f.read (10) # อ่านต่อไปอีก 10 ตัวอักษร print (name.decode () .strip ()) 

ข้อควรระวัง

  • ถ้าเว้นไม่พอ อย่างหัวหน้าเก่าผม นามสกุล … ณ​ อยุธยา หรือคนดัง ๆ ก็อย่าง อชิตะ ปราโมช ณ อยุธยา ก็เกิน 10 ตัวอักษรไปแล้ว
    • เว้นน้อยไปก็ไม่พอ
    • มากไปก็เปลืองพื้นที่ ยิ่งในสมัยนั้นเค้าใช้ floppy disk 5.25 นิ้ว (High Density – HD) : 1.2 MB เดี่ยวนี้รูปถ่ายใบเดียวก็ใส่มันไม่พอแล้ว
  • การลงโปรแกรมใหม่หรือย้ายระบบอาจทำให้ Config หาย การจัดการไฟล์ข้อมูลดิบแบบนี้ก็เช่นกันครับ หากมีการเปลี่ยน Encoding (เช่นจาก ASCII เป็น UTF-8) ตำแหน่งตัวอักษร (Offset) อาจจะเพี้ยนได้ ทำให้ Code อ่านค่าผิดพลาด

  • Big Data
  • CSV (Comma-Separated Values)
  • Database
Read MoreRead More

Posts pagination

ก่อนหน้า 1 … 138 139 140 … 4,530 ถัดไป

Projects

  • Statement Columns Mapping Helper
  • PlusMagi Blocks
  • PlusMagi Site Search
  • PlusMagi Tags Reindex
  • jQuery Plus Repeater

Recent Posts

  • CORS
  • GANTZ
  • เดธโน้ต (Death Note)
  • Trivy: ตัวสแกนหาช่องโหว่ความปลอดภัย
  • SOLID Principles

Archives

Categories

  • .net core (16)
  • AI (52)
  • business (35)
  • Businesses (33)
  • cd (59)
  • ci (62)
  • culture (2)
  • data (5)
  • Design (161)
    • UX/UI (23)
  • devops (200)
  • devsecops (35)
  • dotnet (58)
  • envoy (2)
  • Histories (23)
  • history (2)
  • ios (4)
  • Life (1,219)
    • Books (62)
    • Cartoon (15)
    • Mindset (41)
    • Movies (36)
    • Philosophy (4)
    • Psychology (3)
    • Sci-Fi (56)
    • Tips and Tricks (67)
    • ปรัชญา (268)
    • พัฒนาตนเอง (883)
    • พุทธ (70)
    • สิ่งแวดล้อม (47)
  • mobile (1)
  • mystery (8)
  • net core (10)
  • Network (355)
    • Apache HTTP Server (19)
    • IOT (24)
    • Nginx (41)
    • Stalwart (6)
  • networking (131)
  • Operating Systems (449)
    • Unix-like (314)
      • Android (24)
        • F-Droid (5)
      • Homebrew (23)
      • iPhone (12)
      • Linux (196)
      • macOS (136)
        • OrbStack (12)
      • Oh My ZSH (4)
      • Shell Script (81)
      • SSH (15)
    • Windows (163)
      • PowerShell (28)
      • WSL (25)
  • Programming (1,726)
    • .NET (70)
      • .NET Core EF (7)
      • C# (62)
    • API (146)
      • REST (54)
      • Swagger (13)
    • Database (412)
      • DBeaver (5)
      • MariaDB (38)
      • MySql (81)
      • Oracle Database (8)
        • 10g (3)
      • PostgreSQL (30)
      • RDBMS (78)
      • SQL Server (91)
        • SSMS (10)
        • T-SQL (30)
      • SQLite (2)
    • PowerBuilder (20)
    • Python (27)
    • Rust (44)
    • System Analyst (SA) (98)
    • Testing (110)
      • Automated Testing (45)
        • Playwright (11)
    • UML (53)
    • Web (910)
      • Backend (590)
        • Golang (2)
        • Java (113)
          • Spring Boot (27)
        • Node.js (12)
        • PHP (281)
          • Laravel (60)
          • Yii (5)
      • Frontend (291)
        • CSS (28)
          • Tailwind CSS (6)
        • JavaScript (230)
          • Angular (4)
          • jQuery (70)
          • Tabulator (28)
          • Vue.js (7)
      • WordPress (28)
  • Programs (112)
    • Excel (20)
  • r (2)
  • science (10)
  • script (3)
  • SecDevOps (201)
    • CI/CD (12)
    • Docker (92)
    • GIT (61)
    • SVN (18)
  • Security (377)
  • sistema (1)
  • social (2)
  • system (376)
  • system analyst (31)
  • technology (927)
  • technologyระบบ (101)
  • technologyและระบบ (3)
  • typescript (10)
  • ui (63)
  • Uncategorized (8)
  • ux (58)
  • กฎหมาย (305)
  • การจัดการ (606)
  • การจัดการข้อมูล (351)
  • การจัดการข้อมูลและองค์ความรู้ (3)
  • การพัฒนาตนเอง (12)
  • การออกแบบ (77)
  • ข้อมูล (2)
  • คณิตศาสตร์ (31)
  • ความคิด (110)
  • ความปลอดภัย (224)
  • จริยธรรม (85)
  • จิตวิทยา (887)
  • ชีวิต (115)
  • ทั่วไป (16)
  • ธุรกิจ (622)
  • บุคคล (35)
  • บุคลากร (10)
  • บุคลิก (88)
  • ประวัติศาสตร์ (39)
  • ปัญญาประดิษฐ์ (28)
  • พฤติกรรม (168)
  • ภาษาศาสตร์คอมพิวเตอร์ (28)
  • ระบบ (359)
  • วัฒนธรรม (52)
  • วิชาการ (87)
  • วิชาการข้อมูล (64)
  • วิทยาการข้อมูล (162)
  • วิทยาการข้อมูลและภาษาศาสตร์คอมพิวเตอร์ (1)
  • วิทยาศาสตร์ (166)
  • วิทยาศาสตร์ข้อมูล (28)
  • สังคม (338)
  • สุขภาพ (210)
  • หนังสือ (2)
  • องค์ความรู้ (187)
  • ออกแบบ (18)
  • เทคโนโลยี (292)
  • เทคโนโลยีระบบ (156)
  • 기술 (1)
  • 사회 (1)
  • 시스템 (1)
  • 철학 (1)

Sirat WordPress Theme By VWThemes

Scroll Up
Go to mobile version