Information Management การกำหนดโครงสร้างและขนาดของระบบข้อมูล Information Management Data Entry/Storage Data Control/Security Data Retrieval/Search การบริหารจัดการทรัพยากร สารสนเทศขององค์กรด้วบพจนานุกรม ISAM DAM SAM queue stack linked list Heap Dictionary tree File Organization/ Architecture DW/DB/DM/FILE Record/Entity Field/Attribute/Data Element Byte Bits (EBCDIC, ASCII) Binary On, Off Electricity HW Computer Worked MIS: Pichai Takkabutr EAU 2005
the Operational System VS. the Data Warehouse Differences between the Operational System VS. the Data Warehouse Data in Operational System High volume, detailed High update frequency Record oriented, optimized for performance Current data only Internal data of one application 2. Data in a Data Warehouse Medium volume, summarized Low update frequency (daily, weekly) optimized for queries, accessible for analysis Past and present data Used for several application (OLAP, DSS,...) MIS: Pichai Takkabutr EAU 2005
DATA ARCHITECTURE MIS: Pichai Takkabutr EAU 2005
DATA WAREHOUSE in ORGGANIZATION MIS: Pichai Takkabutr EAU 2005
Physical Structure of Data Warehouses MIS: Pichai Takkabutr EAU 2005
Component of DW MIS: Pichai Takkabutr EAU 2005
Data Extraction & Integration Getting heterogenous data into the Warehouse: Data from different DBMSs (Data base management system), external information providers, various standard applications,... Tasks: Extraction (accessing different databases) Cleaning (resolving inconsistencies) Transformation (different formats, languages) Replication (importing a whole DB) Analyzing (detecting invalid values) Checking for data quality (correctness, completeness) Update metadata, if necessary MIS: Pichai Takkabutr EAU 2005
Data Aggregation & Customization Getting (multidimensional) data out of the Warehouse as the input for: Reporting (summarized by: who, when, where, what) Query tools Online analytical processing (OLAP) Geographic information systems (GIS) Decision support systems (DSS) Executive information systems (EIS) Data Mining MIS: Pichai Takkabutr EAU 2005
Implementation of a Data Warehouse Several providers (IBM, Oracle, ...) offer Data Warehouse Systems. But: Warehouses are not sold as of-the-shelf products Available products often only support part of the functionality of a warehouse (middleware for information transport, database) Implementation of a valuable warehouse is a major project with major risk factors Data Warehouses need constant maintenance to stay usable MIS: Pichai Takkabutr EAU 2005
Summary: Data Warehouse A data warehouse is a central repository for all or significant parts of the data that an enterprise's various business systems collect. It enables the management to access the available data in an efficient way, learn about trends make informed decisions. MIS: Pichai Takkabutr EAU 2005
Summary Information technology constantly changes the relationship between customers and a company. Convenience and better service for customers are key factors for success. Intelligent gathering, integration and usage of information about the customer is vital in order to survive competition. Data Warehouses and Data Mining provide the components for mass customization. MIS: Pichai Takkabutr EAU 2005
MIS: Pichai Takkabutr EAU 2005
MIS: Pichai Takkabutr EAU 2005
MIS: Pichai Takkabutr EAU 2005
ADTs typically seen in textbooks and implemented in programming languages (or their libraries) include: String List Stack Queue Priority queue Complex number Associative array Multimap MIS: Pichai Takkabutr EAU 2005
ความหมายของโครงสร้างข้อมูล คำว่า “โครงสร้างข้อมูล (Data Structures) เกิดจากคำสองคำคือ “โครงสร้าง” และ “ข้อมูล” ซึ่งคำว่า“โครงสร้าง” เป็นความสัมพันธ์ระหว่างสมาชิกในกลุ่ม ดังนั้นโครงสร้างข้อมูล จึงหมายถึงความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้น ๆ สิ่งพื้นฐานในการประมวลผลข้อมูลด้วยคอมพิวเตอร์ก็คือ ข้อมูล (Data) ดังนั้นการศึกษาถึงความสัมพันธ์ของข้อมูล จึงมีความสำคัญอย่างมากในศาสตร์คอมพิวเตอร์ (Computer Science) การแทนที่ข้อมูลในหน่วยความจำ เป็นที่ทราบกันแล้วว่าในขณะประมวลผลด้วยคอมพิวเตอร์ข้อมูลถูกเก็บในหน่วยความจำหลัก (Memory) ซึ่งเป็นส่วนประกอบส่วนหนึ่งของคอมพิวเตอร์ ดังนั้นเมื่อเราต้องใช้โครงสร้างข้อมูลและ หน่วยความจำหลัก จึงต้องมีการแทนที่ข้อมูลในหน่วยความจำหลักด้วย ซึ่งในภาษาโปรแกรมมิ่งที่มีใช้กันอยู่ มีการแทนที่ข้อมูลในหน่วยความจำหลักอยู่ 2 วิธี คือ 1. สแตติก (Static Storage Allocated) หรือการจองที่แน่นอน โครงสร้างข้อมูลในภาษาโปรแกรมมิ่งคือ อาร์เรย์ (Array) ซึ่งข้อเสียของวิธีการนี้คือต้องกำหนดขนาดของอาร์เรย์ก่อนการคอมไพล์ (Comply) 2. ไดนามิก (Dynamic Storage Allocated) การแทนที่ข้อมูลลักษณะนี้มีในภาษาโปรแกรมมิ่งบางภาษาเท่านั้น ข้อดีของการแทนที่ข้อมูลแบบนี้คือไม่ต้องกำหนดขนาดของข้อมูลก่อนการคอมไพล์ สามารถเรียกใช้เนื้อที่หน่วยความจำได้ในขณะทำงาน (Run Program) ซึ่งเป็นการประหยัดเนื้อที่หน่วยความจำเนื่องจากไม่ต้องจองไว้มากจนเหลือคือได้ใช้เนื้อที่เท่าที่ต้องการใช้ ประเภทของข้อมูลในการขอใช้เนื้อที่หน่วยความจำอย่างไดนามิกนี้คือ พอยน์เตอร์ (Pointer) MIS: Pichai Takkabutr EAU 2005
ในสาขาวิทยาการคอมพิวเตอร์ โครงสร้างข้อมูลเป็นวิธีการจัดเก็บข้อมูลในคอมพิวเตอร์เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ บ่อยครั้งที่การเลือกโครงสร้างข้อมูลที่เหมาะสมจะทำให้เราสามารถเลือกใช้อัลกอริทึมที่มีประสิทธิภาพไปพร้อมกันได้ การเลือกโครงสร้างข้อมูลนั้นโดยส่วนใหญ่แล้วจะเริ่มต้นจากการเลือกโครงสร้างข้อมูลนามธรรม โครงสร้างข้อมูลที่ออกแบบเป็นอย่างดีจะสามารถรองรับการประมวลผลที่หนักหน่วงโดยใช้ทรัพยากรที่น้อยที่สุดเท่าที่จะเป็นไปได้ ทั้งในแง่ของเวลาและหน่วยความจำ โครงสร้างข้อมูลแต่ละแบบจะเหมาะสมกับงานที่แตกต่างกัน และโครงสร้างข้อมูลบางแบบก็ออกแบบมาสำหรับบางงานโดยเฉพาะ อย่างเช่น ต้นไม้แบบบีจะเหมาะสำหรับระบบงานฐานข้อมูล ในกระบวนการออกแบบโปรแกรมคอมพิวเตอร์ การเลือกโครงสร้างข้อมูลเป็นสิ่งสำคัญอันดับแรกที่ต้องคำนึงถึง ซึ่งจากการพัฒนาระบบงานใหญ่ๆได้แสดงให้เห็นว่า ความยากในการพัฒนาและประสิทธิภาพของระบบจะขึ้นอยู่กับโครงสร้างข้อมูลที่เลือกใช้อย่างมาก หลังจากตัดสินใจเลือกโครงสร้างข้อมูลที่จะใช้แล้วก็มักจะทราบถึงอัลกอริทึมที่ต้องใช้ได้ทันที แต่ในบางครั้งก็อาจจะกลับกัน คือ การประมวลผลที่สำคัญๆของโปรแกรมได้มีการใช้อัลกอริทึมที่ต้องใช้โครงสร้างข้อมูลบางแบบโดยเฉพาะ จึงจะทำงานได้เต็มประสิทธิภาพ ถึงอย่างไรก็ตาม ไม่ว่าจะเลือกโครงสร้างข้อมูลด้วยวิธีการใด โครงสร้างข้อมูลที่เหมาะสมก็เป็นสิ่งที่สำคัญมากอยู่ดี แนวความคิดในเรื่องโครงสร้างข้อมูลนี้ส่งผล กับการพัฒนาวิธีการมาตรฐานต่างๆในการออกแบบและเขียนโปรแกรม หลายภาษาโปรแกรมนั้นได้พัฒนารวมเอาโครงสร้างข้อมูลนี้ไว้เป็นส่วนหนึ่งของระบบโปรแกรม เพื่อประโยชน์ในการใช้ซ้ำ MIS: Pichai Takkabutr EAU 2005
โครงสร้างข้อมูลพื้นฐาน Array, Linked List, Stack และ Queue เป็นอัลกอริทึมเบื้องต้นที่สุดที่ใช้ใน application หลายอย่าง การมีความรู้และเข้าใจในโครงสร้างข้อมูลเหล่านี้จึงมี ความสำคัญเป็นอย่างยิ่ง Array Array หรือ Table เป็นข้อมูลชุด ประกอบด้วยข้อมูลหลาย ๆ ตัวที่เป็นชนิดเดียวกัน ซึ่งข้อมูลแต่ละตัวสามารถอ้างถึงได้โดยผ่านทางเลขดรรชนีย์ของข้อมูลนั้น ๆ การ นิยาม Array ขึ้นมาตัวหนึ่งเราจะต้องนิยามชื่อของ Array นั้นตามด้วยจำนวนของข้อมูล ใน Array นั้น และ ชนิดของ Array นั้น ซึ่งการนิยาม Array ขึ้นมานี้จะแตกต่างกันไป ในแต่ละภาษา Linked List Linked List เป็นข้อมูลที่เรียงกันเป็นชุด โดยข้อมูลแต่ละตัวเรียกว่า Node ซึ่งแต่ละ Node เชื่อมต่อไปยัง Node ถัดไป ข้อมูลตัวแรกใน Linked List จะถูกชี้โดยตัวแปรชนิด Pointer ซึ่งมักจะเรียกว่า Head Pointer ส่วนข้อมูลตัวสุดท้ายใน Links List มีส่วนของข้อมูล ที่ชี้ไปที่ Null ซึ่งเป็นค่าที่บอกว่าข้อมูลนั้นเป็นข้อมูลตัวสุดท้าย ข้อมูลแต่ละตัวใน Linked List จะปรอบกอบด้วยส่วนของข้อมูลและส่วนชองตัวชี้ (ข้อมูลชนิด Pointer) สำหรับชี้ไปยังข้อมูล ตัวถัดไป (มีค่าเป็น Null ในข้อมูลตัวสุดท้าย) Stack Stack เป็นโครงสร้างข้อมูลที่สามารถนิยามขึ้นโดย Array หรือ Linked List การเพิ่ม ข้อมูลตัวใหม่เข้าไปใน Stack เรียกว่า Push ส่วนการลบข้อมูลออกไปเรียกว่า Pop ข้อมูลแต่ละตัวเพิ่มเข้าและเอาออกมาทางท้ายของ Stack ลักษณะของ Stack จะคล้าย กับการเก็บหนังสือลงในลัง ซึ่งหนังสือเล่มที่เก็บเข้าไปหลังสุดจะถูกนำขึ้นมาเป็นเล่มแรก ขั้นตอนการเก็บข้อมูลแบบนี้เรียกว่า LIFO (Last In First Out) Queue Queue มีลักษณะคล้าย Stack มีการกระทำพื้นฐานกับ Stack คือ การนำข้อมูลเข้า เรียกว่า Enqueue และ การนำข้อมูลออกมาเรียกว่า Dequeue คิวจะยอมให้คุณ เก็บข้อมูลเข้าทางตอนท้ายของ Queue และนำข้อมูลออกมาทางตอนต้นของ Queue ลักษณะของ Queue คล้ายกับการเข้าแถวซื้อของ ข้อมูลที่ถูกนำเข้าไปตัวแรกจะถูก เอาออกมาเป็นตัวแรก เราเรียกขั้นตอนแบบนี้ว่าเป็นแบบ FIFO (First In First Out) MIS: Pichai Takkabutr EAU 2005
อัลกอริทึม (algorithm) หมายถึงขั้นตอนวิธี ที่สามารถเข้าใจได้และมีความยาวจำกัดบอกถึง ลำดับ หรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่ง อย่างเป็นขั้นเป็นตอนและชัดเจน ว่าทำอย่างไร เมื่อนำเข้าอะไร แล้วจะได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบศึกษาสำนึก หรือฮิวริสติก (heuristic) โดยทั่วไป อัลกอริทึม จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ(iterate) หรือ เวียนเกิด(recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน ในการทำงานอย่างเดียวกัน เราอาจจะเลือกอัลกอริทึมที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time), และขนาดหน่วยความจำ(space)ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน การนำอัลกอริทึมไปใช้ ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่น การออกแบบวงจรไฟฟ้า, การทำงานเครื่องจักรกล, หรือแม้กระทั่งปัญหาในธรรมชาติ เช่น วิธีของสมองมนุษย์ในการคิดเลข หรือวิธีการขนอาหารของแมลง MIS: Pichai Takkabutr EAU 2005