จากที่เคยทำงานกับ Oracle 10g และ version ใหม่ ๆ จะเห็นได้ว่า Oracle ไม่ได้เป็นแค่ Database แต่เป็น “อสูรกาย” แห่งการคำนวณที่มีวิวัฒนาการมายาวนานเกือบ 50 ปี บทความนี้จะสรุปความต่างของ Oracle ในแต่ละยุค เพื่อให้คุณเห็นภาพให้รองรับระบบเก่าและใหม่ครับ
ยุคก่อร่างสร้างตัว: The Foundation
ช่วงปี: 1979 – 1988
นี่คือยุคที่ SQL เพิ่งเกิด Oracle เป็นเจ้าแรกที่นำ SQL มาใช้ในเชิงพาณิชย์
คนสังเกตจะเห็นว่า version 1 มันไม่มี เพราะไม่ได้ออกมาขายจริง
- สถาปัตยกรรม: เน้นความถึกทน เริ่มมีแนวคิด Row-level locking ซึ่งเหนือกว่าคู่แข่งในสมัยนั้นที่ล็อคทั้ง Table
- จุดเปลี่ยน: v6 เริ่มมี PL/SQL ทำให้เราเขียน Logic ซับซ้อนใน Database ได้
- ความต่างในการเขียน Provider: ยุคนี้ Metadata เก็บใน System Tables พื้นฐานมาก ยังไม่มีระบบ View ที่ซับซ้อนแบบ
ALL_TAB_COLUMNSที่เราคุ้นเคยในปัจจุบัน
ยุคทองของ Client-Server: Oracle 7, 8, & 8i
ช่วงปี: 1992 – 1999 เป็นยุคที่ Oracle ครองโลกธุรกิจ และเริ่มก้าวเข้าสู่ยุค Internet
- สถาปัตยกรรม: * Oracle 7: นำเสนอ Stored Procedures, Triggers และ Declarative Referential Integrity
- Oracle 8/8i: เริ่มมีแนวคิด Object-Relational และการทำ Partitioning เพื่อรองรับข้อมูลขนาดมหึมา
- Data Types: เริ่มมี LOBs (BLOB, CLOB) มาแทนที่การเก็บแบบ LONG เดิม ๆ
- ความต่างในการเขียน Provider: ต้องเริ่มรับมือกับการดึง Metadata ผ่าน Data Dictionary Views
ยุค Grid และ Automation: Oracle 9i, 10g, & 11g
ช่วงปี: 2001 – 2007 ตัวอักษร g ย่อมาจาก Grid Computing เน้นการแชร์ทรัพยากรร่วมกันและการจัดการอัตโนมัติ และจะเจอ 10g ในบริษัทในไทยมากที่สุด
- ฟีเจอร์เด่น:
- Oracle 9i: นำเสนอ Real Application Clusters ทำให้รัน Database หลาย Node พร้อมกันได้
- Oracle 10g: เน้นการ Manage ตัวเอง มีระบบ AWR ช่วยวิเคราะห์ Query ที่ช้า
- Oracle 11g: เพิ่ม Result Cache และ Advanced Compression
- ความต่างในการเขียน Provider: ยุคนี้คือมาตรฐานของ “Legacy ที่ยังใช้งานอยู่” การดึง DDL มักใช้ Package
DBMS_METADATA.GET_DDLซึ่งแม่นยำกว่าการ Query View เอง
ยุค Cloud และ Multi-tenant: Oracle 12c, 18c, & 19c
ช่วงปี: 2013 – 2019 ตัวอักษร c ย่อมาจาก Cloud โดยมีหัวใจหลักคือ Multitenant Architecture
- สถาปัตยกรรม (CDB / PDB) : แนวคิด Container Database และ Pluggable Databases คือการมีฐานข้อมูลแม่ 1 ตัว แล้ว “เสียบ” ฐานข้อมูลลูกเข้าไปข้างในได้หลายตัว
- Oracle 18c/19c: เริ่มเปลี่ยนมาใช้วิธีการออก Version ตามปี ที่ซ่อมแซมและจูนตัวเองได้โดยไม่ต้องใช้ DBA
- ความต่างในการเขียน Provider: ต้องรับมือกับ Connection String ที่ต้องระบุ Service Name แทน SID และการสลับ Container เมื่อต้องการดึง Metadata ทั้งระบบ
ยุคปัจจุบัน: AI & Converged Database
ช่วงปี: 2021 – ปัจจุบัน เน้นการเป็น Converged Database คือตัวเดียวทำได้ทุกอย่าง
- ฟีเจอร์เด่น :
- Vector Search: รองรับการทำ AI / LLM ภายใน Database
- JSON Relational Duality: มองข้อมูลเป็น JSON ก็ได้ หรือมองเป็น Table ก็ได้ ในข้อมูลชุดเดียวกัน
- Boolean Data Type: ในที่สุด Oracle ก็มี Data Type
BOOLEANให้ใช้ใน SQL จริง ๆ เสียที
- ความต่างในการเขียน Provider: .NET 10 ของคุณจะสามารถใช้ Oracle Entity Framework Core หรือ ODP.NET รุ่นล่าสุดที่รองรับ Asynchronous Programming เต็มรูปแบบ และการจัดการข้อมูลแบบ JSON ที่รวดเร็วขึ้นมาก
ตารางเปรียบเทียบ Oracle ในมุมนักพัฒนา
| หัวข้อ | ยุค Legacy | ยุค Grid | ยุค Modern / AI |
| Driver (.NET 10) | OLEDB / Managed ODP.NET | Managed ODP.NET | ODP.NET Core / Devart |
| Metadata Method | Manual Query sys tables | DBMS_METADATA | DBMS_METADATA + PDB aware |
| Data Types | LONG, RAW, DATE | BLOB/CLOB, TIMESTAMP | JSON, VECTOR, BOOLEAN |
| Paging Syntax | ROWNUM Subquery | ROWNUM Subquery | OFFSET ... FETCH |
ถ้าจะเขียน Provider ให้ครอบคลุม Oracle ทุกยุค การทำ Paging จะเป็นจุดที่ปวดหัวที่สุด เพราะก่อนเวอร์ชัน 12c เราต้องเขียน Query ซ้อนกัน 3 ชั้นเพื่อทำ ROWNUM แต่ในเวอร์ชันใหม่เราสามารถใช้ OFFSET ... FETCH เหมือน SQL Server ได้แล้วครับ
อ่านเพิ่มเติม