Archive for สิงหาคม 27th, 2008

ตัวอย่างคำสั่งSQL

1. คำสั่งสร้างฐานข้อมูล

รูปแบบคำสั่ง

CREATE DATABASE database_name
[ ON
    [ < filespec > [ ,...n ] ]
    [ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]

ตัวอย่าง

CREATE DATABASE Employees
    ON
    ( NAME = Empl_dat,
    FILENAME = ‘d:\sample data dir\’,
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )

2. คำสั่งการลบฐานข้อมูล

รูปแบบคำสั่ง

DROP DATABASE database_name [ ,...n ]

ตัวอย่าง

DROP DATABASE pubs, newpubs

3. การแก้ไขฐานข้อมูล

รูปแบบคำสั่ง

      ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}

ตัวอย่าง

ALTER DATABASE Test1
ADD FILE
(
NAME = Test1dat2,
FILENAME = ‘c:\Program Files\Microsoft SQLServer\MSSQL\Data\t1dat2.ndf’,
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)

4. การสร้างตาราง

รูปแบบคำสั่ง

CREATE TABLE [database.[owner.]table_name
(
Column_name datatype [identity | constraint | NULL I NOT NULL]
| column_name AS computed_column_expression
[?]
)
[ON { filegroup | DEFAULT } ]

โดยที่
Table_name คือชื่อตารางที่ต้องการสร้าง
Column_name คือชื่อของคอลัมภ์ต่าง ๆ ที่กำหนดให้
Datatype คือประเภทของข้อมูลที่ได้กล่าวมาแล้ว

ตัวอย่าง

CREATE TABLE tbl_employees
(
EmploysID int IDENTITY NOT NULL,
FirstName varchar (30) NOT NULL,
LastName varchar (30) NOT NULL,
StartWorkDate datetime
)

5. การแก้ไขตาราง

รูปแบบคำสั่ง

ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
{ < table_constraint > } [ ,...n ]
| DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ ,...n ]
| { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
}

ตัวอย่าง

ALTER TABLE MyTable
ADD AddDate smalldatetime NULL
CONSTRAINT AddDateDflt
DEFAULT getdate() WITH VALUES

6. การลบตาราง

รูปแบบคำสั่ง

DROP TABLE table_name

ตัวอย่าง

DROP TABLE titles1

7. แทรกตาราง

รูปแบบคำสั่ง

INSERT [ INTO]
{ table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}

{ [ ( column_list ) ]
{ VALUES
( { DEFAULT | NULL | expression } [ ,...n] )
| derived_table
| execute_statement
}
}
| DEFAULT VALUES

ตัวอย่าง

INSERT INTO new_authors
SELECT TOP 10 *
FROM authors

8.การแสดงตาราง

รูปแบบคำสั่ง

SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

ตัวอย่าง

USE pubs
SELECT au_fname, au_lname, phone AS Telephone, city, state
FROM authors
ORDER BY au_lname ASC, au_fname ASC

9.การ Update ตาราง

รูปแบบคำสั่ง

UPDATE
{
table_name WITH ( < table_hint_limited > [ ...n ] )
| view_name
| rowset_function_limited
}
SET
{ column_name = { expression | DEFAULT | NULL }
| @variable = expression
| @variable = column = expression } [ ,...n ]

{ { [ FROM { < table_source > } [ ,...n ] ]
[ WHERE
< search_condition > ] }
|
[ WHERE CURRENT OF
{ { [ GLOBAL ] cursor_name } | cursor_variable_name }
] }
[ OPTION ( < query_hint > [ ,...n ] ) ]

ตัวอย่าง

UPDATE authors
SET authors.au_fname = ‘Annie’
WHERE au_fname = ‘Anne’

10.การเลือกทำงานตามเงื่อนไขโดยใช้คำสั่ง CASE

รูปแบบคำสั่ง

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

ตัวอย่าง

SELECT Category =
CASE type
WHEN ‘popular_comp’ THEN ‘Popular Computing’
WHEN ‘mod_cook’ THEN ‘Modern Cooking’
WHEN ‘business’ THEN ‘Business’
WHEN ‘psychology’ THEN ‘Psychology’
WHEN ‘trad_cook’ THEN ‘Traditional Cooking’
ELSE ‘Not yet categorized’
END,
CAST(title AS varchar(25)) AS ‘Shortened Title’,
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price

11. การเลือกทำงานตามเงื่อนไขโดยใช้คำสั่ง IF

รูปแบบคำสั่ง

IF Boolean_expression { sql_statement | statement_block }
[
ELSE
{ sql_statement | statement_block } ]

ตัวอย่าง

IF (SELECT COUNT(price)
FROM titles
WHERE title_id LIKE ‘TC%’ AND price BETWEEN 10 AND 20) > 0
BEGIN
SET NOCOUNT ON
SET @msg = ‘There are several books that are a good value between $10 and $20. These books are: ‘
PRINT @msg
SELECT title
FROM titles
WHERE title_id LIKE ‘TC%’ AND price BETWEEN 10 AND 20
END
ELSE
BEGIN
SET NOCOUNT ON
SET @msg = ‘There are no books between $10 and $20. You might consider the following books that are under $10.’
PRINT @msg
SELECT title
FROM titles
WHERE title_id LIKE ‘TC%’ AND price < 10
END

12.การเลือกทำงานตามเงื่อนไขโดยใช้คำสั่ง WHILE

รูปแบบคำสั่ง

WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]

ตัวอย่าง

WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT ‘Too much for the market to bear’

Add comment สิงหาคม 27, 2008

Uninstall Oracle Database Software

วันนี้ผมจะมาสอนวิธีการลบ Oracle Database บน Windows อย่างถูกวิธี เคยเป็นไหมสำหรับใครที่เคยลบ Oracle Database ไปแล้ว ที่นี้ต้องการกลับมาลงใหม่ ทำไมตั้งชื่อ ORACLE_HOME เหมือนเดิมไม่ได้นั่นเป็นเพราะว่า Oracle Universal Installer ลบออกไม่หมด แล้วเราจะต้องทำยังไงละ? เดี๋ยวผมจะอธิบายทีละขั้นตอน

เริ่มกันเลยครับ
1. ให้ทำการ stop service ทั้งหมดของ oracle ลงก่อน โดยไปที่ start > Control Panel > Adminstrative Tools > Services ให้หา service ที่ขึ้นต้นด้วย oracle แล้ว stop ลงให้หมด
2. เรียก tool Universal Installer ซึ่งเป็น tool ที่ช่วยในการลบ Oracle DB โดยไปที่ start > Oracle_Oradb10g_home1 > Oracle Installation Product > Universal Installer แล้วเลือก Deinstall และเลือก product ที่เราต้องการลบในที่นี้คือ Oradb10_home1 แล้วเลือก remove ตรงนี้อาจจะไม่เหมือนกันขึ้นอยู่กับตอนติดตั้ง
3. เมื่อลบเสร็จแล้วให้ไปที่ ORACLE_HOME ที่เราได้ลง Oracle DB ไว้ ให้ลบไฟล์ที่อยู่ในนั้นให้หมด ที่ต้องทำอย่างนี้เพราะว่าเผื่อเราต้องการกลับมาลง Oracle DB ที่ ORACLE_HOME เดิม ถ้ายังลบไม่ได้อาจเพราะว่าบาง process ยัง run อยู่ให้ดูที่ Process Manager ดู process ที่ชื่อว่า javaw, opmn ถ้ามีให้ end process ทิ้งแต่ถ้ายังไม่ได้ ให้ reboot ใหม่รอบนึง
4. ไปที่ C:\Programs Files\Oracle ลบไฟล์ข้างในออกให้หมด
5. ลบ Oracle DB ออกจาก start menu
ุ6. ใกล้เสร็จแล้วครับ ต่อมาให้ลบ registy ที่เกี่ยวกับ Oracle ออกจาก windows โดยมีดังนี้ครับ

HKEY_LOCAL_MACHINE -> SOFTWARE -> ลบ ORACLE Key Name ออกให้หมด

7. ลบ service ทุกตัวที่เกี่ยวกับ Oracle DB โดยไปที่ start > run พิมพ์ cmd ใส่คำสั่ง sc delete ถ้าจำไม่ได้ให้ไปที่ start > Control Panel > Adminstrative Tools > Services แล้วดูตัวที่ขึ้นต้นว่า Oracle
8. reboot 1 รอบก็เสร็จเรียบร้อยแล้วครับ

Add comment สิงหาคม 27, 2008

MySQL ตั้งหลักรับมือ Oracle

หลังจาก Oracle ซื้อ Innobase บริษัทผู้สร้าง database engine InnoDB ซึ่งใช้ใน MySQL
ทำให้ลูกค้า และคนของ MySQL ต้องอกสั่นขวัญแขวนกันไปตาม ๆ กัน
InnoDB เป็น storage engine ที่สนับสนุนระบบ transaction และเป็น engine ที่สำคัญมากๆ ใน MySQL
MySQL จึงตัดสินใจจะสร้าง storage engine ของตัวเองโดยไม่พึ่งพา InnoDB ซึ่งเป็นของ Oracle ไปแล้ว
นอกจากนี้ MySQL ยังทวงสัญญาที่ทำไว้กับ Innobase ก่อนที่ Oracle จะมาหุบ ว่าให้ update และแก้บัก InnoDB ด้วย

MySQL สร้าง storage engine ของตัวเองเพื่อรับมือกับการที่ Oracle ฮุบกิจการ Innobase และ Sleepycat Software(open-source database อีกอันที่ใช้ใน MySQL)
หลายฝ่ายมองว่าการกระทำของ Oracle ก็เพื่อหยุดยั้งการเติบโต หรือทำลาย MySQL ให้ออกจากตลาด database นั่นเอง

Oracle พยายามอย่างยิ่งที่จะครองตลาด open source database ทั้งการออก free database คือ Oracle 10g Express Edition
รวมทั้งความพยายามกำจัดคู่แข่ง เช่น MySQL, Ingres และEnterpriseDB นอกจากนี้ยังเคยพยายามซื้อ MySQL แต่ถูกปฏิเสธ
โชคดีจริงๆที่ MySQL ยังไม่ถูกสิงคโปร์ เอ้ย Oracle ซื้อไป

Add comment สิงหาคม 27, 2008

Java DB จิ๋วแต่แจ๋ว

Java DB เป็นฐานข้อมูลที่ implement ด้วย Java แท้ๆ (เหมือนน้ำปลาบริสุทธิ์ไร้สารเจือปน) โดย Sun เอา Apache Derby project มาตบแต่ง เสียใหม่ (http://db.apache.org/derby/) Java DB/Derby สนับสนุน JDBC, J2EE, และSQL สามารถจัดการ transaction และ security ได้ด้วย โดยมีขนาดเพียง 2MB เท่านั้น !!

Java DB/Derby เหมาะกับ
-นักพัฒนาที่ต้องใช้ฐานข้อมูลเพื่อทดสอบโปรแกรม
-เป็น embed database อยู่ใน application
-Multiplatform (แน่นอน สำหรับ Java)
ฯลฯ
ดูรายละเอียด http://developers.sun.com/prodtech/javadb/javadb_overview.html

อ้างอิงจาก http://weblogs.java.net/blog/davidvc/archive/2006/03/java_db_availab.html

Add comment สิงหาคม 27, 2008

ภาษา SQL

  ระบบฐานข้อมูลที่นิยมใช้กันทั่วโลกมีด้วยกันหลายระบบ แต่ที่ได้รับความนิยมใช้กัน ในปัจจุบันส่วนใหญ่พัฒนาขึ้นมาจากพื้นฐานของภาษา SQL (Structure Query Language) พัฒนาโดยบริษัท IBM
           คำว่า SQL สามารถอ่านออกเสียงได้ 2 แบบ คือ S Q L และ Sequel เริ่มพัฒนาครั้งแรกในต้นทศวรรษที่ 1970 ที่ San Jose Research Laboratory (ปัจจุบันเปลี่ยนชื่อเป็น Almaden Research Center) โดยมีชื่อแรกว่า Sequel ต่อมาได้เปลี่ยนชื่อเป็น SQL และเป็นต้นแบบภาษา SQL ของผลิตภัณฑ์ด้านฐานข้อมูล เช่น Oracle, DB2, MS-SQL Server, Progress, SyBase, Informic, dBASE, FoxPro, Access, Paradox, SQLite รวมทั้ง MySQL และโปรแกรมอื่น ๆ อีกมากมาย แสดงให้เห็นถึงความสำคัญของภาษานี้ได้เป็นอย่างดี
           ปี ค.ศ.1986 American National Standards Institute (ANSI) ได้กำหนดมาตรฐาน SQL ขึ้นมาเพื่อให้ผลิตภัณฑ์ทั้งหมดเป็นไปตามมาตรฐานเดียวกัน อย่างไรก็ตามการทำเช่นนี้ทำให้เกิดปัญหาบางประการขึ้น เป็นผลให้มาตรฐาน ANSI มีข้อจำกัดอยู่บ้าง เพราะ SQL มีสองชนิดคือ ชนิดโต้ตอบได้กับชนิดที่ฝังอยู่ในโปรแกรม ส่วนใหญ่แล้วทั้งสองชนิดปฏิบัติงานอย่างเดียวกันแต่นำไปใช้ต่างกัน SQL ชนิดโต้ตอบได้ใช้เพื่อปฏิบัติงานกับฐานข้อมูลโดยตรงเพื่อนำเอาผลลัพธ์ไปใช้งาน ส่วน SQL แบบฝัง ในโปรแกรมประกอบด้วยคำสั่งต่าง ๆ ของ SQL ที่ใส่ในโปรแกรมที่ส่วนมากแล้วเขียนด้วยภาษาอื่น เช่น COBOL, Pascal, C/C++, Visual Basic, Delphi, Java เป็นต้น
          ANSI ประกาศมาตรฐาน SQL มาแล้วหลายรุ่น ถ้ามีการประกาศมาตรฐานขึ้นในปีใดก็จะมีเลขปี ค.ศ. ต่อท้าย เช่น ANSI-86, SQL-89, SQL-92 และ SQL-2003 เป็นมาตรฐานล่าสุด
          แม้ว่าจะมีผลิตภัณฑ์ฐานข้อมูลออกมามากมายหลายยี่ห้อ แต่ด้วยมาตรฐานภาษา SQL ที่ใช้ร่วมกัน ทำให้มีความสามารถพื้นฐานเหมือนกัน อาจแตกต่างกันได้บ้างเพราะแต่ละผลิตภัณฑ์ก็ล้วนแล้วแต่พยายามสร้างจุดแข็งให้กับผลิตภัณฑ์ของตนเอง จึงเป็นหน้าที่ของผู้ใช้ผลิตภัณฑ์นั้น ที่ต้องศึกษาในส่วนที่แตกต่างเพื่อที่จะได้นำมาใช้งานได้อย่างเต็มประสิทธิภาพ

คุณสมบัติของภาษา SQL

     ภาษา SQL ตามมาตรฐาน ANSI มีคุณสมบัติดังนี้
     1. โครงสร้างของภาษาคล้ายภาษาอังกฤษ สามารถเรียกดูข้อมูลที่ระบุได้ตามความต้องการ เปลี่ยนแปลง เพิ่มเติม และลบข้อมูลออกจากระบบได้
     2. มีโครงสร้างไม่แน่นอน เพียงระบุความต้องการก็สามารถใช้งานได้แล้ว
     3. สามารถประมวลผลข้อมูลเป็นกลุ่มได้
     4. ใช้ได้ทุกกลุ่มของผู้ใช้ ไม่ว่าจะเป็นผู้ดูแลระบบฐานข้อมูล (Database Administrator ? DBA), โปรแกรมเมอร์ (Programmer) หรือผู้ใช้ทั่วไป (End User)

SQL Server 2000

         SQLServer2000เป็นโปรแกรมจัดการฐานข้อมูลระดับเซิร์ฟเวอร์ที่มีขีดความสามารถในการรองรับข้อมูลขนาดใหญ่ที่ช่วยให้การบริหารจัดการฐานข้อมูลมีประสิทธิภาพ รวดเร็ว สนองตอบต่อความต้องการขององค์กรขนาดใหญ่
          SQL Server 2000 เป็นระบบฐานข้อมูลและโซลูชั่นการวิเคราะห์ที่สมบูรณ์แบบ ซึ่งนำเสนอความน่าเชื่อถือและประสิทธิภาพ ด้านการขยายระบบที่เว็บและองค์กรธุรกิจต้องการ ด้วยการรองรับ XML และ HTTP ทำให้การเข้าถึงและการแลกเปลี่ยนข้อมูลนั้นทำได้ง่ายขึ้น ในขณะที่ความสามารถในการวิเคราะห์อันทรงพลังยังช่วยเพิ่มคุณค่าของข้อมูล และด้วยความพร้อมของระบบที่ดีขึ้น ทำให้ความสามารถในการทำงานอย่างต่อเนื่อง ของระบบนั้นสูงขึ้น, จัดการกับงานในแต่ละวันโดยอัตโนมัติได้ดีขึ้น รวมทั้งปรับปรุงเครื่องมือด้านการเขียนโปรแกรม และการพัฒนาความเร็วด้านการบริการได้ดีขึ้นเช่นกัน
          SQL Server 2000 ประกอบไปด้วยเวอร์ชั่นต่าง ๆ ดังต่อไปนี้
          – Personal Edition เป็นระบบจัดการฐานข้อมูลที่ใช้ได้เฉพาะเครื่องส่วนตัวเท่านั้น () ไม่สามารถใช้งานร่วมกับ SQL Server 2000 เวอร์ชั่นอื่นได้โดยตรง ส่วนใหญ่นิยมนำมาใช้ในการทดสอบการเขียนแอพพลิเคชั่น ใช้ติดตั้งบน Windows 9x, ME, XP
          – Standard Edition เป็นระบบจัดการฐานข้อมูลที่สามารถรองรับเซิร์ฟเวอร์ได้สูงสุดถึง 4 CPU และอ้างหน่วยความจำได้ถึง 2 GB นิยมนำมาใช้งานกับองค์กรขนาดใหญ่ ต้องติดตั้งบน Windows NT 4, 2000 หรือ 2003 Server แต่ถ้าติดตั้งบน Windows 9x, ME, XP จะติดตั้งให้เฉพาะส่วนที่เป็น Client Tools หรือ Connectivity เท่านั้น
          – Enterprise Edition เป็นระบบจัดการฐานข้อมูลที่สามารถรองรับเซิร์ฟเวอร์ได้สูงสุดถึง 32 CPU และอ้างหน่วยความจำได้ถึง 64 GB นิยมนำมาใช้งานกับองค์กรที่มีขนาดใหญ่และมีสาขามากมาย เพราะมีระบบสนับสนุนการทำงานมากมาย เช่น การทำ Data Mining, Data Warehouse เป็นต้น ต้องติดตั้งบน Windows NT 4, 2000 หรือ 2003 Server เท่านั้น

          .NET
         SQL Server 2000 เป็นโครงสร้างหลักของ การจัดการและวิเคราะห์ข้อมูล สำหรับ แอพพลิเคชัน และบริการ ของ Microsoft .NET ที่จะมีขึ่้นในอนาคต

Add comment สิงหาคม 27, 2008

การเรียกค้น วิเคราะห์ และประมวลผลข้อมูลผ่านเว็บ

ทำให้การผนวกระบบแบ็ก-เอนด์และการโอนถ่ายข้อมูลข้ามไฟร์วอลล์นั้นง่ายขึ้น ด้วยความสามารถในการทำงานของ XML ที่ทรงประสิทธิภาพของ SQL Server 2000 รวมถึงการรองรับมาตรฐานอินเตอร์เน็ตอื่น ๆ อย่างเช่น XPath, XSL และ XSLT นอกจากนี้ผู้พัฒนาเว็บสามารถเข้าถึงข้อมูลผ่านการใช้ XML โดย
          – ไม่จำเป็นต้องใช้การเขียนโปรแกรมข้อมูลสัมพันธ์ (Relational Database) ในขณะที่ผู้ดูแลฐานข้อมูลสามารถประมวลผลข้อมูลที่อยู่ในรูปแบบ XML ได้อย่างง่ายดาย โดยใช้ Transact-SQL (T-SQL) และ Stored Procedure
         - เชื่อมต่อไปยังฐานข้อมูล SQL Server 2000 และ Cube ของ OLAP ได้อย่างคล่องตัวผ่านทางเว็บโดยไม่ต้องมีการเขียนโปรแกรมเพิ่มเติม ใช้การเชื่อมต่อที่ปลอดภัยกับฐานข้อมูลผ่าน HTTP เพื่อแน่ใจว่าข้อมูลพร้อมตอบรับเมื่อมีการเรียกค้น แม้ว่ากระทำโดยผู้พัฒนามือใหม่ผ่านทาง URL และอินเตอร์เฟซที่ผู้ใช้เข้าใจง่าย
          – ดึงคุณค่าเพิ่มเติมจากข้อมูลด้วยการใช้เครื่องมือ data mining ที่ล้ำสมัย ที่ทำให้คุณสามารถวิเคราะห์แนวโน้มและคาดการณ์จากข้อมูลจำนวนมากได้
          – ได้ผลลัพธ์ที่รวดเร็วขึ้นด้วย Microsoft English Query ที่ทำให้ผู้ใช้สามารถ ตั้งคำถามเป็นภาษาอังกฤษได้ แทนที่จะต้องใช้ภาษาเฉพาะอย่าง Structured Query Language (SQL) หรือ Multi-dimensional Expressions (MDX) รวมทั้งยกระดับความสามารถของ Full Text Search ที่ทำให้ผู้ใช้งานสามารถค้นหาข้อมูลที่ไม่มีโครงสร้างได้ ยกตัวอย่างเช่น เอกสาร Microsoft Word, เว็บเพจ หรือแผ่นงานใน Microsoft Excel
          – สร้างเว็บไซต์ B2B & B2C, วิเคราะห์แนวโน้มของเว็บไซต์ และนำไปใช้ได้โดยอัตโนมัติด้วย Commerce Server 2000 และ SQL Server 2000
          – ความสามารถในการแลกเปลี่ยนระหว่างคุ่ค้าทางออนไลน์ โดยการใช้ BizTalk Server 2000 และ SQL Server 2000 รวมทั้งการรวมเข้ากันระหว่างเว็บและระบบของธุรกิจที่มีอยู่ ผ่านการรองรับขนาดใหญ่ของ XML
ระบบที่เติบโตได้โดยไม่มีขีดจำกัด และคุณสมบัติการขยายระบบที่ดีขึ้น

          – แบ่งส่วนการทำงานไปยังหลายเซิร์ฟเวอร์ผ่านมุมมองแบบ Distributed Partitioned Views ซึ่งเป็นคุณลักษณะ ?ขยายขนาด? ของ Data Tier ใหม่ ซึ่งจะกระจายข้อมูลระหว่างกลุ่มของเซิร์ฟเวอร์ และจะทำงานร่วมกันในกระบวนการเรียกค้นข้อมูล และเมื่อธุรกิจของคุณมีการขยายตัวมากขึ้น คุณก็สามารถเพิ่มจำนวนเซิร์ฟเวอร์เพื่อรองรับการเติบโตได้เช่นกัน รวมถึงการขยายระบบให้ใหญ่ขึ้นอีกด้วย
          – ความสามารถในการขยายระบบเพื่อรองรับแอพพลิเคชัน LOB ที่สำคัญ ซึ่งรองรับระบบฐานข้อมูลขนาดใหญ่ ที่สามารถประมวลผลได้ในเวลาเดียวกัน (SMP:Symmetric Multiprocessing)ที่รองรับถึง 32 processors และหน่วยความจำ 64 GB รวมทั้งปรับปรุงประสิทธิภาพของระบบทั้งหมดที่มีการสนับสนุนภายใน สำหรับเครือข่ายระบบ System Area Network (SAN)
         - ขยายโซลูชั่นคลังข้อมูลและการสร้างรายงานด้วย Indexed (materialized) Views, Distributed Partitioned Cubes และรองรับการทำงานแบบหลายมิติด้วยจำนวนสมาชิกหลายร้อยล้านคน Indexed Views นี้ยังปรับปรุงประสิทธิภาพของระบบโดยการเก็บชุดผลลัพธ์ไว้ ดังนั้นจึงไม่ต้องสร้างข้อมูลชุดนี้อีกเมื่อมีการเข้าถึงในอนาคต นอกจากนี้ Distributed Partitioned Cubes จะช่วยเพิ่มประสิทธิภาพของระบบโดยอนุญาตให้เข้าถึง Cube ที่เก็บไว้ในหลายระบบได้
        – เพิ่มความพร้อมของระบบผ่านการ log shipping ที่สมบูรณ์แบบ รวมทั้งเพิ่มประสิทธิภาพของการทำคลัสเตอร์ failover โดย Log Shipping จะทำการปรับข้อมูลของฐานข้อมูลที่อยู่แยกกันทางกายภาพให้ข้อมูลตรงกัน โดยอัตโนมัติด้วยการส่งข้อมูลบันทึกการทำทรานแซกชัน จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่น ในขณะนี้ SQL Server 2000 และเครื่องมือต่าง ๆ นั้นพร้อมสำหรับการทำคลัสเตอร์ได้อย่างสมบูรณ์ เพื่อช่วยให้การจัดการนั้นง่ายขึ้น การทำ Failover และ Failback นั้นจะเกิดขึ้นใน Node ใดก็ได้ในคลัสเตอร์ซึ่งรองรับได้ถึง 4 Node
          – ใช้ประโยชน์จากฮาร์ดแวร์ของคุณได้อย่างเต็มที่ โดยการทำงานกับหลาย แอพพลิเคชันแยกต่างหากกันในเครื่องเดียว โดยใช้การสนับสนุนการสร้างข้อมูลหลายชุด (Multi-Instance) ของ SQL Server 2000
สร้างแอพพลิเคชันได้อย่างรวดเร็ว และพร้อมสำหรับการใช้งาน
        – การบริหารจากศูนย์กลาง การทำงานอัตโนมัติ การลดค่าใช้จ่ายในการจัดการ ทำได้โดยใช้บริการ Windows? 2000 Active DirectoryTM และ การจัดการและปรับประสิทธิภาพเอง แบบไดนามิกของ SQL Server 2000 การคัดลอกหรือย้ายฐานข้อมูลระหว่างเซิร์ฟเวอร์หรือระหว่างฐานข้อมูล สามารถทำได้โดยไม่มีการหยุดระบบด้วย Copy Database Wizard ใหม่
       - นำเสนอแอพพลิเคชันฐานข้อมูลที่เป็นเลิศ และขยายระบบได้อย่างรวดเร็วด้วยการใช้เครื่องมือพัฒนา ที่มีประสิทธิภาพมากขึ้นของ SQL Server 2000ขณะนี้ในส่วนของ SQL Query Analyzer นั้นได้รวมเครื่องมือตรวจแก้ไขข้อบกพร่องของ Stored Procedure นอกจากนั้นการบริการการเปลี่ยนแปลงข้อมูลนั้น ยังขยายขีดความสามารถ ไปถึงการย้าย และเปลี่ยนข้อมูล ไม่ว่าจากแหล่งใด ๆ อีกด้วย
        – เพิ่มประสิทธิภาพของงานด้วย T-SQL ที่มีความสามารถสูงขึ้น ด้วยฟังก์ชันใหม่ที่ผู้ใช้สามารถกำหนดเองได้นั้น ทำให้สามารถนำรหัส(Code) กลับมาใช้ใหม่ได้ และทำให้การพัฒนาง่ายขึ้น นอกจากนั้นยังมีคุณสมบัติในการรักษาความถูกต้องตรงกันของข้อมูล โดยมี ความเที่ยงตรงของข้อมูลในการอ้างอิงเป็นลำดับชั้น(Cascading Referential Integrity) เพื่อควบคุมการส่งสัญญาณการดำเนินการลบหรือปรับปรุงข้อมูล
          – ใช้ประโยชน์จากความสามารถในการวิเคราะห์ที่สมบูรณ์แบบ รวมทั้งการทำ Data Mining ที่มีอยู่ในส่วนขยายใน Analysis Services ของ SQL Server 2000 นอกจากนี้ยังมี รูปแบบมิติใหม่นั้นสามารถรองรับชุดข้อมูลได้กว้างหลากหลายระดับชั้น คุณสมบัติทางด้านความปลอดภัยที่ยืดหยุ่นยังช่วยป้องกันข้อมูลทั้งในระดับ cube, สมาชิก

Add comment สิงหาคม 27, 2008

SQL Injection

SQL Injection
คือ การที่ในเวปมีการรับข้อมูลจากผู้ใช้ แล้วนำไปใช้ในการสั่งให้ฐานข้อมูลทำงาน แล้ว ผู้ใช้พยายามที่จะหลอกโปรแกรมให้ทำงานนอกเหนือจากที่เราต้องการ หรือ หลอกให้โปรแกรมทำงานโดยผ่านการตรวจสอบเงื่อนไขบางอย่าง

Injection Flaws

หมายถึง แฮกเกอร์สามารถที่จะแทรก Malicious Code หรือ คำสั่งที่แฮกเกอร์ใช้ในการเจาะระบบส่งผ่าน Web Application ไปยังระบบภายนอกที่เราเชื่อมต่ออยู่ เช่น ระบบฐานข้อมูล SQL โดยวิธี SQL Injection หรือ เรียก External Program ผ่าน shell command ของระบบปฎิบัติการ เป็นต้น

ส่วนใหญ่แล้วแฮกเกอร์จะใช้วิธีนี้ในช่วงการทำ Authentication หรือการ Login เข้าระบบผ่านทาง Web Application เช่น Web Site บางแห่งชอบใช้ “/admin” ในการเข้าสู่หน้า Admin ของ ระบบ ซึ่งเป็นช่องโหว่ให้แฮกเกอร์สามารถเดาได้เลยว่า เราใช้ http://www.mycompany.com/admin ในการเข้าไปจัดการบริหาร Web Site ดังนั้นเราจึงควรเปลี่ยนเป็นคำอื่นที่ไม่ใช่ “/admin” ก็จะช่วยได้มาก

วิธีการทำ SQL injection

ก็คือ แฮกเกอร์จะใส่ชื่อ username อะไรก็ได้แต่ password สำหรับการทำ SQL injection จะใส่เป็น Logic Statement ยกตัวอย่างเช่น ‘ or ‘1′ = ‘1 หรือ ” or “1″= “1 หรือ a’ or 1=1–

Query = “SELECT * FROM product WHERE Password=’$input’”;
แต่ผู้ใช้ทำการใส่ ข้อมูลเป็น a’ or 1=1–
ดังนั้น query ที่ได้จะเป้น
Query = “SELECT * FROM product WHERE Password=’a’ or 1=1–’”;
จะเห็นว่าเมื่อนำไช้งานแล้ว จะสามารถเรียกดูข้อมูลได้เสมอ เนื่องจาก 1=1 เป็นจริง

สมมุติว่า มีโค้ดต่อไปนี้ใน application และ parameter “userName” ซึ่งประกอบด้วย
ชื่อผู้ใช้ ช่องโหว่แบบ SQL Injection เกิดขึ้นในโค้ดนี้:

statement := “SELECT * FROM users WHERE name = ‘” + userName + “‘;”

ถ้าป้อน “a’; DROP TABLE users; SELECT * FROM data WHERE name LIKE ‘%”
เข้าไปในส่วน “userName” จะทำให้เกิด SQL statement ต่อไปนี้

SELECT * FROM users WHERE name = ‘a’; DROP TABLE users; SELECT * FROM data WHERE name LIKE ‘%’;

ฐานข้อมูลจะเอ็กซิคิวท์ statement ตามลำดับ คือ select data, drop user table
และ select data ทำให้ผู้ใช้เว็ปสามารถดูหรือแก้ไขข้อมูลใด ๆ ที่อยู่ในฐานข้อมูล
ที่ผู้ใช้ที่เชื่อมโยงกับฐานข้อมูลสามารถอ่าน หรือแก้ไขได้

วิธีการป้องกัน

นักพัฒนาระบบ (Web Application Developer) ควรจะระมัดระวัง input string ที่มาจากทางฝั่ง Client (Web Browser) และไม่ควรใช้วิธีติดต่อกับระบบภายนอกโดยไม่จำเป็น

ควรมีการ “กรอง” ข้อมูลขาเข้าที่มาจาก Web Browser ผ่านมาทางผู้ใช้ Client อย่างละเอียด และ ทำการ “กรอง” ข้อมูลที่มีลักษณะที่เป็น SQL injection statement ออกไปเสียก่อนที่จะส่งให้กับระบบฐานข้อมูล SQL ต่อไป

การใช้ Stored Procedure หรือ Trigger ก็เป็นทางออกหนึ่งในการเขียนโปรแกรมสั่งงานไปยังระบบฐานข้อมูล SQL ซึ่งมีความปลอดภัยมากกว่าการใช้ “Dynamic SQL Statement ” กับฐานข้อมูล SQL ตรงๆ

ช่องโหว่แบบ SQL Injection สามารถแก้ไขได้ใน programming language ส่วนใหญ่
ในภาษา Java ควรมีการใช้ PreparedStatement class

แทนที่จะใช้

Connection con = (acquire Connection)
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery(“SELECT * FROM users WHERE name = ‘” + userName + “‘;”);

ให้ใช้โค้ดต่อไปนี้แทน

Connection con = (acquire Connection)
PreparedStatement pstmt = con.prepareStatement(“SELECT * FROM users WHERE name = ?”);
pstmt.setString(1, userName);
ResultSet rset = stmt.executeQuery();

Add comment สิงหาคม 27, 2008

Craig S. Mullins ได้สรุป 17 ทักษะ ที่จำเป็นสำหรับที่ DBA ต้องมี ดังต่อไปนี้

Craig S. Mullins ได้สรุป 17 ทักษะ ที่จำเป็นสำหรับที่ DBA ต้องมี ดังต่อไปนี้

1. Data modeling and database design.
DBA ต้องสามารถสร้างการออกแบบฐานข้อมูล ในระดับ physical ได้ เมื่อได้รับแปลน ออกแบบ logical data model และ สเป็คของ application ถ้าในองค์กรไม่มีระเบียบแบบแผนในการจัดการทรัพยากร ที่แน่ชัด ก็เป็นความรับผิดชอบของ DBA ที่ต้องทำ data modeling , normalization และ ออกแบบ ทั้ง conceptual และ logical design ได้ด้วย

2. Metadata management and repository usage.
DBA หรือ บางครั้งก็เป็น Data Architect (DA) ต้อง รวบรวม , จัดเก็บ , จัดการ , และ เปิดใช้ความสามารถในการเรียกดู metadata ขององค์กร ถ้าปราศจาก metadata แล้ว ข้อมูลที่เก็บในฐานข้อมูลก็จะขาดความหมายที่ถูกต้อง

3. Database schema creation and management.
DBA ต้องสามารถแปล data model หรือ logical database design ไปเป็นการ implement ในระดับ physical จริงๆได้ และ ต้องจัดการฐานข้อมูลที่ถูก implement ได้ด้วย

4. Backup and recovery.
การจัดให้มีกระบวนการสำรอง และ กู้คืน ข้อมูลที่ดี จะเป็น การประกันภัยสำหรับชีวิต DBA
การ implement กลยุทธ์ Backup & Recovery ที่เหมาะสม จะขึ้นอยู่กับความต้องการในเรื่อง ความคงอยู่ครบถ้วน ของข้อมูล และ ความสามารถ ใช้งานได้ตลอดเวลา ของแอพพลิเคชั่น
   
 5. Ensuring data integrity.
DBA ต้องสามารถออกแบบฐานข้อมูลที่การันตีได้ว่า จะมีแต่ข้อมูลที่ถูกต้อง สอดคล้องกับ เงื่อนไขที่ตั้งเอาไว้เท่านั้น ที่จะจัดเก็บ ในฐานข้อมูล การจะทำได้นั้น DBA ต้องใช้งาน database integrity หลายชนิด อันได้แก่ entity integrity, referential integrity, check constraints, และ database triggers

6. Performance management and tuning.
ปัญหาเรื่องประสิทธิภาพการตอบสนองของฐานข้อมูลหลังจาก implement ไปแล้ว มักเป็นฝันร้ายของ DBA ซึ่ง DBA ต้องสามารถ ตววจสอบแนวโน้มก่อนที่ปัญหาจะเกิด (proactively monitor) และ ต้องปรับแต่ง โครงสร้างข้อมูล , การเขียน SQL , application logic หรือ ระบบย่อยๆ ที่เป็นส่วนประกอบของฐานข้อมูล ให้มี ประสิทธิภาพที่ดีขึ้น

7. Ensuring availability
แอพพลิเคชั่น และ ข้อมูล ที่มีความต้องการให้ใช้งานได้ตลอด 24 ชั่วโมงไม่มีวันหยุด DBA ต้องสามารถทำให้แน่นอนใจได้ว่า จะสามารถใช้งานข้อมูลได้ตลอดเวลา ดังนั้น DBA ก็ต้องรู้จัก เทคโนโลยี และ เทคนิคต่างๆที่คิดค้นมา เพื่อให้การใช้งานฐานข้อมูล ไม่สะดุด

8. SQL code reviews and walk-thrus.
แม้ว่าคนที่เขียน SQL คือ โปรแกรมเมอร์ แต่เวลามีปัญหาเรื่องประสิทธิภาพการตอบสนองของฐานข้อมูล คนที่มักถูกด่า คือ DBA ดังนั้น DBA ต้องมีความรู้ SQL เชิงลึก ที่จะเข้าใจ SQL และ ภาษา Operating System เพื่อให้คำแนะนำในการปรับแต่ง Coding ได้

9. Procedural skills.
ฐานข้อมูลรุ่นใหม่ ไม่ได้มีเพียงการจัดการเรื่องข้อมูลเท่านั้น DBA ต้องมีทักษะในการเขียน ภาษา procedural เพื่อช่วยในการ ออกแบบ , debug , implement และ บำรุงรักษา พวก stored procedures, triggers, และ user-defined functions ที่เก็บอยู่ใน DBMS

10. Data security.
DBA มีความรับผิดชอบที่จะให้แน่ใจว่า จะมีแต่ผู้ที่ได้รับอนุญาตเท่านั้น ที่สามารถเข้าถึงข้อมูลได้ จึงมีความจำเป็นที่ต้อง implement เรื่อง security infrastructure ให้กับ ฐานข้อมูลทั้ง production และ ฐานข้อมูลสำหรับทดสอบ รวมถึง มีการทำ database audit

11. Capacity planning.
เนื่องจาก ความต้องการใช้งานข้อมูลเติบโตขึ้นเรื่อยๆ DBA จึงต้องเตรียมแผนในการรองรับ ข้อมูลที่มีปริมาณมากขึ้น , จำนวนผู้ใช้งานมากขึ้น และ จำนวน connection ที่เพิ่มขึ้น
ความสามารถในการคาดคะเนการเติบโต ขึ้นอยู่กับ แอพลิเคชั่น และ Pattern ในการใช้งานข้อมูล รวมถึง การ implement database change เพื่อรองรับการโตขึ้นของฐานข้อมูล

12. General database management.
DBA เป็นศูนย์รวมความรู้เรื่องฐานข้อมูลขององค์กร จึงต้องเข้าใจพื้นฐานของเทคโนโลยีฐานข้อมูล และ ต้องสื่อสารให้ความรู้กับคนอื่นได้อย่างถูกต้อง

13. General systems management and networking skills.
ฐานข้อมูลจะต้องถูกเข้าถึงจากทั่วทั้งองค์กร และ ไปติดต่อกับเทคโนโลยี อื่นๆ ทำให้ DBA ต้อง “รู้อย่างเป็ด” ( คือ พอรู้ในเรื่องนั้นๆบ้าง อาจไม่ต้องถึงขั้นเก่ง ) DBA ต้องสามารถ นำความต้องการของ การจัดการ ฐานข้อมูลไปผูกกับ การจัดการของระบบทั่วๆไป ( เช่น การตั้งเวลา run job , การจัดการ network ที่ติดต่อกับฐานข้อมูล , ขั้นตอนการทำ transcation เป็นต้น)

14. ERP and business knowledge.
ฐานข้อมูล ที่ไปต่อกับระบบ enterprise resource planning (ERP) นั้น DBA ต้องเข้าใจความต้องการของผู้ใช้งานแอพพลิเคชั่น และ จัดการฐานข้อมูลให้ธุรกิจไม่เกิดการสะดุด แอพพลิเคชั่น ERP ส่วนมาก (SAP, PeopleSoft, etc.) จะมีการใช้ฐานข้อมูล ในลักษณะแตกต่างกับ แอพพลิเคชั่นที่เขียนเองในบริษัท
DBA จึงต้องเข้าใจว่า แพ็กเกจ ERP ที่ใช้มีผลกระทบกับธุรกิจอย่างไร และ ฐานข้อมูลที่ ERP ใช้มีความแตกต่างกับ การใช้ฐานข้อมูลทั่วๆไปอย่างไร

15. Extensible data type administration.
DBMS ยุคใหม่ สามารถขยาย data type ให้เป็นแบบ user-defined ได้ DBA จึง ต้องเข้าใจเกี่ยวกับ data type ที่ขยายออกมา ของ database ยี่ห้อที่ใช้งานอยู่ และ สามารถ implenet รวมถึง จัดการดูแล extended data types เหล่านี้ได้

16. Web-specific technology expertise.
สำหรับธุรกิจที่เป็น e-businesses DBA ต้องมีความรู้เกี่ยวกับ อินเตอร์เน็ท และ เวบ เทคโนโลยี เพื่อที่จะได้ปรับแต่งฐานข้อมูลใช้กับแอพพลิเคชั่นแบบ Web-based ได้
ตัวอย่างของเทคโนโลยี เหล่านี้ เช่น XML , CGI , Java, Ruby on Rails, TCP/IP, Web servers, firewalls, และ SSL เป็นต้น

17. Storage management techniques.
ข้อมูลในฐานข้อมูล จะเก็บภายในดิสก์ ( ถ้าไม่นับ DBMS แบบใหม่ ซึ่งสามารถเก็บข้อมูลใน หน่วยความจำได้ ) DBA ต้องเข้าใจ Hardware และ Software ที่เกี่ยวกับการจัดการ Storage รวมถึงมันไปเกี่ยวข้องกับ DBMS ได้อย่างไร

 

ทักษะ 17 อย่าง ที่ Craig S. Mullins พูดถึง ในบทความนี้ จะเห็นได้ว่า เป็นการกล่าวถึง ทักษะทางด้านเทคนิค ที่ DBA ต้องมีความรู้ แต่อย่างไรก็ตาม การจะเป็น DBA ที่ประสบความสำเร็จได้ ไม่ใช่ว่าจะมีแค่ ทักษะด้านเทคนิค อย่างเดียว แต่ยังต้องมีทักษะ ด้านอื่นๆ อีก เช่น ทักษะในการติดต่อสื่อสารกับ คนอื่น , ทักษะการวางแผนงาน ซึ่ง Craig S. Mullins ได้เคยกล่าว ไว้ในบทความเรื่อง ” On becoming a DBA ” ในหน้า World Wide Article

Add comment สิงหาคม 27, 2008


Calendar

สิงหาคม 2008
อา พฤ
« มิ.ย.   ต.ค. »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Posts by Month

Posts by Category