เข้าใจ Connection Pool จนกระจ่างแจ้งดุจบ้านทรายทอง

Screen Shot 2559-02-24 at 07.24.42

หมายเหตุ เพื่อไม่ให้ภาษาวิบัติมากไปกว่านี้ที่ คำว่า “ควายหรี่” ผมจะกลับมาใช้แอคเซ่นส์ภาษาไทยว่า “คิวรี่” ละนะ …ความเดิมหลังจากการหัดนูบให้คิวรี่ฐานข้อมูล เราจะอาจไม่ทันสังเกตุว่ามีเรื่องราวมากมายซ่อนอยู่หลังรั้วบ้านหลังใหญ่ที่ชื่อว่า “Connection Pool” แปลตรงๆ ก็เป็น “บ่อกักเก็บ” หรือ “ถังพักการเชื่อมต่อ” เป็นความวิเศษของแพคเกจ “database/sql” ที่พึ่งพาไดร์ฟเวอร์ของมันมาแอบจัดการกับการเชื่อมต่อ (connection) จากไคลเอ็นท์ให้เราโดยอัตโนมัติ แต่ทำไมเราต้องสนใจะมันด้วยละ ก็เรื่องราวมันน่าสนุกสนานชวนติดตามดั่งละครน้ำเน่าหลังข่าวบ้านทรายทองที่เราท่านล้วนชอบเสพย์ดราม่ากัน อยากรู้รึยัง เอ้า! ตามมา…

Continue reading →

วิธีการให้นูบสั่งคิวรี่จากฐานข้อมูลอะไรก็ได้แบบเทพๆ

bank-note-209104_960_720

อย่างที่กล่าวไปในเอ็นทรี่เดิม เมื่ออัญเชิญเทพ “sqlite3″ มาประทับร่าง “database/sql” และเช็คสายว่าสามารถต่อติดด้วยการ “ปิง” แล้ว เราจะเริ่มตั้งคำถามกับเทพกันละ คำถามที่ถามบ่อยๆ กับเหล่าทวยเทพมีอะไรบ้างน้า…แล้วเราสามารถสั่งให้เทพทำอะไรได้อีก ยกเว้นใช้เทพไปซื้อกาแฟ อันนี้คนเดียวที่สั่งได้คือเมียเทพนะจ๊ะ

Continue reading →

แรกแย้มกับการใช้ฐานข้อมูล SQL แบบนูบๆ

การใช้งาน Database แบบ SQL ที่ Go ใช้งานได้มีหลากหลาย หาอ่านได้จากหน้าลิสต์ไดร์เวอร์ นี้ https://github.com/golang/go/wiki/SQLDrivers โดยพื้นฐานจะใช้งานได้ต้องเริ่มจาก Import แพคเกจ database/sql มาใช้พร้อมกับไดร์เวอร์ก่อน เช่นเปิด sqlite3 “database/sql” _ “github.com/mattn/go-sqlite3″ หากสงสัยว่าทำไมต้องมีไอ้อันเดอร์สกอร์ _ ก่อนเรียกไดร์ฟเวอร์ด้วย คือโปรแกรมเราไม่ได้เรียกใช้มันโดยตรง จึงต้องบอกให้คอมไพลเลอร์ละมันไว้ ไม่ต้องมาด่าว่าเชิญเทพมาแล้วทำไมไม่เรียกใช้งาน เพราะจริงๆแล้วมีแค่ตัวแพคเกจ database/sql เป็นตัวเรียกใช้ เปรียบง่ายๆ ก็ให้นึกภาพว่าเราอัญเชิญ เทพ “sqlite3″ มาประทับร่าง “database/sql” ตัวแพคเกจ “database/sql” มันเป็นแค่ “ร่างทรง” ภาษากี๊กกี้เราเรียกว่า Interface หรือ Abstraction Layer ดังนั้นวันหลังไปกราบคนทรงเจ้าที่ไหน ให้ทักว่าเค้าก็คือ Abstraction Layer ทำหน้าที่เป็น Interface ของเทพที่เรากำลังกราบอยู่ไงละ! ดังนั้นเราทำอะไรกับเทพองค์ไหนก็ได้ผ่านคนทรง จะกอด จะจูบ จะลูบ จะคลำ […]

Continue reading →