การติดตั้งและการใช้งาน Firebird บน Ubuntu/Ubuntu Server

ฐานข้อมูล Firebird

  • Firebird ในฐานะที่เป็นฐานข้อมูล RDBMS จำพวกเดียวกันกับ MySQL, Postgresql ฟรีและเปิดโค๊ดเช่นเดียวกัน ที่สำคัญคือทุกตัวนั้น cross-platform แต่ถ้าดูจำนวนผู้ใช้แล้ว MySQL กินขาดเอาแค่ใช้กับ Web Application ก็ยังไม่มีฐานข้อมูลไหนมาเทียบเคียงได้ จำนวนผู้ใช้ Firebird เป็นรอง Postgresql อยู่พอสมควร
  • ในฐานะความเรียบง่ายและเร็วแล้วผมคิดว่า Firebird น่าจะเป็น choice แรก ดูการทดสอบเปรียบเทียบระหว่าง Firebird,MySQL,Postgresql แต่การเปรียบเทียบพรรค์นี้นะดูเอาเป็น reference ก็แล้วกัน (คล้ายๆกับถามว่ารถ Toyota, Honda ใครเจ๋งกว่ากัน ถกกันไม่จบ)  ดูการเปรียบเทียบที่ postgresql กินขาดได้ที่นี่
  • post ใน blog ตอนนี้ถือว่าเป็นบันทึกช่วยจำของผมก็แล้วกัน ผมมีเกร็ดขำๆเล็กน้อยก็คือชื่อ Firefox ตัว Web browser ที่เราคุ้นเคยกันอยู่ตอนแรกปี 2003 Mozilla Foundation ได้เปลี่ยนชื่อจาก Phoenix มาเป็น Firebird ปรากฏว่ามาชนกับชื่อฐานข้อมูล Firebird ที่มีอยู่ก่อนแล้ว ซึ่งจะทำให้ประชาชนสับสนกันใหญ่ถ้าต้องค้นหาใน Search Engine กว่าจะเปลี่ยนมาใช้ชื่อใหม่คือ Firefox ก็หนึ่งปีให้หลัง

การติดตั้งบน Ubuntu Server

  • ตอนติดตั้ง Ubuntu Server จะไม่มีลิสต์ให้เลือกเหมือนกับ MySQL (มากับ LAMP)  ต้องมาติดตั้งภายหลังซึ่งไม่ได้ยากเย็นอะไรเพราะฐานข้อมูล Firebird มีอยู่ใน repository อยู่แล้ว ก่อนอื่น update ตัว cache repository เสียก่อน

$sudo apt-get update

  • ขณะนี้ Firebird เป็นรุ่น 2.5 ติดตั้งด้วยคำสั่งดังต่อไปนี้ ซึ่งถ้า internet เร็วก็แป๊บเดียวประมาณ 5 MB

$sudo apt-get install firebird2.5-super

การ Config

  • ในขณะติดตั้ง Firebird จะสร้าง user ชื่อ firebird และ group ชื่อ firebird ให้อัตโนมัติตรวจสอบได้ด้วยคำสั่งดังนี้

$cat /etc/passwd

  • จะเห็นบรรทัดที่แสดงชื่อ user “firebird” ดังนี้

firebird:x:113:123:Firebird Database Administator,,,:/var/lib/firebird:/bin/bash

  • ดู directory ชื่อ /var/lib/firebird เอาไว้ให้ดีๆ เป็น home ของ firebird ที่เป็น default ไดเรคทอรี ในอนาคตเราจะนำไฟล์ฐานข้อมูลมาไว้ที่นี่ จากนั้นพิมพ์คำสั่งเพื่อ config ตัว Firebird server ดังนี้

$sudo dpkg-reconfigure firebird2.5-super

  • ขั้นตอนการ config จะถามว่าต้องการรัน Firebird Server ในขณะเริ่มต้น Linux หรือไม่เลือกตอบ <Yes>

  • ขั้นตอนต่อไปป้อน password ปกติแล้วชื่อ root ผู้ดูแล Firebird Server คือ SYSDBA เมื่อป้อน password แล้วให้จดไว้ในที่ปลอดภัย ไม่ควรใช้ masterkey  เพราะเป็นค่า default ทำให้คนเข้ามาเจาะได้ง่าย พ้นขั้นตอนนี้ก็เป็นอันเรียบร้อย

การตั้ง password สำหรับ user ชื่อ firebird

  • ก็อย่างที่ผมบอกไปแล้วว่าตอนติดตั้งจะสร้าง user & group ชื่อ “firebird” มาให้อัตโนมัติ ผมจะป้อน password ของ firebird สมมติว่า “143firebird” ใช้คำสั่งต่อไปนี้

$sudo passwd firebird

Enter new UNIX password:                    #ป้อนคำว่า 143firebird
Retype new UNIX password:                #ป้อน 143firebird อีกครั้ง
passwd: password updated successfully

  • password ของ user & group ชื่อ “firebird” นั้นสำคัญไฉน ในกรณีแชร์ไฟล์ผ่านทาง Samba file server เวลา Remote จากเครื่อง client เข้าไปหา server ของ firebird (client อาจจะเป็นวินโดส์) เพื่อทำการ copy ลบไฟล์ข้อมูลจากไดเรคทอรี home ของ firebird ถ้าเป็นรุ่น 2.5 ชื่อไดเรคทอรีเต็มๆคือ /var/lib/firebird/2.5/data การ remote เข้าจะถูกถาม user และ password ถ้าเป็นตัวอย่างของผม user ก็ป้อน firebird ส่วน password ป้อน 143firebird เข้าไปก็จะ remote เข้าไปได้ (เกือบลืมไปถ้าแชร์ด้วย samba จะต้องเพิ่ม user ให้ตรงกับของระบบคือ user ชื่อ firebird ด้วยคำสั่ง #sudo smbpassswd -a firebird ป้อน password ให้ตรงกันด้วยคือ 143firebird)

การ copy ฐานข้อมูล Firebird ไปไว้ที่ Home

  • หลังจากติดตั้ง Ubuntu server แล้ว จะเป็น command line ล้วนๆ สมมติว่าเรามีฐานข้อมูล Firebird อยู่แล้วต้องการ copy ไปไว้ที่ /var/lib/firebird/2.5/data ผ่านคำสั่ง sudo cp ตัวอย่างเคสเราเอาข้อมูลใส่ใน thumb drive เสียบเข้าเครื่อง server จะไม่มีการ mount ให้อัตโนมัติเหมือน Ubuntu Desktop จะต้องเมาท์ด้วยมือ สมมติว่าเมาท์แล้วทำการ copy ข้อมูลดังต่อไปนี้

$sudo cp employeedb.fdb /var/lib/firebird/2.5/data

การเปลี่ยนสิทธิ์ของไฟล์ฐานข้อมูล

  • เมื่อ copy ไปแล้วด้วยสิทธิ์ของ root สิทธิของไฟล์ก็จะเป็นของ root ไปด้วยต้องทำการเปลี่ยนสิทธิ์มาเป็น user & group ชื่อ “firebird” ไมงั้นโปรแกรมจำพวก Administrative Tools เช่น FlameRobin, EMS SQL Manager for Firebird หรือ Firebird Maestro จะไม่สามารถใช้ฐานข้อมูลได้ การเปลี่ยนสิทธิ์ใช้คำสั่งบรรทัดด้านล่างต่อไปนี้

$sudo chown firebird.firebird /var/lib/firebird/2.5/data/employeedb.fdb

Firebird Administrative Tools

  • ฝั่ง Linux ไม่ค่อยจะมี Administrative Tools หลากหลายเช่นเดียวกับฝั่งวินโดส์ เพราะทูลส์ที่ว่าเป็นด้านการค้าเช่น EMS SQL Manager for Firebird หรือ Firebird Maestro ที่เป็นทูลส์ มีอายุการใช้งานเต็มเวอร์ชั่นอยู่ 1 เดือนหลังจากนั้นจะเป็น free version ปิดฟีเจอร์หลายอย่างหลังจากผ่านไปแล้ว 30 วัน แต่ผมค่อนข้างชอบใจมากทั้งคู่
  • FlameRobin เป็น Administrative Tools เหมือนกันแต่ฟีเจอร์น้อยกว่ามาก cross-platform ได้ ไม่มีฟีเจอร์สำหรับแก้ไขข้อมูลได้ การติดตั้งใน Ubuntu ทำได้ด้วยคำสั่ง

$apt-get install flamerobin

การ Connect ฐานข้อมูล Firebird Server ด้วย Lazarus

  • ก็ขอเขียนสักหน่อย ความจริงไม่ได้ตั้งใจว่าจะเกี่ยวกับโปรแกรมมิ่งสักเท่าไหร่ ก็จากที่ผมเขียนมาด้านบนว่าถ้าฐานข้อมูลเราเก็บไว้ที่ /var/lib/firebird/2.5/data เราจะใส่ connection string อย่างไรเพื่อให้โปรแกรมที่เขียนไว้บนเครื่อง client ไม่ว่าจะพัฒนา Lazarus ด้วยวินโดส์หรือลินุกซ์ สามารถ connect เข้า Firebird Server ได้
  • สมมติว่า Server อยู่บนวงแลนเดียวกัน Server มี IP Address : 192.168.1.200 ส่วนเครื่อง client ที่รัน Lazarus มี IP Address 192.168.1.20

[sourcecode language=”delphi”]
procedure TfrmMain.TestConnectDatabase;

var
FDBConnected : TIBConnection;
FTrans : TSQLTransaction;
begin
FDBConnected := TIBConnection.Create(NIL);
FTrans := TSQLTransaction.Create(NIL);

FDBConnected.Transaction := FTrans;
FTrans.Database := FDBConnected;

FDBConnected.Database := ‘var/lib/firebird/2.5/data/employeedb.fdb’; //ถ้าไม่ได้ aliases ต้องใส่ path เต็ม
FDBConnected.HostName := ‘192.168.1.200’;  //Firebird Server อยุ่บน Ubuntu Server บน IP นี้
FDBConnected.UserName := ‘SYSDBA’;     //default username
FDBConnected.Password := ‘masterkey’;    //default password

FDBConnected.Active := true;

end;[/sourcecode]

  • แต่ถ้าฐานข้อมูลไม่ได้อยู่บน Server คืออยู่บนเครื่องเราเองเปลี่ยน Host ดังนี้

FDBConnected.HostName := ‘localhost’;

การ Aliases

  • Alias ถ้าแปลก็คือชื่อ ฉายา หรือนามแฝง เวลาอ้างอิงชื่อ Database ไม่ต้องใส่ path ยาวๆ การ config ทำได้โดยการไปแก้ไขไฟล์ aliases.conf ด้วยคำสั่ง

$sudo nano /etc/firebird/2.5/aliases.conf

  • เพิ่มบรรทัดเข้าไป (สมมติว่าผมมีฐานข้อมูลชื่อ employeedb.fdb)

employee = /var/lib/firebird/2.5/data/employeedb.fdb

  • ทำการ Restart Firebird ใหม่ด้วยคำสั่ง

$sudo /etc/init.d/firebird2.5-super restart

  • เมื่อ alias แล้วการเขียนโปรแกรมด้านบนเปลี่ยน Database ดังนี้ (ไม่ต้องสนใจว่าเก็บที่ไหนใน Server ขอแค่อ้างชื่อได้ถูก)

FDBConnected.Database := ’employee’;

สรุป

  • สำหรับผมแล้วรัก Firebird เพราะว่าใช้มานานแล้วตั้งแต่ Delphi ไม่ค่อยมีปัญหาฐานข้อมูลสามารถเขียน Trigger, Store procedure รวมทั้ง UDF ได้ ใช้เป็นไฟล์เดี่ยวสามารถสร้าง Table อยู่ภายในได้ตั้งชื่อได้ตามใจชอบ มีความเสถียร จำนวน User สัก 1000-2000 คนผมคิดว่าสบายๆครับ แต่อย่างไรก็ตามขึ้นอยู่กับประสิทธิภาพของเครื่อง Server ด้วย CPU เร็วๆหน่อย แรมมากๆหน่อย คือ Firebird รันเป็น Service เมื่อมี user ทำการ access เข้ามาจะแตกเป็น Thread เพื่อรองรับผู้ใช้ ดังนั้นจะใช้ CPU และแรมมากขึ้น ถ้ามี user  เพิ่มขึ้น

Leave a Reply

Your email address will not be published. Required fields are marked *