วันอังคารที่ 24 กุมภาพันธ์ พ.ศ. 2558

Oracle Concept: Schema คืออะไร Instance คืออะไร Tablespace คืออะไร

Oracle Concept: Schema คืออะไร Instance คืออะไร Tablespace คืออะไร


ไม่แปลกที่เวลาใครใช้งาน Oracle ครั้งแรกจะต้องงงกับศัพท์ต่างๆ ที่ใช้ใน Oracle database
blog post นี้ก็เลยจะเขียนอธิบายเกี่ยวกับ concept เบื้องต้นของ oracle ที่คิดว่าคนที่ใช้ใหม่ๆ อาจจะสับสนครับ

Instance

Instance (หรือ SID) ถ้ามองง่ายๆ ก็เหมือน service ของ Oracle database นั่นเอง โดยปกติแล้วเราก็จะสร้าง instance เพียง instance เดียว เพื่อความง่ายในการจัดการ (แต่บางที่ก็มีการสร้างหลายๆ instance แยกกัน อันนี้ก็สามารถทำได้เหมือนกัน)

Schema

ใน Oracle นั้นจะมอง schema เป็นเสมือน user (ถ้าดู script create schema ของ oracle จะเป็น CREATE USER ABC... ก็จะได้มาทั้ง user และ schema ชื่อ ABC)
โดย schema ของ Oracle นั้นเป็นที่เก็บ object ต่างๆ ของ database เช่น table, view, index และอื่นๆ ในเชิง logical (หรือถ้ามองง่ายๆ ก็เหมือนกับบอกว่า object พวกนี้เป็นของใคร) เวลาที่เราจะ query table ที่เป็นของเราเองก็ไม่จำเป็นต้องระบุ schema ก็ได้ เช่น SELECT * FROM MY_TABLE แต่ถ้าเราต้องการ query table ที่อยู่ใน schema อื่น (เป็นของคนอื่น) เราจะต้องระบุ schema ด้วย เช่น SELECT * FROM XYZ.HIS_TABLE เป็นต้น

Tablespace (และ data file)

Tablespace และ data file ก็คือที่เก็บ object ต่างๆ ของ database ในเชิง physical นั่นเอง โดยการมองการเก็บ object แบบ physical นี้ถูกแบ่งออกเป็น 2 layer
layer แรกคือ layer ที่เป็น tablespace กล่าวคือ object ต่างๆ จะถูกกำหนดไว้ว่าให้จัดเก็บไว้ใน tablespace ไหนในตอนสร้าง (ไม่กำหนดก็ได้ แต่จะไปเข้า default tablespace ของ schema ที่ object นั้นถูกสร้างขึ้นมา)
ส่วน layer ที่ 2 คือ layer ที่เป็น data file (หรือเป็น path ของพื้นที่บนเครื่องจริงๆ) โดยที่ tablespace ก็จะถูกชี้มาที่ data file อีกทีนึง (ในกรณีที่เพิ่ม disk หรือจะให้เก็บที่ path อื่นเพิ่มเติมก็สามารถทำได้ เพราะ mapping ระหว่าง tablespace กับ data file ไม่จำเป็นต้องเป็น 1:1 โดยที่ tablespace นึงสามารถมี data file ได้มากกว่า 1 data file

สุดท้ายนี้ขอฝาก diagram สรุปความสัมพันธ์คร่าวๆ ดังนี้






ไม่มีความคิดเห็น:

แสดงความคิดเห็น