รายงานการศกษาเบองตนกระบวนวชา 261491 : PROJECT SURVEY
โครงงานเรองการคนหาคำาหลกโดยใชหลกการสบคนขอมลในฐานขอมลเชง
สมพนธIR-Style Keyword Search over Relational
Databases
โดยนางสาวพมพวรรณ สวรรณสมฤทธ รหส
4706301นางสาวเพยงพน จกรแกว รหส
4706304
อาจารยทปรกษาโครงงานอ.ดร.จกรพงศ นาทวชย
1
โครงงานนเปนสวนหนงของการศกษาตามหลกสตรปรญญาวศวกรรมศาสตรบณฑต
ภาควชาวศวกรรมคอมพวเตอรคณะวศวกรรมศาสตร มหาวทยาลยเชยงใหม
ปการศกษา 2550
หวขอโครงงาน : การคนหาคำาหลกโดยใชหลกการสบคนขอมลในฐานขอมลเชงสมพนธ
: IR-Style Keyword Search over Relational Databasesโดย : นางสาวพมพวรรณ สวรรณสมฤทธ รหส 4706301
: นางสาวเพยงพน จกรแกว รหส 4706304ภาควชา : วศวกรรมคอมพวเตอรอาจารยทปรกษา : อ.ดร.จกรพงศ นาทวชยปการศกษา : 2550
ภาควชาวศวกรรมคอมพวเตอร คณะวศวกรรมศาสตร มหาวทยาลยเชยงใหม อนมตใหโครงงานนเปนสวนหนงของการศกษาตามหลกสตรปรญญาวศวกรรมศาสตรบณฑต
.............................................................................................หวหนาภาควชาคอมพวเตอร
(รศ.ดร.สทธชย เปรมฤดปรชาชาญ)
คณะกรรมการตรวจสอบโครงงาน
2
.....................................................................................ประธานกรรมการ
(อ.ดร.จกรพงศ นาทวชย)
.....................................................................................กรรมการ
(ผศ.ดร.ตรสพงศ ไทยอปถมภ)
.....................................................................................กรรมการ
(อ. นรศรา เอยมคณตชาต)บทท 1บทนำา
1.1 ทมาและความสำาคญของปญหาทนำาไปสการคนควา
ระบบการสบคนในปจจบนนไมวาจะเปนระบบสบคนทางอนเตอรเนต หองสมด หรอภายในสำานกงานและองคกรตางๆลวนมการจดเกบขอมลดวยระบบจดการฐานขอมล RDBMS กนอยางแพรหลายเปนสวนใหญ ทงนรปแบบการจดเกบขอมลจะอยในรปแบบของตารางซงประกอบดวย แถว (Row หรอ Tuple) และ คอลมน (Column หรอ Field) ตวอยางเชน ตาราง “Complaints” ทเกบขอมลแสดงขอรองเรยนของลกคาทมตอผลตภณฑทซอไป โดยแบงการเกบขอมลทงหมดออกเปน 4 ฟลดอนไดแก รหสผลตภณฑ (prodId) , รหสลกคา (custId) , วนทรองเรยน (date) และ ขอรองเรยน (comments) ดงในรปท 1.1 ซงแสดงขอมลวามลกคาทำาการรองเรยนเขามา 2 รายคอ ลกคาทมรหสประจำาตวเปน “c3232” และ “c3131” ตามลำาดบ
Complaints Relation prodI
dcustI
ddate comments
3
p121 c3232
6-30-2002
“disk crashed on IBM Netvista ”
p131 c3131
7-3-2002
“Lower-end IBM Netvista caught fire”
รป 1.1 Complaints Relationนอกจากความสามารถในการเกบขอมลแลว RDBMS ยงมความสามารถในการ
สบคนขอมลโดยอาศย คำาหลก หรอ “ ” “Keyword” อกดวย เพยงแตระบบสบคนของ RDBMS นนจะมขอจำากดในเร องของคำาหลก นนกคอ RDBMS จะคนหาคำาตอบ หรอแถวในตารางทมคำาทกคำาถกตองตามคำาหลกทกประการ หากคำาในแถวสลบตำาแหนง หรอผดไปจากคำาหลกแลวจะไมถอวาแถวนนเปนคำาตอบของการคนหา และถาหากมการคนพบคำาตอบ การเรยงคำาตอบนนจะเรยงตามลำาดบการพบกอนหลงไมเรยงตามความใกลเคยงคำาหลก โดยการคนหาคำาหลกบน RDBMS จะเปนไปดงตวอยางท 1.1 และตวอยางท 1.2 ดานลาง
ตวอยาง ท 1.1 ตองการคนหา คำาวา “disk crashed Netvista” จากคอลมน “comments” ของตาราง “Complaints” โดยใช SQL Commands ดงน
SQL: 1. select * from complaints 2. where comments =‘disk crashed Netvista’;ระบบการคนหาจะไมสามารถหาแถวทเปนคำาตอบได เนองจากไมมแถวใดทมคำาวา
“disk crashed Netvista” ในคอลมน “comments” เรยงกนถกตองตามคำาหลก ตวอยางท 1.2 ตองการคนหาคำาวา “disk crashing on IBM Netvista”
จากคอลมน “comments” ของตาราง “Complaints” โดยม SQL Commands เปน
SQL: 1. select * from complaints 2. where comments =‘ disk crashing on IBM Netvista‘;ระบบการคนหาจะไมสามารถหาแถวทเปนคำาตอบไดเชนกน แมแถวทม “proId”
เปน “p121” จะมคำาทกครบตามคำาหลกกตามแตเพราะคำาวา “crashed” ในคอลมน “comments” นนไมใชคำาวา “crashing” ตามทคำาหลกตองการจงไมนบวาเปนแถวคำาตอบ
จะเหนไดวาระบบการสบคนของ RDBMS มขอจำากด ททำาใหพลาดการคนพบคำาตอบทควรพบ จงเรมมการมองหาแนวทางแกไขปญหา จนกระทงไดมการเลงเหนความสามารถของ IR (Information Retrieval) ซงเปนระบบสบคนบน plain text ทสามารถชวยแกไขขอผดพลาดของระบบสบคน RDBMS ได นนคอ IR มความสามารถ
4
ตดคำาหลกใหเปนเปนคำารากศพทเพอคนหาคำาทมความหมายตรงตามคำารากศพทและตดคำาทไมมนำาหนกหรอความสำาคญเพยงพอในการคนหาทงไป อกทง IR ยงไมจำาเปนตองคนหาคำาทกคำาในคำาหลกและมการใหคา score ซงเปนคาบอกความถกตองหรอความใกลเคยงกบคำาหลกเพอเรยงผลการคนหาอกดวย ตวอยางเชน ถาตองการคนหา “disk crashing on IBM Netvista” ดงเชนตวอยางท 1.2 IR จะทำาการตดคำาทไมจำาเปนออกไปเหลอเปนคำาหลกใหม “disk crash IBM Netvista” และเมอเสรจสนการคนหา คำาตอบทไดจะเปนแถวทมขอมลใน “proId” เปน “p121” และ “p131” ตามลำาดบเนองจากแถวทงสองลวนมคำาในคำาหลกอยอยางนอยแถวละ 2 คำาคอ “IBM” กบ “Netvista” และ คำาตอบจะเรยงจากแถว “p121” เพราะเปนแถวทมค ำาหลกอยมากกวาโดยวดจากคา score นนเอง
แตใชวา RDBMS จะไมสามารถแกไขขอบกพรองในระบบสบคนไดเสยทเดยวเพราะ RDBMS นนยงมความสามารถอยางหนงทสามารถลดทอนของเสยของระบบสบคนลงไปไดนนกคอ Text Index ซงเปนหนงใน Text Features นนเอง อยางเชนถาตองการทำาตวอยางท 1.2 โดยเลอกคนหาเฉพาะบางคำาในคำาหลกและใช Text Index จะม SQL Commands ดงน
SQL: 1. select score(1) custId from Complaints 2. where contains (comments,’IBM Netvista’,1)>0
3. order by score(1) desc; จาก SQL มการกำาหนดคอลมน “comments” ใหเปน index ของตาราง
“Complaints” และคนหาแถวทมคำาวา “IBM Netvista” เปนสวนประกอบอยแลวเร ยงค ำาตอบตามค า score ซ งจ ะ ได ค ำาตอบเป นแถวท ง 2 แถวของตาราง “Complaints” หรอถาตองการคนหาแถวทคำาทมรากศพทเปน “crash” เปนสวนประกอบอยจะม SQL Commands ดง SQL Commands ขางลางและไดคำาตอบเปนแถวของ “p121”
SQL: 1. select score(1) custId from Complaints 2. where contains (comments,’($crash)’,1)>0
3. order by score(1) descจากการใช Text Index จะเหนไดวาขอบกพรองดานการคนหาแถวคำาตอบทมคำา
ถกไวยากรณและเรยงถกตองตามคำาหลกรวมถงปญหาการเรยงคำาตอบตามลำาดบการคนพบไดถกแกไขใหหายไป แตขณะเดยวกนกเกดคำาถามขนใหมวาถาหากการคนหาไมสามารถคนคำาตอบทตองการไดจากตารางเพยง 1 ตาราง ควรมแนวทางหรอวธการแกไขอยางไร ดงนนความสามารถท RDBMS ขาดไมไดอกหนงประการเพอระบบการ
5
สบคนทดกคอ การ join หรอการรวมขอมลของตารางในฐานขอมลเขาดวยกนในการสบคนดงเชนตวอยางท 1.3
ต วอย างท 1.3 ต องการค นหาค ำาว า “disk crash Maxtor” ซ งค ำา ว า “Maxtor” ไมมในตาราง “Complaints” แตมในตาราง “Products” ทเพมขนมาดงรปท 1.2
Products RelationprodId
manufacturer
model
p121
“Maxtor” “D540X”
p131
“IBM” “Netvista ”
รป 1.2 Products Relationจะเหนไดวาคำาตอบทควรจะคนพบนนคอ แถวของ “p121” เนองจาก “p121”
ใ น Complaints Relation ม ค ำา ว า “disk crash” อ ย แ ล ะ ใ น Products Relation ท “p121” กมคำาวา “Maxtor” อย เมอรวมกนแลวกจะมคำาหลกอยครบทกคำา ทำาใหไดวา แถว “p121” คอคำาตอบของคำาคนหาน โดย
คำาสง SQL ในการหาคำาตอบทควรจะไดนน มดงนSQL: 1. select score(1) proid,custId from Complaints c
2. join Products p on c.proId=p.proId 3. where contains(c.comments,’disk crash’,1)>0 4. or p.manufacturer=’Maxtor’;
จาก SQL Commands แสดงใหเหนถงการใชค ำาส ง join รวมขอมลของตาราง “complaints” และ “Products” เขาดวยกนโดยเชอมโยงผานทางคอลมน “proId” เพอคนหาแถวจาก “Complaints” โดยในคอลมน “comments” ตองมคำาวา “disk crash” และแถวจาก “Products” คอลมน “manufacturer” ตองคำาวา “Maxtor” อย ทงนแถวจากทงสองตารางตองมขอมลในคอลมน “proId” เหมอนกน และในทนคำาตอบทไดคอแถวจากตารางทงสองทมขอมลใน “proId” เปน “p121” นนเอง ซงแถวทงสองนจะถกเรยกรวมกลมกนวาเปนคำาตอบท 1 หรอ 1st tuple tree
6
เมอมาถงตรงน สามารถกลาวไดวา RDBMS ไดทำาการแกไขขอบกพรองในระบบสบคนไปไดมากแลว แตทวาจากตวอยางทงหมดขางตนจะสามารถสงเกตเหนขอเสยอกขอหนงของ RDBMS ทไมสามารถแกไขไดนนกคอ การตองระบชอตารางและคอลมนในการคนหาใหถกตองทกครง หากระบผดพลาดอาจทำาใหการคนหาผดพลาดและหาคำาตอบทตองการไมไดซงตรงจดนเปนขอจำากดททำาใหเกดความยงยากในการใชงานและเปนสาเหตททำาใหตองนำาการคนหาแบบ IR เขามาเกยวของอกครง
การคนหาของ IR นนเมอนำามาประยกตใชบน RDBMS ระบบของ IR จะทำาการสบคนใน IR Index ซงเกดจากการนำา Text Index ของ RDBMS มารวมกนวาคำาทตองการมอยทแถวใด คอลมนใด ตารางใด แลวจงจดเปนกลมคำาตอบหรอ tuple tree เขาดวยกนและเมอเสรจสนไดหลายกลมคำาตอบแลว จงตองมการนำา Algorithm อยางงายหรอ Naïve Algorithms เขามาชวยพจารณาและดงคำาตอบทเหมาะสมออกมาตามคา score ความถกตองอกท โดยทงหมดนไมตองผานการเขยน SQL join ตารางหรอคอลมนเหมอน Text Index แตอยางใดทำาใหชวยลดความยงยากลงไปไดมากซงการจดทำา software เพอประยกตนำาการคนหาแบบ IR มาใชพฒนาระบบสบคนของ RDBMS นนคอจดมงหมายของโครงงานนนนเอง
1.2 วตถประสงค เพอสรางแอพพลเคชนเสรมสำาหรบพฒนาระบบสบคนทตดตงงายใชงานสะดวก
ใหกบผใช
1.3 ขอบเขตโครงงานนำาความรทฤษฎทาง IR มาประยกตใชสรางเปนแอพพลเคชนเสรมทตดตงไดงาย
และสามารถพฒนาระบบสบคนบน RDBMS
1.4 ประโยชนทคาดวาจะไดรบผใชหรอพนกงานสามารถตดตงแอพพลเคชนเสรมทชวยใหงานการสบคนเปนไป
อยางรวดเรวขนไดอยางสะดวกดวยตวเอง เสรมสรางประสทธภาพการท ำางานใหกบบรษทและองคกร
1.5 ขนตอนการศกษา
7
แผนการดำาเนนงาน ระยะเวลา(เดอน)1 2 3 4 5 6 7 8 9
1. ศกษาหลกการ ,ทฤษฎ และปญหาของระบบการสบค นบน RDBMS รวมถ งพจารณาเลอกฐานขอมลทเหมาะสม2. ศกษาหลกการทำางานของ IR Engine และ algorithm ทเกยวของ3. ศกษาและออกแบบรปแบบของแอพพลเคชน4. ศ กษาการ เ ข ยน โปรแ ก ร มเ พ อ น ำา Naïve Algorithm ไปใชก บฐานขอมลและตดตอฐานขอมลดวย Java5. เขยนโปรแกรมแอพพลเคชนดวย Java6. ทดลองนำาโปรแกรมแอพพลเคช นใช งานกบฐานขอมล7. แกไขโปรแกรมแอพพลเคชน8. สรปโครงงาน
บทท 2องคความรทเกยวของ
2.1 Java
8
Java คอภาษาทใชในการเขยนโปรแกรมชนดหนงซงมจดกำาเนดมาจาก “Green Project” ทตองการพฒนาและสรางอปกรณอเลกทรอนกสทสามารถควบคมดวยรโมทคอนโทรลไดของบรษท Sun Microsystems ผจดจ ำาหนายฮารดแวรและซอฟทแวรของระบบปฏบตการ UNIX ดวยเหตน Java จงถกคดคนขนโดยมงเนนใหเปนภาษาทมขนาดเลกเพอทอปกรณจะไดไมตองใชหนวยประมวลผลทสงมากนกและตองไมยดตดกบอปกรณฮารดแวรเพยงแบบใดแบบหนงหรอตองเปน Platform Independent นนเอง จากนนภายหลงจงไดมการผนแนวทางการใชงานนำา Java ไปใชงานบนอนเตอรเนต
2.1.1 เหตใดจงเลอกใช Javaสาเหตหลกทเลอกใช Java ในโครงงานนเปนเพราะนอกจาก Java จะเปนภาษาท
มลกษณะคลายกบ C++ แตใชงานงายกวา อกทง Java ยงเปน Free Language Source ซงสามารถหาใชงานไดทวไปและมความสามารถเฉพาะทสนบสนนการเขยนโปรแกรมเชงวตถหรอ Object Oriented Language ททำาใหสามารถทำางานไดกบเคร องคอมพวเตอรทกแพลตฟอรมโดยไมตองทำาการแกไขดดแปลง code ใหมแตอยางใดอกดวย ทงนความโดดเดนดานตางๆของ Java สามารถจำาแนกไดดงน
1. ความโดดเดนดาน Object Oriented Language Encapsulation : ซอนระบบการทำางานและขอมลไวภายใน ปองกน
ไมใหภายนอกทำาการเปลยนแปลงแกไขสรางความเสยหาย ทำาใหเกดความปลอดภยกบขอมล
Inheritance : ทำาการสรางเพมเตมหรอรบเอาคณสมบตบางอยางจากสงเดมทมอยแลว ทำาใหประหยดเวลาการทำางานไมตองเรมพฒนาใหมทงหมด
Polymorphism : การทำางานหนงๆทสามารถทำางานไดหลากหลายโดยตอบสนองตอตวแปรเขาหรอ input ทรปแบบและจำานวนตางกนออกไป
2. ความโดดเดนดาน Robustness : มความคงทน ไมเกดความผดปกตไดโดยงาย เชน ม Garbage Collection จดการหนวยความจำาใหอตโนมตปองกนภาวะหนวยความจำาร วเมอมการจองพนทแลวลมคนใหกบระบบ หรอ การม Debugger คนหาแกไขขอผดพลาดของการเขยนโปรแกรมเบองตนเมอจะ
9
ทำาการคอมไพล เพอเปนหลกประกนวาโปรแกรมจะไมผดพลาดดวยเร องเลกนอย เปนตน
3. ความโดดเดนดาน Security : Java ถกออกแบบใหมระบบรกษาความปลอดภยอยางด เชน Applet ของ Java ถกกำาหนดใหทำาการประมวลผลบน Sandbox ซงปองกนเครองจากสงแปลกปลอมทอาจแฝงมา และ Java ยงไมมพอยเตอร ทำาใหสามารถปองกนผไมมสทธเขามาทำาการจบจองพนทหนวยความจำาหรอทำาลายระบบได
2.1.2 Java Platform แบงออกเปน 3 ประเภทดงน1. J2SE (Java 2, Standard Edition) : เปน platform มาตรฐานทมการ
พฒนามาต งแต Java ร นแรก ประกอบด วย 2 สวน ค อ Software Development Kit (SDK) และ Java Runtime (JRE) ซง SDK นนจะครอบคลม JRE ดงนนการตดตง SDK จะเปนการตดตง JRE อตโนมตไปในตว และโดยทวไปแลว J2SE จะสามารถแบงประเภทออกไดทงหมด 2 ประเภทคอ
J2SDK ประกอบดวย Compiler และ Debugger สำาหรบคนหา แกไขขอผดพลาดและคอมไพลโปรแกรม เหมาะกบผพฒนาโปรแกรมหรอโปรแกรมเมอร
J2RE ป ร ะ ก อ บ ด ว ย library ต า ง ๆ , Java Virtual Machine(JVM) และ component ทจ ำาเป นในการประมวลผลโปรแกรม Java เหมาะกบผใชงานทวไป
2. J2EE (Java 2, Enterprise Edition) : เปนสวนขยายออกมาจาก J2SE เพอใหไดเทคโนโลยทสนบสนนการทำางานของ Server-Side Application
3. J2ME (Java 2, Micro Edition) : เปนเทคโนโลยสำาหรบอปกรณขนาดเลก เชน โทรศพทมอถอ , PDAs เปนตน
2.1.3 รปแบบของ Java
10
1. Java Application เปนรปแบบการทำางานแบบ Standalone สามารถทำาการประมวลผลไดทกเครองทม JRE ตดตง ไมตองการ Web browser แตประมวลผลโดยใช Java Interpreter และ Java Virtual Machine
2. Java Applet เป นรปแบบการท ำางานของโปรแกรมทต องอาศย web browser ไ ม ท ำาก า ร ปร ะ ม ว ล ผ ลด ว ย Java Interperter แ ต อ าศ ย Default Java Virtual Machine บน web browser แทน ดงนนแมไมม JRE บนเครองกสามารถประมวลผลโปรแกรมได
2.1.4 หลกการทำางานของ JavaSource code ของ Java(.java) นนจะไมถกแปลงเปนภาษาเครองทนท แตจะ
ถ กแปลงเป น byte code (.class) ซ ง เม อม ก าร เร ยกร นบน Java Virtual Machine หรอ JVM ททำาการจำาลองคอมพวเตอรเสมอนบนคอมพวเตอรจรง byte code จะถกแปลงเปนภาษาเคร องทเหมาะสม และเพราะการแปลง byte code นไมเกยวของกบแพลตฟอรมของเคร องคอมพวเตอรจรง ท ำาใหไมวาเคร องจรงจะมแพลตฟอรมแบบใดกจะสามารถแปลง byte code ไดหมด
ในโครงงานน Java ทเลอกใชค อ J2SDK ของ J2SE ในรปแบบของ Java Application เพราะเปนโครงงานททำาการเขยนโปรแกรม Java ตดตอฐานขอมลบนเครองคอมพวเตอรจงสมควรเลอกใชแพลตฟอรมมาตรฐานมากกวาแพลตฟอรมสำาหรบระดบสงหรอสำาหรบเทคโนโลยอปกรณขนาด เลก
2.2 RDBMSRelational Database Management System(RDBMS) ค อ
ระบบจดการฐานขอมลเชงสมพนธหรอโปรแกรมทใชในการบรหารจดการ สราง /ปรบปรงขอมลในดานตางๆโดยมจดมงหมายเพอควบคมและสนบสนนการใชงานขององคกรอยางเปนระบบ ลกษณะททกระบบ RDBMS ตองมนนสามารถสรปไดดงน
1. ขอมลทกอยางตองอยในรปแบบของตาราง2. ขอมลในตารางตองไมมความซำาซอนกน3. ตองใช Standard Query Language(SQL)
11
ซงจากลกษณะทงสามขอขางตนทำาใหสามารถกลาวไดวา RDBMS เปนระบบทม ความงายและความยดหยน โดยในแงของขอมลแลว ผใชจะสามารถทำาความเขาใจกบเนอหาขอมลไดงายเพราะถกเกบอยในรปแบบของตาราง สวนในแงของความยดหยนนนจะหมายถงการใช SQL เนองจาก SQL เปนภาษาทสามารถเร มเรยนรการใชงานไดไวและใชในการทำาการบนทกขอมลเพมเตมไดอยางไมตองแกไขตวโปรแกรม application แตอยางใด
2.2.1 ระบบ RDBMS ทเลอกใชระบบ RDBMS ทถกเลอกมาใชในโครงงานนคอระบบ Oracle เพราะนอกจากจะ
เปนระบบ RDBMS ทถกใชงานกนอยางแพรหลายแลว ยงมความสามารถในการทำางานไดหลากหลายแพลตฟอรมอกดวย แตในโครงงานนจะมงเนนการทำางานไปทความสามารถของ Oracle ดาน Text Features เชน Text Indexing โดยเฉพาะ ดวยการใชภาษา Java ตดตอกบฐานขอมลผาน JDBC Driver เพอทำาการประยกตใชระบบการสบคน IR และ Algorithms ทเกยวของคนหาคำาหลกทตองการ
2.2.2 การทำางานบนระบบ RDBMSการทำางานบนระบบ RDBMS สวนใหญแลวไมวาจะเปนระบบใดลวนใช SQL หรอ Structure Query Language ซง
เปนชดคำาสงทนยมใชกนมากในระบบฐานขอมลแบบตารางสมพนธจดการกบฐานขอมลและขอมลทเกบไวดวยกนทงสน โดยชดคำาสง SQL ทใชในการจดการกบฐานขอมลทสำาคญๆ มอย 4 คำาสงคอ
1. SELECT ใชสำาหรบการเลอกหาขอมลหรอแถวทตองการในฐานขอมล2. UPDATE ใชเมอตองการแกไขขอมลหรอแถว3. DELETE ใชเมอตองการลบขอมลหรอแถว4. INSERT ใชเมอตองการเพมเตมแถวหรอขอมลใหม
2.2.3 หนาททวไปของระบบ RDBMS1. ชวยกำาหนด และเกบโครงสรางฐานขอมล 2. ชวยดงขอมลจากฐานขอมล : ขอมลทน ำามาประมวลผลดวยโปรแกรม
คอมพวเตอร ระบบจดการฐานขอมลจะทำาการรบและเกบขอมลไวในฐานขอมล เพอใชในการประมวลผล
12
3. ชวยเกบและดแลขอมล : ขอมลทเกบในฐานขอมลจะถกเกบรวบรวมไวดวยกน โดยมระบบจดการฐานขอมลเปนผดแลรกษาขอมลเหลานน
4. ชวยประสานงานกบระบบปฏบตการ : เนองจากคอมพวเตอรตองพงระบบปฏบตการชวยใหทำางานได ดงนน ระบบปฏบตจะคอยควบคมการทำางานของอปกรณคอมพวเตอร หรอโปรแกรมตางๆ เปนตน ระบบจดการฐานขอมลจะทำาการประสานงานกบระบบปฏบตการ ในการเรยกใช แกไขขอมล ลบขอมล ออกรายงาน
5. ชวยควบคมความปลอดภย : ในระบบการจดการฐานขอมลจะมวธควบคมการเรยกใชขอมล หรอแกไขเปลยนแปลงขอมลของผใชระบบซงสามารถเรยกขอมลมาแกไข ไดแตกตางกน เพอปองกนความเสยหายทจะเกดขนกบฐานขอมล
6. ชวยจดทำาสำารองขอมลและการกคน : ในระบบจดการฐานขอมล จะทำาการสำารองขอมลของฐานขอมลและเมอเกดปญหาขนกบฐานขอมล เชน แฟมขอมลเสยหายเนองจากดสกเสย หรอไฟไหม ฯลฯ ระบบจดการฐานขอมลจะใชระบบขอมลสำารองนในการฟ นฟสภาพการทำางานของระบบใหสสภาวะปกต
7. ชวยควบคมการใชขอมลพรอมกนของผใชในระบบ : ในระบบคอมพวเตอรทมผใชหลายคนสามารถเรยกขอมลไดพรอมกนระบบฐานขอมลทมคณสมบตนจะทำาการควบคมใชขอมลพรอมกนของผใชหลายคนในเวลาเดยวกน โดยมการควบคมอยางถกตองเหมาะสม เชน ถาแกไขขอมลนนยงไมเรยบรอย ผใชอนๆ ทตองการเรยกใชขอมลนจะตองรอจนกวาการแกไขเสรจเรยบรอยเพอปองกนการเกดปญหาการเรยกใชขอมลทไมถกตอง
8. ชวยควบคมความสมบรณของขอมล : ระบบจดการฐานขอมล จะทำาการควบคมคาของขอมลในระบบใหถกตองตามทควรจะเปน เชน รหสของนกศกษาทลงทะเบยน จะตองตรงกบรหสของนกศกษา ในขอมลประวตของนกศกษา เปนตน
9. ชวยทำาหนาทจดทำาดรรชนขอมล : ระบบจดการฐานขอมลจะทำาการสรางดรรชนขอมลเมอมการกำาหนดโครงสรางของฐานขอมลขนมาเพอเกบรายละเอยดตางๆ ทเกยวกบฐานขอมล เชน ตาราง ชอฟลด ดรรชนตางๆ เปนตน
13
บทท 3หลกการทำางานของระบบ
3.1 ความรพนฐาน
3.1.1 คำาตอบของระบบจากบทนำาทกลาวมาขางตน คำาตอบของระบบการสบคนนนสามารถอยในรปแบบ
ของแถวหลายแถวทมาจากการเชอมโยงหรอ join ขอมลจากหลายๆตารางในฐานขอมลเขาดวยกนเรยกวา Tuple Tree ได โดยทแตละตารางนนจะตองมขอมลทมความสมพนธกนดงยกตวอยางในรปท 3.1 ซงอธบายสภาพความสมพนธของขอมลจากตารางในรปท 3.2
รปท 3.1 แผนผงความสมพนธของตาราง
14
รปท 3.2 ตารางในฐานขอมลจะเหนได ว าร ปท 3.1 ได บอกถงความสมพนธของตารางท ง 3 วาตาราง
“Customers” และ “Products” มขอมลทมความสมพนธเช อมโยงไปยงตาราง “Complaints” โดยทเมอพจารณารปท 3.2 จะทราบวา ตาราง“Customers” ม ขอมลคอลมน “custId” และ ตาราง “Products” มขอมลคอลมน “proId” สมพนธกบ ตาราง“Complaints” จรง ดงนนจงสามารถกลาวไดวา Tuple Tree (T) ทเปนคำาตอบจากการ join ตารางของระบบสบคนจะตองมคณสมบตดงตอไปน
(1) (2) โดยกำาหนดให : G แผนผงความสมพนธของตาราง
R ตารางในฐานขอมลT คำาตอบของระบบสบคนหรอ Tuple Treet แถวหรอ tuple ใน Tuple Tree
และขนาดของคำาตอบหรอ size(T) ของ joining tree T คอ จำานวน tuple ใน T
15
ในการสบคนของระบบครงหนงนนอาจมไดหลายคำาตอบหรอหลาย Tuple Tree ซงคำาตอบใดใกลเคยงหรอถกตองตามคำาหลกมากทสดจะวดไดจากคา score(T,Q) ทเปนคาคะแนนของคำาตอบโดยคา Q คอเซตของคำาในคำาหลกทตองการคนหาหรอ Keywords Q = [ w1,…,w2 ] นนเอง และเมอทำาการพจารณาคาคะแนน score(T,Q) ระบบจะทำาการจดลำาดบคำาตอบจากคะแนนสงทสดไปคะแนนตำาทสดและหากคำาตอบใดๆมคะแนนเทากนแลวจะจดลำาดบคำาตอบใดขนกอนกได ทงนแตละคำาตอบหรอแตละ Tuple Tree จะมลกษณะเหมอนกนอยอยางหนงนนกคอจะไมมแถวใดในคำาตอบ หรอ Tuple Tree มคาคะแนนของแถวนน เปนศนยเดดขาดเพราะหากคาคะแนนของแถวใดเปนศนยแลวแถวนนจะถกลบทง ทำาใหแถวทเหลอใน Tuple Tree ไมเชอมตอกนนนเอง ทำาใหถาเปนคำาตอบ กจะเปนคำาตอบทไมมลกษณะเปน Tuple Tree เหมอนเดม ซงตวอยางการจดอนดบดวยคาคะแนน score(T,Q) นนจะแสดงดงตวอยางท 3.1 โดยใชขอมลจากรปท 3.2
ตวอยางท 3.1 Quiz : top-3 query [Netvista Maxtor] Answer : (1) c3
(2) p2c3 (3) p1c1
และจากตวอยางท 3.1 นทำาใหสามารถสรปลกษณะของคำาตอบหรอ Tuple Tree ไดอกหนงประการคอ แถวหรอ tuple ใดๆจะสามารถปรากฏขนไดหนงครงในหนง Tuple Tree เทานน
3.1.2 การจดเรยงลำาดบคำาตอบคำาตอบของการ query keyword ในแตละคร งนน ค ำาตอบทไดจะออกมา
เปนการ join กนของหลายๆ Tuple ซงเรยกวา Tuple Tree ตามทไดอธบายไปแลวในหวขอกอนหนาน และการเรยงลำาดบของคำาตอบนน กมความจำาเปน เนองจาก ถาคำาตอบทมความใกลเคยงกบคำาหลกทเราใชในการคนหา หรอคอคำาตอบทเราตองการมากทสด ถกแสดงใหเราเหนกอน จากนนกเรยงกนไปตามลำาดบความสำาคญ เรากจะไดคำาตอบทตรงตามความตองการอยางรวดเรว โดยไมตองเสยเวลาคนหา โดยวธการทจะทำาใหคำาตอบทได เรยงตามลำาดบความสำาคญนน จะตองมวธการโดยการใหคา score ของแตละคำาตอบหรอ Tuple Tree นนๆ เมอทกๆ Tuple Tree มคา score แลว คำาตอบทไดกจะถกเรยงลำาดบตามคา score จากคามากไปนอย คอ เรยงตามความถกตองตรงตามคำาหลกทใชในการคนหา จากมากไปนอยนนเอง
16
โดยในตอนแรกน จ ะ เสนอวธ การหาค า Score ของ DISCOVER และ DBXplorer ซงเปนการใหคา score กบทง Tuple Tree โดยมวธดงน
และ อกวธหนงคอวธของ BANK เปนดงน
โดยท คอ คาความสมพนธของ tuples ของ T วามความเกยวของกนอยางไร ข น อ ย ก บ ค า weight ข อ ง tuples ข อ ง T ท ถ ก ก ำา ห น ด ใ ห โ ด ย
PageRank-inspired technique คอ ฟงกชนของ weight ของ edges ของ T
ซงวธการหาคา score ของ DISCOVER, DBXplorer และ BANK นน ยงไมใชวธทด เพราะเปนการหาคา score ทใหคาตามขนาด และโครงสรางของ Tuple Tree ดงนนเมอเราทำาการ query keyword แลวเรยงลำาดบคำาตอบตามคา score ทหาโดย 3 วธน กจะไมใชคำาตอบทเรยงลำาดบตามความใกลเคยงกบคำาตอบทตองการ (relevance-ranking strategies) ซ ง เป นคณสมบต อยางหน งของ IR community บน RDBMSs
แตในปจจบนน RDBMSs รนใหมโดยทวไป ไดมคณสมบตดงกลาวแลว ทำาใหการเรยงลำาดบของคำาตอบของการ query เป นไปตามลำาด บความส ำาค ญจรงๆ ซ งคณสมบตทวาน การใหคา score ของ Tuple Tree จะไมใหตามขนาด และโครงสรางของ tuple tree แลว แตจะใหตามสงตอไปน
- ค า score ของแต ละ tuple ท น าจะ เป นสวนหน งของค ำาตอบ (Single-attribute IR-style relevance scores) หรอ เปนคา score ของแตละ text attribute ของ tuple นนๆ โดยท Q คอ query, คอ attribute ท i ใน Tuple และ และ ซงคา score น จะถกกำาหนดใหโดย IR engine ท RDBMSs , และ
- ใชฟงกชน Combine ซงเปนฟงกชนททำาการรวมคะแนนของแตละ attribute ของ tuple ใน tuple tree ใหเปนคา final score ของทง tuple tree T
17
ถา T มทกคำาใน
กรณอน
กรณอน
ถา T มทกคำาใน
การหาคา score ของ single attribute หาไดดงน
(1)
โดยท สำาหรบ word w นน เปนความถของ w ใน คอ จ ำานวนของ tuples ของ relation ของ ท ม w ใน
attribute นนคอ ขนาดของ ใน characters
คอ คาเฉลยของขนาดของ attribute-value คอ จำานวน tuples ทงหมดใน relation ของ
เปนคาคงท (มกใชคาเทากบ 0.2)ซงการหาคา score ของ single attribute ดงกลาวน กสามารถทำาไดโดย การ
มอง Tuple นนๆ ใหเปน Tuple tree ทมคา size เทากบ 1 นนเองเมอไดคา score ของ single attribute แลว จากนนกทำาการหาคา score
ของทง tuple tree ไดโดย ให เปนเวกเตอรของ attribute ทเปน text ของ tuple tree T ไดวา คา score ของ T สำาหรบแตละ query Q กจะเปน Score( T, Q ) = Combine( Score( A, Q ), size( T ) ) ซ ง Score
โดยท size(T) นน เราสามารถใชลกษณะอนๆ ของ T แทนทจะใช size ได เพอใหมความเหมาะสมกบแตละการใชงาน
ซงฟงกชนทใชในการหาคา Combine แบบงายๆ ทำาไดโดย
(2)ฟงกชน Combine ขางบนน เปนตวหนงทใชกนทวไป แตกมฟงกชนอนๆ อกหลายตวทสามารถใชไดเหมอนกน query processing algorithms ทจะเสนอในหวขอตอไปนน สามารถจดการกบ combining function ใดๆ กได ทเปนไปตามคณสมบต ดงตอไปน
คณสมบต tuple monotonicity ฟงก ช น Combine จะสามารถท ำาการ Combine tuple ท ม คณสมบต
monotonicity ได เท าน น ซ งล กษณะของ คณสมบต monotonicity สามารถอธบายได ดงน
18
สำาหรบทกๆ query Q และ tuple tree T และ T’ ทไดรบมาจาก CN เดยวกน จะมคณสมบต monotonicity เมอมลกษณะดงตอไปน
(1) T ประกอบดวย ในขณะท T’ ประกอบดวย tuples และ(2) สำาหรบทกคา i ซงกคอ
ฟงกชน combining นน การคนหา ควรระบวาใชความสมพนธแบบตรรกะ AND หรอ OR เพอท ฟงกชน Combine จะไดรวาควรหาคา score แบบไหน โดย ตรรกะ AND จะใหคาคะแนนเทากบ 0 กบ tuple tree ใดๆทไมไดมคำาทกคำาใน keyword แต tuple tree ทมคำาทกคำาใน keyword อย กจะไดรบคะแนนทกำาหนดใหโดย ฟงกชน Combine ในทางตรงกนขาม ถาใชตรรกะ OR จะใหคาคะแนนกบทก tuple tree ทใหโดยฟงกชน Combine แมวา tuple tree เหลานนจะม query keyword ครบทกคำาหรอไมกตาม
โดยสรป คอ single-attribute Score function กบ ฟงกชน Combine จะใหคา relevance scores กบ คำาตอบ ซงมลกษณะเปน Tuple Tree ทเปนการหาคำาตอบจากตรรกะ AND หรอ OR อยางใดอยางหนง
3.2 การทำางานของระบบ
19
รปท 3.3 โครงสราง query processing systemในห วข อน จ ะ เป นการอธบายการท ำางานของระบบ ท ม ช อว า “query
processing system” ซงเปนระบบททำาการประมวลผล เพอคนหาคำาตอบตามคำาหลกทเราตองการ โดยระบบนประกอบดวย สวนการทำางาน 3 สวน ดงตอไปน
3.2.1 IR Engineเมอเราทำาการคนหาขอมล โดยใชคำาหลกในการคนหา คอ Q เชนจากในตวอยาง
Q=[Maxtor Netvista] คา Q นก จะเขามาเป นอนพตของการท ำางานสวนน IR engine กจะทำางานโดยใช IR index ซง IR index คอ index ของฐานขอมลนนๆ ซงเปนการรวบรวม index มาจากทกๆ relation ในฐานขอมล รวมกนเปน IR index ซงจะถกจดเกบเปน plain text ในรปแบบคอนดบ tuple-attribute ยกตวอยาง index บางตวในฐานขอมลน เชน c1-tupleId , p121-prodId เปนตน
IR engine กจะใช IR index น เพอดงคา tuple ของแตละ relation ทมคำาตรงตามกบหลกทใชคนหา ซงหมายถง คา score ของ tuple นนมคามากกวา 0 โดยจ ด เ ก บ เ ป น เ ซ ต ข อ ง แ ต ล ะ relation เ ร ย ก ว า tuple set โ ด ย
ซ ง จ ะ ถ ก เ ก บ อ ย ใ น ร ป แ บ บ =[{tuple, attribute, score}, ....] ยกตวอยางเชน tuple set ของตาราง Products จากตวอยางนกจะเปน =[{p1,manufacturer,1}, {p2,model,1}] โดย tuple ทอยใน tuple set นนจะเรยงลำาดบตามคา score ของ tuple จากมากไปนอย ซง score นน หาไดโดยใช top-k query processing algorithm
3.2.2 Candidate Network Generatorการทำางานของสวนนคอ การหา Candidate Network หรอ CN ซง CN คอ
การแสดงการ join ของแตละ relation เปนโครงสราง เพอจะนำาไปหา tuple tree T หรอ คำาตอบอกทหนง โดยการ join นอาจใชการ join relation ทสมาชกใน tuple set มคา score มากกวา 0 เรยกวา non-free tuple set ดวยกนเอง หรออาจใชการ join รวมกนกบ relation ทสมาชกใน tuple set มคา score เทากบ 0 เรยกวา
20
free tuple set กได เพอใชเปนตวชวยในการเชอมโยง non-free tuple set ใหเขาดวยกนได คอ เชอมจาก foreign key นนเอง
จะเหนไดวา CN เปนการหาลกษณะโครงสรางของการ join tuple ในแตละ relation เขาดวยกน ซงเปนโครงสรางทจะเปนตวชวยในการหาการ join tuple ทนาจะเปนคำาตอบ หรอ tuple tree T ออกมาได ดงนน CN C กคอเซตของ joining tuple ทงหมดทน าจะเปนค ำาตอบนนเอง จะได วา tuple tree T Candidate Network C เชน ซ ง ค อ tuple tree T และ คอ CN ทไดมาจากการทำางานของสวนนนนเอง
ในการทำางานสวนนของ DISCOVER และ DBXplorer การคนหาคำาโดยใชตรรกะ AND นน ใน 1 relation จะมการสราง tuple set หลายเซต โดยทแตละเซตนนกสรางมาเพอทำาการหา CN ไดแค 1 ตวเทานน ไมสามารถหาไดทงหมดทเดยว ยกตวอยางเชน และ (ไมแนใจวา tuple set ของ DISCOVER และ DBXplorer ทมหลายเซต แตละเซตเปนแบบนจรงรเปลา) แบบนกจะเปน tuple set ของตาราง Complaints กบ Products ทสามารถสรางไดแค 1 combination เทานน ดงนน การหาคำาตอบโดยใชหลายๆ tuple set กจะทำาใหจำานวนของ CN มจำานวนมากมายเกนความจำาเปน ทำาใหเปนการสนเปลองทรพยากร ยงคนหาโดยใชคำาหลกขนาดใหญขน กจะยงทำาใหเปลองมากขน และเสยเวลาดวย
แตในทางตรงกนขาม สำาหรบระบบของ IR น จะทำาการสราง tuple set ของแตละ relation แค 1 เซตตอ 1 relation เทานน แลวจะได CN จากการเชอมโยงแตละ relation เขาดวยกน จากนนกเพยงแคตรวจสอบคาของแตละ tuple โดยใชรปแบบตามของ CN นน กจะหาคำาตอบออกมาได จะเหนไดวาระบบของ IR นมความซบซอนยงยากนอยกวา ทำาใหไมเปลองทรพยากร และยงทำาใหการคนหารวดเรวขนอกดวย ถงแมวาคำาหลกจะมขนาดใหญขน การคนหากยงเรวกวาการทำางานของ DISCOVER และ DBXplorerลกษณะของ CN ทจะไดออกมาจากการทำางานของสวนนนน จะตองมลกษณะดงน
1. จำานวนของ non-fre tuple sets ใน s ไมเกนจำานวนของ query keyword m : ทำาใหมนใจไดวา จะสรางจำานวน CN ทนอยทสดได ในขณะทไมม result ทมทก keyword (เปนไปตาม AND semantic) ใดๆ ตกหลนไป นนคอ ทกๆ result T ทมทก keyword ซงแตละ keyword ปรากฏ
21
เพยงครงเดยว CN C ท เชน ไมเปน CN ของ query
[Maxtor Netvista] แตปกตแลว results เปน subset ของ results ของ
2. ไมม leaf tuple set ของ s ตวใดทเปน free tuple set : ทำาใหมนใจไดวา CN จะเลกทสดเทาทจะเลกได เชน ไมเปน CN เพราะเปนการรวมกนโดยทไมจำาเปน แคม ตวเดยวกเปนคำาตอบไดแลว
3. s ไมมตวทมโครงสรางเปน : เพราะถาเปนอยางน ทกๆ result ของ joining tree จะม tuple ตวเดยวกน มากกวา 1 ตว เชน
ไมเปน CN เพราะอยในรปแบบ โดย
ขนาดของ CN คอ จำานวนของ tuple sets ของทก CNs ทมขนาด 3 หรอ ตำากวานน ของ query [Maxtor Netvista] แสดงในรปภาพ
3.2.3 Execution Engineการทำางานสวนนจะใช CN ทไดจากการหาในการทำางานสวนกอนหนาน ซง
Execution Engine ตดตอกบ RDBMS’s query execution engine หลายตอหลายครง เปนการตรวจสอบวา tuple นนๆ ควรเปนคำาตอบหรอไม เพอหา top-k query result คำาตอบของ การคนหาคำาหลก [Maxtor Netvista] ในตามตวอยางน จะไดคำาตอบดงรปภาพท 3.4 ซงแสดง joining trees ของ tuples ทสรางโดยแตละ CN พรอมกบ scores จากตวอยางฐานขอมล Complaints
CQ PQ CQPQ CQ
U{}CQCQP{}
CQ
c3: 1.33c1:
0.33c2:0.3
3
p1: 1p2:1
c3p2: 1.17
c1p1: 0.67
c2p2: 0.67
c3p2c2: 1.11
รปท 3.4 ตารางแสดงผล Candidate Network
22