Libro

Designing Data-Intensive Applications: หนังสือระบบข้อมูลสำหรับวิศวกรซอฟต์แวร์

หนังสือของ Martin Kleppmann (O'Reilly, 2017) ว่าด้วยหลักคิดและข้อแลกเปลี่ยนเบื้องหลังฐานข้อมูลและระบบกระจาย บทความนี้สรุปจากหน้าผู้เขียน คลังอ้างอิงทางการ และรีวิวที่ระบุชื่อผู้เขียน เพื่อช่วยดูว่าเล่มนี้เหมาะกับงานของคุณหรือไม่

ภาพประกอบบทความ: ปกหนังสือ Designing Data-Intensive Applications โดย Martin Kleppmann

ขอบเขตของบทความ: แนะนำขอบเขตเนื้อหาจากสารบัญตามที่ผู้รีวิวระบุ หน้าของผู้เขียน และคลังอ้างอิงทางการ ยังไม่ได้อ่านเนื้อหาของบทใด หน้าหนังสือของ O'Reilly เปิดไม่ได้ในการค้นคว้าครั้งนี้

ระบบที่ใช้ข้อมูลหนัก เช่น ระบบเก็บข้อมูลตลาดย้อนหลังหรือระบบรับออร์เดอร์ซื้อขาย ต้องเลือกฐานข้อมูล คิวข้อความ และวิธีประมวลผลหลายชั้น ปัญหาคือเครื่องมือมีมากและเปลี่ยนเร็ว คนทำงานจึงต้องการหลักคิดที่ใช้เทียบเครื่องมือได้ ไม่ใช่คู่มือของผลิตภัณฑ์ตัวเดียว

หน้าเว็บของหนังสือระบุว่าเล่มนี้เน้นแนวคิดพื้นฐานและข้อแลกเปลี่ยน (trade-off) เบื้องหลังระบบ มากกว่าวิธีตั้งค่าเครื่องมือใดเครื่องมือหนึ่ง (dataintensive.net) บทความนี้ช่วยดูว่าเนื้อหาครอบคลุมอะไรและเหมาะกับใคร

หนังสือเล่มนี้ว่าด้วยอะไร

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems เขียนโดย Martin Kleppmann ตีพิมพ์โดย O'Reilly เดือนมีนาคม 2017 ผู้เขียนระบุความยาว 614 หน้า ISBN ฉบับพิมพ์ 978-1-4493-7332-0 และ e-book 978-1-4919-0308-7 (ประกาศของผู้เขียน)

ผู้เขียนตั้งกลุ่มผู้อ่านเป็นวิศวกรซอฟต์แวร์และสถาปนิกระบบ และสรุปสิ่งที่ผู้อ่านจะได้ไว้หลายข้อ ได้แก่

  • เข้าใจการทำงานภายในของระบบที่ใช้อยู่แล้ว

  • เทียบจุดแข็งจุดอ่อนของเครื่องมือเพื่อตัดสินใจ

  • ชั่งข้อแลกเปลี่ยนเรื่อง consistency, scalability, fault tolerance และความซับซ้อน

  • เข้าใจงานวิจัยด้านระบบกระจายที่อยู่เบื้องหลังฐานข้อมูลสมัยใหม่

  • เรียนจากสถาปัตยกรรมของบริการออนไลน์ขนาดใหญ่

เนื้อหาครอบคลุมหัวข้ออะไร

หน้าหนังสือของสำนักพิมพ์เปิดไม่ได้ สารบัญด้านล่างจึงมาจากรีวิวของ Henrik Warne ซึ่งแบ่งหนังสือเป็นสามภาค 12 บท (รีวิวของ Henrik Warne) จำนวน 12 บทตรงกับคลังอ้างอิงทางการของผู้เขียนที่มีไฟล์อ้างอิงแยกบทที่ 1 ถึง 12 (ept/ddia-references)

ภาค

บท

หัวข้อตามที่ผู้รีวิวระบุ

Part I Foundations of Data Systems

1–4

บทเปิดของภาค, Data Models and Query Languages, Storage and Retrieval, Encoding and Evolution

Part II Distributed Data

5–9

Replication, Partitioning, Transactions, The Trouble with Distributed Systems, Consistency and Consensus

Part III Derived Data

10–12

Batch Processing, Stream Processing, The Future of Data Systems

ภาคแรกว่าด้วยระบบข้อมูลบนเครื่องเดียว ภาคที่สองว่าด้วยการกระจายข้อมูลไปหลายเครื่อง และภาคที่สามว่าด้วยข้อมูลที่สร้างต่อจากข้อมูลต้นทาง เช่น งาน batch และ stream การแบ่งนี้อนุมานจากชื่อภาคและชื่อบท ยังไม่ได้ตรวจกับคำนำของหนังสือ

คลังอ้างอิงทางการ

ผู้เขียนดูแลคลัง ept/ddia-references ที่รวมลิงก์ไปยังงานที่หนังสืออ้างถึงและเปิดอ่านได้ฟรี เช่น บทความวิชาการและบล็อก แยกไฟล์ตามบท ใช้สัญญาอนุญาต CC BY-NC 4.0 ถ้าอยากเห็นว่าแต่ละบทอ้างงานอะไร คลังนี้ช่วยได้ก่อนตัดสินใจ

ความเห็นจากผู้รีวิว

Henrik Warne เห็นว่าหนังสืออธิบายฐานข้อมูลและระบบกระจายด้วยภาษาชัดเจนและละเอียด เป็นทั้งทฤษฎีและปฏิบัติ ชอบบทที่ 3 Storage and Retrieval และบทที่ 8 The Trouble with Distributed Systems เป็นพิเศษ ข้อติของเขาคือความยาวที่ทำให้ดูน่าหนักใจ บทที่ 3 ค่อนข้างยาว และบทที่ 9 เข้าใจยากที่สุดสำหรับเขา (รีวิวของ Henrik Warne) ความเห็นนี้เป็นของผู้รีวิวคนเดียว

พื้นฐานที่ควรมีก่อนอ่าน

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

เหมาะกับใคร และใครควรเริ่มจากเล่มอื่นก่อน

  • เหมาะ กับนักพัฒนาที่ต้องเลือกหรือดูแลฐานข้อมูล คิวข้อความ หรือระบบประมวลผลข้อมูล และอยากเข้าใจเหตุผลเบื้องหลังข้อแลกเปลี่ยนของแต่ละแบบ

  • เหมาะ กับคนทำระบบข้อมูลสำหรับงานวิเคราะห์หรือเทรดที่เริ่มเจอปัญหาเรื่องข้อมูลซ้ำ ข้อมูลหาย หรือการกระจายงานหลายเครื่อง เพราะสารบัญมีบท replication, transactions และ stream processing

  • ควรเริ่มจากเล่มอื่นก่อน ถ้ายังไม่เคยใช้ฐานข้อมูลหรือเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ เพราะเล่มนี้ยาวกว่า 600 หน้าและเน้นหลักคิดของระบบ

ข้อจำกัดของข้อมูลที่ใช้ในบทความนี้

  • ยังไม่ได้อ่านเนื้อหาบทใด หน้าหนังสือของ O'Reilly ตอบกลับด้วยการปฏิเสธการเข้าถึง

  • ชื่อบทมาจากรีวิวของผู้อ่านหนึ่งคน ไม่ใช่สารบัญของสำนักพิมพ์ บทความนี้ไม่ระบุชื่อบทที่ 1 เพราะยังไม่ได้ยืนยันจากแหล่งทางการ

  • จำนวนหน้าไม่ตรงกันระหว่างแหล่ง ผู้เขียนระบุ 614 หน้า Google Books ระบุ 616 หน้า และ Open Library ระบุ 624 หน้า

  • บทความนี้พูดถึงฉบับปี 2017 ตามปกในโฟลเดอร์หนังสือ ไม่ได้ตรวจสอบฉบับอื่น

แหล่งอ้างอิง

บทความนี้อ่านจบได้ในตัวเอง หนังสือด้านบนคือจุดต่อยอดสำหรับผู้ที่ต้องการศึกษาลึกขึ้น

  • 25 ตุลาคม 2569

    Effective C++ ฉบับที่ 3: 55 แนวทางเขียน C++ ให้ปลอดภัยขึ้น

    หนังสือของ Scott Meyers ฉบับที่ 3 (Addison-Wesley, 2005) รวม 55 แนวทางสำหรับเขียน C++ บทความนี้สรุปจากสารบัญรายข้อและ Item 27 ที่สำนักพิมพ์เผยแพร่ เพื่อช่วยดูว่าเล่มนี้เหมาะกับระดับของคุณหรือไม่ และควรรู้อะไรเรื่องมาตรฐานภาษาที่ใช้

  • 25 ตุลาคม 2569

    C++ Software Design: design pattern ฉบับ C++ สมัยใหม่ เหมาะกับใคร

    หนังสือของ Klaus Iglberger ว่าด้วยการออกแบบซอฟต์แวร์และ design pattern ใน C++ สมัยใหม่ บทความนี้สรุปจากข้อมูลแคตตาล็อกและรีวิวสองชิ้นของ ACCU เพื่อช่วยดูว่าเล่มนี้เหมาะกับระดับของคุณหรือไม่

  • 25 ตุลาคม 2569

    Effective Modern C++: 42 แนวทางใช้ C++11 และ C++14 อย่างถูกวิธี

    หนังสือของ Scott Meyers (O'Reilly, 2014) ว่าด้วยการใช้ฟีเจอร์ของ C++11 และ C++14 เช่น smart pointer, move semantics, lambda และ concurrency บทความนี้สรุปจากสารบัญในระเบียนห้องสมุด หน้าผู้เขียน และ errata