ถ้าเรามี Apache + PHP5 อยู่แล้วก็ไม่ต้องทำอะไรเลย จัดการไปที่ php.ini แล้วเปิด Extension PDO, SQLite ให้มันทำงาน จากนั้น Restart Apache ก็เรียบร้อยแล้วหละ
SQLite เป็นไฟล์ ที่มีส่วนรับและประมวลผลคำสั่ง SQL รวมอยู่ในตัวไฟล์เลย นอกจากนั้นเรายังสามารถเขียน หรือเปลี่ยนแปลง Function ที่อยู่ในไฟล์ข้อมูลของเราด้วยก็ได้ ด้วยความที่มันเป็นไฟล์ เพราะฉะนั้นการใช้งาน หรือการเข้าถึงข้อมูลที่ต้องการก็ง่ายมาก
ตามปกติถ้าเราใช้ MySQL ก็จะต้องมีการเปิดการติดต่อระหว่างตัวโปรแกรมกับฐานข้อมูลก่อน จากนั้นจึงจะสามารถส่ง Query ไปยังฐานข้อมูลได้ ซึ่งมันก็ต้องกำหนดอะไรวุ่นวาย เปิดการติดต่อกับฐานข้อมูลแล้ว ก็ต้องแจ้งไปอีกว่าจะทำงานกับฐานข้อมูลชื่ออะไร
ด้วยความที่ SQLite อยู่ในรูปของไฟล์ ดังนั้นการทำงานกับมันก็เหมือนกับเราเปิดไฟล์ขึ้นมา ที่พิเศษหน่อยคืออยากได้อะไรก็ยัด SQL ไปหามัน แทนที่เราจะต้องเปิดไฟล์ อ่านข้อมูล หาข้อมูลเองแบบที่ทำกับไฟล์ข้อมูลจริงๆ เจ้านี่มันจะส่งข้อมูลกลับมาให้เราเลย ไม่ต้องวุ่นวาย
ทีนี้ต้องลองสักหน่อย ผมลอง INSERT ข้อมูลจำนวน 119,875 รายการยัดลง SQLite ซึ่งหวังว่าถ้ามันราบรื่น ก็น่าจะเอาไปทดลองใช้กับงานอื่นได้อีก แบบประมาณว่าประทับใจจึงใช้บริการต่ออะไรประมาณนั้น ซึ่งผมไม่ได้จริงจังอะไรมากมาย ดังนั้นไอ้การทดลองส่วนตัว มันก็คงจะเอาไปอ้างอิงอะไรไม่ได้อยู่แล้วนะ
เขียนสคริปดึงข้อมูลจาก MySQL ใส่ไว้ในตัวแปร จากนั้นเริ่มว่ากันที่การ Query ลงไปในไฟล์ ซึ่งการดึงข้อมูลจาก MySQL เราไม่สนใจ
ลองรันดู… นานพอใช้ได้ ซึ่งผลปรากฎว่าผิดหวังแฮะ มันเป็นแบบนี้
… Warning: SQLiteDatabase::query() [function.SQLiteDatabase-query]: unable to open database file in D:\…\sqlite_test.php on line 59
Fatal error: Maximum execution time of 360 seconds exceeded in D:\…\sqlite_test.php on line 59
เปิดดูอีกที เปิดได้ไฟล์ไม่ได้พัง แต่ว่ามันทำงานไปได้แค่ 7 พันกว่ารายการ ก็จอดซะแล้วอย่างที่เห็น (ข้อเท็จจริง ลงไปอ่านความเห็นที่ 1)
คือจริงๆแล้วมันได้อย่างเสียอย่าง ด้วยข้อจำกัดของความที่มันเป็นไฟล์ ดังนั้นเวลาเขียนข้อมูลเข้าไป ก็จะติดปัญหาเรื่องการจัดการทรัพยากร ของระบบปฎิบัติการด้วยส่วนหนึ่ง แต่ว่าเมื่อลองเรียกข้อมูลจาก SQLite แล้วมันก็ถือว่าเร็วในระดับหนึ่งเลยหละ
ประเด็นคงอยู่ที่การนำไปรองรับกับภาระงาน บางงานที่เราไม่มีความจำเป็นเลยที่จะต้องโยนขึ้นไปบนฐานข้อมูล แต่ก็ไม่ได้วางใจได้ถึงขนาดจะเอาไปใส่ใน text file อันนี้ SQLite คงช่วยได้ อีกอย่างคือข้อมูลที่ถูกเรียกใช้งานบ่อยๆ มากๆ แต่มีการเปลี่ยนแปลง หรือว่าใช้งาน Insert, Update น้อยกว่า SQLite น่าจะเป็นตัวเลือกที่ดี งานที่มีข้อมูลเยอะมาก มีการเปลี่ยนแปลงตลอดเวลา MySQL น่าจะตอบสนองได้ดีกว่ามาก ถ้ามีโอกาสก็น่าจะเอาไปลองใช้ทดสอบ อย่างในช่วงการประกาศผลสอบนักเรียน ข้อมูลขนาดแสนรายการ ที่ไม่ต้องสนใจเรื่อง Insert/Update เพราะข้อมูลที่ประกาศย่อมเป็นคนละก้อน กับที่ฝ่ายวิชาการทำงานโดยตรงอยู่แล้ว
เรื่องที่ต้องระวังนิดหน่อย คือรูปแบบการเขียน SQL ร่วมกับ MySQL แล้วนำมาใช้กับ SQLite ด้วย บางทีอย่างเช่นชื่อตาราง หรือชื่อคอลัมส์ ผมมักจะใส่เขาเดี่ยวครอบให้เสมอ แต่พอมาทำงานกับ SQLite แล้วมันจะโวยวายทันที
SQLite เป็นอะไรที่น่าสนใจ น่าสนุกมากๆ ถ้าภาระงานในระดับที่ไม่ “ถึก” จนเกินไป เจ้านี่ดูจะมีอะไรน่าสนใจ น่าดึงดูดใจอยู่ในตัวมันเอง แต่ถ้างานระดับที่ต้องการความเชื่อถือของข้อมูลสูงมากๆ มีการทำ mirror หรือต้องการ Replication แล้วคงต้องกลับไปคบกับ MySQL คนเดิม
แถมท้ายด้วยกรณีที่เราใช้งาน SQLite บน Server แล้วไม่มั่นใจว่าจะมีใครดูดไฟล์ .sqlite ของเราไปได้หรือเปล่า ก็อาศัยสร้าง .htaccess ดักเอาไว้
<FilesMatch “\.(sqlite|sdb|s3db)$”>
Deny from all
</FilesMatch>