ฉันเป็น Oracle DBA ที่มีประสบการณ์ Sybase ด้วย
อะไรคือความแตกต่างทางสถาปัตยกรรมและแนวคิดที่สำคัญระหว่างสองแพลตฟอร์ม RDBMS?
คำตอบที่คล้ายกับ SQL Server-> คำถาม Oracle ที่นี่จะใช้งานมากที่สุด
ฉันเป็น Oracle DBA ที่มีประสบการณ์ Sybase ด้วย
อะไรคือความแตกต่างทางสถาปัตยกรรมและแนวคิดที่สำคัญระหว่างสองแพลตฟอร์ม RDBMS?
คำตอบที่คล้ายกับ SQL Server-> คำถาม Oracle ที่นี่จะใช้งานมากที่สุด
คำตอบ:
ฉันได้สลับไปมาระหว่างการทำงานกับ Oracle และ SQL Server ในช่วงไม่กี่ปีที่ผ่านมาและได้เขียนแจ้งให้ทราบเกี่ยวกับวิธีอื่นที่นี่ มีความแตกต่างเชิงสำนวนและสถาปัตยกรรมจำนวนหนึ่งและคำศัพท์ต่าง ๆ จะถูกนำมาใช้อย่างแตกต่างกันโดยผู้จำหน่ายและชุมชนผู้พัฒนา / ชุมชน DBA รอบ ๆ แต่ละผลิตภัณฑ์
สถาปัตยกรรมทางกายภาพ
SQL Server จัดระเบียบสิ่งต่าง ๆ ให้แตกต่างจาก Oracle เล็กน้อยและมีแนวคิดหลักหนึ่งหรือสองข้อที่ไม่มี analogues โดยตรงใน Oracle
A 'ฐานข้อมูล' เป็นรายการแยกต่างหากใน SQL Server ที่มีสิทธิ์ผู้ใช้ของตัวเองพื้นที่สคีมา / ชื่อและการจัดเก็บ หากคุณคุ้นเคยกับ Sybase พวกเขาจะทำงานเหมือนกับฐานข้อมูลใน Sybase เนื่องจากต้นกำเนิดทั่วไปของผลิตภัณฑ์
กลุ่มไฟล์จะเทียบเท่ากับพื้นที่ตารางโดยประมาณแม้ว่าจะอยู่ในฐานข้อมูลก็ตาม
สคีมาเป็นแนวคิดที่แตกต่างจากผู้ใช้ฐานข้อมูลใน SQL Server แม้ว่าผู้ใช้สามารถมีสคีมาเริ่มต้นได้
MVCC ทำงานแตกต่างกันเล็กน้อยใน SQL Server มันเป็นคุณสมบัติที่ค่อนข้างใหม่ล่าสุดรักษาสำเนาที่แตกต่างกันของแถวจนกว่าการล็อคในรุ่นเก่าจะถูกปล่อยออกมา SQL Server ไม่เทียบเท่าโดยตรงกับเซ็กเมนต์ย้อนกลับ มันไม่ได้ใช้งานโดยค่าเริ่มต้นในฐานข้อมูล SQL Server
Tempdb มีการใช้งานอย่างหนักมากขึ้นใน SQL Server ระบบใช้สำหรับตารางชั่วคราวและผลการเข้าร่วมระดับกลาง เพิ่มเติมเกี่ยวกับ tempdb ในภายหลัง
การแบ่งพาร์ติชั่นของตารางค่อนข้างงอแงกว่า Oracle คุณต้องตั้งค่าฟังก์ชั่นพาร์ติชั่นที่สร้างพาร์ติชั่นคีย์จากสิ่งที่คุณกำลังจะจัดหามันจากนั้นโครงร่างพาร์ติชั่นเหนือฟังก์ชันพาร์ติชั่น ชุดรูปแบบพาร์ติชันทำงานเล็กน้อยเช่นกลุ่มไฟล์ที่คุณสร้างตารางบนชุดรูปแบบพาร์ติชัน
การสลับพาร์ติชั่นเข้าและออกคุณจะต้องตั้งค่าข้อ จำกัด ในตารางว่างในโครงสร้างที่เหมาะสม ข้อ จำกัด รับประกันว่าค่าคีย์พาร์ติชันเหมาะสมกับพาร์ติชันที่คุณต้องการสลับเข้ามา
มุมมอง Materialized เรียกว่ามุมมองที่จัดทำดัชนีใน SQL Server ส่วนGROUP BY
คำสั่งที่มีตัวCUBE
ดำเนินการและเอกสารอ้างอิงถึงคุณลักษณะการเขียนแบบสอบถามใหม่ อย่างไรก็ตามฟังก์ชั่นนี้ไม่ได้รับการบันทึกไว้อย่างดีและอาจไม่สมบูรณ์เต็มที่ YMMV
SQL Server ไม่สนับสนุนธุรกรรมที่เป็นอิสระแม้ว่าจะรองรับการมอบหมายสองขั้นตอนผ่านโปรโตคอลธุรกรรม XA หรือ OLEDB
ดัชนีแบบกลุ่มนั้นแตกต่างจากตารางที่จัดทำดัชนีใน Oracle เล็กน้อยเนื่องจากไม่ต้องการคอลัมน์ทั้งหมดในตารางเพื่อเข้าร่วมในดัชนีแบบคลัสเตอร์ พวกเขากำลังใช้กันอย่างแพร่หลายในสถาปัตยกรรม SQL Server มากกว่า IOT ที่อยู่ใน Oracle
SQL Server รองรับดัชนีครอบคลุม แต่ไม่มีดัชนีเข้าร่วม ไม่รองรับดัชนีบิตแมปแม้ว่าจะมีตัวดำเนินการแยกดัชนี / ดาวที่สามารถคำนวณจุดตัดได้โดยไม่ต้องกดปุ่มตารางข้อเท็จจริง
ลำดับเป็นส่วนเสริมล่าสุดของ SQL Server โดยปกติแล้วคีย์การสร้างอัตโนมัติจะทำผ่านคอลัมน์ข้อมูลประจำตัว set identity_insert on
คุณสามารถโหลดค่าลงในคอลัมน์ประจำตัวผ่าน
การเขียนโปรแกรม
Idiomatic T-SQL มีความแตกต่างบางอย่างกับสำนวน PL / SQL มันทำงานแตกต่างกันมากพอที่ความแตกต่างของกรอบความคิดบางอย่างจะอธิบายในเชิงลึกมากขึ้น
T-SQL ไม่มีแนวคิดของแพ็คเกจ โพรซีเดอร์และฟังก์ชันที่เก็บไว้ทั้งหมดในฐานข้อมูลจะอยู่ในเนมสเปซทั่วไปแม้ว่าจะสามารถใช้สกีมาเพื่อแยกย่อยได้และเนมสเปซจะอยู่ในฐานข้อมูล
SELECT INTO
รับความรู้สึกสำหรับวิธีการใช้ตารางชั่วคราวและ ค่อนข้างยากที่จะพบรหัส T-SQL ที่ต้องการเคอร์เซอร์ ตารางชั่วคราวช่วยให้การดำเนินการแตกออกเป็นขั้นตอนที่สามารถทำได้ด้วยการตั้งค่า SELECT INTO
ใน tempdb จะถูกบันทึกอย่างน้อยที่สุดและจะถูกบันทึกอย่างน้อยที่สุดในโหมดการกู้คืนบางอย่างบนฐานข้อมูลผู้ใช้เช่นกันดังนั้นจึงเร็วพอ ๆ กับตัวดำเนินการแบบสอบถามที่ยังคงมีผลการเข้าร่วมระดับกลาง
Idiomatic T-SQL จะใช้ตาราง temp ในการเรียงลำดับของบทบาทที่คุณจะเห็นตัวแปรเคอร์เซอร์ใน PL / SQL แต่จะใช้ประโยชน์จากชุดปฏิบัติการ อย่างไรก็ตามตารางชั่วคราวสามารถสร้างรหัสที่ไม่เหมาะสมได้ดังนั้นควรใช้ด้วยความระมัดระวัง
พจนานุกรมข้อมูลของระบบนั้นดูถูกกว่า Oracle ในเวอร์ชันเก่ากว่า แต่มันก็ดีกว่ากับ SQL Server 2005 ถึงแม้ว่าเครื่องมือที่มาจาก Microsoft นั้นมีเครื่องมือวิปัสสนาจำนวนมากที่สร้างขึ้นในตัวสำรวจ SSMS แต่ก็คุ้มค่าที่จะทราบว่า ทางรอบ ๆ พจนานุกรมข้อมูล มันไม่ได้แตกต่างระหว่างALL
, USER
และDBA
มองเห็นวิวของ DB วัตถุแม้ว่า
SSMS มีโปรแกรมดูแผนแบบสอบถามในตัว
ตัวระบุในรหัส T-SQL สามารถอ้างอิงด้วย [] และสามารถมีขยะได้ทุกประเภทหากเสนอราคา อย่างไรก็ตามถ้าเราจับคุณเรียกคอลัมน์ 'โดยตรง / โอน' เราจะฉีกลำไส้ของคุณออก
SQL Server มีฟังก์ชั่นหน้าต่าง (ตั้งแต่ปี 2005 IIRC) ดังนั้นคุณสามารถทำการสั่งซื้อเรียกใช้เงินก้อนและสิ่งที่คล้ายกันภายในกลุ่มตอนนี้
T-SQL นั้นไม่เทียบเท่าโดยตรงถึงCONNECT BY
แม้ว่าการเรียกซ้ำสามารถทำได้ผ่าน CTE แบบเรียกซ้ำ
หากคุณต้องการเขียนโค้ดที่กระโดดข้ามฐานข้อมูล (ซึ่งตรงกันข้ามกับสกีมาภายในฐานข้อมูล) ให้ลองใช้คำพ้องความหมายสาธารณะเพื่อใช้นามแฝงของวัตถุไปยังสิ่งที่อยู่ในระบบและอ้างถึงนามแฝงในรหัส สิ่งนี้หลีกเลี่ยงการอ้างอิงแบบกำหนดตายตัวในชื่อฐานข้อมูล
ถ้าคุณหลีกเลี่ยงการพึ่งพาโค้ดแบบหนักในชื่อฐานข้อมูลฐานข้อมูลทำให้การดูแลรักษาสภาพแวดล้อมหลาย ๆ เครื่องบนเซิร์ฟเวอร์เดียวกันทำได้ง่าย
บางสิ่งเช่นฟังก์ชั่นการรวมแบบกำหนดเองสามารถนำไปใช้งานได้โดยใช้ CLR Sprocs นอกจากนี้หากคุณต้องการหลบหนีจากบริบทการทำธุรกรรม (เช่นการปลอมธุรกรรมอิสระสำหรับการบันทึกข้อผิดพลาดย้อนกลับ) คุณสามารถใช้ CLR sproc เนื่องจากสามารถสร้างการเชื่อมต่อท้องถิ่นนอกบริบทการทำธุรกรรมปัจจุบัน
ความปลอดภัย
การเข้าสู่ระบบจะถูกกำหนดในระดับอินสแตนซ์ของ SQL Server แต่การล็อกอินแต่ละครั้งจะแมปกับฐานข้อมูลศูนย์หรือมากกว่านั้นในฐานะ 'ผู้ใช้ฐานข้อมูล' สิทธิ์ลูกเบี้ยวจะถูกกำหนดให้กับทั้ง 'การล็อกอิน' (เซิร์ฟเวอร์) และ 'ผู้ใช้' (ฐานข้อมูล) แต่ใน 'บทบาท' ฐานข้อมูลจะใช้งานตามปกติ ผู้ใช้อยู่ในบทบาทการอนุญาตถูกกำหนดให้กับบทบาท SQL Server 2012 เพิ่ม 'บทบาทเซิร์ฟเวอร์'
SQL Server 2012 แนะนำแนวคิดที่เรียกว่า 'ฐานข้อมูลบางส่วนที่มีอยู่' ซึ่งช่วยให้ผู้ใช้และข้อมูลบทบาทได้รับการจัดเก็บไว้ในฐานข้อมูลนั้น
ภายในฐานข้อมูลแนวคิดของผู้ใช้และสคีมาจะถูกแยกออก ผู้ใช้หรือบทบาทสามารถกำหนดให้กับสคีมาและสคีมาเป็นเจ้าของวัตถุฐานข้อมูล
การรับรองความถูกต้องของ Windows ใช้ข้อมูลเข้าสู่ระบบเบื้องหลังเพื่อรับรองความถูกต้องของผู้ใช้บนเครื่องหรือโดเมนกับการเข้าสู่ระบบ SQL Server การสนับสนุน IIRC สำหรับตัวเลือกนี้เป็นทางเลือกเพิ่มเติมสำหรับ Oracle
บทบาทพิเศษ 'dbo' (ย่อมาจาก 'เจ้าของฐานข้อมูล') มีสิทธิพิเศษแบบผู้ใช้ระดับสูงภายในฐานข้อมูลเฉพาะ แต่ละฐานข้อมูลมีบทบาท 'dbo' และผู้ใช้สามารถกำหนดให้กับบทบาท 'dbo' ในฐานข้อมูลที่กำหนด
นอกจากนี้ยังมีสคีมา 'dbo' เริ่มต้นด้วย วัตถุอาจเป็นเจ้าของโดย dbo schema - วัตถุที่สร้างโดยผู้ใช้ที่มีบทบาท 'dbo' (หรือสิทธิ์ระดับผู้ดูแลระบบทั่วทั้งระบบ) จะเริ่มต้นด้วยการเป็นเจ้าของโดย 'dbo' schema ยกเว้นว่ามีการให้ schema อื่นอย่างชัดเจน
ข้อมูลความปลอดภัยจะไม่ได้รับการสำรองข้อมูลของฐานข้อมูลเดียว ผู้ใช้ต้องและบทบาทจะต้องกำหนดค่าอย่างชัดเจนบนเซิร์ฟเวอร์การสำรองข้อมูลจะถูกเรียกคืน SQL Server 2012 อนุญาตให้ผู้ใช้และข้อมูลบทบาทถูกเก็บไว้ในฐานข้อมูลด้วยคุณลักษณะ 'ฐานข้อมูลที่มีอยู่บางส่วน' ใหม่
จาก SQL Server 2005 สามารถดำเนินการขั้นตอนการจัดเก็บในบริบทความปลอดภัยของผู้โทรผู้สร้าง schema ที่เป็นเจ้าของหรือผู้ใช้ที่ระบุ
ในมุมมองบน SQL Server สิทธิ์ในตารางพื้นฐานจะขึ้นอยู่กับสิทธิ์ของสคีมาที่เป็นเจ้าของมุมมอง สิทธิ์ของผู้ใช้ในตารางที่อยู่ข้างใต้ไม่ได้มีส่วนร่วมในการรักษาความปลอดภัยแม้ว่าคำจำกัดความการดูอาจมีตัวกรองที่รับข้อมูลจากเซสชัน ใน Oracle สิทธิ์ของผู้ใช้ในตารางพื้นฐานอาจส่งผลต่อมุมมองขึ้นอยู่กับการกำหนดค่าของการมอบสิทธิ์
การตรวจสอบและปรับแต่ง
TBA - สถาปัตยกรรมหน่วยความจำกับ SGA ฯลฯ ใน oracle
สำรองและกู้คืน
จะแจ้งภายหลัง
การขับรถ
Microsoft รวมชุดเครื่องมือโดยรอบเข้ากับ SQL Server รายการสำคัญที่ให้มาคือ:
SQL Server Management Studio (SSMS): สิ่งนี้คล้ายกับ SQL Developer บน Oracle - เป็นเครื่องมือแก้ไขและการเรียกใช้โค้ด คุณสมบัติที่มีประโยชน์บางอย่างรวมถึงเบราว์เซอร์วัตถุฐานข้อมูลและโปรแกรมดูแผนแบบสอบถาม
บริการวิเคราะห์เซิร์ฟเวอร์ SQL (SSAS): นี่คือเซิร์ฟเวอร์ OLAP ที่แตกต่างจากเซิร์ฟเวอร์ฐานข้อมูล มันใช้ภาษาแบบสอบถามของตนเอง (MDX) และ API (XML / A) สำหรับการสื่อสารลูกค้าเซิร์ฟเวอร์ ไม่สามารถสอบถามกับ SQL ได้ SSMS มีเครื่องมืออำนวยความสะดวกสำหรับการแก้ไข MDX และแบบสอบถาม XMLA แบบดิบและแสดงผลลัพธ์ เครื่องมือการสืบค้นบรรทัดคำสั่งที่เรียกว่า ASCMD.EXE ก็มีให้เช่นกัน
บริการรายงานเซิร์ฟเวอร์ SQL (SSRS): นี่คือเครื่องมือการรายงานบนเว็บสำหรับการเผยแพร่รายงาน สามารถสร้างรายงานผ่าน BI Development Studio (BIDS) หรือ Report Builder และเผยแพร่ไปยังเว็บพอร์ทัล เซิร์ฟเวอร์ SSRS นั้นมี API บริการบนเว็บสำหรับจัดการเซิร์ฟเวอร์แบบเป็นโปรแกรม โปรดทราบว่ารายงาน SSRS สามารถใช้ข้อมูลจากแหล่งข้อมูลที่หลากหลายไม่ใช่เฉพาะเซิร์ฟเวอร์ SQL เครื่องมือบรรทัดคำสั่งที่เรียกว่า RS.EXE มีให้สำหรับการจัดการเซิร์ฟเวอร์ SSRS โดยทางโปรแกรม
บริการการรวมเซิร์ฟเวอร์ SQL (SSIS): นี่คือเครื่องมือ ETL ที่มาพร้อมกับ SQL Server ในเชิงสถาปัตยกรรมแล้วมันค่อนข้างแตกต่างจาก OWB หรือ ODI เนื่องจากไม่ใช่เครื่องมือสร้างรหัส รันไทม์อยู่ฝั่งไคลเอ็นต์และสามารถอยู่บนเครื่องที่แยกต่างหากไปยังเซิร์ฟเวอร์ฐานข้อมูล แพคเกจ SSIS สามารถพัฒนาได้ด้วยการประมูลและดำเนินการอย่างอิสระด้วยเครื่องมือบรรทัดคำสั่งที่เรียกว่า DTEXEC.EXE
BI Development Studio (BIDS): นี่คือสตูดิโอภาพที่ใช้เทคโนโลยีเพื่อการพัฒนารายงานชุด SSIS และคิวบ์ SSAS หากมีการติดตั้งเครื่องมือการพัฒนาแบบ VS อื่น ๆ (เช่น VS Professional) การใช้เครื่องมือสามารถรวมเข้ากับสภาพแวดล้อมเดียวและการจัดกลุ่มโครงการทั่วไป
สำเนาจำนวนมาก (BCP): เครื่องมือแทรก / แตกไฟล์กลุ่มคำสั่งที่คล้ายกับ SQL * Loader
SQLCMD: เครื่องมือสืบค้นข้อมูลบรรทัดคำสั่งที่คล้ายกับ SQL * plus
SQL Profiler: เครื่องมือการติดตามและการทำโปรไฟล์ที่สามารถดักจับและประเมินข้อมูลการติดตามจาก SQL Server, SSAS และเครื่องมืออื่น ๆ ในชุด
บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL: โปรแกรมอรรถประโยชน์การจัดกำหนดการงานที่สามารถเรียกใช้งานเป็นระยะเวลาของการเรียงลำดับอื่น
TRUNCATE TABLE ...
ควบคู่ไปกับดราก้อนได้โดยไม่EXECUTE IMMEDIATE
ต้องทำอย่างไรเทียบเท่า ใน T-SQL คุณสามารถส่งคืนชุดผลลัพธ์ไปยังไคลเอ็นต์โดยใช้SELECT
ควบคู่กับการดำเนินการอื่น ๆ ในขณะที่ใน PL / SQL คุณต้องส่งผลลัพธ์ของSELECT
s ไปยังตารางหรือปลายทางอื่น ๆ ใน Oracle มีเพียง SQL บริสุทธิ์เท่านั้นที่สามารถส่งคืนชุดผลลัพธ์ให้กับลูกค้าได้
ผลิตภัณฑ์หลักของเราทำงานได้ทั้งบน SQL Server และ Oracle ต่อไปนี้เป็นข้อแตกต่างอื่น ๆ ที่เราต้องแก้ไขและควรจำไว้ว่า:
การจัดการวันที่จะแตกต่างกันมาก: การกำหนดที่แตกต่างกัน, ชุดของฟังก์ชั่นที่แตกต่างกันในการทำงาน
สตริงว่างเป็น NULL ใน Oracle ไม่ใช่ใน SQL Server
การจัดการการเข้ารหัสอักขระและ Unicode นั้นแตกต่างกันมาก ใน SQL Server คุณสามารถมีคอลัมน์ปกติ ( varchar
) หรือ Unicode ( nvarchar
) ผสมกันในฐานข้อมูลเดียวกันใน Oracle คุณตัดสินใจในระดับฐานข้อมูลที่จะใช้การเข้ารหัส